{"version":3,"file":"963.0325e3de01a7a1cc.js","mappings":"8mBAiBA,MAAMA,IAAoD,EAE1D,WAA4BC,IACxB,OAAO,IAAIC,MAAc,IAAiCF,GAA+CC,CAmI7G,aACI,MAA0B,oBAAXE,aAAqD,IAApBA,OAAOC,QAAa,CAExE,cAMI,MAA0B,oBAAZC,SAAyD,qBAA9B,GAAGC,SAASC,KAAKF,QAAa,CAE3E,YAA6BG,IACzB,OAAQA,GAAQC,aACP,EACD,OAAO,IAAIC,UACV,EACD,OAAOF,GAAQ,WAEf,OAAO,IAAIG,KAAsBH,KAG7C,YAA4BI,GAAQC,EAAYC,EAASC,GAAWC,GAAY,GAAIC,GAAa,IAC7F,MAAMC,EAAS,GACTC,EAAsB,GAC5B,IAAIC,GAAiB,EACjBC,GAAmB,KA+BvB,GA9BAN,GAAUO,QAAQC,KACd,MAAMC,EAASD,GAAGC,OACZC,GAAeD,GAAUJ,EACzBM,GAAsBD,IAAgBJ,IAAqB,GACjEM,OAAOC,KAAKL,IAAID,QAAQO,KACpB,IAAIC,GAAiBD,GACjBE,GAAkBR,GAAGM,IACzB,GAAa,WAATA,GAEA,OADAC,GAAiBjB,EAAWmB,sBAAsBF,GAAgBZ,GAC1Da,SACCE,KACDF,GAAkBf,GAAUa,IAC5B,WACCK,KACDH,GAAkBd,GAAWY,IAC7B,cAEAE,GACIlB,EAAWsB,oBAAoBN,GAAMC,GAAgBC,GAAiBb,GAItFQ,GAAmBI,IAAkBC,KAEpCN,IACDN,EAAoBiB,KAAKV,IAE7BL,GAAmBK,GACnBN,EAAiBI,IAEjBN,EAAOT,OACP,MA9GR,WAAyBS,IACrB,OAAO,IAAIhB,MAAc,KAA6BF,GACgDqC,CA4G5FC,GAEV,OAAOnB,EAEX,YAAwBoB,GAAQC,EAAWC,EAAOC,IAC9C,OAAQF,OACC,QACDD,GAAOI,QAAQ,IAAMD,GAASD,GAASG,GAAmBH,EAAO,QAASF,MAC1E,UACC,OACDA,GAAOM,OAAO,IAAMH,GAASD,GAASG,GAAmBH,EAAO,OAAQF,MACxE,UACC,UACDA,GAAOO,UAAU,IAAMJ,GAASD,GAASG,GAAmBH,EAAO,UAAWF,MAC9E,CAGZ,YAA4BQ,GAAGC,EAAWT,GACtC,MAAMU,GAAYV,EAAOU,UAEnBR,GAAQS,GAAmBH,GAAEjC,QAASiC,GAAEI,YAAaJ,GAAEK,UAAWL,GAAEM,QAASL,GAAaD,GAAEC,UAAwBM,MAAbL,GAAyBF,GAAEE,UAAYA,KADnIV,EAAOgB,UAElBC,EAAOT,GAAEU,MACf,OAAY,MAARD,IACAf,GAAMgB,MAAWD,GAEdf,GAEX,YAA4B3B,GAASqC,EAAaC,EAAWC,GAASL,GAAY,GAAIC,GAAY,EAAGM,GACjG,MAAO,CAAEzC,WAASqC,cAAaC,YAAWC,WAASL,aAAWC,aAAWM,WAAYA,GAEzF,YAAyBG,GAAKC,EAAKC,GAC/B,IAAIC,GACJ,OAAIH,cAAeI,KACfD,GAAQH,GAAIK,IAAIJ,GACXE,IACDH,GAAIM,IAAIL,EAAKE,GAAQD,KAIzBC,GAAQH,GAAIC,GACPE,KACDA,GAAQH,GAAIC,GAAOC,IAGpBC,GAEX,YAA8BI,IAC1B,MAAMC,EAAeD,GAAQE,QAAQ,KAGrC,MAAO,CAFIF,GAAQG,UAAU,EAAGF,GACjBD,GAAQI,OAAOH,EAAe,GACjCI,CAEhB,IAAIC,GAAY,CAACC,GAAMC,KAAS,EAC5BC,GAAS,CAAC5D,GAAS6D,EAAUC,IACtB,GAEPC,GAAmB,KACvB,YAA0B/D,IACtB,MAAMgE,EAAShE,GAAQiE,YAAcjE,GAAQkE,KAC7C,OAAIF,IAAWD,GACJ,KAEJC,GAIKG,MACkB,oBAAZC,WACbC,KAMDN,GAAoC,KAAMzE,SAASgF,gBAAf,GACpCb,GAAY,CAACC,GAAMC,KACf,KAAOA,GAAM,CACT,GAAIA,IAASD,GACT,OAAO,EAEXC,EAAOY,GAAiBZ,GAE5B,OAAO,IAbXF,GAAY,CAACC,GAAMC,IAASD,GAAKc,SAASb,GAgB9CC,GAAS,CAAC5D,GAAS6D,EAAUC,KACzB,GAAIA,EACA,OAAOW,MAAMC,KAAK1E,GAAQ2E,iBAAiBd,IAE/C,MAAMe,GAAO5E,GAAQ6E,cAAchB,GACnC,OAAOe,GAAO,CAACA,IAAQ,KAQ/B,IAAIE,GAAe,KACfC,IAAa,EACjB,YAA+BhE,IACtB+D,KACDA,GAaR,cACI,MAAuB,oBAAZxF,SACAA,SAAS0F,KAEb,KAjBYC,IAAiB,GAChCF,KAAaD,GAAaI,OAAS,qBAAsBJ,GAAaI,OAE1E,IAAIC,GAAS,EACb,OAAIL,GAAaI,QAbrB,YAA8BnE,IAG1B,MAA+B,SAAxBA,GAAKuC,UAAU,EAAG,EAAM,CAUJ8B,CAAqBrE,MAC5CoE,EAASpE,MAAQ+D,GAAaI,OACzBC,GAAUJ,KAEXI,EAASE,SADoBtE,GAAKuE,OAAO,GAAGC,cAAgBxE,GAAKwC,OAAO,KAClDuB,GAAaI,QAGpCC,EAQX,MAAMK,GAAkB/B,GAClBgC,GAAc7B,OAoBd8B,SAAN,SACIC,sBAAsB5E,GAClB,OAAO4E,GAAsB5E,GAEjC6E,eAAeC,EAAUC,IAErB,OAAO,EAEXN,gBAAgB9B,EAAMC,IAClB,OAAO6B,GAAgB9B,EAAMC,IAEjCY,iBAAiBvE,GACb,OAAOuE,GAAiBvE,GAE5B+F,MAAM/F,EAAS6D,GAAUC,IACrB,OAAO2B,GAAYzF,EAAS6D,GAAUC,IAE1CkC,aAAahG,EAASe,GAAM+B,IACxB,OAAOA,IAAgB,GAE3BmD,QAAQjG,EAASC,GAAWiG,GAAUC,GAAOC,EAAQC,EAAkB,GAAIC,GACvE,OAAO,IAAI1G,KAAoBsG,GAAUC,KAGjDT,UAAoBa,UAApB,0BAAgHb,KAChHA,GAAoBc,WADkFC,MACtG,OAAoHf,GAApHgB,QAAoHhB,GAApH,YAzBMA,OAgCAiB,SAAN,iBAEAA,GAAgBC,KAAwB,IAAIlB,GAFtCiB,OAWN,MAGME,GAAkB,WAClBC,GAAkB,WAClBC,GAAuB,aACvBC,GAAsB,cACtBC,GAAyB,eACzBC,GAAwB,gBAC9B,YAA4BnE,IACxB,GAAoB,iBAATA,GACP,OAAOA,GACX,MAAMoE,EAAUpE,GAAMqE,MAAM,qBAC5B,OAAKD,GAAWA,EAAQxH,OAAS,EACtB,EACJ0H,GAAsBC,WAAWH,EAAQ,IAAKA,EAAQ,IAEjE,YAA+BpE,GAAOwE,GAClC,MACS,MADDA,EAlBO,IAoBAxE,GAEAA,GAGnB,YAAuByE,GAASpH,EAAQqH,GACpC,OAAOD,GAAQE,eAAe,YAC1BF,GAGR,YAA6BrI,GAAKiB,EAAQqH,GAEtC,IAAIvB,GACAC,GAAQ,EACRC,EAAS,GACb,GAAmB,iBAARjH,GAAkB,CACzB,MAAMgI,EAAUhI,GAAIiI,MALV,4EAMV,GAAgB,OAAZD,EACA/G,SAAOkB,KAAKqG,KACL,CAAEzB,SAAU,EAAGC,MAAO,EAAGC,OAAQ,IAE5CF,GAAWmB,GAAsBC,WAAWH,EAAQ,IAAKA,EAAQ,IACjE,MAAMS,EAAaT,EAAQ,GACT,MAAdS,IACAzB,GAAQkB,GAAsBC,WAAWM,GAAaT,EAAQ,KAElE,MAAMU,GAAYV,EAAQ,GACtBU,KACAzB,EAASyB,SAIb3B,GAAW/G,GAEf,IAAKsI,EAAqB,CACtB,IAAIK,GAAiB,EACjBC,EAAa3H,EAAOT,OACpBuG,GAAW,IACX9F,EAAOkB,KA7anB,aACI,OAAO,IAAIlC,MAAc,KAAgCF,GAAiB,CA4atD8I,IACZF,GAAiB,GAEjB3B,GAAQ,IACR/F,EAAOkB,KA9anB,aACI,OAAO,IAAIlC,MAAc,KAAiCF,GAAiB,CA6avD+I,IACZH,GAAiB,GAEjBA,GACA1H,EAAO8H,OAAOH,EAAY,EAAGJ,IAAmBxI,CAGxD,MAAO,CAAE+G,YAAUC,SAAOC,UAzCtB+B,CAAoBX,GAASpH,EAAQqH,GA2C7C,YAAiBW,GAAKC,EAAc,IAChCxH,cAAOC,KAAKsH,IAAK5H,QAAQO,IACrBsH,EAAYtH,GAAQqH,GAAIrH,KAErBsH,EAYX,YAAoBC,GAAQC,EAAeF,EAAc,IACrD,GAAIE,EAIA,QAASxH,MAAQuH,GACbD,EAAYtH,IAAQuH,GAAOvH,SAI/ByH,GAAQF,GAAQD,GAEpB,OAAOA,EAEX,YAAiCrI,GAAS6C,EAAKE,GAG3C,OAAIA,EACOF,EAAM,IAAME,EAAQ,IAGpB,GAGf,YAA6B/C,IAKzB,IAAIyI,EAAiB,GACrB,QAASC,EAAI,EAAGA,EAAI1I,GAAQkF,MAAMvF,OAAQ+I,IAAK,CAC3C,MAAM7F,GAAM7C,GAAQkF,MAAMyD,KAAKD,GAC/BD,GAAkBG,GAAwB5I,EAAS6C,GAAK7C,GAAQkF,MAAM2D,iBAAiBhG,KAE3F,UAAWA,KAAO7C,GAAQkF,MAEjBlF,GAAQkF,MAAMwC,eAAe7E,KAAQA,EAAIiG,WAAW,OAIzDL,GAAkBG,GAAwB5I,EAD1B+I,GAAoBlG,GACwB7C,GAAQkF,MAAMrC,KAE9E7C,GAAQgJ,aAAa,QAASP,GAElC,YAAmBzI,GAASsI,EAAQW,GAC5BjJ,GAAQkF,QACRrE,OAAOC,KAAKwH,GAAQ9H,QAAQO,KACxB,MAAMsE,GAAY6D,GAAoBnI,IAClCkI,IAAiBA,EAAavB,eAAe3G,MAC7CkI,EAAalI,IAAQf,GAAQkF,MAAMG,KAEvCrF,GAAQkF,MAAMG,IAAaiD,EAAOvH,MAGlCoD,MACAgF,GAAoBnJ,KAIhC,YAAqBA,GAASsI,GACtBtI,GAAQkF,QACRrE,OAAOC,KAAKwH,GAAQ9H,QAAQO,IACxB,MAAMsE,GAAY6D,GAAoBnI,GACtCf,GAAQkF,MAAMG,IAAa,KAG3BlB,MACAgF,GAAoBnJ,KAIhC,YAAiCoJ,IAC7B,OAAI3E,MAAM4E,QAAQD,IACM,GAAhBA,GAAMzJ,OACCyJ,GAAM,IACVE,QAASF,IAEbA,GAaX,MAAMG,GAAc,IAAIC,OAAQ,oBAAkE,KAClG,YAA4BzG,IACxB,IAAI0G,EAAS,GACb,GAAqB,iBAAV1G,GAAoB,CAC3B,IAAIqE,EACJ,KAAOA,EAAQmC,GAAYG,KAAK3G,KAC5B0G,EAAOnI,KAAK8F,EAAM,IAEtBmC,GAAYI,UAAY,EAE5B,OAAOF,EAEX,YAA2B1G,GAAO0G,EAAQrJ,GACtC,MAAMwJ,GAAW7G,GAAMvD,WACjBqK,GAAMD,GAASE,QAAQP,GAAa,CAACQ,GAAGC,KAC1C,IAAIC,EAAWR,EAAOO,GAEtB,OAAKP,EAAO/B,eAAesC,KACvB5J,EAAOkB,KA5iBnB,WAA2B0I,IACvB,OAAO,IAAI5K,MAAc,KAAgCF,GAAmE8K,CA2iBxGE,IACZD,EAAW,IAERA,EAASzK,aAGpB,OAAOqK,IAAOD,GAAW7G,GAAQ8G,GAErC,YAAyBM,IACrB,MAAMC,EAAM,GACZ,IAAIzB,EAAOwB,GAASE,OACpB,MAAQ1B,EAAK2B,MACTF,EAAI9I,KAAKqH,EAAK5F,OACd4F,EAAOwB,GAASE,OAEpB,OAAOD,EAEX,MAAMG,GAAmB,gBACzB,YAA6BC,IACzB,OAAOA,GAAMV,QAAQS,GAAkB,IAAIE,IAAMA,EAAE,GAAGlF,eAE1D,YAA6BiF,IACzB,OAAOA,GAAMV,QAAQ,kBAAmB,SAASY,cA4BrD,YAAsBC,GAASC,EAAMC,GACjC,OAAQD,EAAKE,WACJ,EACD,OAAOH,GAAQI,aAAaH,EAAMC,QACjC,EACD,OAAOF,GAAQK,WAAWJ,EAAMC,QAC/B,EACD,OAAOF,GAAQM,gBAAgBL,EAAMC,QACpC,EACD,OAAOF,GAAQO,cAAcN,EAAMC,QAClC,EACD,OAAOF,GAAQQ,WAAWP,EAAMC,QAC/B,EACD,OAAOF,GAAQS,aAAaR,EAAMC,QACjC,EACD,OAAOF,GAAQU,eAAeT,EAAMC,QACnC,EACD,OAAOF,GAAQW,WAAWV,EAAMC,QAC/B,EACD,OAAOF,GAAQY,eAAeX,EAAMC,QACnC,EACD,OAAOF,GAAQa,kBAAkBZ,EAAMC,QACtC,GACD,OAAOF,GAAQc,gBAAgBb,EAAMC,QACpC,GACD,OAAOF,GAAQe,WAAWd,EAAMC,QAC/B,GACD,OAAOF,GAAQgB,aAAaf,EAAMC,WAElC,MAxnBZ,WAAyBe,IACrB,OAAO,IAAIxM,MAAc,KAA8BF,GAA+D0M,CAunBxGC,GAAqBf,CAGvC,YAAsB9K,GAASe,GAC3B,OAAO1B,OAAOyM,iBAAiB9L,IAASe,GA4C5C,YAA6BgL,GAAiB3L,GAC1C,MAAM4L,EAAc,GACpB,MAA8B,iBAAnBD,GACPA,GAAgBE,MAAM,WAAWzL,QAAQqJ,IAOjD,YAAiCqC,GAAUF,EAAa5L,GACpD,GAAmB,KAAf8L,GAAS,GAAW,CACpB,MAAM/G,EAqBd,YAA6BgH,GAAO/L,GAChC,OAAQ+L,QACC,SACD,MAAO,gBACN,SACD,MAAO,gBACN,aACD,MAAO,CAAC7J,EAAWC,KAAY+E,WAAW/E,IAAW+E,WAAWhF,OAC/D,aACD,MAAO,CAACA,EAAWC,KAAY+E,WAAW/E,IAAW+E,WAAWhF,WAEhElC,SAAOkB,KAlqBnB,YAAgC6K,IAC5B,OAAO,IAAI/M,MAAc,KAAqCF,GAAgDiN,CAiqB1FC,IACL,UAjCIC,CAAoBH,GAAU9L,GAC7C,GAAqB,mBAAV+E,EAEP,YADA6G,EAAY1K,KAAK6D,GAGrB+G,GAAW/G,EAEf,MAAMiC,GAAQ8E,GAAS9E,MAAM,2CAC7B,GAAa,MAATA,IAAiBA,GAAMzH,OAAS,EAChCS,SAAOkB,KA9oBf,YAA2BgL,IACvB,OAAO,IAAIlN,MAAc,KAA+BF,GAAwDoN,CA6oBhGC,IACLP,EAEX,MAAM1J,GAAY8E,GAAM,GAClBoF,GAAYpF,GAAM,GAClB7E,EAAU6E,GAAM,GACtB4E,EAAY1K,KAAKmL,GAAqBnK,GAAWC,IAE7B,KAAhBiK,GAAU,MA9BA,KA6BalK,IA7Bb,KA6BuCC,IAEjDyJ,EAAY1K,KAAKmL,GAAqBlK,EAASD,KA3BCoK,CAAwB7C,GAAKmC,EAAa5L,IAG1F4L,EAAY1K,KAAKyK,IAEdC,EA4CX,MAAMW,GAAsB,IAAIC,IAAI,CAAC,OAAQ,MACvCC,GAAuB,IAAID,IAAI,CAAC,QAAS,MAC/C,YAA8BE,GAAKC,GAC/B,MAAMC,EAAoBL,GAAoBM,IAAIH,KAAQD,GAAqBI,IAAIH,IAC7EI,GAAoBP,GAAoBM,IAAIF,IAAQF,GAAqBI,IAAIF,GACnF,MAAO,CAACzK,GAAWC,MACf,IAAI4K,EA3DM,KA2DKL,IAAoBA,IAAOxK,GACtC8K,EA5DM,KA4DKL,GAAoBA,GAAOxK,GAC1C,OAAK4K,GAAYH,GAA0C,kBAAd1K,KACzC6K,EAAW7K,GAAYqK,GAAoBM,IAAIH,IAAOD,GAAqBI,IAAIH,MAE9EM,GAAYF,IAAwC,kBAAZ3K,KACzC6K,EAAW7K,GAAUoK,GAAoBM,IAAIF,GAAOF,GAAqBI,IAAIF,IAE1EI,GAAYC,GAW3B,MACMC,GAAmB,IAAI7D,OAAQ,cAAwB,KAqC7D,YAA2B1J,GAAQwN,EAAUlN,EAAQmN,IACjD,OAAO,IAAIC,GAA2B1N,IAAQ2N,MAAMH,EAAUlN,EAAQmN,IAG1E,SACIG,YAAYC,GACRC,KAAKD,QAAUA,EAEnBF,MAAMH,EAAUlN,EAAQmN,IACpB,MAAM1C,GAAU,IAAIgD,GAA2BzN,GAC/CwN,KAAKE,8BAA8BjD,IACnC,MAAMkD,GAAMC,GAAaJ,KAAMK,GAAwBX,GAAWzC,IAClE,OAAIA,GAAQqD,8BAA8BC,MACUtD,GAAQqD,8BAA8BpN,OAEnFiN,GAEXD,8BAA8BjD,GAC1BA,EAAQuD,qBAfM,GAgBdvD,EAAQwD,gBAAkB,GAC1BxD,EAAQwD,gBAjBM,IAiB2B,GACzCxD,EAAQyD,YAAc,EAE1BvD,aAAauC,EAAUzC,GACnB,IAAI0D,GAAa1D,EAAQ0D,WAAa,EAClCC,GAAW3D,EAAQ2D,SAAW,EAClC,MAAMC,GAAS,GACTC,EAAc,GACpB,MAA+B,KAA3BpB,EAASqB,KAAKrJ,OAAO,IACrBuF,EAAQzK,OAAOkB,KAlzB3B,aACI,OAAO,IAAIlC,MAAc,KAA4BF,GACjD,CAgzBwB0P,IAExBtB,EAASuB,YAAYrO,QAAQsO,IAEzB,GADAlB,KAAKE,8BAA8BjD,GACnB,GAAZiE,EAAIhE,KAAuB,CAC3B,MAAMiE,EAAWD,EACXH,GAAOI,EAASJ,KACtBA,GAAKnP,WAAWyM,MAAM,WAAWzL,QAAQwO,KACrCD,EAASJ,KAAOK,GAChBP,GAAOnN,KAAKsM,KAAK5C,WAAW+D,EAAUlE,MAE1CkE,EAASJ,KAAOA,WAEC,GAAZG,EAAIhE,KAA4B,CACrC,MAAMmE,EAAarB,KAAK3C,gBAAgB6D,EAAKjE,GAC7C0D,IAAcU,EAAWV,WACzBC,IAAYS,EAAWT,SACvBE,EAAYpN,KAAK2N,QAGjBpE,EAAQzK,OAAOkB,KAl0B/B,aACI,OAAO,IAAIlC,MAAc,KAA+BF,GAAiB,CAi0BzCgQ,MAGrB,CACHpE,KAAM,EACN6D,KAAMrB,EAASqB,KACfF,UACAC,cACAH,cACAC,YACAW,QAAS,MAGjBnE,WAAWsC,EAAUzC,GACjB,MAAMuE,GAAWxB,KAAKtC,WAAWgC,EAAShF,OAAQuC,GAC5CwE,GAAa/B,EAAS6B,SAAW7B,EAAS6B,QAAQ1F,QAAW,KACnE,GAAI2F,GAASE,sBAAuB,CAChC,MAAMC,GAAc,IAAI3C,IAClBnD,EAAS4F,IAAa,GAC5BD,GAAS9G,OAAO9H,QAAQuC,IACpB,GAAIyM,GAASzM,GAAQ,CACjB,MAAM0M,EAAY1M,EAClBlC,OAAOC,KAAK2O,GAAWjP,QAAQO,KAC3B2O,GAAmBD,EAAU1O,KAAOP,QAAQmP,KACnClG,EAAO/B,eAAeiI,KACvBJ,GAAYK,IAAID,WAMhCJ,GAAYpB,OACW0B,GAAgBN,GAAYO,UACnDjF,EAAQzK,OAAOkB,KAh2B/B,YAAsByO,GAAcR,GAChC,OAAO,IAAInQ,MAAc,KAA0BF,GACyE,CA81B5F8Q,IAA4BC,CAGxD,MAAO,CACHnF,KAAM,EACN6D,KAAMrB,EAASqB,KACfzJ,MAAOkK,GACPD,QAASE,GAAY,CAAE5F,OAAQ4F,IAAc,MAGrDpE,gBAAgBqC,EAAUzC,GACtBA,EAAQ0D,WAAa,EACrB1D,EAAQ2D,SAAW,EACnB,MAAM0B,GAAYlC,GAAaJ,KAAMK,GAAwBX,EAAS4C,WAAYrF,GAElF,MAAO,CACHC,KAAM,EACNqF,SAHaC,GAAoB9C,EAAShB,KAAMzB,EAAQzK,QAIxD8P,aACA3B,WAAY1D,EAAQ0D,WACpBC,SAAU3D,EAAQ2D,SAClBW,QAASkB,GAA0B/C,EAAS6B,UAGpDjE,cAAcoC,EAAUzC,GACpB,MAAO,CACHC,KAAM,EACN1B,MAAOkE,EAASlE,MAAMxG,IAAI0N,IAAKtC,GAAaJ,KAAM0C,GAAGzF,IACrDsE,QAASkB,GAA0B/C,EAAS6B,UAGpDhE,WAAWmC,EAAUzC,GACjB,MAAMyD,GAAczD,EAAQyD,YAC5B,IAAIiC,GAAe,EACnB,MAAMnH,GAAQkE,EAASlE,MAAMxG,IAAI4N,IAC7B3F,EAAQyD,YAAcA,GACtB,MAAMmC,EAAWzC,GAAaJ,KAAM4C,EAAM3F,GAC1C0F,UAAeG,KAAKC,IAAIJ,GAAc1F,EAAQyD,aACvCmC,IAEX5F,SAAQyD,YAAciC,GACf,CACHzF,KAAM,EACN1B,SACA+F,QAASkB,GAA0B/C,EAAS6B,UAGpD/D,aAAakC,EAAUzC,GACnB,MAAM+F,GAoSd,YAA4B7N,GAAO3C,GAC/B,GAAI2C,GAAM2E,eAAe,YACrB,OAAO3E,GAEX,GAAoB,iBAATA,GAEP,OAAO8N,GADUC,GAAc/N,GAAO3C,GAAQ8F,SACf,EAAG,IAEtC,MAAM6K,EAAWhO,GAEjB,GADkBgO,EAAS9E,MAAM,OAAO+E,KAAKC,IAAoB,KAAfA,GAAE3L,OAAO,IAA4B,KAAf2L,GAAE3L,OAAO,IAClE,CACX,MAAMyI,GAAM8C,GAAc,EAAG,EAAG,IAChC9C,UAAImD,SAAU,EACdnD,GAAIgD,SAAWA,EACRhD,GAEX,MAAMvG,GAAUsJ,GAAcC,EAAU3Q,GACxC,OAAOyQ,GAAcrJ,GAAQtB,SAAUsB,GAAQrB,MAAOqB,GAAQpB,QArTxC+K,CAAmB7D,EAAS9F,QAASqD,EAAQzK,QAC/DyK,EAAQuG,sBAAwBR,GAChC,IAAIxB,GACAiC,GAAgB/D,EAAShF,OAASgF,EAAShF,QAASpD,QAAM,IAC9D,GAA0B,GAAtBmM,GAAcvG,KACdsE,GAAWxB,KAAKvC,eAAegG,GAAexG,OAE7C,CACD,IAAIwG,EAAgB/D,EAAShF,OACzBgJ,GAAU,EACd,IAAKD,EAAe,CAChBC,GAAU,EACV,MAAMC,GAAe,GACjBX,GAAUxK,SACVmL,GAAanL,OAAYwK,GAAUxK,QAEvCiL,GAAgBnM,QAAMqM,IAE1B1G,EAAQyD,aAAesC,GAAU1K,SAAW0K,GAAUzK,MACtD,MAAMqL,EAAY5D,KAAKtC,WAAW+F,EAAexG,GACjD2G,EAAUC,YAAcH,EACxBlC,GAAWoC,EAEf3G,SAAQuG,sBAAwB,KACzB,CACHtG,KAAM,EACNtD,QAASoJ,GACT1L,MAAOkK,GACPD,QAAS,MAGjB7D,WAAWgC,EAAUzC,GACjB,MAAMkD,GAAMH,KAAK8D,cAAcpE,EAAUzC,GACzC,YAAK8G,kBAAkB5D,GAAKlD,GACrBkD,GAEX2D,cAAcpE,EAAUzC,GACpB,MAAMvC,GAAS,GACX7D,MAAM4E,QAAQiE,EAAShF,QACvBgF,EAAShF,OAAO9H,QAAQoR,IACK,iBAAdA,EACPC,GAAkBzQ,KACdkH,GAAOhH,KAAKsQ,GAGZ/G,EAAQzK,OAAOkB,KAz7BvC,YAA2ByB,IACvB,OAAO,IAAI3D,MAAc,KAAgCF,GAAoD6D,CAw7BrE+O,IAIxBxJ,GAAOhH,KAAKsQ,KAKpBtJ,GAAOhH,KAAKgM,EAAShF,QAEzB,IAAIgH,IAAwB,EACxByC,GAAkB,KACtBzJ,UAAO9H,QAAQwR,IACX,GAAIxC,GAASwC,GAAY,CACrB,MAAMC,EAAWD,EACX5L,EAAS6L,EAAS7L,OAKxB,GAJIA,IACA2L,GAAkB3L,SACX6L,EAAS7L,SAEfkJ,GACD,QAASvO,MAAQkR,EAEb,GAAIlP,EADmBhC,IACbvB,WAAW6D,QA3nBb,OA2nBiD,EAAG,CACxDiM,IAAwB,EACxB,UAMb,CACHxE,KAAM,EACNxC,UACAlC,OAAQ2L,GACRrR,OAAQ4M,EAAS5M,OACjB4O,yBACAH,QAAS,MAGjBwC,kBAAkB5D,EAAKlD,GACnB,MAAMrD,GAAUqD,EAAQuG,sBACxB,IAAIc,GAAUrH,EAAQyD,YAClB6D,GAAYtH,EAAQyD,YACpB9G,IAAW2K,GAAY,IACvBA,IAAa3K,GAAQtB,SAAWsB,GAAQrB,OAE5C4H,EAAIzF,OAAO9H,QAAQ4R,IACK,iBAATA,GAEXvR,OAAOC,KAAKsR,GAAO5R,QAAQO,IACvB,IAAK6M,KAAKD,QAAQhI,sBAAsB5E,GAGpC,cAFOqR,EAAMrR,QACb8J,EAAQqD,8BAA8B0B,IAAI7O,GAG9C,MAAMsN,EAAkBxD,EAAQwD,gBAAgBxD,EAAQuD,sBAClDiE,GAAiBhE,EAAgBtN,GACvC,IAAIuR,IAAuB,EACvBD,KACIF,IAAaD,IAAWC,IAAaE,GAAeF,WACpDD,IAAWG,GAAeH,UAC1BrH,EAAQzK,OAAOkB,KAj/BvC,WAAkCP,GAAMwR,EAAYC,EAAUC,GAAaC,IACvE,OAAO,IAAItT,MAAc,KAAuCF,GACqIwT,CA++B7JC,IACpBL,IAAuB,GAK3BH,GAAYE,GAAeF,WAE3BG,KACAjE,EAAgBtN,GAAQ,CAAEoR,aAAWD,aAErCrH,EAAQsE,SAxgB5B,YAA6BpM,GAAOoM,EAAS/O,GACzC,MAAMqJ,GAAS0F,EAAQ1F,QAAU,GAC3BtC,GAAUuI,GAAmB3M,IAC/BoE,GAAQxH,QACRwH,GAAQ3G,QAAQwJ,KACPP,GAAO/B,eAAesC,KACvB5J,EAAOkB,KAzhBvB,WAA4B0I,IACxB,OAAO,IAAI5K,MAAc,KAAiCF,GACP8K,CAuhB3B4I,GAAmB5I,GAmgB3B6I,CAAoBT,EAAMrR,GAAO8J,EAAQsE,QAAStE,EAAQzK,YAK1EiL,eAAeiC,EAAUzC,GACrB,MAAMkD,GAAM,CAAEjD,KAAM,EAAmBxC,OAAQ,GAAI6G,QAAS,MAC5D,IAAKtE,EAAQuG,sBACTvG,SAAQzK,OAAOkB,KAjgC3B,cACI,OAAO,IAAIlC,MAAc,KAA8BF,GAAkB,CAggC7C4T,IACb/E,GAGX,IAAIgF,GAA4B,EAChC,MAAMC,EAAU,GAChB,IAAIC,GAAoB,EACpBC,GAAsB,EACtB5S,GAAiB,EACrB,MAAML,GAAYqN,EAASlE,MAAMxG,IAAI0F,KACjC,MAAMpD,GAAQ0I,KAAK8D,cAAcpJ,GAAQuC,GACzC,IAAIsI,GAA4B,MAAhBjO,GAAMxE,OAAiBwE,GAAMxE,OAkIzD,YAAuB4H,IACnB,GAAqB,iBAAVA,GACP,OAAO,KACX,IAAI5H,EAAS,KACb,GAAI+D,MAAM4E,QAAQf,IACdA,GAAO9H,QAAQoR,IACX,GAAIpC,GAASoC,IAAeA,EAAWlK,eAAe,UAAW,CAC7D,MAAMU,GAAMwJ,EACZlR,EAAS4G,WAAWc,GAAI1H,eACjB0H,GAAI1H,kBAId8O,GAASlH,KAAWA,GAAOZ,eAAe,UAAW,CAC1D,MAAMU,EAAME,GACZ5H,EAAS4G,WAAWc,EAAI1H,eACjB0H,EAAI1H,OAEf,OAAOA,EApJuD0S,CAAclO,GAAMoD,QACtE5H,GAAS,EACb,OAAiB,MAAbyS,KACAJ,KACArS,GAASwE,GAAMxE,OAASyS,IAE5BD,EAAsBA,GAAuBxS,GAAS,GAAKA,GAAS,EACpEuS,EAAoBA,GAAqBvS,GAASJ,GAClDA,GAAiBI,GACjBsS,EAAQ1R,KAAKZ,IACNwE,KAEPgO,GACArI,EAAQzK,OAAOkB,KAthC3B,cACI,OAAO,IAAIlC,MAAc,KAA2BF,GAAkB,CAqhC1CmU,IAEpBJ,GACApI,EAAQzK,OAAOkB,KAthC3B,aACI,OAAO,IAAIlC,MAAc,KAA0CF,GAAkB,CAqhCzDoU,IAExB,MAAM3T,EAAS2N,EAASlE,MAAMzJ,OAC9B,IAAI4T,GAAkB,EAClBR,GAA4B,GAAKA,GAA4BpT,EAC7DkL,EAAQzK,OAAOkB,KAxhC3B,aACI,OAAO,IAAIlC,MAAc,KAAsCF,GAAkB,CAuhCrDsU,IAEc,GAA7BT,KACLQ,GAhCwB,GAgCiB5T,EAAS,IAEtD,MAAM8T,GAAQ9T,EAAS,EACjB2O,GAAczD,EAAQyD,YACtB8C,GAAwBvG,EAAQuG,sBAChCsC,GAAkBtC,GAAsBlL,SAC9CjG,UAAUO,QAAQ,CAACC,GAAIiI,MACnB,MAAMhI,GAAS6S,GAAkB,EAAK7K,IAAK+K,GAAQ,EAAKF,GAAkB7K,GAAMsK,EAAQtK,IAClFiL,GAAwBjT,GAASgT,GACvC7I,EAAQyD,YAAcA,GAAc8C,GAAsBjL,MAAQwN,GAClEvC,GAAsBlL,SAAWyN,GACjC/F,KAAK+D,kBAAkBlR,GAAIoK,GAC3BpK,GAAGC,OAASA,GACZqN,GAAIzF,OAAOhH,KAAKb,MAEbsN,GAEXxC,eAAe+B,EAAUzC,GACrB,MAAO,CACHC,KAAM,EACNoF,UAAWlC,GAAaJ,KAAMK,GAAwBX,EAAS4C,WAAYrF,GAC3EsE,QAASkB,GAA0B/C,EAAS6B,UAGpD3D,kBAAkB8B,EAAUzC,GACxBA,SAAQ2D,WACD,CACH1D,KAAM,EACNqE,QAASkB,GAA0B/C,EAAS6B,UAGpD1D,gBAAgB6B,EAAUzC,GACtB,MAAO,CACHC,KAAM,GACNoF,UAAWtC,KAAKrC,eAAe+B,EAAS4C,UAAWrF,GACnDsE,QAASkB,GAA0B/C,EAAS6B,UAGpDzD,WAAW4B,EAAUzC,GACjB,MAAM+I,GAAiB/I,EAAQuD,qBACzBe,GAAW7B,EAAS6B,SAAW,GACrCtE,EAAQ0D,aACR1D,EAAQgJ,aAAevG,EACvB,MAAOzJ,GAAUiQ,GAiCzB,YAA2BjQ,IACvB,MAAMkQ,IAAelQ,GAASoI,MAAM,WAAW+H,KAAKC,GAxZrC,SAwZ8CA,GAC7D,OAAIF,IACAlQ,GAAWA,GAASiG,QAAQuD,GAAkB,KAIlDxJ,GAAWA,GAASiG,QAAQ,OAAQ9C,IAC/B8C,QAAQ,QAAS1C,GAASJ,GAAsB,IAAMI,EAAM7D,OAAO,IACnEuG,QAAQ,cAAe5C,IACrB,CAACrD,GAAUkQ,GA3CkBG,CAAkB5G,EAASzJ,UAC3DgH,EAAQuD,qBACJwF,GAAejU,OAAUiU,GAAiB,IAAM/P,GAAYA,GAChEsQ,GAAgBtJ,EAAQwD,gBAAiBxD,EAAQuD,qBAAsB,IACvE,MAAM8B,EAAYlC,GAAaJ,KAAMK,GAAwBX,EAAS4C,WAAYrF,GAClFA,SAAQgJ,aAAe,KACvBhJ,EAAQuD,qBAAuBwF,GACxB,CACH9I,KAAM,GACNjH,YACA4P,MAAOtE,GAAQsE,OAAS,EACxBW,WAAYjF,GAAQiF,SACpBN,cACA5D,YACAmE,iBAAkB/G,EAASzJ,SAC3BsL,QAASkB,GAA0B/C,EAAS6B,UAGpDxD,aAAa2B,EAAUzC,GACdA,EAAQgJ,cACThJ,EAAQzK,OAAOkB,KAvlC3B,cACI,OAAO,IAAIlC,MAAc,KAA4BF,GAAkB,CAslC3CoV,IAExB,MAAM9M,GAA+B,SAArB8F,EAAS9F,QACrB,CAAEtB,SAAU,EAAGC,MAAO,EAAGC,OAAQ,QACjC0K,GAAcxD,EAAS9F,QAASqD,EAAQzK,QAAQ,GACpD,MAAO,CACH0K,KAAM,GACNoF,UAAWlC,GAAaJ,KAAMK,GAAwBX,EAAS4C,WAAYrF,GAC3ErD,WACA2H,QAAS,OAmBrB,SACIzB,YAAYtN,GACRwN,KAAKxN,OAASA,EACdwN,KAAKW,WAAa,EAClBX,KAAKY,SAAW,EAChBZ,KAAK2G,kBAAoB,KACzB3G,KAAKiG,aAAe,KACpBjG,KAAKQ,qBAAuB,KAC5BR,KAAKwD,sBAAwB,KAC7BxD,KAAKU,YAAc,EACnBV,KAAKS,gBAAkB,GACvBT,KAAKuB,QAAU,KACfvB,KAAKM,8BAAgC,IAAItB,KAuBjD,YAAkB7J,IACd,OAAQ0B,MAAM4E,QAAQtG,KAA0B,iBAATA,EAAS,CAqBpD,YAAmCoM,IAC/B,OAAIA,IACAA,GAAU3G,GAAQ2G,KACN1F,SACR0F,GAAQ1F,OAhEpB,YAAyBrB,IACrB,OAAOA,GAAMI,GAAQJ,IAAO,KA+DAoM,CAAgBrF,GAAQ1F,SAIhD0F,GAAU,GAEPA,GAEX,YAAuBjJ,GAAUC,EAAOC,GACpC,MAAO,CAAEF,YAAUC,QAAOC,UAG9B,YAAmCpG,GAASC,EAAWwU,EAAeC,GAAgBxO,GAAUC,GAAOC,EAAS,KAAMuO,GAAc,GAChI,MAAO,CACH7J,KAAM,EACN9K,WACAC,YACAwU,gBACAC,kBACAxO,YACAC,SACAhE,UAAW+D,GAAWC,GACtBC,SACAuO,eAIR,SACIjH,cACIE,KAAKgH,KAAO,IAAI5R,IAEpBC,IAAIjD,GACA,OAAO4N,KAAKgH,KAAK3R,IAAIjD,IAAY,GAErC6U,OAAO7U,EAAS8U,GACZ,IAAIC,GAAuBnH,KAAKgH,KAAK3R,IAAIjD,GACpC+U,IACDnH,KAAKgH,KAAK1R,IAAIlD,EAAS+U,GAAuB,IAElDA,GAAqBzT,QAAQwT,GAEjC7H,IAAIjN,GACA,OAAO4N,KAAKgH,KAAK3H,IAAIjN,GAEzBgV,QACIpH,KAAKgH,KAAKI,SAWlB,MAEMC,GAAoB,IAAIzL,OADV,SAC8B,KAE5C0L,GAAoB,IAAI1L,OADV,SAC8B,KAqFlD,YAAiC1J,GAAQqV,EAAapH,EAAKqH,GAAgBC,GAAgBC,GAAiB,GAAIC,EAAc,GAAIpG,EAASqG,EAAiBpV,GAAS,IACjK,OAAO,IAAIqV,IAAkCC,eAAe5V,GAAQqV,EAAapH,EAAKqH,GAAgBC,GAAgBC,GAAgBC,EAAapG,EAASqG,EAAiBpV,IAEjL,SACIsV,eAAe5V,EAAQqV,EAAapH,GAAKqH,GAAgBC,GAAgBC,EAAgBC,EAAapG,EAASqG,GAAiBpV,GAAS,IACrIoV,GAAkBA,IAAmB,IAAIG,GACzC,MAAM9K,EAAU,IAAI+K,GAAyB9V,EAAQqV,EAAaK,GAAiBJ,GAAgBC,GAAgBjV,GAAQ,IAC3HyK,EAAQsE,QAAUA,EAClBtE,EAAQgL,gBAAgBC,UAAU,CAACR,GAAiB,KAAMzK,EAAQzK,OAAQ+O,GAC1EnB,GAAaJ,KAAMG,GAAKlD,GAExB,MAAMkL,GAAYlL,EAAQkL,UAAUC,OAAOC,IAAYA,GAASC,qBAChE,GAAIrV,OAAOC,KAAKyU,GAAa5V,OAAQ,CAKjC,IAAIwW,GACJ,QAASzN,GAAIqN,GAAUpW,OAAS,EAAG+I,IAAK,EAAGA,KAAK,CAC5C,MAAMuN,GAAWF,GAAUrN,IAC3B,GAAIuN,GAASjW,UAAYmV,EAAa,CAClCgB,GAAmBF,GACnB,OAGJE,KAAqBA,GAAiBC,2BACtCD,GAAiBL,UAAU,CAACP,GAAc,KAAM1K,EAAQzK,OAAQ+O,GAGxE,OAAO4G,GAAUpW,OAASoW,GAAUnT,IAAIqT,IAAYA,GAASP,kBACzD,CAACW,GAA0BlB,EAAa,GAAI,GAAI,GAAI,EAAG,EAAG,IAAI,IAEtEpK,aAAagD,EAAKlD,GAAS,CAG3BG,WAAW+C,EAAKlD,GAAS,CAGzBI,gBAAgB8C,EAAKlD,GAAS,CAG9BW,kBAAkBuC,EAAKlD,GACnB,MAAMyL,GAAsBzL,EAAQ2K,gBAAgBvS,IAAI4H,EAAQ7K,SAChE,GAAIsW,GAAqB,CACrB,MAAMC,GAAe1L,EAAQ2L,iBAAiBzI,EAAIoB,SAC5CgD,GAAYtH,EAAQgL,gBAAgBvH,YACpC4D,EAAUtE,KAAK6I,sBAAsBH,GAAqBC,GAAcA,GAAapH,SACvFgD,IAAaD,GAGbrH,EAAQ6L,yBAAyBxE,GAGzCrH,EAAQ8L,aAAe5I,EAE3BtC,gBAAgBsC,EAAKlD,GACjB,MAAM0L,GAAe1L,EAAQ2L,iBAAiBzI,EAAIoB,SAClDoH,GAAaG,2BACb9I,KAAKrC,eAAewC,EAAImC,UAAWqG,IACnC1L,EAAQ6L,yBAAyBH,GAAaV,gBAAgBvH,aAC9DzD,EAAQ8L,aAAe5I,EAE3B0I,sBAAsB3B,EAAcjK,EAASsE,IAEzC,IAAIoB,GADc1F,EAAQgL,gBAAgBvH,YAI1C,MAAMpI,EAA+B,MAApBiJ,GAAQjJ,SAAmB0Q,GAAmBzH,GAAQjJ,UAAY,KAC7EC,EAAyB,MAAjBgJ,GAAQhJ,MAAgByQ,GAAmBzH,GAAQhJ,OAAS,KAC1E,OAAiB,IAAbD,GACA4O,EAAatU,QAAQqW,IACjB,MAAMC,GAAqBjM,EAAQkM,4BAA4BF,EAAa3Q,EAAUC,GACtFoK,GACIG,KAAKC,IAAIJ,GAAcuG,GAAmB5Q,SAAW4Q,GAAmB3Q,SAG7EoK,GAEXhF,eAAewC,EAAKlD,GAChBA,EAAQmM,cAAcjJ,EAAIoB,SAAS,GACnCnB,GAAaJ,KAAMG,EAAImC,UAAWrF,GAClCA,EAAQ8L,aAAe5I,EAE3B7C,cAAc6C,EAAKlD,GACf,MAAMoM,GAAkBpM,EAAQoM,gBAChC,IAAIC,GAAMrM,EACV,MAAMsE,GAAUpB,EAAIoB,QACpB,GAAIA,KAAYA,GAAQ1F,QAAU0F,GAAQhJ,SACtC+Q,GAAMrM,EAAQ2L,iBAAiBrH,IAC/B+H,GAAIR,2BACiB,MAAjBvH,GAAQhJ,OAAe,CACM,GAAzB+Q,GAAIP,aAAa7L,OACjBoM,GAAIrB,gBAAgBsB,wBACpBD,GAAIP,aAAeS,IAEvB,MAAMjR,EAAQyQ,GAAmBzH,GAAQhJ,OACzC+Q,GAAIG,cAAclR,GAGtB4H,EAAI3E,MAAMzJ,SACVoO,EAAI3E,MAAM5I,QAAQ8P,GAAKtC,GAAaJ,KAAM0C,EAAG4G,KAE7CA,GAAIrB,gBAAgByB,wBAIhBJ,GAAID,gBAAkBA,IACtBC,GAAIR,4BAGZ7L,EAAQ8L,aAAe5I,EAE3B5C,WAAW4C,EAAKlD,GACZ,MAAM0M,GAAiB,GACvB,IAAIhH,GAAe1F,EAAQgL,gBAAgBvH,YAC3C,MAAMnI,GAAQ4H,EAAIoB,SAAWpB,EAAIoB,QAAQhJ,MAAQyQ,GAAmB7I,EAAIoB,QAAQhJ,OAAS,EACzF4H,EAAI3E,MAAM5I,QAAQ8P,IACd,MAAMiG,EAAe1L,EAAQ2L,iBAAiBzI,EAAIoB,SAC9ChJ,IACAoQ,EAAac,cAAclR,IAE/B6H,GAAaJ,KAAM0C,EAAGiG,GACtBhG,GAAeG,KAAKC,IAAIJ,GAAcgG,EAAaV,gBAAgBvH,aACnEiJ,GAAejW,KAAKiV,EAAaV,mBAKrC0B,GAAe/W,QAAQyV,GAAYpL,EAAQgL,gBAAgB2B,6BAA6BvB,IACxFpL,EAAQ6L,yBAAyBnG,IACjC1F,EAAQ8L,aAAe5I,EAE3B0J,aAAa1J,EAAKlD,GACd,GAAIkD,EAAImD,QAAS,CACb,MAAMH,GAAWhD,EAAIgD,SAErB,OAAOD,GADajG,EAAQpB,OAASiO,GAAkB3G,GAAUlG,EAAQpB,OAAQoB,EAAQzK,QAAU2Q,GACjElG,EAAQzK,QAG1C,MAAO,CAAE8F,SAAU6H,EAAI7H,SAAUC,MAAO4H,EAAI5H,MAAOC,OAAQ2H,EAAI3H,QAGvEgF,aAAa2C,EAAKlD,GACd,MAAMrD,GAAUqD,EAAQuG,sBAAwBxD,KAAK6J,aAAa1J,EAAIvG,QAASqD,GACzEoL,GAAWpL,EAAQgL,gBACrBrO,GAAQrB,QACR0E,EAAQ8M,cAAcnQ,GAAQrB,OAC9B8P,GAASkB,yBAEb,MAAMjS,GAAQ6I,EAAI7I,MACA,GAAdA,GAAM4F,KACN8C,KAAKvC,eAAenG,GAAO2F,IAG3BA,EAAQ8M,cAAcnQ,GAAQtB,UAC9B0H,KAAKtC,WAAWpG,GAAO2F,GACvBoL,GAASqB,yBAEbzM,EAAQuG,sBAAwB,KAChCvG,EAAQ8L,aAAe5I,EAE3BzC,WAAWyC,EAAKlD,GACZ,MAAMoL,GAAWpL,EAAQgL,gBACnBrO,GAAUqD,EAAQuG,uBAGnB5J,IAAWyO,GAAS2B,4BAA4BjY,QACjDsW,GAAS4B,eAEb,MAAMzR,GAAUoB,IAAWA,GAAQpB,QAAW2H,EAAI3H,OAC9C2H,EAAI0D,YACJwE,GAAS6B,eAAe1R,IAGxB6P,GAASH,UAAU/H,EAAIzF,OAAQlC,GAAQyE,EAAQzK,OAAQyK,EAAQsE,SAEnEtE,EAAQ8L,aAAe5I,EAE3B1C,eAAe0C,EAAKlD,GAChB,MAAMuG,GAAwBvG,EAAQuG,sBAChCe,GAAatH,EAAQgL,gBAAiB3P,SACtCA,GAAWkL,GAAsBlL,SAEjC6R,EAAgBxB,EADOC,mBACMX,gBACnCkC,EAAc3R,OAASgL,GAAsBhL,OAC7C2H,EAAIzF,OAAO9H,QAAQgQ,IAEfuH,EAAcC,aADCxH,EAAK9P,QAAU,GACKwF,IACnC6R,EAAcjC,UAAUtF,EAAKlI,OAAQkI,EAAKpK,OAAQyE,EAAQzK,OAAQyK,EAAQsE,SAC1E4I,EAAcT,0BAIlBzM,EAAQgL,gBAAgB2B,6BAA6BO,GAGrDlN,EAAQ6L,yBAAyBvE,GAAYjM,IAC7C2E,EAAQ8L,aAAe5I,EAE3BrC,WAAWqC,EAAKlD,GAGZ,MAAMsH,GAAYtH,EAAQgL,gBAAgBvH,YACpCa,GAAWpB,EAAIoB,SAAW,GAC1BhJ,GAAQgJ,GAAQhJ,MAAQyQ,GAAmBzH,GAAQhJ,OAAS,EAC9DA,KAC+B,IAA9B0E,EAAQ8L,aAAa7L,MACJ,GAAbqH,IAAkBtH,EAAQgL,gBAAgB+B,4BAA4BjY,UAC3EkL,EAAQgL,gBAAgBsB,wBACxBtM,EAAQ8L,aAAeS,IAE3B,IAAI7G,EAAe4B,GACnB,MAAM8F,EAAOpN,EAAQpF,YAAYsI,EAAIlK,SAAUkK,EAAIsG,iBAAkBtG,EAAI0F,MAAO1F,EAAI+F,cAAa3E,GAAQiF,SAAyBvJ,EAAQzK,QAC1IyK,EAAQqN,kBAAoBD,EAAKtY,OACjC,IAAIwY,EAAsB,KAC1BF,EAAKzX,QAAQ,CAACR,GAAS0I,MACnBmC,EAAQuN,kBAAoB1P,GAC5B,MAAM6N,EAAe1L,EAAQ2L,iBAAiBzI,EAAIoB,QAASnP,IACvDmG,IACAoQ,EAAac,cAAclR,IAE3BnG,KAAY6K,EAAQ7K,UACpBmY,EAAsB5B,EAAaV,iBAEvC7H,GAAaJ,KAAMG,EAAImC,UAAWqG,GAIlCA,EAAaV,gBAAgByB,wBAE7B/G,EAAeG,KAAKC,IAAIJ,EADRgG,EAAaV,gBAAgBvH,YACP4D,GAE1CrH,EAAQuN,kBAAoB,EAC5BvN,EAAQqN,kBAAoB,EAC5BrN,EAAQ6L,yBAAyBnG,GAC7B4H,IACAtN,EAAQgL,gBAAgB2B,6BAA6BW,GACrDtN,EAAQgL,gBAAgBsB,yBAE5BtM,EAAQ8L,aAAe5I,EAE3BpC,aAAaoC,EAAKlD,GACd,MAAMwN,GAAgBxN,EAAQwN,cACxBC,GAAKzN,EAAQgL,gBACbrO,GAAUuG,EAAIvG,QACdtB,EAAWwK,KAAK6H,IAAI/Q,GAAQtB,UAC5BsS,EAAUtS,GAAY2E,EAAQqN,kBAAoB,GACxD,IAAI/R,EAAQD,EAAW2E,EAAQuN,kBAE/B,OADyB5Q,GAAQtB,SAAW,EAAI,UAAYsB,GAAQpB,YAE3D,UACDD,EAAQqS,EAAUrS,EAClB,UACC,OACDA,EAAQkS,GAAcI,mBAG9B,MAAMxC,GAAWpL,EAAQgL,gBACrB1P,GACA8P,GAASoB,cAAclR,GAE3B,MAAMuS,EAAezC,GAAS3H,YAC9BN,GAAaJ,KAAMG,EAAImC,UAAWrF,GAClCA,EAAQ8L,aAAe5I,EAKvBsK,GAAcI,mBACTH,GAAGhK,YAAcoK,GAAiBJ,GAAGnG,UAAYkG,GAAcxC,gBAAgB1D,YAG5F,MAAMiF,GAA6B,GACnC,SACI1J,YAAYC,EAAS3N,EAASwV,GAAiBmD,GAAiBC,GAAiBxY,EAAQ2V,EAAW8C,GAChGjL,KAAKD,QAAUA,EACfC,KAAK5N,QAAUA,EACf4N,KAAK4H,gBAAkBA,GACvB5H,KAAK+K,gBAAkBA,GACvB/K,KAAKgL,gBAAkBA,GACvBhL,KAAKxN,OAASA,EACdwN,KAAKmI,UAAYA,EACjBnI,KAAKyK,cAAgB,KACrBzK,KAAKwD,sBAAwB,KAC7BxD,KAAK+I,aAAeS,GACpBxJ,KAAKqJ,gBAAkB,EACvBrJ,KAAKuB,QAAU,GACfvB,KAAKwK,kBAAoB,EACzBxK,KAAKsK,kBAAoB,EACzBtK,KAAK6K,mBAAqB,EAC1B7K,KAAKiI,gBAAkBgD,GAAmB,IAAIC,GAAgBlL,KAAKD,QAAS3N,EAAS,GACrF+V,EAAUzU,KAAKsM,KAAKiI,iBAEpBpM,aACA,OAAOmE,KAAKuB,QAAQ1F,OAExBuN,cAAc7H,EAAS4J,GACnB,IAAK5J,EACD,OACJ,MAAM6J,GAAa7J,EACnB,IAAI8J,GAAkBrL,KAAKuB,QAEA,MAAvB6J,GAAW9S,WACX+S,GAAgB/S,SAAW0Q,GAAmBoC,GAAW9S,WAErC,MAApB8S,GAAW7S,QACX8S,GAAgB9S,MAAQyQ,GAAmBoC,GAAW7S,QAE1D,MAAM+S,GAAYF,GAAWvP,OAC7B,GAAIyP,GAAW,CACX,IAAIC,EAAiBF,GAAgBxP,OAChC0P,IACDA,EAAiBvL,KAAKuB,QAAQ1F,OAAS,IAE3C5I,OAAOC,KAAKoY,IAAW1Y,QAAQmO,MACtBoK,IAAiBI,EAAezR,eAAeiH,MAChDwK,EAAexK,GAAQ+I,GAAkBwB,GAAUvK,GAAOwK,EAAgBvL,KAAKxN,YAK/FgZ,eACI,MAAMjK,EAAU,GAChB,GAAIvB,KAAKuB,QAAS,CACd,MAAMkK,EAAYzL,KAAKuB,QAAQ1F,OAC/B,GAAI4P,EAAW,CACX,MAAM5P,GAAS0F,EAAQ1F,OAAY,GACnC5I,OAAOC,KAAKuY,GAAW7Y,QAAQmO,KAC3BlF,GAAOkF,IAAQ0K,EAAU1K,OAIrC,OAAOQ,EAEXqH,iBAAiBrH,EAAU,KAAMnP,EAASsZ,IACtC,MAAMC,GAASvZ,GAAW4N,KAAK5N,QACzB6K,GAAU,IAAI+K,GAAyBhI,KAAKD,QAAS4L,GAAQ3L,KAAK4H,gBAAiB5H,KAAK+K,gBAAiB/K,KAAKgL,gBAAiBhL,KAAKxN,OAAQwN,KAAKmI,UAAWnI,KAAKiI,gBAAgB2D,KAAKD,GAAQD,IAAW,IAC/MzO,UAAQ8L,aAAe/I,KAAK+I,aAC5B9L,GAAQuG,sBAAwBxD,KAAKwD,sBACrCvG,GAAQsE,QAAUvB,KAAKwL,eACvBvO,GAAQmM,cAAc7H,GACtBtE,GAAQuN,kBAAoBxK,KAAKwK,kBACjCvN,GAAQqN,kBAAoBtK,KAAKsK,kBACjCrN,GAAQwN,cAAgBzK,KACxBA,KAAKqJ,kBACEpM,GAEX6L,yBAAyB4C,GACrB,YAAK3C,aAAeS,GACpBxJ,KAAKiI,gBAAkBjI,KAAKiI,gBAAgB2D,KAAK5L,KAAK5N,QAASsZ,GAC/D1L,KAAKmI,UAAUzU,KAAKsM,KAAKiI,iBAClBjI,KAAKiI,gBAEhBkB,4BAA4BF,EAAa3Q,EAAUC,IAC/C,MAAMsT,GAAiB,CACnBvT,SAAsB,MAAZA,EAAmBA,EAAW2Q,EAAY3Q,SACpDC,MAAOyH,KAAKiI,gBAAgBvH,aAAwB,MAATnI,GAAgBA,GAAQ,GAAK0Q,EAAY1Q,MACpFC,OAAQ,IAENsT,GAAU,IAAIC,GAAmB/L,KAAKD,QAASkJ,EAAY7W,QAAS6W,EAAY5W,UAAW4W,EAAYpC,cAAeoC,EAAYnC,eAAgB+E,GAAgB5C,EAAY+C,yBACpL,YAAK7D,UAAUzU,KAAKoY,IACbD,GAEX9B,cAAckC,GACVjM,KAAKiI,gBAAgBmC,YAAYpK,KAAKiI,gBAAgB3P,SAAW2T,GAErExC,cAAclR,GAENA,EAAQ,GACRyH,KAAKiI,gBAAgBwB,cAAclR,GAG3CV,YAAY5B,EAAUwQ,EAAkBZ,GAAOK,GAAaM,GAAUhU,GAClE,IAAI0Z,EAAU,GAId,GAHIhG,IACAgG,EAAQxY,KAAKsM,KAAK5N,SAElB6D,EAASlE,OAAS,EAAG,CAErBkE,GADAA,EAAWA,EAASiG,QAAQmL,GAAmB,IAAMrH,KAAK+K,kBACtC7O,QAAQoL,GAAmB,IAAMtH,KAAKgL,iBAE1D,IAAImB,GAAWnM,KAAKD,QAAQ5H,MAAM6H,KAAK5N,QAAS6D,EADzB,GAAT4P,IAEA,IAAVA,KACAsG,GAAWtG,GAAQ,EAAIsG,GAASC,MAAMD,GAASpa,OAAS8T,GAAOsG,GAASpa,QACpEoa,GAASC,MAAM,EAAGvG,KAE1BqG,EAAQxY,QAAQyY,IAEpB,OAAK3F,IAA8B,GAAlB0F,EAAQna,QACrBS,EAAOkB,KAnsDnB,YAAsBuC,IAClB,OAAO,IAAIzE,MAAc,KAA0BF,GACmB2E,CAisDlDoW,IAETH,GAGf,SACIpM,YAAYC,EAAS3N,EAASmS,GAAW+H,IACrCtM,KAAKD,QAAUA,EACfC,KAAK5N,QAAUA,EACf4N,KAAKuE,UAAYA,GACjBvE,KAAKsM,6BAA+BA,GACpCtM,KAAK1H,SAAW,EAChB0H,KAAKuM,kBAAoB,GACzBvM,KAAKwM,iBAAmB,GACxBxM,KAAKyM,WAAa,IAAIrX,IACtB4K,KAAK0M,cAAgB,GACrB1M,KAAK2M,eAAiB,GACtB3M,KAAK4M,UAAY,GACjB5M,KAAK6M,0BAA4B,KAC5B7M,KAAKsM,+BACNtM,KAAKsM,6BAA+B,IAAIlX,KAE5C4K,KAAK8M,qBAAuB7Z,OAAO8Z,OAAO/M,KAAK4M,UAAW,IAC1D5M,KAAKgN,sBAAwBhN,KAAKsM,6BAA6BjX,IAAIjD,GAC9D4N,KAAKgN,wBACNhN,KAAKgN,sBAAwBhN,KAAK8M,qBAClC9M,KAAKsM,6BAA6BhX,IAAIlD,EAAS4N,KAAK8M,uBAExD9M,KAAKiN,gBAET3E,oBACI,OAAQtI,KAAKyM,WAAWlM,WACf,EACD,OAAO,OACN,EACD,OAAOP,KAAKgK,4BAA4BjY,OAAS,UAEjD,OAAO,GAGnBiY,4BACI,OAAO/W,OAAOC,KAAK8M,KAAKwM,kBAExB9L,kBACA,OAAOV,KAAKuE,UAAYvE,KAAK1H,SAEjCmR,cAAclR,GAKV,MAAM2U,EAA0C,GAAxBlN,KAAKyM,WAAWlM,MAAatN,OAAOC,KAAK8M,KAAK2M,gBAAgB5a,OAClFiO,KAAK1H,UAAY4U,GACjBlN,KAAKoK,YAAYpK,KAAKU,YAAcnI,GAChC2U,GACAlN,KAAKuJ,yBAITvJ,KAAKuE,WAAahM,EAG1BqT,KAAKxZ,EAASsO,GACV,YAAKgJ,wBACE,IAAIwB,GAAgBlL,KAAKD,QAAS3N,EAASsO,GAAeV,KAAKU,YAAaV,KAAKsM,8BAE5FW,gBACQjN,KAAKwM,mBACLxM,KAAKuM,kBAAoBvM,KAAKwM,kBAElCxM,KAAKwM,iBAAmBxM,KAAKyM,WAAWpX,IAAI2K,KAAK1H,UAC5C0H,KAAKwM,mBACNxM,KAAKwM,iBAAmBvZ,OAAO8Z,OAAO/M,KAAK4M,UAAW,IACtD5M,KAAKyM,WAAWnX,IAAI0K,KAAK1H,SAAU0H,KAAKwM,mBAGhDvC,eACIjK,KAAK1H,UA3iBqB,EA4iB1B0H,KAAKiN,gBAET7C,YAAY6B,GACRjM,KAAK0J,wBACL1J,KAAK1H,SAAW2T,EAChBjM,KAAKiN,gBAETE,aAAaha,EAAMgC,GACf6K,KAAK8M,qBAAqB3Z,GAAQgC,EAClC6K,KAAKgN,sBAAsB7Z,GAAQgC,EACnC6K,KAAK0M,cAAcvZ,GAAQ,CAAE8Y,KAAMjM,KAAKU,YAAavL,SAEzDqT,0BACI,OAAOxI,KAAK6M,4BAA8B7M,KAAKwM,iBAEnDtC,eAAe1R,GACPA,IACAwH,KAAKuM,kBAAkB/T,OAAYA,GAQvCvF,OAAOC,KAAK8M,KAAKgN,uBAAuBpa,QAAQO,IAC5C6M,KAAK4M,UAAUzZ,GAAQ6M,KAAKgN,sBAAsB7Z,IAASK,KAC3DwM,KAAKwM,iBAAiBrZ,GAAQK,OAElCwM,KAAK6M,0BAA4B7M,KAAKwM,iBAE1CtE,UAAUtL,EAAOpE,EAAQhG,GAAQ+O,IACzB/I,IACAwH,KAAKuM,kBAAkB/T,OAAYA,GAEvC,MAAMqD,GAAU0F,IAAWA,GAAQ1F,QAAW,GACxCnB,EAuJd,YAAuBkC,GAAOwQ,GAC1B,MAAM1S,EAAS,GACf,IAAI2S,GACJzQ,UAAMhK,QAAQyT,KACI,MAAVA,IACAgH,GAAgBA,IAAiBpa,OAAOC,KAAKka,GAC7CC,GAAcza,QAAQO,KAClBuH,EAAOvH,IAAQK,QAInB8Z,GAAWjH,IAAO,EAAO3L,KAG1BA,EArKY6S,CAAc3Q,EAAOoD,KAAKgN,uBACzC/Z,OAAOC,KAAKwH,GAAQ9H,QAAQO,IACxB,MAAMqa,EAAM1D,GAAkBpP,EAAOvH,GAAO0I,GAAQrJ,IACpDwN,KAAK2M,eAAexZ,GAAQqa,EACvBxN,KAAK8M,qBAAqBhT,eAAe3G,KAC1C6M,KAAK4M,UAAUzZ,GAAQ6M,KAAKgN,sBAAsBlT,eAAe3G,GAC7D6M,KAAKgN,sBAAsB7Z,GAC3BK,MAERwM,KAAKmN,aAAaha,EAAMqa,KAGhC9D,wBACI,MAAMhP,EAASsF,KAAK2M,eACdc,EAAQxa,OAAOC,KAAKwH,GACN,GAAhB+S,EAAM1b,SAEViO,KAAK2M,eAAiB,GACtBc,EAAM7a,QAAQO,KAEV6M,KAAKwM,iBAAiBrZ,IADVuH,EAAOvH,GACWqa,GAElCva,OAAOC,KAAK8M,KAAK8M,sBAAsBla,QAAQO,KACtC6M,KAAKwM,iBAAiB1S,eAAe3G,MACtC6M,KAAKwM,iBAAiBrZ,IAAQ6M,KAAK8M,qBAAqB3Z,QAIpEoW,wBACItW,OAAOC,KAAK8M,KAAK8M,sBAAsBla,QAAQO,IAC3C,MAAMqa,EAAMxN,KAAK8M,qBAAqB3Z,GACtC6M,KAAK2M,eAAexZ,GAAQqa,EAC5BxN,KAAKmN,aAAaha,EAAMqa,KAGhCE,mBACI,OAAO1N,KAAKyM,WAAWpX,IAAI2K,KAAK1H,UAEhCqV,iBACA,MAAMA,EAAa,GACnB,QAASxa,KAAQ6M,KAAKwM,iBAClBmB,EAAWja,KAAKP,GAEpB,OAAOwa,EAEX/D,6BAA6BvB,GACzBpV,OAAOC,KAAKmV,EAASqE,eAAe9Z,QAAQO,IACxC,MAAMya,GAAW5N,KAAK0M,cAAcvZ,GAC9B0a,GAAWxF,EAASqE,cAAcvZ,KACnCya,IAAYC,GAAS5B,KAAO2B,GAAS3B,OACtCjM,KAAKmN,aAAaha,EAAM0a,GAAS1Y,SAI7C2S,iBACI9H,KAAK0J,wBACL,MAAM7C,EAAgB,IAAI7H,IACpB8H,EAAiB,IAAI9H,IACrB0E,GAAmC,IAAzB1D,KAAKyM,WAAWlM,MAAgC,IAAlBP,KAAK1H,SACnD,IAAIwV,GAAiB,GACrB9N,KAAKyM,WAAW7Z,QAAQ,CAACmb,EAAU9B,KAC/B,MAAM+B,GAAgBV,GAAWS,GAAU,GAC3C9a,OAAOC,KAAK8a,IAAepb,QAAQO,KAC/B,MAAMgC,EAAQ6Y,GAAc7a,IACxBgC,GAAS5B,KACTsT,EAAc7E,IAAI7O,IAEbgC,GAAS3B,MACdsT,EAAe9E,IAAI7O,MAGtBuQ,KACDsK,GAAclb,OAAYmZ,EAAOjM,KAAK1H,UAE1CwV,GAAepa,KAAKsa,MAExB,MAAMC,GAAWpH,EAActG,KAAO0B,GAAgB4E,EAAc3E,UAAY,GAC1EgM,EAAYpH,EAAevG,KAAO0B,GAAgB6E,EAAe5E,UAAY,GAEnF,GAAIwB,GAAS,CACT,MAAMyK,EAAML,GAAe,GACrBM,EAAMxT,GAAQuT,GACpBA,EAAIrb,OAAY,EAChBsb,EAAItb,OAAY,EAChBgb,GAAiB,CAACK,EAAKC,GAE3B,OAAO3F,GAA0BzI,KAAK5N,QAAS0b,GAAgBG,GAAUC,EAAWlO,KAAK1H,SAAU0H,KAAKuE,UAAWvE,KAAKxH,QAAQ,IAGxI,iBAAiC0S,GAC7BpL,YAAY5N,EAAQE,EAASC,GAAWwU,GAAeC,GAAgBlN,EAASyU,GAA2B,GACvGC,MAAMpc,EAAQE,EAASwH,EAAQrB,OAC/ByH,KAAK3N,UAAYA,GACjB2N,KAAK6G,cAAgBA,GACrB7G,KAAK8G,eAAiBA,GACtB9G,KAAKqO,yBAA2BA,EAChCrO,KAAKpG,QAAU,CAAEtB,SAAUsB,EAAQtB,SAAUC,MAAOqB,EAAQrB,MAAOC,OAAQoB,EAAQpB,QAEvF8P,oBACI,OAAOtI,KAAK3N,UAAUN,OAAS,EAEnC+V,iBACI,IAAIzV,EAAY2N,KAAK3N,WACfkG,QAAOD,YAAUE,WAAWwH,KAAKpG,QACvC,GAAIoG,KAAKqO,0BAA4B9V,EAAO,CACxC,MAAMgW,GAAe,GACfha,EAAY+D,GAAWC,EACvBiW,EAAcjW,EAAQhE,EAEtBka,EAAmBnB,GAAWjb,EAAU,IAAI,GAClDoc,EAAiB3b,OAAY,EAC7Byb,GAAa7a,KAAK+a,GAClB,MAAMC,GAAmBpB,GAAWjb,EAAU,IAAI,GAClDqc,GAAiB5b,OAAY6b,GAAYH,GACzCD,GAAa7a,KAAKgb,IAgBlB,MAAM7I,GAAQxT,EAAUN,OAAS,EACjC,QAAS+I,EAAI,EAAGA,GAAK+K,GAAO/K,IAAK,CAC7B,IAAIjI,GAAKya,GAAWjb,EAAUyI,IAAI,GAGlCjI,GAAGC,OAAY6b,IADQpW,EADL1F,GAAGC,OACsBwF,IACC/D,GAC5Cga,GAAa7a,KAAKb,IAGtByF,GAAW/D,EACXgE,EAAQ,EACRC,GAAS,GACTnG,EAAYkc,GAEhB,OAAO9F,GAA0BzI,KAAK5N,QAASC,EAAW2N,KAAK6G,cAAe7G,KAAK8G,eAAgBxO,GAAUC,EAAOC,IAAQ,IAGpI,YAAqB1F,GAAQ8b,EAAgB,GACzC,MAAMC,EAAO/L,KAAKgM,IAAI,GAAIF,EAAgB,GAC1C,OAAO9L,KAAKiM,MAAMjc,GAAS+b,GAAQA,EA0DvC,UAqBA,iBAA2CG,GACvC1b,sBAAsB2b,EAAczc,GAChC,OAAO8I,GAAoB2T,GAE/Bxb,oBAAoByb,EAAsBC,EAAoBha,GAAO3C,IACjE,IAAImH,GAAO,GACX,MAAMyV,EAASja,GAAMvD,WAAWyd,OAChC,GAAIC,GAAqBH,IAAiC,IAAVha,IAAyB,MAAVA,GAC3D,GAAqB,iBAAVA,GACPwE,GAAO,SAEN,CACD,MAAM4V,EAAoBpa,GAAMqE,MAAM,0BAClC+V,GAAoD,GAA/BA,EAAkB,GAAGxd,QAC1CS,GAAOkB,KA/kE3B,WAA6Bwb,GAAsB/Z,GAC/C,OAAO,IAAI3D,MAAc,KAAmCF,GAAgF6D,CA8kEhHqa,GAA0Cra,CAIlE,OAAOia,EAASzV,IAGxB,MAAM2V,GAAwB,KAE9B,YAAwBpc,IACpB,MAAM8B,EAAM,GACZ9B,UAAKN,QAAQqC,GAAOD,EAAIC,IAAO,GACxBD,EALyBya,CAAe,iUAC9CpR,MAAM,MADmB,GAQ9B,YAAqCjM,GAASqC,EAAaC,EAAWC,GAAS+a,GAAqBC,GAAYC,EAAUzH,EAAW0H,EAAiBhJ,GAAeC,GAAgBvS,EAAW/B,IAC5L,MAAO,CACH0K,KAAM,EACN9K,WACAqC,cACAib,uBACAhb,YACAib,cACAhb,WACAib,WACAzH,YACA0H,kBACAhJ,iBACAC,kBACAvS,YACA/B,WAIR,MAAMsd,GAAe,GACrB,SACIhQ,YAAYiQ,EAAc5P,EAAK6P,IAC3BhQ,KAAK+P,aAAeA,EACpB/P,KAAKG,IAAMA,EACXH,KAAKgQ,aAAeA,GAExBxW,MAAMyW,EAAcC,EAAW9d,GAASyJ,IACpC,OA4CR,YAAmCsU,GAAUF,EAAcC,EAAW9d,GAASyJ,IAC3E,OAAOsU,GAAS/M,KAAKgN,IAAMA,GAAGH,EAAcC,EAAW9d,GAASyJ,KA7CrDwU,CAA0BrQ,KAAKG,IAAIoC,SAAU0N,EAAcC,EAAW9d,GAASyJ,IAE1FyU,YAAYC,EAAW1U,EAAQrJ,IAC3B,MAAMge,GAAoBxQ,KAAKgQ,aAAa,KACtCS,GAAczQ,KAAKgQ,aAAaO,GAChCG,EAAeF,GAAoBA,GAAkBF,YAAYzU,EAAQrJ,IAAU,GACzF,OAAOie,GAAcA,GAAYH,YAAYzU,EAAQrJ,IAAUke,EAEnE7Q,MAAM3N,EAAQE,EAAS6d,GAAcC,GAAW1I,GAAgBC,EAAgBkJ,EAAgBC,EAAahJ,GAAiBiJ,IAC1H,MAAMre,EAAS,GACTse,GAA4B9Q,KAAKG,IAAIoB,SAAWvB,KAAKG,IAAIoB,QAAQ1F,QAAUiU,GAE3EiB,GAAqB/Q,KAAKsQ,YAAYL,GADbU,GAAkBA,EAAe9U,QAAUiU,GACQtd,GAC5Ewe,GAAsBJ,GAAeA,EAAY/U,QAAUiU,GAC3DmB,GAAkBjR,KAAKsQ,YAAYJ,GAAWc,GAAqBxe,GACnEqd,GAAkB,IAAI7Q,IACtBkS,GAAc,IAAI9b,IAClB+b,GAAe,IAAI/b,IACnBgc,GAA0B,SAAdlB,GACZmB,EAAmB,CAAExV,OAAQ5I,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIR,IAA4BE,KACzF7I,EAAY0I,GACd,GACAU,GAAwBrf,EAAQE,EAAS4N,KAAKG,IAAImC,UAAWkF,GAAgBC,EAAgBsJ,GAAoBE,GAAiBI,EAAkBzJ,GAAiBpV,GACzK,IAAI+B,EAAY,EAIhB,GAHA4T,EAAUvV,QAAQ8X,KACdnW,EAAYuO,KAAKC,IAAI2H,GAAGpS,SAAWoS,GAAGnS,MAAOhE,KAE7C/B,EAAOT,OACP,OAAOyf,GAA4Bpf,EAAS4N,KAAK+P,aAAcE,GAAcC,GAAWkB,GAAWL,GAAoBE,GAAiB,GAAI,GAAIC,GAAaC,GAAc5c,EAAW/B,GAE1L2V,EAAUvV,QAAQ8X,KACd,MAAM+G,GAAM/G,GAAGtY,QACT6b,GAAW1H,GAAgB2K,GAAaO,GAAK,IACnD/G,GAAG7D,cAAcjU,QAAQO,IAAQ8a,GAAS9a,KAAQ,GAClD,MAAM+a,GAAY3H,GAAgB4K,GAAcM,GAAK,IACrD/G,GAAG5D,eAAelU,QAAQO,IAAQ+a,GAAU/a,KAAQ,GAChDse,KAAQrf,GACRyd,GAAgB7N,IAAIyP,MAG5B,MAAMC,EAAsBzP,GAAgB4N,GAAgB3N,UAC5D,OAAOsP,GAA4Bpf,EAAS4N,KAAK+P,aAAcE,GAAcC,GAAWkB,GAAWL,GAAoBE,GAAiB9I,EAAWuJ,EAAqBR,GAAaC,GAAc5c,IAM3M,SACIuL,YAAYpF,EAAQiX,EAAexf,IAC/B6N,KAAKtF,OAASA,EACdsF,KAAK2R,cAAgBA,EACrB3R,KAAK7N,WAAaA,GAEtBme,YAAYzU,EAAQrJ,GAChB,MAAMmV,GAAc,GACdiK,GAAiBhX,GAAQoF,KAAK2R,eACpC1e,cAAOC,KAAK2I,GAAQjJ,QAAQqC,KACxB,MAAME,EAAQ0G,EAAO5G,IACR,MAATE,IACAyc,GAAe3c,IAAOE,KAG9B6K,KAAKtF,OAAOA,OAAO9H,QAAQuC,KACvB,GAAqB,iBAAVA,GAAoB,CAC3B,MAAM0c,EAAW1c,GACjBlC,OAAOC,KAAK2e,GAAUjf,QAAQO,IAC1B,IAAIqa,EAAMqE,EAAS1e,GACfqa,EAAIzb,OAAS,IACbyb,EAAM1D,GAAkB0D,EAAKoE,GAAgBpf,IAEjD,MAAMY,GAAiB4M,KAAK7N,WAAWmB,sBAAsBH,EAAMX,GACnEgb,EAAMxN,KAAK7N,WAAWsB,oBAAoBN,EAAMC,GAAgBoa,EAAKhb,GACrEmV,GAAYvU,IAAkBoa,OAInC7F,IAOf,SACI7H,YAAYiB,EAAMZ,EAAK2R,IACnB9R,KAAKe,KAAOA,EACZf,KAAKG,IAAMA,EACXH,KAAK8R,YAAcA,GACnB9R,KAAK+R,oBAAsB,GAC3B/R,KAAKa,OAAS,GACdV,EAAIU,OAAOjO,QAAQuN,KAEfH,KAAKa,OAAOV,GAAIY,MAAQ,IAAIiR,GAAqB7R,GAAI7I,MAD9B6I,GAAIoB,SAAWpB,GAAIoB,QAAQ1F,QAAW,GACciW,MAE/EG,GAAkBjS,KAAKa,OAAQ,OAAQ,KACvCoR,GAAkBjS,KAAKa,OAAQ,QAAS,KACxCV,EAAIW,YAAYlO,QAAQuN,KACpBH,KAAK+R,oBAAoBre,KAAK,IAAIwe,GAA2BnR,EAAMZ,GAAKH,KAAKa,WAEjFb,KAAKmS,mBAab,YAAkC1d,GAAaoM,EAAQ1O,GAWnD,OAAO,IAAI+f,GAA2Bzd,GARnB,CACfyI,KAAM,EACNoF,UAHc,CAAEpF,KAAM,EAAkB1B,MAAO,GAAI+F,QAAS,MAI5DgB,SALa,CAAC,CAAC7N,EAAWC,KAAY,GAMtC4M,QAAS,KACTZ,WAAY,EACZC,SAAU,GAEiDC,GAxBjCuR,CAAyBrR,EAAMf,KAAKa,OAAaiR,CAE3EO,sBACA,OAAOrS,KAAKG,IAAIQ,WAAa,EAEjC2R,gBAAgBrC,EAAcC,EAAW9d,GAASyJ,IAE9C,OAAO0W,KADYR,oBAAoB3L,KAAKoM,GAAKA,EAAEhZ,MAAMyW,EAAcC,EAAW9d,GAASyJ,MAC3E,KAEpB4W,YAAYxC,EAAcpU,EAAQrJ,IAC9B,OAAOwN,KAAKmS,mBAAmB7B,YAAYL,EAAcpU,EAAQrJ,KAgBzE,YAA2BgI,GAAKkY,EAAMC,GAC9BnY,GAAIV,eAAe4Y,GACdlY,GAAIV,eAAe6Y,KACpBnY,GAAImY,GAAQnY,GAAIkY,IAGflY,GAAIV,eAAe6Y,KACxBnY,GAAIkY,GAAQlY,GAAImY,IAWxB,MAAMC,GAAwB,IAAI7K,GAClC,SACIjI,YAAY+S,EAAU9S,EAAS+R,IAC3B9R,KAAK6S,SAAWA,EAChB7S,KAAKD,QAAUA,EACfC,KAAK8R,YAAcA,GACnB9R,KAAK8S,YAAc,GACnB9S,KAAK+S,aAAe,GACpB/S,KAAKlO,QAAU,GAEnBkhB,SAASC,EAAIvT,GACT,MAAMlN,GAAS,GAET2N,GAAM+S,GAAkBlT,KAAKD,QAASL,EAAUlN,GADrC,IAEjB,GAAIA,GAAOT,OACP,MAvtEZ,WAAwBS,IACpB,OAAO,IAAIhB,MAAc,KAAgCF,GAC6C,CAqtExF6hB,GAMNnT,KAAK8S,YAAYG,GAAM9S,GAG/BiT,aAAatY,EAAGxI,EAAWC,IACvB,MAAMH,GAAU0I,EAAE1I,QACZC,GAAYghB,GAAmBrT,EAAcA,KAAK8R,YAAa1f,EAAS0I,EAAEzI,UAAWC,EAAWC,IACtG,OAAOyN,KAAKD,QAAQ1H,QAAQjG,GAASC,GAAWyI,EAAExC,SAAUwC,EAAEvC,MAAOuC,EAAEtC,OAAQ,IAAI,GAEvFuU,OAAOkG,EAAI7gB,EAASmP,GAAU,IAC1B,MAAM/O,GAAS,GACT2N,GAAMH,KAAK8S,YAAYG,GAC7B,IAAI/L,EACJ,MAAMoM,EAAgB,IAAIle,IAY1B,GAXAme,IACIrM,EAAeqK,GAAwBvR,KAAKD,QAAS3N,EAAS+N,GAAKlH,GAAiBC,GAAiB,GAAI,GAAIqI,GAASqR,GAAuBpgB,IAC7I0U,EAAatU,QAAQ4gB,KACjB,MAAM9Y,EAAS6L,GAAgB+M,EAAeE,GAAKphB,QAAS,IAC5DohB,GAAK1M,eAAelU,QAAQO,IAAQuH,EAAOvH,IAAQ,UAIvDX,GAAOkB,KA9uEnB,cACI,OAAO,IAAIlC,MAAc,KAA2CF,GAAiB,CA6uEjEmiB,IACZvM,EAAe,IAEf1U,GAAOT,OACP,MA/uEZ,YAA+BS,IAC3B,OAAO,IAAIhB,MAAc,KAAoCF,GACyC,CA6uExFoiB,GAEVJ,EAAc1gB,QAAQ,CAAC8H,GAAQtI,KAC3Ba,OAAOC,KAAKwH,IAAQ9H,QAAQO,KACxBuH,GAAOvH,IAAQ6M,KAAKD,QAAQ3H,aAAahG,EAASe,GAAMK,UAGhE,MAIMK,GAAS8f,GAJCzM,EAAalS,IAAI8F,KAC7B,MAAMJ,EAAS4Y,EAAcje,IAAIyF,GAAE1I,SACnC,OAAO4N,KAAKoT,aAAatY,GAAG,GAAIJ,MAGpC,YAAKqY,aAAaE,GAAMpf,GACxBA,GAAOO,UAAU,IAAM4L,KAAK4T,QAAQX,IACpCjT,KAAKlO,QAAQ4B,KAAKG,IACXA,GAEX+f,QAAQX,GACJ,MAAMpf,EAASmM,KAAK6T,WAAWZ,GAC/Bpf,EAAO+f,iBACA5T,KAAK+S,aAAaE,GACzB,MAAMa,GAAQ9T,KAAKlO,QAAQ2D,QAAQ5B,GAC/BigB,IAAS,GACT9T,KAAKlO,QAAQwI,OAAOwZ,GAAO,GAGnCD,WAAWZ,GACP,MAAMpf,EAASmM,KAAK+S,aAAaE,GACjC,IAAKpf,EACD,MAxwEZ,YAAuBof,IACnB,OAAO,IAAIzhB,MAAc,KAA2BF,GAAqE2hB,CAuwE3Gc,GAEV,OAAOlgB,EAEXmgB,OAAOf,EAAI7gB,EAAS0B,GAAWE,IAE3B,MAAMigB,GAAYzf,GAAmBpC,EAAS,GAAI,GAAI,IACtD8hB,UAAelU,KAAK6T,WAAWZ,GAAKnf,GAAWmgB,GAAWjgB,IACnD,MAAM,CAEjBuB,QAAQ0d,EAAI7gB,EAASmD,GAAS4e,IAC1B,GAAe,YAAX5e,GAEA,YADAyK,KAAKgT,SAASC,EAAIkB,GAAK,IAG3B,GAAe,UAAX5e,GAGA,YADAyK,KAAK+M,OAAOkG,EAAI7gB,EADC+hB,GAAK,IAAM,IAIhC,MAAMtgB,GAASmM,KAAK6T,WAAWZ,GAC/B,OAAQ1d,QACC,OACD1B,GAAOugB,OACP,UACC,QACDvgB,GAAOwgB,QACP,UACC,QACDxgB,GAAOygB,QACP,UACC,UACDzgB,GAAO0gB,UACP,UACC,SACD1gB,GAAO2gB,SACP,UACC,OACD3gB,GAAO4gB,OACP,UACC,cACD5gB,GAAO6gB,YAAYhb,WAAWya,GAAK,KACnC,UACC,UACDnU,KAAK4T,QAAQX,GACb,EAYhB,MAAM0B,GAAmB,oBAEnBC,GAAqB,sBAIrBC,GAAqB,GACrBC,GAAqB,CACvBC,YAAa,GACbC,eAAe,EACfC,YAAY,EACZC,cAAc,EACdC,sBAAsB,GAEpBC,GAA6B,CAC/BL,YAAa,GACbE,YAAY,EACZD,eAAe,EACfE,cAAc,EACdC,sBAAsB,GAEpBE,GAAe,eACrB,SACIvV,YAAYlD,EAAOmY,EAAc,IAC7B/U,KAAK+U,YAAcA,EACnB,MAAMO,GAAQ1Y,GAASA,EAAM9C,eAAe,SAG5C,GADAkG,KAAK7K,MAk2Cb,YAA+BA,IAI3B,OAAgB,MAATA,GAAgBA,GAAQ,KAt2CdogB,CADCD,GAAQ1Y,EAAMzH,MAAWyH,GAEnC0Y,GAAO,CACP,MAAM/T,GAAU3G,GAAQgC,UACjB2E,GAAQpM,MACf6K,KAAKuB,QAAUA,QAGfvB,KAAKuB,QAAU,GAEdvB,KAAKuB,QAAQ1F,SACdmE,KAAKuB,QAAQ1F,OAAS,IAG1BA,aACA,OAAOmE,KAAKuB,QAAQ1F,OAExB2Z,cAAcjU,GACV,MAAM+J,EAAY/J,EAAQ1F,OAC1B,GAAIyP,EAAW,CACX,MAAMG,GAAYzL,KAAKuB,QAAQ1F,OAC/B5I,OAAOC,KAAKoY,GAAW1Y,QAAQO,KACJ,MAAnBsY,GAAUtY,MACVsY,GAAUtY,IAAQmY,EAAUnY,SAMhD,MAAMsiB,GAAa,OACbC,GAAsB,IAAIC,GAAWF,IAC3C,SACI3V,YAAYmT,EAAI2C,EAAaC,IACzB7V,KAAKiT,GAAKA,EACVjT,KAAK4V,YAAcA,EACnB5V,KAAK6V,QAAUA,GACf7V,KAAKlO,QAAU,GACfkO,KAAK8V,UAAY,GACjB9V,KAAK+V,OAAS,GACd/V,KAAKgW,kBAAoB,IAAI5gB,IAC7B4K,KAAKiW,eAAiB,UAAYhD,EAClCiD,GAASN,EAAa5V,KAAKiW,gBAE/BjC,OAAO5hB,EAAS2O,EAAMoV,GAAOniB,IACzB,IAAKgM,KAAK8V,UAAUhc,eAAeiH,GAC/B,MAr4EZ,YAAwBoV,GAAOpV,GAC3B,OAAO,IAAIvP,MAAc,KAA4BF,GAC4CyP,CAm4EnFqV,GAEV,GAAa,MAATD,IAAiC,GAAhBA,GAAMpkB,OACvB,MAp4EZ,YAAsBgP,IAClB,OAAO,IAAIvP,MAAc,KAA0BF,GACDyP,CAk4EpCsV,GAEV,IA0zCR,YAA6BviB,IACzB,MAAoB,SAAbA,IAAqC,QAAbA,EAAa,CA3zCnCwiB,CAAoBH,IACrB,MAn4EZ,YAAiCA,GAAOpV,GACpC,OAAO,IAAIvP,MAAc,KAAsCF,GACmByP,CAi4EpEwV,GAEV,MAAMC,GAAYjQ,GAAgBvG,KAAKgW,kBAAmB5jB,EAAS,IAC7D0C,EAAO,CAAEiM,OAAMoV,SAAOniB,aAC5BwiB,GAAU9iB,KAAKoB,GACf,MAAM2hB,EAAqBlQ,GAAgBvG,KAAK6V,QAAQa,gBAAiBtkB,EAAS,IAClF,OAAKqkB,EAAmB3c,eAAeiH,KACnCmV,GAAS9jB,EAAS+G,IAClB+c,GAAS9jB,EAAS+G,GAAuB,IAAM4H,GAC/C0V,EAAmB1V,GAAQ2U,IAExB,KAIH1V,KAAK6V,QAAQc,WAAW,KACpB,MAAM7C,EAAQ0C,GAAU/gB,QAAQX,GAC5Bgf,GAAS,GACT0C,GAAUlc,OAAOwZ,EAAO,GAEvB9T,KAAK8V,UAAU/U,WACT0V,EAAmB1V,MAK1CiS,SAASjS,EAAMZ,GACX,OAAIH,KAAK8V,UAAU/U,KAKff,KAAK8V,UAAU/U,GAAQZ,GAChB,GAGfyW,YAAY7V,GACR,MAAM8V,EAAU7W,KAAK8V,UAAU/U,GAC/B,IAAK8V,EACD,MAt6EZ,YAA6B9V,IACzB,OAAO,IAAIvP,MAAc,KAAiCF,GAAoDyP,CAq6EhG+V,GAEV,OAAOD,EAEXA,QAAQzkB,EAASqC,EAAaU,GAAO4hB,IAAoB,GACrD,MAAMF,GAAU7W,KAAK4W,YAAYniB,GAC3BZ,EAAS,IAAImjB,GAA0BhX,KAAKiT,GAAIxe,EAAarC,GACnE,IAAIqkB,EAAqBzW,KAAK6V,QAAQa,gBAAgBrhB,IAAIjD,GACrDqkB,IACDP,GAAS9jB,EAAS+G,IAClB+c,GAAS9jB,EAAS+G,GAAuB,IAAM1E,GAC/CuL,KAAK6V,QAAQa,gBAAgBphB,IAAIlD,EAASqkB,EAAqB,KAEnE,IAAI/hB,EAAY+hB,EAAmBhiB,GACnC,MAAME,GAAU,IAAIghB,GAAWxgB,GAAO6K,KAAKiT,IAgB3C,KAfc9d,IAASA,GAAM2E,eAAe,WAC9BpF,GACVC,GAAQ6gB,cAAc9gB,EAAU6M,SAEpCkV,EAAmBhiB,GAAeE,GAC7BD,IACDA,EAAYghB,IAEE/gB,GAAQQ,QAAUsgB,IAOlB/gB,EAAUS,QAAUR,GAAQQ,MAAO,CAGjD,IAw1CZ,YAAmB8hB,GAAGC,GAClB,MAAMC,EAAKlkB,OAAOC,KAAK+jB,IACjBG,GAAKnkB,OAAOC,KAAKgkB,GACvB,GAAIC,EAAGplB,QAAUqlB,GAAGrlB,OAChB,OAAO,EACX,QAAS+I,GAAI,EAAGA,GAAIqc,EAAGplB,OAAQ+I,KAAK,CAChC,MAAM3H,GAAOgkB,EAAGrc,IAChB,IAAKoc,EAAEpd,eAAe3G,KAAS8jB,GAAE9jB,MAAU+jB,EAAE/jB,IACzC,OAAO,EAEf,OAAO,EAl2CMkkB,CAAU3iB,EAAUmH,OAAQlH,GAAQkH,QAAS,CAC9C,MAAMrJ,GAAS,GACTmd,GAAakH,GAAQpE,YAAY/d,EAAUS,MAAOT,EAAUmH,OAAQrJ,IACpEod,GAAWiH,GAAQpE,YAAY9d,GAAQQ,MAAOR,GAAQkH,OAAQrJ,IAChEA,GAAOT,OACPiO,KAAK6V,QAAQyB,YAAY9kB,IAGzBwN,KAAK6V,QAAQc,WAAW,KACpBY,GAAYnlB,EAASud,IACrBzH,GAAU9V,EAASwd,MAI/B,OAEJ,MAAM4H,GAAmBjR,GAAgBvG,KAAK6V,QAAQ4B,iBAAkBrlB,EAAS,IACjFolB,GAAiB5kB,QAAQiB,KAKjBA,GAAOkhB,aAAe/U,KAAKiT,IAAMpf,GAAOY,aAAeA,GAAeZ,GAAO6jB,QAC7E7jB,GAAO+f,YAGf,IAAIvS,GAAawV,GAAQvE,gBAAgB5d,EAAUS,MAAOR,GAAQQ,MAAO/C,EAASuC,GAAQkH,QACtF8b,IAAuB,EAC3B,IAAKtW,GAAY,CACb,IAAK0V,GACD,OACJ1V,GAAawV,GAAQ1E,mBACrBwF,IAAuB,EAE3B,YAAK9B,QAAQ+B,qBACb5X,KAAK+V,OAAOriB,KAAK,CAAEtB,UAASqC,cAAa4M,cAAY3M,YAAWC,WAASd,SAAQ8jB,0BAC5EA,KACDzB,GAAS9jB,EAASuiB,IAClB9gB,EAAOI,QAAQ,KACX4jB,GAAYzlB,EAASuiB,OAG7B9gB,EAAOM,OAAO,KACV,IAAI2f,GAAQ9T,KAAKlO,QAAQ2D,QAAQ5B,GAC7BigB,IAAS,GACT9T,KAAKlO,QAAQwI,OAAOwZ,GAAO,GAE/B,MAAMhiB,GAAUkO,KAAK6V,QAAQ4B,iBAAiBpiB,IAAIjD,GAClD,GAAIN,GAAS,CACT,IAAIgiB,GAAQhiB,GAAQ2D,QAAQ5B,GACxBigB,IAAS,GACThiB,GAAQwI,OAAOwZ,GAAO,MAIlC9T,KAAKlO,QAAQ4B,KAAKG,GAClB2jB,GAAiB9jB,KAAKG,GACfA,EAEXikB,WAAW/W,UACAf,KAAK8V,UAAU/U,GACtBf,KAAK6V,QAAQa,gBAAgB9jB,QAAQ,CAACmlB,EAAU3lB,aACrC2lB,EAAShX,KAEpBf,KAAKgW,kBAAkBpjB,QAAQ,CAAC4jB,EAAWpkB,MACvC4N,KAAKgW,kBAAkB1gB,IAAIlD,GAASokB,EAAUpO,OAAOmK,IAC1CA,GAAMxR,MAAQA,MAIjCiX,kBAAkB5lB,GACd4N,KAAK6V,QAAQa,gBAAgBuB,OAAO7lB,GACpC4N,KAAKgW,kBAAkBiC,OAAO7lB,GAC9B,MAAM8lB,EAAiBlY,KAAK6V,QAAQ4B,iBAAiBpiB,IAAIjD,GACrD8lB,IACAA,EAAetlB,QAAQiB,IAAUA,GAAO+f,WACxC5T,KAAK6V,QAAQ4B,iBAAiBQ,OAAO7lB,IAG7C+lB,+BAA+B5Q,EAAatK,GACxC,MAAMkP,GAAWnM,KAAK6V,QAAQ3jB,OAAOiG,MAAMoP,EAAanO,IAAqB,GAI7E+S,GAASvZ,QAAQ6e,KAGb,GAAIA,GAAI4D,IACJ,OACJ,MAAM+C,GAAapY,KAAK6V,QAAQwC,yBAAyB5G,IACrD2G,GAAW7X,KACX6X,GAAWxlB,QAAQ0lB,GAAMA,EAAGC,sBAAsB9G,GAAKxU,GAAS,GAAO,IAGvE+C,KAAKgY,kBAAkBvG,MAK/BzR,KAAK6V,QAAQ2C,yBAAyB,IAAMrM,GAASvZ,QAAQ6e,IAAOzR,KAAKgY,kBAAkBvG,MAE/F8G,sBAAsBnmB,EAAS6K,EAASwb,GAAsB1B,IAC1D,MAAM2B,GAAgB1Y,KAAK6V,QAAQa,gBAAgBrhB,IAAIjD,GACjDumB,EAAyB,IAAIvjB,IACnC,GAAIsjB,GAAe,CACf,MAAM5mB,EAAU,GAYhB,GAXAmB,OAAOC,KAAKwlB,IAAe9lB,QAAQ6B,IAI/B,GAHAkkB,EAAuBrjB,IAAIb,EAAaikB,GAAcjkB,GAAaU,OAG/D6K,KAAK8V,UAAUrhB,GAAc,CAC7B,MAAMZ,GAASmM,KAAK6W,QAAQzkB,EAASqC,EAAaghB,GAAYsB,IAC1DljB,IACA/B,EAAQ4B,KAAKG,OAIrB/B,EAAQC,OACR,YAAK8jB,QAAQ+C,qBAAqB5Y,KAAKiT,GAAI7gB,GAAS,EAAM6K,EAAS0b,GAC/DF,IACA9E,GAAoB7hB,GAASqC,OAAO,IAAM6L,KAAK6V,QAAQgD,iBAAiBzmB,KAErE,EAGf,OAAO,EAEX0mB,+BAA+B1mB,GAC3B,MAAMokB,EAAYxW,KAAKgW,kBAAkB3gB,IAAIjD,GACvC2mB,GAAgB/Y,KAAK6V,QAAQa,gBAAgBrhB,IAAIjD,GAGvD,GAAIokB,GAAauC,GAAe,CAC5B,MAAMC,GAAkB,IAAIha,IAC5BwX,EAAU5jB,QAAQqmB,KACd,MAAMxkB,EAAcwkB,GAASlY,KAC7B,GAAIiY,GAAgB3Z,IAAI5K,GACpB,OACJukB,GAAgBhX,IAAIvN,GAEpB,MAAM4M,EAAawV,KADEf,UAAUrhB,GACJ0d,mBACrBzd,GAAYqkB,GAActkB,IAAgBihB,GAC1C/gB,GAAU,IAAIghB,GAAWF,IACzB5hB,EAAS,IAAImjB,GAA0BhX,KAAKiT,GAAIxe,EAAarC,GACnE4N,KAAK6V,QAAQ+B,qBACb5X,KAAK+V,OAAOriB,KAAK,CACbtB,UACAqC,cACA4M,aACA3M,aACAC,WACAd,SACA8jB,sBAAsB,OAKtCuB,WAAW9mB,EAAS6K,GAChB,MAAMkc,GAASnZ,KAAK6V,QAKpB,GAJIzjB,EAAQgnB,mBACRpZ,KAAKmY,+BAA+B/lB,EAAS6K,GAG7C+C,KAAKuY,sBAAsBnmB,EAAS6K,GAAS,GAC7C,OAGJ,IAAIoc,IAAoC,EACxC,GAAIF,GAAOG,gBAAiB,CACxB,MAAMC,GAAiBJ,GAAOrnB,QAAQC,OAASonB,GAAOK,wBAAwBnkB,IAAIjD,GAAW,GAK7F,GAAImnB,IAAkBA,GAAexnB,OACjCsnB,IAAoC,MAEnC,CACD,IAAIjjB,EAAShE,EACb,KAAOgE,EAASA,EAAOC,YAEnB,GADiB8iB,GAAOzC,gBAAgBrhB,IAAIe,GAC9B,CACVijB,IAAoC,EACpC,QAYhB,GAHArZ,KAAK8Y,+BAA+B1mB,GAGhCinB,GACAF,GAAOP,qBAAqB5Y,KAAKiT,GAAI7gB,GAAS,EAAO6K,OAEpD,CACD,MAAMwc,GAAcrnB,EAAQijB,MACvBoE,IAAeA,KAAgB3E,MAGhCqE,GAAOxC,WAAW,IAAM3W,KAAKgY,kBAAkB5lB,IAC/C+mB,GAAOO,uBAAuBtnB,GAC9B+mB,GAAOQ,mBAAmBvnB,EAAS6K,KAI/C2c,WAAWxnB,EAASgE,GAChB8f,GAAS9jB,EAAS4N,KAAKiW,gBAE3B4D,uBAAuBC,GACnB,MAAM5S,EAAe,GACrB,YAAK6O,OAAOnjB,QAAQ2f,KAChB,MAAM1e,GAAS0e,GAAM1e,OACrB,GAAIA,GAAOkmB,UACP,OACJ,MAAM3nB,GAAUmgB,GAAMngB,QAChBokB,EAAYxW,KAAKgW,kBAAkB3gB,IAAIjD,IACzCokB,GACAA,EAAU5jB,QAASqmB,IACf,GAAIA,EAASlY,MAAQwR,GAAM9d,YAAa,CACpC,MAAMwf,EAAYzf,GAAmBpC,GAASmgB,GAAM9d,YAAa8d,GAAM7d,UAAUS,MAAOod,GAAM5d,QAAQQ,OACtG8e,EAAUlf,MAAW+kB,EACrB5F,GAAe3B,GAAM1e,OAAQolB,EAAS9C,MAAOlC,EAAWgF,EAASjlB,aAI7EgmB,GAAWC,iBACPja,KAAK6V,QAAQc,WAAW,KAGpB9iB,GAAO+f,YAIX1M,EAAaxT,KAAK6e,MAG1BvS,KAAK+V,OAAS,GACP7O,EAAagT,KAAK,CAACjD,GAAGC,MAGzB,MAAMiD,GAAKlD,GAAE5V,WAAWlB,IAAIS,SACtBwZ,EAAKlD,GAAE7V,WAAWlB,IAAIS,SAC5B,OAAU,GAANuZ,IAAiB,GAANC,EACJD,GAAKC,EAETpa,KAAK6V,QAAQ3jB,OAAO0F,gBAAgBqf,GAAE7kB,QAAS8kB,GAAE9kB,SAAW,GAAI,IAG/EwhB,QAAQ3W,GACJ+C,KAAKlO,QAAQc,QAAQynB,GAAKA,EAAEzG,WAC5B5T,KAAKmY,+BAA+BnY,KAAK4V,YAAa3Y,GAE1Dqd,oBAAoBloB,GAChB,IAAImoB,GAAe,EACnB,OAAIva,KAAKgW,kBAAkB3W,IAAIjN,KAC3BmoB,GAAe,GACnBA,IACKva,KAAK+V,OAAO3P,KAAKmM,IAASA,GAAMngB,UAAYA,IAA4BmoB,EACtEA,GAGf,SACIza,YAAY+S,EAAU3gB,EAAQ4f,IAC1B9R,KAAK6S,SAAWA,EAChB7S,KAAK9N,OAASA,EACd8N,KAAK8R,YAAcA,GACnB9R,KAAKlO,QAAU,GACfkO,KAAKwa,gBAAkB,IAAIplB,IAC3B4K,KAAKyX,iBAAmB,IAAIriB,IAC5B4K,KAAKwZ,wBAA0B,IAAIpkB,IACnC4K,KAAK0W,gBAAkB,IAAIthB,IAC3B4K,KAAKya,cAAgB,IAAIzb,IACzBgB,KAAKsZ,gBAAkB,EACvBtZ,KAAK4X,mBAAqB,EAC1B5X,KAAK0a,iBAAmB,GACxB1a,KAAK2a,eAAiB,GACtB3a,KAAK4a,UAAY,GACjB5a,KAAK6a,cAAgB,GACrB7a,KAAK8a,wBAA0B,IAAI1lB,IACnC4K,KAAK+a,uBAAyB,GAC9B/a,KAAKgb,uBAAyB,GAE9Bhb,KAAKib,kBAAoB,CAAC7oB,GAAS6K,MAAV,CAAsB,CAGnD0c,mBAAmBvnB,EAAS6K,GACxB+C,KAAKib,kBAAkB7oB,EAAS6K,GAEhCie,oBACA,MAAMppB,EAAU,GAChB,YAAK6oB,eAAe/nB,QAAQ0lB,IACxBA,EAAGxmB,QAAQc,QAAQiB,KACXA,GAAO6jB,QACP5lB,EAAQ4B,KAAKG,QAIlB/B,EAEXqpB,gBAAgBpG,EAAaa,GACzB,MAAM0C,GAAK,IAAI8C,GAA6BrG,EAAaa,EAAa5V,MACtE,OAAIA,KAAK6S,UAAY7S,KAAK9N,OAAO0F,gBAAgBoI,KAAK6S,SAAU+C,GAC5D5V,KAAKqb,sBAAsB/C,GAAI1C,IAM/B5V,KAAKwa,gBAAgBllB,IAAIsgB,EAAa0C,IAMtCtY,KAAKsb,oBAAoB1F,IAEtB5V,KAAK0a,iBAAiB3F,GAAeuD,GAEhD+C,sBAAsB/C,EAAI1C,GACtB,MAAM2F,GAAgBvb,KAAK2a,eACrBG,GAA0B9a,KAAK8a,wBAC/BjV,GAAQ0V,GAAcxpB,OAAS,EACrC,GAAI8T,IAAS,EAAG,CACZ,IAAI2V,GAAQ,EACZ,QAAqC5mB,IAAjCoL,KAAK9N,OAAOyE,iBAAgC,CAI5C,IAAI8kB,EAAWzb,KAAK9N,OAAOyE,iBAAiBif,GAC5C,KAAO6F,GAAU,CACb,MAAMC,EAAaZ,GAAwBzlB,IAAIomB,GAC/C,GAAIC,EAAY,CAGZ,MAAM5H,GAAQyH,GAAc9lB,QAAQimB,GACpCH,GAAcjhB,OAAOwZ,GAAQ,EAAG,EAAGwE,GACnCkD,GAAQ,EACR,MAEJC,EAAWzb,KAAK9N,OAAOyE,iBAAiB8kB,SAM5C,QAAS3gB,EAAI+K,GAAO/K,GAAK,EAAGA,IAExB,GAAIkF,KAAK9N,OAAO0F,gBADM2jB,GAAczgB,GACU8a,YAAaA,GAAc,CACrE2F,GAAcjhB,OAAOQ,EAAI,EAAG,EAAGwd,GAC/BkD,GAAQ,EACR,MAIPA,GAIDD,GAAcI,QAAQrD,QAI1BiD,GAAc7nB,KAAK4kB,GAEvBwC,UAAwBxlB,IAAIsgB,EAAa0C,GAClCA,EAEXtF,SAAS+B,EAAaa,GAClB,IAAI0C,GAAKtY,KAAK0a,iBAAiB3F,GAC/B,OAAKuD,KACDA,GAAKtY,KAAKmb,gBAAgBpG,EAAaa,IAEpC0C,GAEXsD,gBAAgB7G,EAAahU,EAAM8V,IAC/B,IAAIyB,GAAKtY,KAAK0a,iBAAiB3F,GAC3BuD,IAAMA,GAAGtF,SAASjS,EAAM8V,KACxB7W,KAAKsZ,kBAGb1F,QAAQmB,EAAa9X,GACjB,IAAK8X,EACD,OACJ,MAAMuD,GAAKtY,KAAK6b,gBAAgB9G,GAChC/U,KAAK2W,WAAW,KACZ3W,KAAK8a,wBAAwB7C,OAAOK,GAAG1C,oBAChC5V,KAAK0a,iBAAiB3F,GAC7B,MAAMjB,GAAQ9T,KAAK2a,eAAellB,QAAQ6iB,IACtCxE,IAAS,GACT9T,KAAK2a,eAAergB,OAAOwZ,GAAO,KAG1C9T,KAAKwY,yBAAyB,IAAMF,GAAG1E,QAAQ3W,IAEnD4e,gBAAgB5I,GACZ,OAAOjT,KAAK0a,iBAAiBzH,GAEjCoF,yBAAyBjmB,GAMrB,MAAMgmB,EAAa,IAAIpZ,IACjB+Z,GAAgB/Y,KAAK0W,gBAAgBrhB,IAAIjD,GAC/C,GAAI2mB,GAAe,CACf,MAAM7lB,GAAOD,OAAOC,KAAK6lB,IACzB,QAASje,GAAI,EAAGA,GAAI5H,GAAKnB,OAAQ+I,KAAK,CAClC,MAAMghB,EAAO/C,GAAc7lB,GAAK4H,KAAIia,YACpC,GAAI+G,EAAM,CACN,MAAMxD,EAAKtY,KAAK6b,gBAAgBC,GAC5BxD,GACAF,EAAWpW,IAAIsW,KAK/B,OAAOF,EAEXvB,QAAQ9B,EAAa3iB,EAAS2O,GAAM5L,IAChC,GAAI4mB,GAAc3pB,GAAU,CACxB,MAAMkmB,GAAKtY,KAAK6b,gBAAgB9G,GAChC,GAAIuD,GACAA,UAAGzB,QAAQzkB,EAAS2O,GAAM5L,KACnB,EAGf,OAAO,EAEXykB,WAAW7E,EAAa3iB,EAASgE,GAAQ4lB,IACrC,IAAKD,GAAc3pB,GACf,OAGJ,MAAM6pB,GAAU7pB,EAAQijB,IACxB,GAAI4G,IAAWA,GAAQjH,cAAe,CAClCiH,GAAQjH,eAAgB,EACxBiH,GAAQhH,YAAa,EACrB,MAAMnB,EAAQ9T,KAAKgb,uBAAuBvlB,QAAQrD,GAC9C0hB,GAAS,GACT9T,KAAKgb,uBAAuB1gB,OAAOwZ,EAAO,GAMlD,GAAIiB,EAAa,CACb,MAAMuD,EAAKtY,KAAK6b,gBAAgB9G,GAO5BuD,GACAA,EAAGsB,WAAWxnB,EAASgE,IAI3B4lB,IACAhc,KAAKsb,oBAAoBlpB,GAGjCkpB,oBAAoBlpB,GAChB4N,KAAK+a,uBAAuBrnB,KAAKtB,GAErC8pB,sBAAsB9pB,EAAS+C,GACvBA,EACK6K,KAAKya,cAAcpb,IAAIjN,KACxB4N,KAAKya,cAAczY,IAAI5P,GACvB8jB,GAAS9jB,EAASwiB,KAGjB5U,KAAKya,cAAcpb,IAAIjN,KAC5B4N,KAAKya,cAAcxC,OAAO7lB,GAC1BylB,GAAYzlB,EAASwiB,KAG7BsE,WAAWnE,EAAa3iB,EAAS+pB,GAAelf,IAC5C,GAAI8e,GAAc3pB,GAAU,CACxB,MAAMkmB,GAAKvD,EAAc/U,KAAK6b,gBAAgB9G,GAAe,KAO7D,GANAxB,GACI+E,GAAGY,WAAW9mB,EAAS6K,IAGvB+C,KAAK4Y,qBAAqB7D,EAAa3iB,GAAS,EAAO6K,IAEvDkf,GAAe,CACf,MAAMC,EAASpc,KAAK8a,wBAAwBzlB,IAAIjD,GAC5CgqB,GAAUA,EAAOnJ,KAAO8B,GACxBqH,EAAOlD,WAAW9mB,EAAS6K,UAKnC+C,KAAK2Z,mBAAmBvnB,EAAS6K,IAGzC2b,qBAAqB7D,EAAa3iB,EAAS8iB,GAAcjY,GAAS0b,IAC9D3Y,KAAKgb,uBAAuBtnB,KAAKtB,GACjCA,EAAQijB,IAAgB,CACpBN,cACAC,cAAe/X,GACfiY,gBACAC,sBAAsB,EACtBwD,2BAGR3E,OAAOe,EAAa3iB,EAAS2O,GAAMoV,GAAOniB,IACtC,OAAI+nB,GAAc3pB,GACP4N,KAAK6b,gBAAgB9G,GAAaf,OAAO5hB,EAAS2O,GAAMoV,GAAOniB,IAEnE,MAAM,CAEjBqoB,kBAAkB9J,EAAO+J,EAAc9U,GAAgBC,GAAgB8U,IACnE,OAAOhK,EAAMlR,WAAWxB,MAAMG,KAAK9N,OAAQqgB,EAAMngB,QAASmgB,EAAM7d,UAAUS,MAAOod,EAAM5d,QAAQQ,MAAOqS,GAAgBC,GAAgB8K,EAAM7d,UAAU6M,QAASgR,EAAM5d,QAAQ4M,QAAS+a,EAAcC,IAExM7C,uBAAuB8C,GACnB,IAAIrQ,EAAWnM,KAAK9N,OAAOiG,MAAMqkB,EAAkBpjB,IAAqB,GACxE+S,EAASvZ,QAAQR,IAAW4N,KAAKyc,kCAAkCrqB,KAC1B,GAArC4N,KAAKwZ,wBAAwBjZ,OAEjC4L,EAAWnM,KAAK9N,OAAOiG,MAAMqkB,EAAkBljB,IAAuB,GACtE6S,EAASvZ,QAAQR,IAAW4N,KAAK0c,sCAAsCtqB,MAE3EqqB,kCAAkCrqB,GAC9B,MAAMN,EAAUkO,KAAKyX,iBAAiBpiB,IAAIjD,GACtCN,GACAA,EAAQc,QAAQiB,KAIRA,GAAO6jB,OACP7jB,GAAOomB,kBAAmB,EAG1BpmB,GAAO+f,YAKvB8I,sCAAsCtqB,GAClC,MAAMN,EAAUkO,KAAKwZ,wBAAwBnkB,IAAIjD,GAC7CN,GACAA,EAAQc,QAAQiB,IAAUA,GAAO2gB,UAGzCmI,oBACI,OAAO,IAAIC,QAAQC,IACf,GAAI7c,KAAKlO,QAAQC,OACb,OAAO4hB,GAAoB3T,KAAKlO,SAASqC,OAAO,IAAM0oB,KAGtDA,MAIZhE,iBAAiBzmB,GACb,IAAI0qB,EACJ,MAAMb,GAAU7pB,EAAQijB,IACxB,GAAI4G,IAAWA,GAAQjH,cAAe,CAGlC,GADA5iB,EAAQijB,IAAgBP,GACpBmH,GAAQlH,YAAa,CACrB/U,KAAK0Z,uBAAuBtnB,GAC5B,MAAMkmB,GAAKtY,KAAK6b,gBAAgBI,GAAQlH,aACpCuD,IACAA,GAAGN,kBAAkB5lB,GAG7B4N,KAAK2Z,mBAAmBvnB,EAAS6pB,GAAQjH,gBAEZ,QAA5B8H,EAAK1qB,EAAQ2qB,iBAA8B,IAAPD,OAAgB,EAASA,EAAGlmB,SAASge,MAC1E5U,KAAKkc,sBAAsB9pB,GAAS,GAExC4N,KAAK9N,OAAOiG,MAAM/F,EArtBA,wBAqtB4B,GAAMQ,QAAQoK,KACxDgD,KAAKkc,sBAAsBlf,IAAM,KAGzCggB,MAAMlD,GAAc,GAChB,IAAIhoB,EAAU,GAKd,GAJIkO,KAAKwa,gBAAgBja,OACrBP,KAAKwa,gBAAgB5nB,QAAQ,CAAC0lB,GAAIlmB,KAAY4N,KAAKqb,sBAAsB/C,GAAIlmB,KAC7E4N,KAAKwa,gBAAgBpT,SAErBpH,KAAKsZ,iBAAmBtZ,KAAK+a,uBAAuBhpB,OACpD,QAAS+I,GAAI,EAAGA,GAAIkF,KAAK+a,uBAAuBhpB,OAAQ+I,KAEpDob,GADYlW,KAAK+a,uBAAuBjgB,IAhuBjC,oBAouBf,GAAIkF,KAAK2a,eAAe5oB,SACnBiO,KAAK4X,oBAAsB5X,KAAKgb,uBAAuBjpB,QAAS,CACjE,MAAMkrB,GAAa,GACnB,IACInrB,EAAUkO,KAAKkd,iBAAiBD,GAAYnD,EAI7Bhf,CAJ6Bgf,QAG5C,QAAShf,GAAI,EAAGA,GAAImiB,GAAWlrB,OAAQ+I,KACnCmiB,GAAWniB,YAKnB,QAASA,GAAI,EAAGA,GAAIkF,KAAKgb,uBAAuBjpB,OAAQ+I,KAEpDkF,KAAK6Y,iBADW7Y,KAAKgb,uBAAuBlgB,KASpD,GALAkF,KAAK4X,mBAAqB,EAC1B5X,KAAK+a,uBAAuBhpB,OAAS,EACrCiO,KAAKgb,uBAAuBjpB,OAAS,EACrCiO,KAAK4a,UAAUhoB,QAAQwd,IAAMA,MAC7BpQ,KAAK4a,UAAY,GACb5a,KAAK6a,cAAc9oB,OAAQ,CAI3B,MAAMorB,GAAWnd,KAAK6a,cACtB7a,KAAK6a,cAAgB,GACrBuC,EAAYrrB,OACR4hB,GAAoB7hB,GAASqC,OAAO,KAChCgpB,GAASvqB,QAAQwd,IAAMA,QAI3B+M,GAASvqB,QAAQwd,IAAMA,OAInCkH,YAAY9kB,GACR,MA/jGR,YAAkCA,IAC9B,OAAO,IAAIhB,MAAc,KAAuCF,GAC0D,CA6jGhH+rB,EAAyB7qB,CAEnC0qB,iBAAiBD,EAAYnD,GACzB,MAAMwC,GAAe,IAAIvU,GACnBuV,GAAiB,GACjBC,GAAoB,IAAInoB,IACxBooB,EAAqB,GACrB3N,EAAkB,IAAIza,IACtBqoB,EAAsB,IAAIroB,IAC1BsoB,GAAuB,IAAItoB,IAC3BuoB,GAAsB,IAAI3e,IAChCgB,KAAKya,cAAc7nB,QAAQoK,KACvB2gB,GAAoB3b,IAAIhF,IACxB,MAAM4gB,GAAuB5d,KAAK9N,OAAOiG,MAAM6E,GA5xBnC,sBA4xB0D,GACtE,QAASlC,GAAI,EAAGA,GAAI8iB,GAAqB7rB,OAAQ+I,KAC7C6iB,GAAoB3b,IAAI4b,GAAqB9iB,OAGrD,MAAM+X,EAAW7S,KAAK6S,SAChBgL,GAAqBhnB,MAAMC,KAAKkJ,KAAK0W,gBAAgBxjB,QACrD4qB,GAAeC,GAAaF,GAAoB7d,KAAK+a,wBAIrDiD,GAAkB,IAAI5oB,IAC5B,IAAI0F,GAAI,EACRgjB,GAAalrB,QAAQ,CAACqrB,GAAOC,MACzB,MAAMC,GAAYllB,GAAkB6B,KACpCkjB,GAAgB1oB,IAAI4oB,GAAMC,IAC1BF,GAAMrrB,QAAQoK,IAAQkZ,GAASlZ,GAAMmhB,OAEzC,MAAMC,GAAgB,GAChBC,GAAmB,IAAIrf,IACvBsf,GAA8B,IAAItf,IACxC,QAASlE,GAAI,EAAGA,GAAIkF,KAAKgb,uBAAuBjpB,OAAQ+I,KAAK,CACzD,MAAM1I,GAAU4N,KAAKgb,uBAAuBlgB,IACtCmhB,GAAU7pB,GAAQijB,IACpB4G,IAAWA,GAAQjH,gBACnBoJ,GAAc1qB,KAAKtB,IACnBisB,GAAiBrc,IAAI5P,IACrBmsB,GAAYrJ,aACRlV,KAAK9N,OAAOiG,MAAM/F,GApzBhB,qBAozBwC,GAAMQ,QAAQ6e,IAAO4M,GAAiBrc,IAAIyP,KAGpF6M,GAA4Btc,IAAI5P,KAI5C,MAAMosB,GAAkB,IAAIppB,IACtBqpB,GAAeV,GAAaF,GAAoBhnB,MAAMC,KAAKunB,KACjEI,GAAa7rB,QAAQ,CAACqrB,GAAOC,MACzB,MAAMC,GAAYjlB,GAAkB4B,KACpC0jB,GAAgBlpB,IAAI4oB,GAAMC,IAC1BF,GAAMrrB,QAAQoK,IAAQkZ,GAASlZ,GAAMmhB,OAEzClB,EAAWvpB,KAAK,KACZoqB,GAAalrB,QAAQ,CAACqrB,GAAOC,MACzB,MAAMC,GAAYH,GAAgB3oB,IAAI6oB,IACtCD,GAAMrrB,QAAQoK,IAAQ6a,GAAY7a,GAAMmhB,OAE5CM,GAAa7rB,QAAQ,CAACqrB,GAAOC,MACzB,MAAMC,GAAYK,GAAgBnpB,IAAI6oB,IACtCD,GAAMrrB,QAAQoK,IAAQ6a,GAAY7a,GAAMmhB,OAE5CC,GAAcxrB,QAAQR,KAClB4N,KAAK6Y,iBAAiBzmB,QAG9B,MAAMssB,EAAa,GACbC,EAAuB,GAC7B,QAAS7jB,GAAIkF,KAAK2a,eAAe5oB,OAAS,EAAG+I,IAAK,EAAGA,KACtCkF,KAAK2a,eAAe7f,IAC5B+e,uBAAuBC,GAAalnB,QAAQ2f,KAC3C,MAAM1e,GAAS0e,GAAM1e,OACfzB,GAAUmgB,GAAMngB,QAEtB,GADAssB,EAAWhrB,KAAKG,IACZmM,KAAK+a,uBAAuBhpB,OAAQ,CACpC,MAAMkqB,GAAU7pB,GAAQijB,IAGxB,GAAI4G,IAAWA,GAAQhH,WAAY,CAC/B,GAAIgH,GAAQtD,wBACRsD,GAAQtD,uBAAuBtZ,IAAIkT,GAAM9d,aAAc,CACvD,MAAMmqB,GAAgB3C,GAAQtD,uBAAuBtjB,IAAIkd,GAAM9d,aAGzDgiB,GAAqBzW,KAAK0W,gBAAgBrhB,IAAIkd,GAAMngB,SACtDqkB,IAAsBA,GAAmBlE,GAAM9d,eAC/CgiB,GAAmBlE,GAAM9d,aAAaU,MAAQypB,IAItD,YADA/qB,GAAO+f,SACP,EAGR,MAAMiL,IAAkBhM,IAAa7S,KAAK9N,OAAO0F,gBAAgBib,EAAUzgB,IACrEqV,GAAiB+W,GAAgBnpB,IAAIjD,IACrCoV,GAAiBwW,GAAgB3oB,IAAIjD,IACrC6W,GAAcjJ,KAAKqc,kBAAkB9J,GAAO+J,GAAc9U,GAAgBC,GAAgBoX,IAChG,GAAI5V,GAAYzW,QAAUyW,GAAYzW,OAAOT,OAEzC,YADA4sB,EAAqBjrB,KAAKuV,IAO9B,GAAI4V,GAIA,OAHAhrB,GAAOI,QAAQ,IAAMsjB,GAAYnlB,GAAS6W,GAAY0G,aACtD9b,GAAOO,UAAU,IAAM8T,GAAU9V,GAAS6W,GAAY2G,gBACtD0N,GAAe5pB,KAAKG,IAMxB,GAAI0e,GAAMoF,qBAIN,OAHA9jB,GAAOI,QAAQ,IAAMsjB,GAAYnlB,GAAS6W,GAAY0G,aACtD9b,GAAOO,UAAU,IAAM8T,GAAU9V,GAAS6W,GAAY2G,gBACtD0N,GAAe5pB,KAAKG,IAQxB,MAAMsU,GAAY,GAClBc,GAAYd,UAAUvV,QAAQ8X,KAC1BA,GAAGsB,yBAA0B,EACxBhM,KAAKya,cAAcpb,IAAIqL,GAAGtY,UAC3B+V,GAAUzU,KAAKgX,MAGvBzB,GAAYd,UAAYA,GACxBmU,GAAarV,OAAO7U,GAAS6W,GAAYd,WAEzCqV,EAAmB9pB,KADL,CAAEuV,eAAapV,UAAQzB,aAErC6W,GAAY4G,gBAAgBjd,QAAQR,IAAWmU,GAAgBsJ,EAAiBzd,GAAS,IAAIsB,KAAKG,KAClGoV,GAAYpC,cAAcjU,QAAQ,CAACksB,GAAW1sB,MAC1C,MAAMqb,GAAQxa,OAAOC,KAAK4rB,IAC1B,GAAIrR,GAAM1b,OAAQ,CACd,IAAIgtB,GAAStB,EAAoBpoB,IAAIjD,IAChC2sB,IACDtB,EAAoBnoB,IAAIlD,GAAS2sB,GAAS,IAAI/f,KAElDyO,GAAM7a,QAAQO,IAAQ4rB,GAAO/c,IAAI7O,QAGzC8V,GAAYnC,eAAelU,QAAQ,CAACksB,GAAW1sB,MAC3C,MAAMqb,GAAQxa,OAAOC,KAAK4rB,IAC1B,IAAIC,GAASrB,GAAqBroB,IAAIjD,IACjC2sB,IACDrB,GAAqBpoB,IAAIlD,GAAS2sB,GAAS,IAAI/f,KAEnDyO,GAAM7a,QAAQO,IAAQ4rB,GAAO/c,IAAI7O,SAI7C,GAAIwrB,EAAqB5sB,OAAQ,CAC7B,MAAMS,GAAS,GACfmsB,EAAqB/rB,QAAQqW,KACzBzW,GAAOkB,KAztGvB,YAA0BqN,GAAMvO,GAC5B,OAAO,IAAIhB,MAAc,KAA8BF,GACkB,CAutGjD0tB,GAAsDxsB,GAEtEksB,EAAW9rB,QAAQiB,IAAUA,GAAO+f,WACpC5T,KAAKsX,YAAY9kB,IAErB,MAAMysB,EAAwB,IAAI7pB,IAK5B8pB,EAAsB,IAAI9pB,IAChCooB,EAAmB5qB,QAAQ2f,KACvB,MAAMngB,GAAUmgB,GAAMngB,QAClBkqB,GAAajd,IAAIjN,MACjB8sB,EAAoB5pB,IAAIlD,GAASA,IACjC4N,KAAKmf,sBAAsB5M,GAAM1e,OAAOkhB,YAAaxC,GAAMtJ,YAAagW,MAGhF3B,GAAe1qB,QAAQiB,KACnB,MAAMzB,GAAUyB,GAAOzB,QACC4N,KAAKof,oBAAoBhtB,IAAS,EAAOyB,GAAOkhB,YAAalhB,GAAOY,YAAa,MACzF7B,QAAQysB,KACpB9Y,GAAgB0Y,EAAuB7sB,GAAS,IAAIsB,KAAK2rB,IACzDA,GAAWzL,cAUnB,MAAM0L,GAAelB,GAAchW,OAAOpL,IAC/BuiB,GAAuBviB,GAAMygB,EAAqBC,KAGvD8B,GAAgB,IAAIpqB,IACGqqB,GAAsBD,GAAexf,KAAK9N,OAAQosB,GAA6BZ,GAAsBlqB,MAC7GZ,QAAQoK,KACrBuiB,GAAuBviB,GAAMygB,EAAqBC,KAClD4B,GAAa5rB,KAAKsJ,MAI1B,MAAM0iB,GAAe,IAAItqB,IACzB0oB,GAAalrB,QAAQ,CAACqrB,GAAOC,MACzBuB,GAAsBC,GAAc1f,KAAK9N,OAAQ,IAAI8M,IAAIif,IAAQR,EAAqBlqB,QAE1F+rB,GAAa1sB,QAAQoK,KACjB,MAAM2iB,GAAOH,GAAcnqB,IAAI2H,IACzB4iB,GAAMF,GAAarqB,IAAI2H,IAC7BwiB,GAAclqB,IAAI0H,GAAM/J,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIqO,IAAOC,OAEnE,MAAMC,GAAc,GACdC,GAAa,GACbC,GAAuC,GAC7CvC,EAAmB5qB,QAAQ2f,KACvB,MAAQngB,WAASyB,UAAQoV,gBAAgBsJ,GAGzC,GAAI+J,GAAajd,IAAIjN,IAAU,CAC3B,GAAIurB,GAAoBte,IAAIjN,IAKxB,OAJAyB,GAAOO,UAAU,IAAM8T,GAAU9V,GAAS6W,GAAY2G,WACtD/b,GAAOgB,UAAW,EAClBhB,GAAOmsB,kBAAkB/W,GAAY1U,gBACrC+oB,GAAe5pB,KAAKG,IASxB,IAAIosB,GAAsBF,GAC1B,GAAIb,EAAoB3e,KAAO,EAAG,CAC9B,IAAIkR,GAAMrf,GACV,MAAM8tB,GAAe,GACrB,KAAOzO,GAAMA,GAAIpb,YAAY,CACzB,MAAM8pB,GAAiBjB,EAAoB7pB,IAAIoc,IAC/C,GAAI0O,GAAgB,CAChBF,GAAsBE,GACtB,MAEJD,GAAaxsB,KAAK+d,IAEtByO,GAAattB,QAAQwD,IAAU8oB,EAAoB5pB,IAAIc,GAAQ6pB,KAEnE,MAAMG,GAAcpgB,KAAKqgB,gBAAgBxsB,GAAOkhB,YAAa9L,GAAagW,EAAuB1B,GAAmBmC,GAAcF,IAElI,GADA3rB,GAAOysB,cAAcF,IACjBH,KAAwBF,GACxBF,GAAYnsB,KAAKG,QAEhB,CACD,MAAM0sB,GAAgBvgB,KAAKyX,iBAAiBpiB,IAAI4qB,IAC5CM,IAAiBA,GAAcxuB,SAC/B8B,GAAO2sB,aAAe7M,GAAoB4M,KAE9CjD,GAAe5pB,KAAKG,UAIxB0jB,GAAYnlB,GAAS6W,GAAY0G,YACjC9b,GAAOO,UAAU,IAAM8T,GAAU9V,GAAS6W,GAAY2G,WAItDkQ,GAAWpsB,KAAKG,IACZ8pB,GAAoBte,IAAIjN,KACxBkrB,GAAe5pB,KAAKG,MAKhCisB,GAAWltB,QAAQiB,KAGf,MAAM4sB,GAAoBlD,GAAkBloB,IAAIxB,GAAOzB,SACvD,GAAIquB,IAAqBA,GAAkB1uB,OAAQ,CAC/C,MAAMquB,GAAczM,GAAoB8M,IACxC5sB,GAAOysB,cAAcF,OAM7B9C,GAAe1qB,QAAQiB,KACfA,GAAO2sB,aACP3sB,GAAO6sB,iBAAiB7sB,GAAO2sB,cAG/B3sB,GAAO+f,YAMf,QAAS9Y,GAAI,EAAGA,GAAIsjB,GAAcrsB,OAAQ+I,KAAK,CAC3C,MAAM1I,GAAUgsB,GAActjB,IACxBmhB,GAAU7pB,GAAQijB,IAKxB,GAJAwC,GAAYzlB,GAAS8G,IAIjB+iB,IAAWA,GAAQ/G,aACnB,SACJ,IAAIpjB,GAAU,GAId,GAAI+d,EAAgBtP,KAAM,CACtB,IAAIogB,GAAuB9Q,EAAgBxa,IAAIjD,IAC3CuuB,IAAwBA,GAAqB5uB,QAC7CD,GAAQ4B,QAAQitB,IAEpB,IAAIC,GAAuB5gB,KAAK9N,OAAOiG,MAAM/F,GAASkH,IAAuB,GAC7E,QAASunB,GAAI,EAAGA,GAAID,GAAqB7uB,OAAQ8uB,KAAK,CAClD,IAAIC,GAAiBjR,EAAgBxa,IAAIurB,GAAqBC,KAC1DC,IAAkBA,GAAe/uB,QACjCD,GAAQ4B,QAAQotB,KAI5B,MAAMC,GAAgBjvB,GAAQsW,OAAOiS,KAAMA,GAAEN,WACzCgH,GAAchvB,OACdivB,GAA8BhhB,KAAM5N,GAAS2uB,IAG7C/gB,KAAK6Y,iBAAiBzmB,IAI9BgsB,UAAcrsB,OAAS,EACvB8tB,GAAYjtB,QAAQiB,KAChBmM,KAAKlO,QAAQ4B,KAAKG,IAClBA,GAAOM,OAAO,KACVN,GAAO+f,UACP,MAAME,GAAQ9T,KAAKlO,QAAQ2D,QAAQ5B,IACnCmM,KAAKlO,QAAQwI,OAAOwZ,GAAO,KAE/BjgB,GAAOugB,SAEJyL,GAEXvF,oBAAoBvF,EAAa3iB,GAC7B,IAAImoB,IAAe,EACnB,MAAM0B,GAAU7pB,EAAQijB,IACxB,OAAI4G,IAAWA,GAAQjH,gBACnBuF,IAAe,GACfva,KAAKyX,iBAAiBpY,IAAIjN,KAC1BmoB,IAAe,GACfva,KAAKwZ,wBAAwBna,IAAIjN,KACjCmoB,IAAe,GACfva,KAAK0W,gBAAgBrX,IAAIjN,KACzBmoB,IAAe,GACZva,KAAK6b,gBAAgB9G,GAAauF,oBAAoBloB,IAAYmoB,GAE7E5D,WAAW3iB,GACPgM,KAAK4a,UAAUlnB,KAAKM,GAExBwkB,yBAAyBxkB,GACrBgM,KAAK6a,cAAcnnB,KAAKM,GAE5BorB,oBAAoBhtB,EAAS6uB,EAAkBlM,GAAatgB,GAAaysB,IACrE,IAAIpvB,EAAU,GACd,GAAImvB,EAAkB,CAClB,MAAME,EAAwBnhB,KAAKwZ,wBAAwBnkB,IAAIjD,GAC3D+uB,IACArvB,EAAUqvB,OAGb,CACD,MAAMjJ,EAAiBlY,KAAKyX,iBAAiBpiB,IAAIjD,GACjD,GAAI8lB,EAAgB,CAChB,MAAMkJ,GAAsBF,IAAgBA,IAAgBzL,GAC5DyC,EAAetlB,QAAQiB,KACfA,GAAO6jB,SAEN0J,GAAsBvtB,GAAOY,aAAeA,IAEjD3C,EAAQ4B,KAAKG,OAIzB,OAAIkhB,IAAetgB,MACf3C,EAAUA,EAAQsW,OAAOvU,KACjBkhB,IAAeA,IAAelhB,EAAOkhB,aAErCtgB,IAAeA,IAAeZ,EAAOY,eAK1C3C,EAEXqtB,sBAAsBpK,EAAa9L,EAAagW,IAC5C,MACM1X,GAAc0B,EAAY7W,QAG1BivB,EAAoBpY,EAAYyG,yBAAsB9a,EAAYmgB,EAClEuM,EAAoBrY,EAAYyG,yBAAsB9a,EALxCqU,EAAYxU,YAMhC,UAAW8sB,KAAuBtY,EAAYd,UAAW,CACrD,MAAM/V,GAAUmvB,EAAoBnvB,QAC9B6uB,GAAmB7uB,KAAYmV,GAC/BzV,EAAUyU,GAAgB0Y,GAAuB7sB,GAAS,IACxC4N,KAAKof,oBAAoBhtB,GAAS6uB,GAAkBI,EAAmBC,EAAmBrY,EAAYtU,SAC9G/B,QAAQiB,KACpB,MAAM2tB,GAAa3tB,GAAO4tB,gBACtBD,GAAWE,eACXF,GAAWE,gBAEf7tB,GAAO+f,UACP9hB,EAAQ4B,KAAKG,MAKrB0jB,GAAYhQ,GAAa0B,EAAY0G,YAEzC0Q,gBAAgBtL,EAAa9L,EAAagW,GAAuB1B,GAAmBmC,GAAcF,GAC9F,MAAM/qB,EAAcwU,EAAYxU,YAC1B8S,EAAc0B,EAAY7W,QAG1BuvB,GAAoB,GACpBC,GAAsB,IAAI5iB,IAC1B6iB,EAAiB,IAAI7iB,IACrB8iB,GAAgB7Y,EAAYd,UAAUnT,IAAIusB,KAC5C,MAAMnvB,GAAUmvB,GAAoBnvB,QACpCwvB,GAAoB5f,IAAI5P,IAExB,MAAM6pB,GAAU7pB,GAAQijB,IACxB,GAAI4G,IAAWA,GAAQ9G,qBACnB,OAAO,IAAInjB,KAAoBuvB,GAAoBjpB,SAAUipB,GAAoBhpB,OACrF,MAAM0oB,GAAmB7uB,KAAYmV,EAC/B9O,GAsRlB,YAA6B3G,IACzB,MAAMiwB,EAAe,GACrBC,UAA0BlwB,GAASiwB,GAC5BA,EAzRyBE,EAAqBhD,GAAsB5pB,IAAIjD,KAAYyiB,IAC9E7f,IAAIqlB,GAAKA,EAAEoH,kBACXrZ,OAAOiS,KAKGA,EACDjoB,SADCioB,EACYjoB,UAAYA,IAEjCE,GAAYotB,GAAarqB,IAAIjD,IAC7BG,GAAaitB,EAAcnqB,IAAIjD,IAC/BC,EAAYghB,GAAmBrT,EAAaA,KAAK8R,YAAa1f,EAASmvB,GAAoBlvB,UAAWC,GAAWC,IACjHsB,EAASmM,KAAKoT,aAAamO,GAAqBlvB,EAAWoG,IAMjE,GAHI8oB,GAAoBxa,aAAewW,IACnCsE,EAAe7f,IAAI5P,IAEnB6uB,GAAkB,CAClB,MAAMiB,EAAgB,IAAIlL,GAA0BjC,EAAatgB,EAAarC,IAC9E8vB,EAAc5B,cAAczsB,GAC5B8tB,GAAkBjuB,KAAKwuB,GAE3B,OAAOruB,IAEX8tB,GAAkB/uB,QAAQiB,KACtB0S,GAAgBvG,KAAKwZ,wBAAyB3lB,GAAOzB,QAAS,IAAIsB,KAAKG,IACvEA,GAAOM,OAAO,IA8H1B,YAA4Ba,GAAKC,EAAKE,GAClC,IAAIgtB,GACJ,GAAIntB,cAAeI,KAEf,GADA+sB,GAAgBntB,GAAIK,IAAIJ,GACpBktB,GAAe,CACf,GAAIA,GAAcpwB,OAAQ,CACtB,MAAM+hB,GAAQqO,GAAc1sB,QAAQN,GACpCgtB,GAAc7nB,OAAOwZ,GAAO,GAEJ,GAAxBqO,GAAcpwB,QACdiD,GAAIijB,OAAOhjB,YAKnBktB,GAAgBntB,GAAIC,GAChBktB,GAAe,CACf,GAAIA,GAAcpwB,OAAQ,CACtB,MAAM+hB,GAAQqO,GAAc1sB,QAAQN,GACpCgtB,GAAc7nB,OAAOwZ,GAAO,GAEJ,GAAxBqO,GAAcpwB,eACPiD,GAAIC,GAIvB,OAAOktB,GAxJqBC,CAAmBpiB,KAAKwZ,wBAAyB3lB,GAAOzB,QAASyB,OAEzF+tB,GAAoBhvB,QAAQR,IAAW8jB,GAAS9jB,GAASiH,KACzD,MAAMxF,GAAS8f,GAAoBmO,IACnCjuB,UAAOO,UAAU,KACbwtB,GAAoBhvB,QAAQR,IAAWylB,GAAYzlB,GAASiH,KAC5D6O,GAAUX,EAAa0B,EAAY2G,YAIvCiS,EAAejvB,QAAQR,KACnBmU,GAAgBgX,GAAmBnrB,GAAS,IAAIsB,KAAKG,MAElDA,GAEXuf,aAAanK,EAAa5W,EAAWoG,IACjC,OAAIpG,EAAUN,OAAS,EACZiO,KAAK9N,OAAOmG,QAAQ4Q,EAAY7W,QAASC,EAAW4W,EAAY3Q,SAAU2Q,EAAY1Q,MAAO0Q,EAAYzQ,OAAQC,IAIrH,IAAIzG,KAAoBiX,EAAY3Q,SAAU2Q,EAAY1Q,QAGzE,SACIuH,YAAYiV,EAAatgB,EAAarC,IAClC4N,KAAK+U,YAAcA,EACnB/U,KAAKvL,YAAcA,EACnBuL,KAAK5N,QAAUA,GACf4N,KAAKqiB,QAAU,IAAIrwB,KACnBgO,KAAKsiB,qBAAsB,EAC3BtiB,KAAKuiB,iBAAmB,GACxBviB,KAAK+Z,WAAY,EACjB/Z,KAAKia,kBAAmB,EACxBja,KAAKnL,UAAW,EAChBmL,KAAK0X,QAAS,EACd1X,KAAKzL,UAAY,EAErB+rB,cAAczsB,GACNmM,KAAKsiB,sBAETtiB,KAAKqiB,QAAUxuB,EACfZ,OAAOC,KAAK8M,KAAKuiB,kBAAkB3vB,QAAQujB,IACvCnW,KAAKuiB,iBAAiBpM,GAAOvjB,QAAQoB,IAAYkgB,GAAergB,EAAQsiB,OAAOvhB,EAAWZ,OAE9FgM,KAAKuiB,iBAAmB,GACxBviB,KAAKsiB,qBAAsB,EAC3BtiB,KAAKggB,kBAAkBnsB,EAAOU,WAC9ByL,KAAK0X,QAAS,GAElB+J,gBACI,OAAOzhB,KAAKqiB,QAEhBrC,kBAAkBzrB,GACdyL,KAAKzL,UAAYA,EAErBmsB,iBAAiB7sB,GACb,MAAMwmB,EAAIra,KAAKqiB,QACXhI,EAAEmI,iBACF3uB,EAAOI,QAAQ,IAAMomB,EAAEmI,gBAAgB,UAE3C3uB,EAAOM,OAAO,IAAM6L,KAAKwU,UACzB3gB,EAAOO,UAAU,IAAM4L,KAAK4T,WAEhC6O,YAAY1hB,EAAM/M,GACduS,GAAgBvG,KAAKuiB,iBAAkBxhB,EAAM,IAAIrN,KAAKM,GAE1DG,OAAOic,GACCpQ,KAAK0X,QACL1X,KAAKyiB,YAAY,OAAQrS,GAE7BpQ,KAAKqiB,QAAQluB,OAAOic,GAExBnc,QAAQmc,GACApQ,KAAK0X,QACL1X,KAAKyiB,YAAY,QAASrS,GAE9BpQ,KAAKqiB,QAAQpuB,QAAQmc,GAEzBhc,UAAUgc,GACFpQ,KAAK0X,QACL1X,KAAKyiB,YAAY,UAAWrS,GAEhCpQ,KAAKqiB,QAAQjuB,UAAUgc,GAE3BqE,OACIzU,KAAKqiB,QAAQ5N,OAEjBiO,aACI,OAAO1iB,KAAK0X,QAAiB1X,KAAKqiB,QAAQK,aAE9CtO,QACKpU,KAAK0X,QAAU1X,KAAKqiB,QAAQjO,OAEjCC,SACKrU,KAAK0X,QAAU1X,KAAKqiB,QAAQhO,QAEjCE,WACKvU,KAAK0X,QAAU1X,KAAKqiB,QAAQ9N,UAEjCC,SACIxU,KAAKqiB,QAAQ7N,SAEjBZ,UACI5T,KAAK+Z,WAAY,EACjB/Z,KAAKqiB,QAAQzO,UAEjBU,SACKtU,KAAK0X,QAAU1X,KAAKqiB,QAAQ/N,QAEjCI,YAAY2F,GACHra,KAAK0X,QACN1X,KAAKqiB,QAAQ3N,YAAY2F,GAGjCsI,cACI,OAAO3iB,KAAK0X,OAAS,EAAI1X,KAAKqiB,QAAQM,cAG1CH,gBAAgBluB,GACZ,MAAM+lB,EAAIra,KAAKqiB,QACXhI,EAAEmI,iBACFnI,EAAEmI,gBAAgBluB,IAsC9B,YAAuB0I,IACnB,OAAOA,IAA6B,IAArBA,GAAKgB,QAAgB,CAKxC,YAAsB5L,GAAS+C,GAC3B,MAAMytB,EAAWxwB,GAAQkF,MAAMurB,QAC/BzwB,UAAQkF,MAAMurB,QAAmB,MAAT1tB,EAAgBA,EAAQ,OACzCytB,EAEX,YAA+BE,GAAW5wB,EAAQia,EAAU4W,GAAiBC,IACzE,MAAMC,GAAY,GAClB9W,EAASvZ,QAAQR,GAAW6wB,GAAUvvB,KAAKwvB,GAAa9wB,KACxD,MAAM+wB,EAAiB,GACvBJ,GAAgBnwB,QAAQ,CAAC6a,EAAOrb,MAC5B,MAAMsI,GAAS,GACf+S,EAAM7a,QAAQO,IACV,MAAMgC,GAAQuF,GAAOvH,GAAQjB,EAAOkG,aAAahG,GAASe,EAAM6vB,MAG3D7tB,IAAyB,GAAhBA,GAAMpD,UAChBK,GAAQijB,IAAgBD,GACxB+N,EAAezvB,KAAKtB,OAG5B0wB,GAAUxtB,IAAIlD,GAASsI,MAI3B,IAAII,EAAI,EACRqR,SAASvZ,QAAQR,GAAW8wB,GAAa9wB,EAAS6wB,GAAUnoB,OACrDqoB,EAYX,YAAsBC,GAAOnF,GACzB,MAAMoF,EAAU,IAAIjuB,IAEpB,GADAguB,GAAMxwB,QAAQsrB,GAAQmF,EAAQ/tB,IAAI4oB,EAAM,KACpB,GAAhBD,EAAMlsB,OACN,OAAOsxB,EACX,MACMC,GAAU,IAAItkB,IAAIif,GAClBsF,GAAe,IAAInuB,IACzB,WAAiB4H,GACb,IAAKA,EACD,OALU,EAMd,IAAIkhB,EAAOqF,GAAaluB,IAAI2H,GAC5B,GAAIkhB,EACA,OAAOA,EACX,MAAM9nB,GAAS4G,EAAK3G,WACpB,OACI6nB,EADAmF,EAAQhkB,IAAIjJ,IACLA,GAEN4jB,GAAY3a,IAAIjJ,IAbP,EAiBHotB,EAAQptB,IAEnBmtB,GAAajuB,IAAI0H,EAAMkhB,GAChBA,EAEXD,SAAMrrB,QAAQoK,IACV,MAAMkhB,EAAOsF,EAAQxmB,GAvBP,IAwBVkhB,GACAmF,EAAQhuB,IAAI6oB,GAAMxqB,KAAKsJ,KAGxBqmB,EAEX,YAAkBjxB,GAAS+rB,GACvB,IAAIrB,EACyB,QAA5BA,EAAK1qB,GAAQ2qB,iBAA8B,IAAPD,GAAyBA,EAAG9a,IAAImc,GAEzE,YAAqB/rB,GAAS+rB,GAC1B,IAAIrB,EACyB,QAA5BA,EAAK1qB,GAAQ2qB,iBAA8B,IAAPD,GAAyBA,EAAG2G,OAAOtF,GAE5E,YAAuChF,GAAQ/mB,EAASN,GACpD6hB,GAAoB7hB,GAASqC,OAAO,IAAMglB,GAAON,iBAAiBzmB,IAOtE,YAAmCN,GAASiwB,GACxC,QAASjnB,EAAI,EAAGA,EAAIhJ,GAAQC,OAAQ+I,IAAK,CACrC,MAAMjH,GAAS/B,GAAQgJ,GACnBjH,cAAkB5B,KAClB+vB,GAA0BnuB,GAAO/B,QAASiwB,GAG1CA,EAAaruB,KAAKG,KAgB9B,YAAgCzB,GAASqrB,EAAqBC,GAC1D,MAAMgG,GAAYhG,EAAqBroB,IAAIjD,IAC3C,IAAKsxB,GACD,OAAO,EACX,IAAIC,GAAWlG,EAAoBpoB,IAAIjD,IACvC,OAAIuxB,GACAD,GAAU9wB,QAAQkC,IAAQ6uB,GAAS3hB,IAAIlN,KAGvC2oB,EAAoBnoB,IAAIlD,GAASsxB,IAErChG,EAAqBzF,OAAO7lB,KACrB,EAGX,SACI0N,YAAY+S,EAAU9S,EAAS+R,IAC3B9R,KAAK6S,SAAWA,EAChB7S,KAAKD,QAAUA,EACfC,KAAK8R,YAAcA,GACnB9R,KAAK4jB,cAAgB,GAErB5jB,KAAKib,kBAAoB,CAAC7oB,GAAS6K,MAAV,EACzB+C,KAAK6jB,kBAAoB,IAAIC,GAA0BjR,EAAU9S,EAAS+R,IAC1E9R,KAAK+jB,gBAAkB,IAAIC,GAAwBnR,EAAU9S,EAAS+R,IACtE9R,KAAK6jB,kBAAkB5I,kBAAoB,CAAC7oB,GAAS6K,KAAY+C,KAAKib,kBAAkB7oB,GAAS6K,IAErG2e,gBAAgBqI,EAAalP,EAAaa,GAAa7U,GAAMrB,IACzD,MAAMwkB,EAAWD,EAAc,IAAMljB,GACrC,IAAI8V,EAAU7W,KAAK4jB,cAAcM,GACjC,IAAKrN,EAAS,CACV,MAAMrkB,EAAS,GAET2N,GAAM+S,GAAkBlT,KAAKD,QAASL,GAAUlN,EADrC,IAEjB,GAAIA,EAAOT,OACP,MAh3HhB,WAA4BgP,GAAMvO,GAC9B,OAAO,IAAIhB,MAAc,KAAiCF,GACsE,CA82H9G6yB,GAKVtN,EApuDZ,YAAsB9V,GAAMZ,EAAKhO,GAC7B,OAAO,IAAIiyB,GAAiBrjB,GAAMZ,EAAKhO,GAmuDrBkyB,CAAatjB,GAAMZ,GAAKH,KAAK8R,aACvC9R,KAAK4jB,cAAcM,GAAYrN,EAEnC7W,KAAK6jB,kBAAkBjI,gBAAgB7G,EAAahU,GAAM8V,GAE9D7D,SAAS+B,EAAaa,GAClB5V,KAAK6jB,kBAAkB7Q,SAAS+B,EAAaa,GAEjDhC,QAAQmB,EAAa9X,GACjB+C,KAAK6jB,kBAAkBjQ,QAAQmB,EAAa9X,GAEhDqnB,SAASvP,EAAa3iB,EAASgE,GAAQ4lB,IACnChc,KAAK6jB,kBAAkBjK,WAAW7E,EAAa3iB,EAASgE,GAAQ4lB,IAEpEuI,SAASxP,EAAa3iB,EAAS6K,GAASkf,IACpCnc,KAAK6jB,kBAAkB3K,WAAWnE,EAAa3iB,EAAS+pB,KAAiB,EAAOlf,IAEpFunB,kBAAkBpyB,EAASqyB,GACvBzkB,KAAK6jB,kBAAkB3H,sBAAsB9pB,EAASqyB,GAE1D9yB,QAAQojB,EAAa3iB,EAASsyB,GAAUvvB,IACpC,GAA0B,KAAtBuvB,GAAShtB,OAAO,GAAW,CAC3B,MAAOub,GAAIrd,GAAU+uB,GAAqBD,IAE1C1kB,KAAK+jB,gBAAgBxuB,QAAQ0d,GAAI7gB,EAASwD,EAD7BT,GACqCgf,MAGlDnU,KAAK6jB,kBAAkBhN,QAAQ9B,EAAa3iB,EAASsyB,GAAUvvB,IAGvE6e,OAAOe,EAAa3iB,EAAS0B,GAAW8wB,GAAY5wB,IAEhD,GAA2B,KAAvBF,GAAU4D,OAAO,GAAW,CAC5B,MAAOub,EAAIrd,GAAU+uB,GAAqB7wB,IAC1C,OAAOkM,KAAK+jB,gBAAgB/P,OAAOf,EAAI7gB,EAASwD,EAAQ5B,IAE5D,OAAOgM,KAAK6jB,kBAAkB7P,OAAOe,EAAa3iB,EAAS0B,GAAW8wB,GAAY5wB,IAEtFgpB,MAAMlD,GAAc,GAChB9Z,KAAK6jB,kBAAkB7G,MAAMlD,GAE7BhoB,cACA,OAAOkO,KAAK6jB,kBAAkB/xB,QACzB+yB,OAAO7kB,KAAK+jB,gBAAgBjyB,SAErC6qB,oBACI,OAAO3c,KAAK6jB,kBAAkBlH,yBA6ChCmI,SAAN,SACIhlB,YAAY7H,EAAU8sB,GAAcC,IAChChlB,KAAK/H,SAAWA,EAChB+H,KAAK+kB,aAAeA,GACpB/kB,KAAKglB,WAAaA,GAClBhlB,KAAKilB,OAAS,EACd,IAAIC,GAAgBJ,GAAmBK,uBAAuB9vB,IAAI4C,GAC7DitB,IACDJ,GAAmBK,uBAAuB7vB,IAAI2C,EAAUitB,GAAgB,IAE5EllB,KAAKolB,eAAiBF,GAE1BG,QACQrlB,KAAKilB,OAAS,IACVjlB,KAAK+kB,cACL7c,GAAUlI,KAAK/H,SAAU+H,KAAK+kB,aAAc/kB,KAAKolB,gBAErDplB,KAAKilB,OAAS,GAGtBzQ,SACIxU,KAAKqlB,QACDrlB,KAAKilB,OAAS,IACd/c,GAAUlI,KAAK/H,SAAU+H,KAAKolB,gBAC1BplB,KAAKglB,aACL9c,GAAUlI,KAAK/H,SAAU+H,KAAKglB,YAC9BhlB,KAAKglB,WAAa,MAEtBhlB,KAAKilB,OAAS,GAGtBrR,UACI5T,KAAKwU,SACDxU,KAAKilB,OAAS,IACdH,GAAmBK,uBAAuBlN,OAAOjY,KAAK/H,UAClD+H,KAAK+kB,eACLxN,GAAYvX,KAAK/H,SAAU+H,KAAK+kB,cAChC/kB,KAAKglB,WAAa,MAElBhlB,KAAKglB,aACLzN,GAAYvX,KAAK/H,SAAU+H,KAAKglB,YAChChlB,KAAKglB,WAAa,MAEtB9c,GAAUlI,KAAK/H,SAAU+H,KAAKolB,gBAC9BplB,KAAKilB,OAAS,IAI1BH,UAAmBK,uBAA0C,IAAIG,QAhD3DR,OAiDN,YAAmCpqB,IAC/B,IAAInD,EAAS,KACb,MAAMkW,EAAQxa,OAAOC,KAAKwH,IAC1B,QAASI,GAAI,EAAGA,GAAI2S,EAAM1b,OAAQ+I,KAAK,CACnC,MAAM3H,GAAOsa,EAAM3S,IACfyqB,GAAqBpyB,MACrBoE,EAASA,GAAU,GACnBA,EAAOpE,IAAQuH,GAAOvH,KAG9B,OAAOoE,EAEX,YAA8BpE,IAC1B,MAAgB,YAATA,IAA+B,aAATA,EAAS,CAG1C,SACI2M,YAAY1N,EAASC,EAAWkP,GAASikB,IACrCxlB,KAAK5N,QAAUA,EACf4N,KAAK3N,UAAYA,EACjB2N,KAAKuB,QAAUA,GACfvB,KAAKwlB,eAAiBA,GACtBxlB,KAAKylB,WAAa,GAClBzlB,KAAK0lB,YAAc,GACnB1lB,KAAK2lB,cAAgB,GACrB3lB,KAAK4lB,cAAe,EACpB5lB,KAAK6lB,WAAY,EACjB7lB,KAAK8lB,UAAW,EAChB9lB,KAAK+lB,YAAa,EAClB/lB,KAAKiM,KAAO,EACZjM,KAAKwgB,aAAe,KACpBxgB,KAAKgmB,gBAAkB,GACvBhmB,KAAKimB,UAAY1kB,GAAQjJ,SACzB0H,KAAKkmB,OAAS3kB,GAAQhJ,OAAY,EAClCyH,KAAKiM,KAAOjM,KAAKimB,UAAYjmB,KAAKkmB,OAEtCC,YACSnmB,KAAK6lB,YACN7lB,KAAK6lB,WAAY,EACjB7lB,KAAKylB,WAAW7yB,QAAQwd,GAAMA,KAC9BpQ,KAAKylB,WAAa,IAG1BhR,OACIzU,KAAKoT,eACLpT,KAAKomB,4BAEThT,eACI,GAAIpT,KAAK4lB,aACL,OACJ5lB,KAAK4lB,cAAe,EACpB,MAAMvzB,EAAY2N,KAAK3N,UACvB2N,KAAKqmB,UACDrmB,KAAKsmB,qBAAqBtmB,KAAK5N,QAASC,EAAW2N,KAAKuB,SAC5DvB,KAAKumB,eAAiBl0B,EAAUN,OAASM,EAAUA,EAAUN,OAAS,GAAK,GAC3EiO,KAAKqmB,UAAUG,iBAAiB,SAAU,IAAMxmB,KAAKmmB,aAEzDC,4BAEQpmB,KAAKkmB,OACLlmB,KAAKymB,uBAGLzmB,KAAKqmB,UAAUhS,QAIvBiS,qBAAqBl0B,EAASC,EAAWkP,IAGrC,OAAOnP,EAAQiG,QAAWhG,EAAWkP,IAEzCtN,QAAQmc,GACJpQ,KAAK0lB,YAAYhyB,KAAK0c,GAE1Bjc,OAAOic,GACHpQ,KAAKylB,WAAW/xB,KAAK0c,GAEzBhc,UAAUgc,GACNpQ,KAAK2lB,cAAcjyB,KAAK0c,GAE5BgE,OACIpU,KAAKoT,eACApT,KAAK0iB,eACN1iB,KAAK0lB,YAAY9yB,QAAQwd,GAAMA,KAC/BpQ,KAAK0lB,YAAc,GACnB1lB,KAAK8lB,UAAW,EACZ9lB,KAAKwlB,gBACLxlB,KAAKwlB,eAAeH,SAG5BrlB,KAAKqmB,UAAUjS,OAEnBC,QACIrU,KAAKyU,OACLzU,KAAKqmB,UAAUhS,QAEnBG,SACIxU,KAAKyU,OACDzU,KAAKwlB,gBACLxlB,KAAKwlB,eAAehR,SAExBxU,KAAKmmB,YACLnmB,KAAKqmB,UAAU7R,SAEnBF,QACItU,KAAKymB,uBACLzmB,KAAK+lB,YAAa,EAClB/lB,KAAK6lB,WAAY,EACjB7lB,KAAK8lB,UAAW,EAEpBW,uBACQzmB,KAAKqmB,WACLrmB,KAAKqmB,UAAUK,SAGvBnS,UACIvU,KAAKsU,QACLtU,KAAKoU,OAETsO,aACI,OAAO1iB,KAAK8lB,SAEhBlS,UACS5T,KAAK+lB,aACN/lB,KAAK+lB,YAAa,EAClB/lB,KAAKymB,uBACLzmB,KAAKmmB,YACDnmB,KAAKwlB,gBACLxlB,KAAKwlB,eAAe5R,UAExB5T,KAAK2lB,cAAc/yB,QAAQwd,GAAMA,KACjCpQ,KAAK2lB,cAAgB,IAG7BjR,YAAY2F,QACezlB,IAAnBoL,KAAKqmB,WACLrmB,KAAKyU,OAETzU,KAAKqmB,UAAU3lB,YAAc2Z,EAAIra,KAAKiM,KAE1C0W,cACI,OAAO3iB,KAAKqmB,UAAU3lB,YAAcV,KAAKiM,KAEzC1X,gBACA,OAAOyL,KAAKkmB,OAASlmB,KAAKimB,UAE9BvE,gBACI,MAAMhnB,EAAS,GACf,GAAIsF,KAAK0iB,aAAc,CAInB,MAAM1U,EAAgBhO,KAAKumB,eAC3BtzB,OAAOC,KAAK8a,GAAepb,QAAQO,KACnB,UAARA,KACAuH,EAAOvH,IAAQ6M,KAAK6lB,UAAY7X,EAAc7a,IAAQiF,GAAa4H,KAAK5N,QAASe,OAI7F6M,KAAKgmB,gBAAkBtrB,EAG3B8nB,gBAAgBluB,GACZ,MAAMqyB,EAAuB,SAAbryB,EAAuB0L,KAAK0lB,YAAc1lB,KAAKylB,WAC/DkB,EAAQ/zB,QAAQwd,IAAMA,MACtBuW,EAAQ50B,OAAS,GAIzB,SACIgG,sBAAsB5E,GAClB,OAAO4E,GAAsB5E,GAEjC6E,eAAeC,EAAUC,GAErB,OAAO,EAEXN,gBAAgB9B,EAAMC,GAClB,OAAO6B,GAAgB9B,EAAMC,GAEjCY,iBAAiBvE,GACb,OAAOuE,GAAiBvE,GAE5B+F,MAAM/F,EAAS6D,EAAUC,IACrB,OAAO2B,GAAYzF,EAAS6D,EAAUC,IAE1CkC,aAAahG,EAASe,EAAM+B,IACxB,OAAOzD,OAAOyM,iBAAiB9L,GAASe,GAE5CkF,QAAQjG,EAASC,EAAWiG,GAAUC,GAAOC,GAAQC,EAAkB,IACnE,MACMmuB,EAAgB,CAAEtuB,YAAUC,SAAOsuB,KADnB,GAATtuB,GAAa,OAAS,YAI/BC,KACAouB,EAAcpuB,OAAYA,IAE9B,MAAMsuB,GAAiB,GACjBC,GAA8BtuB,EAAgB2P,OAAOvU,IAAUA,cAAkBmzB,KAlsH/F,YAAwC1uB,GAAUC,GAC9C,OAAoB,IAAbD,IAA4B,IAAVC,CAAU,EAksH3B0uB,CAA+B3uB,GAAUC,KACzCwuB,GAA4Bn0B,QAAQiB,KAChC,IAAI6G,GAAS7G,GAAOmyB,gBACpB/yB,OAAOC,KAAKwH,IAAQ9H,QAAQO,IAAQ2zB,GAAe3zB,IAAQuH,GAAOvH,OAI1Ed,EAvsHR,YAA4CD,GAASC,EAAWy0B,GAC5D,MAAMI,GAAqBj0B,OAAOC,KAAK4zB,GACvC,GAAII,GAAmBn1B,QAAUM,EAAUN,OAAQ,CAC/C,IAAIo1B,GAAmB90B,EAAU,GAC7B+0B,EAAoB,GAOxB,GANAF,GAAmBt0B,QAAQO,IAClBg0B,GAAiBrtB,eAAe3G,IACjCi0B,EAAkB1zB,KAAKP,GAE3Bg0B,GAAiBh0B,GAAQ2zB,EAAe3zB,KAExCi0B,EAAkBr1B,OAElB,QAAS+I,GAAI,EAAGA,GAAIzI,EAAUN,OAAQ+I,KAAK,CACvC,IAAIjI,EAAKR,EAAUyI,IACnBssB,EAAkBx0B,QAAQ,SAAUO,GAChCN,EAAGM,GAAQiF,GAAahG,GAASe,MAKjD,OAAOd,EAkrHSg1B,CAAmCj1B,EAD/CC,EAAYA,EAAU2C,IAAI0F,IAAU4S,GAAW5S,IAAQ,IACYosB,IACnE,MAAMQ,EAxRd,YAAoCl1B,GAASsI,GACzC,IAAI6sB,EAAc,KACdC,GAAY,KAChB,OAAI3wB,MAAM4E,QAAQf,IAAWA,EAAO3I,QAChCw1B,EAAcE,GAA0B/sB,EAAO,IAC3CA,EAAO3I,OAAS,IAChBy1B,GAAYC,GAA0B/sB,EAAOA,EAAO3I,OAAS,MAG5D2I,IACL6sB,EAAcE,GAA0B/sB,IAEpC6sB,GAAeC,GAAa,IAAI1C,GAAmB1yB,GAASm1B,EAAaC,IAC7E,KA2QsBE,CAA2Bt1B,EAASC,GAC1D,OAAO,IAAI20B,GAAoB50B,EAASC,EAAWu0B,EAAeU,uBC3xIpEK,SAAN,iBAAsCC,KAClC9nB,YAAY+nB,EAAcC,IACtBxZ,QACAtO,KAAK+nB,iBAAmB,EAExB/nB,KAAKgoB,UAAYH,EAAaI,eAAeH,GAAI1wB,KADhC,CAAE6b,GAAI,IAAKiV,cAAeC,WAAwBztB,OAAQ,GAAI5F,KAAM,CAAEwN,UAAW,KAC3C8lB,CAE3DvoB,MAAMyC,GACF,MAAM2Q,GAAKjT,KAAK+nB,iBAAiBn2B,WACjCoO,KAAK+nB,mBACL,MAAMxV,GAAQ1b,MAAM4E,QAAQ6G,IAAa5G,QAAS4G,GAAaA,EAC/D+lB,UAAsBroB,KAAKgoB,UAAW,KAAM/U,GAAI,WAAY,CAACV,KACtD,IAAI+V,GAAwBrV,GAAIjT,KAAKgoB,YAGpDL,UAAwBhvB,UAAxB,0BAAoHgvB,IAAV9uB,MAAmDA,OAAnDA,MAAmF0vB,SAC7LZ,GAAwB/uB,WADkFC,MAC1G,OAAwH8uB,GAAxH7uB,QAAwH6uB,GAAxH,YAhBMA,OAyBN,iBAAsCa,KAClC1oB,YAAY2oB,EAAKT,GACb1Z,QACAtO,KAAKyoB,IAAMA,EACXzoB,KAAKgoB,UAAYA,EAErBjb,OAAO3a,EAASmP,GACZ,OAAO,IAAImnB,GAAwB1oB,KAAKyoB,IAAKr2B,EAASmP,GAAW,GAAIvB,KAAKgoB,YAGlF,SACIloB,YAAYmT,EAAI7gB,EAASmP,GAASymB,IAC9BhoB,KAAKiT,GAAKA,EACVjT,KAAK5N,QAAUA,EACf4N,KAAKgoB,UAAYA,GACjBhoB,KAAKwgB,aAAe,KACpBxgB,KAAK8lB,UAAW,EAChB9lB,KAAKzL,UAAY,EACjByL,KAAK2oB,SAAS,SAAUpnB,IAE5BqnB,QAAQ90B,EAAWE,GACf,OAAOgM,KAAKgoB,UAAUhU,OAAOhU,KAAK5N,QAAU,KAAI4N,KAAKiT,MAAMnf,IAAaE,GAE5E20B,SAASpzB,KAAY4e,GACjB,OAAOkU,GAAsBroB,KAAKgoB,UAAWhoB,KAAK5N,QAAS4N,KAAKiT,GAAI1d,EAAS4e,GAEjFhgB,OAAOic,GACHpQ,KAAK4oB,QAAQ,OAAQxY,GAEzBnc,QAAQmc,GACJpQ,KAAK4oB,QAAQ,QAASxY,GAE1Bhc,UAAUgc,GACNpQ,KAAK4oB,QAAQ,UAAWxY,GAE5BqE,OACIzU,KAAK2oB,SAAS,QAElBjG,aACI,OAAO1iB,KAAK8lB,SAEhB1R,OACIpU,KAAK2oB,SAAS,QACd3oB,KAAK8lB,UAAW,EAEpBzR,QACIrU,KAAK2oB,SAAS,SAElBpU,UACIvU,KAAK2oB,SAAS,WAElBnU,SACIxU,KAAK2oB,SAAS,UAElB/U,UACI5T,KAAK2oB,SAAS,WAElBrU,QACItU,KAAK2oB,SAAS,SACd3oB,KAAK8lB,UAAW,EAEpBpR,YAAY2F,GACRra,KAAK2oB,SAAS,cAAetO,GAEjCsI,cACI,IAAI7F,EAAI+L,EACR,OAAuH,QAA/GA,EAAwD,QAAlD/L,EAAK9c,KAAKgoB,UAAU7O,OAAOrnB,SAASkO,KAAKiT,WAAwB,IAAP6J,OAAgB,EAASA,EAAG6F,qBAAkC,IAAPkG,EAAgBA,EAAK,GAG5J,YAA+BC,GAAU12B,EAAS6gB,EAAI1d,GAAS4e,IAC3D,OAAO2U,GAASC,YAAY32B,EAAU,KAAI6gB,KAAM1d,KAAW4e,IAG/D,MACM6U,GAA0B,iBAC1BC,SAAN,SACInpB,YAAYopB,EAAU/P,GAAQgQ,IAC1BnpB,KAAKkpB,SAAWA,EAChBlpB,KAAKmZ,OAASA,GACdnZ,KAAKmpB,MAAQA,GACbnpB,KAAKopB,WAAa,EAClBppB,KAAKqpB,aAAe,EACpBrpB,KAAKspB,0BAA4B,GACjCtpB,KAAKupB,eAAiB,IAAIn0B,IAC1B4K,KAAKwpB,cAAgB,EACrBxpB,KAAKypB,QAAU7M,QAAQC,QAAQ,GAC/B1D,GAAO8B,kBAAoB,CAAC7oB,GAAS82B,KAKjC,MAAM7yB,EAA0B,MAAb6yB,OAA2C,EAASA,EAAS7yB,WAAWjE,IACvFiE,GACA6yB,EAASQ,YAAYrzB,EAAYjE,KAI7C61B,eAAerS,EAAa1Y,IACxB,MAGMgsB,GAAWlpB,KAAKkpB,SAASjB,eAAerS,EAAa1Y,IAC3D,KAAK0Y,GAAgB1Y,IAASA,GAAKpI,MAASoI,GAAKpI,KAAKwN,WAAc,CAChE,IAAIwmB,GAAW9oB,KAAKupB,eAAel0B,IAAI6zB,IACvC,OAAKJ,KACDA,GAAW,IAAIa,GAPI,GAOsCT,GAAUlpB,KAAKmZ,QAExEnZ,KAAKupB,eAAej0B,IAAI4zB,GAAUJ,KAE/BA,GAEX,MAAM7E,EAAc/mB,GAAK+V,GACnB8B,EAAc7X,GAAK+V,GAAK,IAAMjT,KAAKopB,WACzCppB,KAAKopB,aACLppB,KAAKmZ,OAAOnG,SAAS+B,EAAaa,GAClC,MAAMgG,EAAmB/E,KACjBhgB,MAAM4E,QAAQob,IACdA,GAAQjkB,QAAQgpB,GAGhB5b,KAAKmZ,OAAOyC,gBAAgBqI,EAAalP,EAAaa,EAAaiB,GAAQ9V,KAAM8V,KAIzF+S,OAD0B1sB,GAAKpI,KAAKwN,UAClB1P,QAAQgpB,GACnB,IAAIiO,GAAkB7pB,KAAM+U,EAAamU,GAAUlpB,KAAKmZ,QAEnE2Q,QACI9pB,KAAKwpB,gBACDxpB,KAAKkpB,SAASY,OACd9pB,KAAKkpB,SAASY,QAGtBC,qBAEI/pB,KAAKypB,QAAQO,KAAK,KACdhqB,KAAKqpB,iBAIbY,yBAAyBC,EAAO9Z,GAAItb,IAC5Bo1B,GAAS,GAAKA,EAAQlqB,KAAKqpB,aAC3BrpB,KAAKmpB,MAAMgB,IAAI,IAAM/Z,GAAGtb,MAGiB,GAAzCkL,KAAKspB,0BAA0Bv3B,QAC/B6qB,QAAQC,QAAQ,MAAMmN,KAAK,KACvBhqB,KAAKmpB,MAAMgB,IAAI,KACXnqB,KAAKspB,0BAA0B12B,QAAQ4R,KACnC,MAAO4L,EAAItb,GAAQ0P,GACnB4L,EAAGtb,KAEPkL,KAAKspB,0BAA4B,OAI7CtpB,KAAKspB,0BAA0B51B,KAAK,CAAC0c,GAAItb,MAE7Cs1B,MACIpqB,KAAKwpB,gBAGqB,GAAtBxpB,KAAKwpB,eACLxpB,KAAKmpB,MAAMkB,kBAAkB,KACzBrqB,KAAK+pB,qBACL/pB,KAAKmZ,OAAO6D,MAAMhd,KAAKqpB,gBAG3BrpB,KAAKkpB,SAASkB,KACdpqB,KAAKkpB,SAASkB,MAGtBzN,oBACI,OAAO3c,KAAKmZ,OAAOwD,qBAG3BsM,UAAyBtwB,UAAzB,0BAAqHswB,IA1LXpwB,MA0LqDA,OA1LrDA,MA0LqFyxB,IA1LrFzxB,MA0LqHA,SAC/NowB,GAAyBrwB,WA3LiFC,MA2L1G,OAAyHowB,GAAzHnwB,QAAyHmwB,GAAzH,YAtGMA,OA0GN,SACInpB,YAAYiV,EAAamU,EAAU/P,IAC/BnZ,KAAK+U,YAAcA,EACnB/U,KAAKkpB,SAAWA,EAChBlpB,KAAKmZ,OAASA,GACdnZ,KAAKuqB,YAAcvqB,KAAKkpB,SAASqB,YAAenpB,IAAM8nB,EAASqB,YAAYnpB,IAAK,KAEhFtM,WACA,OAAOkL,KAAKkpB,SAASp0B,KAEzB8e,UACI5T,KAAKmZ,OAAOvF,QAAQ5T,KAAK+U,YAAa/U,KAAKkpB,UAC3ClpB,KAAKkpB,SAAStV,UAElB4W,cAAczpB,EAAM0pB,GAChB,OAAOzqB,KAAKkpB,SAASsB,cAAczpB,EAAM0pB,GAE7CC,cAAcv1B,GACV,OAAO6K,KAAKkpB,SAASwB,cAAcv1B,GAEvCw1B,WAAWx1B,GACP,OAAO6K,KAAKkpB,SAASyB,WAAWx1B,GAEpCy1B,YAAYx0B,EAAQy0B,GAChB7qB,KAAKkpB,SAAS0B,YAAYx0B,EAAQy0B,GAClC7qB,KAAKmZ,OAAOmL,SAAStkB,KAAK+U,YAAa8V,EAAUz0B,GAAQ,GAE7D4lB,aAAa5lB,EAAQy0B,EAAUC,GAAUC,IAAS,GAC9C/qB,KAAKkpB,SAASlN,aAAa5lB,EAAQy0B,EAAUC,IAE7C9qB,KAAKmZ,OAAOmL,SAAStkB,KAAK+U,YAAa8V,EAAUz0B,EAAQ20B,IAE7DrB,YAAYtzB,EAAQ40B,EAAU7O,IAC1Bnc,KAAKmZ,OAAOoL,SAASvkB,KAAK+U,YAAaiW,EAAUhrB,KAAKkpB,SAAU/M,IAEpE8O,kBAAkBC,EAAgBC,GAC9B,OAAOnrB,KAAKkpB,SAAS+B,kBAAkBC,EAAgBC,GAE3D90B,WAAW2G,GACP,OAAOgD,KAAKkpB,SAAS7yB,WAAW2G,GAEpCouB,YAAYpuB,GACR,OAAOgD,KAAKkpB,SAASkC,YAAYpuB,GAErC5B,aAAaiwB,EAAItqB,EAAM5L,GAAOs1B,IAC1BzqB,KAAKkpB,SAAS9tB,aAAaiwB,EAAItqB,EAAM5L,GAAOs1B,IAEhDa,gBAAgBD,EAAItqB,EAAM0pB,IACtBzqB,KAAKkpB,SAASoC,gBAAgBD,EAAItqB,EAAM0pB,IAE5CvU,SAASmV,EAAItqB,GACTf,KAAKkpB,SAAShT,SAASmV,EAAItqB,GAE/B8W,YAAYwT,EAAItqB,GACZf,KAAKkpB,SAASrR,YAAYwT,EAAItqB,GAElCwqB,SAASF,EAAI/zB,EAAOnC,GAAOq2B,IACvBxrB,KAAKkpB,SAASqC,SAASF,EAAI/zB,EAAOnC,GAAOq2B,IAE7CC,YAAYJ,EAAI/zB,EAAOk0B,IACnBxrB,KAAKkpB,SAASuC,YAAYJ,EAAI/zB,EAAOk0B,IAEzCzC,YAAYsC,EAAItqB,EAAM5L,IA1KD,KA2Kb4L,EAAKrJ,OAAO,IAA0BqJ,GAAQioB,GAC9ChpB,KAAKwkB,kBAAkB6G,IAAMl2B,IAG7B6K,KAAKkpB,SAASH,YAAYsC,EAAItqB,EAAM5L,IAG5Cu2B,SAAS1uB,EAAM7H,GACX6K,KAAKkpB,SAASwC,SAAS1uB,EAAM7H,GAEjC6e,OAAOrI,EAAQ7X,EAAWE,IACtB,OAAOgM,KAAKkpB,SAASlV,OAAOrI,EAAQ7X,EAAWE,IAEnDwwB,kBAAkBpyB,EAAS+C,GACvB6K,KAAKmZ,OAAOqL,kBAAkBpyB,EAAS+C,IAG/C,iBAAgCw0B,GAC5B7pB,YAAYhH,EAASic,EAAamU,GAAU/P,IACxC7K,MAAMyG,EAAamU,GAAU/P,IAC7BnZ,KAAKlH,QAAUA,EACfkH,KAAK+U,YAAcA,EAEvBgU,YAAYsC,EAAItqB,EAAM5L,IAlMD,KAmMb4L,EAAKrJ,OAAO,GACU,KAAtB0lB,EAAS1lB,OAAO,IAAaqJ,GAAQioB,GAEjChpB,KAAKwkB,kBAAkB6G,EADvBl2B,QAAkBP,IAAVO,MAA+BA,IAIvC6K,KAAKmZ,OAAOxnB,QAAQqO,KAAK+U,YAAasW,EAAItqB,EAAKpL,OAAO,GAAIR,IAI9D6K,KAAKkpB,SAASH,YAAYsC,EAAItqB,EAAM5L,IAG5C6e,OAAOrI,EAAQ7X,EAAWE,IACtB,GAjNiB,KAiNbF,EAAU4D,OAAO,GAAwB,CACzC,MAAMtF,GAgBlB,YAAkCuZ,IAC9B,OAAQA,QACC,OACD,OAAOja,SAAS0F,SACf,WACD,OAAO1F,aACN,SACD,OAAOD,eAEP,OAAOka,IAzBSggB,CAAyBhgB,GACzC,IAAI5K,GAAOjN,EAAU6B,OAAO,GACxBwgB,EAAQ,GAGZ,MAvNa,KAuNTpV,GAAKrJ,OAAO,MACXqJ,GAAMoV,GAsBvB,YAAkC1hB,IAC9B,MAAMm3B,EAAWn3B,GAAYgB,QAAQ,KAGrC,MAAO,CAFShB,GAAYiB,UAAU,EAAGk2B,GAC3Bn3B,GAAYkB,OAAOi2B,EAAW,GAC3BzV,CA1BW0V,CAAyB9qB,KAEtCf,KAAKmZ,OAAOnF,OAAOhU,KAAK+U,YAAa3iB,GAAS2O,GAAMoV,EAAOpiB,IAE9DiM,KAAKlH,QAAQmxB,yBADGl2B,EAAMgB,QAAY,EACaf,GAAUD,KAGjE,OAAOiM,KAAKkpB,SAASlV,OAAOrI,EAAQ7X,EAAWE,SA6BjD83B,SAAN,iBAAwCC,GACpCjsB,YAAYgoB,EAAK51B,GAAQC,IACrBmc,MAAMwZ,EAAI1wB,KAAMlF,GAAQC,IAE5B65B,cACIhsB,KAAKgd,SAGb8O,UAA0BnzB,UAA1B,0BAAsHmzB,IAvVZjzB,MAuVuD0vB,OAvVvD1vB,MAuV4EyxB,IAvV5EzxB,MAuV2GyxB,MACrNwB,GAA0BlzB,WAxVgFC,MAwV1G,OAA0HizB,GAA1HhzB,QAA0HgzB,GAA1H,YATMA,OA2BN,MAAMG,GAAwB,IAAIC,MAAe,uBAC3CC,GAA6B,CAC/B,CAAEC,QAASxE,KAAkByE,SAAU1E,IACvC,CAAEyE,QAASE,GAA2BC,WAZ1C,cACI,OAAO,IAAIC,KAYX,CAAEJ,QAASL,GAAkBM,SAAUP,IAA6B,CAChEM,QAASK,MACTF,WAZR,YAAoCzD,GAAU3P,EAAQuT,GAClD,OAAO,IAAIzD,GAAyBH,GAAU3P,EAAQuT,IAYlDC,KAAM,CAACC,KAAsBb,GAAkBc,SAOjDC,GAA+B,CACjC,CAAEV,QAASrzB,GAAiBwzB,WAAY,IAAM,IAAIQ,IAClD,CAAEX,QAASH,GAAuBe,SAAU,wBAA0Bb,IAMpEc,GAAoC,CACtC,CAAEb,QAASrzB,GAAiBszB,SAAUa,IACtC,CAAEd,QAASH,GAAuBe,SAAU,qBAAuBb,QAejEgB,SAAN,SAA8BC,kBAiBRC,GACd,MAAO,CACHC,SAAUH,GACVI,UAAWF,EAAO7I,kBAAoByI,GAClCH,KAIhBK,UAAwBx0B,UAAxB,0BAAoHw0B,KACpHA,GAAwBK,UA3akF30B,MA2a1G,MAAqHs0B,KACrHA,GAAwBM,UA5akF50B,MA4a1G,WAAyJi0B,GAAzJY,SAAiMC,QA3B3LR,2HCraEt0B,gEAAaA,kEAGIA,wGAZrBA,uBAMEA,6DAAU+0B,EAAVC,MAAUD,0BAEV/0B,gCAIAA,2CACFA,4DAXEA,mBACAA,qBAAiB,kBAAjBA,CAAiB,sBAKJA,wCAA0B,gBAStC,IAAMi1B,GAAb,MAAM,SACJhuB,YAAmBiuB,uBAEnBC,WAAWC,GACT,OAAOA,EAAMC,qBAAqBC,qDAJzBL,IAAej1B,uCAAfi1B,GAAeM,iUAjBxBv1B,mCACoBA,gGAgBXi1B,IAAb,GChBaO,GAAb,MAAM,SAGJvuB,YAAoBwuB,eAFpBtuB,WAAQ,6DADGquB,IAAYx1B,wCAAZw1B,GAAYD,qECRzBv1B,4BAAqC,mDDQxBw1B,IAAb,uDECM,SAAqBjB,kBAEDmB,EAAoBC,kDAE1CD,EAASE,WAAWpB,OAAOqB,YAAW,GAGhBF,EAASn5B,IAAIs5B,MAEnC,MAAMC,GAAoBL,EAASK,kBACnCA,GAAkB36B,QAAQ,GAAIA,GAMG46B,IAK/B,YAAkBxtB,IAIlBA,GAAWytB,KAAK/tB,OAASguB,oBAC3BC,6BAGFC,QAAQC,MACN,uBAAuB7tB,GAAWvK,OAAOiK,WAAWM,GAAWytB,KAAK/tB,wDC3BjE,IAAMouB,GAAb,MAAM,SACJrvB,8DADWqvB,iEAHA,CAACC,MAAa1B,SADhB,CAAC2B,MAAcC,UAIbH,IAAb,GCQA,MAAMtuB,GAAgC,CACpC,CACEE,KAAM,UACNwuB,IAAK,QACLC,aAAc,IACZ5S,uCAAiDoN,KAC/CntB,IAAKA,GAAE4yB,uBAGb,CACE1uB,KAAM,gBACNwuB,IAAK,SACLC,aAAc,IAAME,6BAA+B1F,KAAKntB,IAAKA,GAAE8yB,cAEjE,CACE5uB,KAAM,YACNwuB,IAAK,UACLC,aAAc,IACZE,8BAAiC1F,KAAKntB,IAAKA,GAAE+yB,gBAmC5C,IAAMC,GAAb,MAAM,SACJ/vB,YAAoB8uB,2EADTiB,IAASh3B,uCAATg3B,GAASC,WAFRzB,oCAZD,CACT,CAAEjC,QAAS2D,MAAuB1D,SAAU0D,OAC5CpB,KACA,CACEvC,QAAS4D,MACTrD,KAAM,CAACoD,OACPxD,WAAa0D,GACXA,EAAsBC,UAE1BC,KACAC,MACD1C,SA1BQ,CACPC,KACAR,GACAkD,MACAC,MACAC,MACAC,MACArB,GACAM,wBACAgB,eAAuB,CACrB5vB,OAAQA,GAERwsB,OAAQqD,oBAiBDb,IAAb,IClEEc,WAGFC,OACGC,gBAAgBhB,IAChBiB,MAAMC,IAAO9B,QAAQ+B,MAAMD,uHCHvB,IAAME,EAAb,MAAM,QACJnxB,YACUoxB,EACAC,EACAlB,GAFAjwB,gBACAA,kBACAA,6BAGJoxB,+DACJ,IAAI7B,EAAM,GAAGvvB,KAAKkxB,SAASG,gDAAgDrxB,KAAKiwB,sBAAsBC,iBAChGoB,OAActxB,KAAKmxB,WAAWxR,KAAK4P,EAAK,uDATrC0B,GAAcp4B,mEAAdo4B,EAAcn4B,QAAdm4B,EAAc,qBAFb,SAEDA,GAAb,EAAaA,qLCWb,MAAMM,EACJ,CAACC,EAAqCC,IACtC,KACED,EAAkBl8B,IAAIm8B,EAAgBC,QAiCnC,IAAMjC,EAAb,MAAM,wDAAOA,6DAfA,CACT,CACErD,QAASuF,MACTpF,WAAYgF,EACZ5E,KAAM,CAACiF,IAAkBjD,KACzBz4B,OAAO,GAET,CACEk2B,QAASyF,KACTxF,SAAUyF,KACV57B,OAAO,GAET+6B,KACDvD,SAtBQ,CACP2B,MACAgB,KACA0B,eACAC,IACAvB,eAAwB,CACtB5vB,OAAQoxB,WAkBDxC,GAAb,EAAaA,yGChDN,IAAMyC,GAAb,MAAM,wDAAOA,8BAAuB9D,yGCRpCv1B,4ncDQaq5B,GAAb,yDEMO,IAAMC,EAAb,MAAM,QACJryB,YACUyuB,GACA6D,IADApyB,iBACAA,uBAERivB,QAAQoD,IAAI,8BAGdC,WACErD,QAAQoD,IAAI,oBACZryB,KAAKuyB,iBAGOA,qEAINC,QAAW,WAKXC,QAAOzyB,KAAKoyB,eAAehB,kBAEjC,IAAIsB,GAAe1yB,KAAKuuB,SAASoE,QAAQ92B,OACrC+2B,GAAwB,MAAZF,QAAY,EAAZG,GAAcD,UAC9B,IAAKA,GAEH,YADAE,4BAAqC9yB,KAAKuuB,UAK5C,IAAIwE,GAAiB,GAAGthC,OAAOuhC,SAASC,aAAaxhC,OAAOuhC,SAAS18B,OACjEs8B,GAAU13B,WAAW63B,MACvBH,GAAYA,GAAUl9B,UAAUq9B,GAAehhC,SAEjD,IAAImhC,GAAWlzB,KAAKuuB,SAAS4E,eAAeD,WACxCA,IAAYN,GAAU13B,WAAWg4B,MACnCN,GAAYA,GAAUl9B,UAAUw9B,GAASnhC,OAAS,IAGpDiO,KAAKuuB,SAAS6E,gBAAgB7D,IAAIqD,IAAW,qDAzCpCT,GAAkBt5B,iDAAlBs5B,EAAkB/D,wGCd/Bv1B,qBACEA,4BACFA,uinBDYas5B,GAAb,GEJakB,EAAb,MAAM,QACJvzB,YAAoByuB,qBAEpB+D,WACEtyB,KAAKuyB,iBAGOA,+DACZ,IAAIG,GAAe1yB,KAAKuuB,SAASoE,QAAQ92B,OACrC+2B,GAAwB,MAAZF,QAAY,EAAZG,GAAcD,UAC9B,IAAKA,GAEH,YADAE,4BAAqC9yB,KAAKuuB,UAK5C,IAAIwE,GAAiB,GAAGthC,OAAOuhC,SAASC,aAAaxhC,OAAOuhC,SAAS18B,OACjEs8B,GAAU13B,WAAW63B,MACvBH,GAAYA,GAAUl9B,UAAUq9B,GAAehhC,SAEjD,IAAImhC,GAAWlzB,KAAKuuB,SAAS4E,eAAeD,WACxCA,IAAYN,GAAU13B,WAAWg4B,MACnCN,GAAYA,GAAUl9B,UAAUw9B,GAASnhC,OAAS,IAGpDiO,KAAKuuB,SAAS6E,gBAAgB7D,IAAIqD,IAAW,qDAzBpCS,GAAmBx6B,sCAAnBw6B,EAAmBjF,yGCVhCv1B,qBACEA,4BACFA,uinBDQaw6B,GAAb,mBEHM,aACYtE,OAAO,OACPA,YAAY,GAAGjS,EAAKwW,iBACpBvE,aAAa,GAAGjS,EAAKwW,kBACrBvE,eAAe,GAAGjS,EAAKwW,gBAGzC,MAiCarB,GAAoC,CAjCV,CACrClxB,KAAMguB,EAAeuE,KACrB/D,IAAK,QACLgE,UAAWrB,GACXsB,UAAU,EACV1+B,KAAM,CACJ2+B,gBAAgB,EAChB3+B,KAAM,CAAE4+B,cAAe,oBAIiB,CAC1C3yB,KAAMguB,EAAe4E,UACrBpE,IAAK,yBACLgE,UAAWpB,GAGgC,CAC3CpxB,KAAMguB,EAAe6E,WACrBrE,IAAK,0BACLgE,UAAWF,GAGkC,CAC7CtyB,KAAMguB,EAAe8E,aACrBtE,IAAK,YACLuE,QAAeC,IAAQC,yCACrBD,EAAME,QACNjF,GAAiBkF,mBAAmBH,EAAMI,UAE5CZ,UAAWa,MAUN,IAAMpF,GAAb,MAAM,QAAuB5B,0BAIDmB,IACxB,MAAM7tB,IAAc,IAAI2zB,MAAOC,UACzBC,GAAsBC,OAC1BC,aAAaC,QAAQ10B,KAAK20B,yBAEtB/B,GAAY6B,aAAaC,QAAQ10B,KAAK40B,gBAC5C50B,KAAK60B,uBAELC,GAAkBP,GAChBhG,GAASwG,aAAaC,GAAGjG,EAAe4E,UAAW,CACjDf,UAAWA,KAGbE,4BAAqCvE,+BAId0G,GAAqBC,IAE9CT,aAAaU,QAAQn1B,KAAK40B,eAAgBK,IAE1CR,aAAaU,QACXn1B,KAAK20B,yBACJ,IAAIN,MAAOC,UAAYY,IAAgBtjC,0CAM1C6iC,aAAaW,WAAWp1B,KAAK40B,gBAE7BH,aAAaW,WAAWp1B,KAAK20B,yBAlCP3F,wBAAiB,YACjBA,yBAAyB,sBAFtCA,GAAb,EAAaA,gEC7CFqG,EAAa,EACtBxe,QAAQ,kBAAmB,EACzBxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,KACjB55B,QAAS,EAACrD,QAAQ,iBAAiBf,QAAM,CAAEg+B,QAAS,YAIxDze,QAAQ,gBAAiB,EACvBxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,KACjB55B,QAAS,EAACrD,QAAQ,kBAAkBf,QAAM,CAAEg+B,QAAS,YAGzDze,QAAQ,2BAA4B,EAClCxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,EAAGC,UAAW,oBAAqBC,OAAQ,KAE5D95B,QAAS,EACPrD,QAAQ,qBAAqBf,QAAM,CAAEk+B,OAAQ,QAE7Cn9B,QACE,kBACAf,QAAM,CAAEg+B,QAAS,EAAGC,UAAW,wBAKrCl0B,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,EAAGG,SAAU,YAC9B/5B,QAAS,EACPrD,QACE,sBACAf,QAAM,CAAEg+B,QAAS,EAAGC,UAAW,uBAEjCl9B,QAAQ,qBAAqBf,QAAM,CAAEk+B,OAAQ,YAKnD3e,QAAQ,qBAAsB,EAC5BxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,KACjBj9B,QAAQ,iBAAiBf,QAAM,CAAEg+B,QAAS,QAE5Cj0B,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,KACjBj9B,QAAQ,qBAAqBf,QAAM,CAAEg+B,QAAS,UAIlDze,QAAQ,yBAA0B,EAChCxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,KACjB55B,QAAS,EACPrD,QACE,oBACAf,QAAM,CACJg+B,QAAS,EACTE,OAAQ,YAOlB3e,QAAQ,wBAAyB,EAC/BxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,EAAGE,OAAQ,OAC5B95B,QAAS,EACPrD,QACE,wBACAf,QAAM,CACJk+B,OAAQ,IACRF,QAAS,YAOnBze,QAAQ,0BAA2B,EACjCxV,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,EAAGC,UAAW,sBAE/B75B,QAAS,EACPrD,QACE,oBACAf,QAAM,CAAEg+B,QAAS,EAAGC,UAAW,wBAKrCl0B,QAAW,SAAU,EACnB/J,QAAM,CAAEg+B,QAAS,KACjB55B,QAAS,EACPrD,QACE,qBACAf,QAAM,CAAEg+B,QAAS,EAAGC,UAAW,mBAAoBC,OAAQ,8FCtC9D,IAAME,GAAb,MAAM,SACYA,iBAAUC,MAEVD,MAAME,MACNF,OAAOG,MACPH,QAAQI,MACRJ,SAASK,MACTL,QAAQM,MACRN,aAAaO,MAEbP,QAAQQ,MACRR,WAAWS,MACXT,QAAQS,MACRT,OAAOU,MACPV,OAAOW,MACPX,eAAeW,MACfX,WAAWY,MAEXZ,WAAWa,MACXb,WAAWc,MACXd,eAAee,MACff,gBAAgBgB,MAChBhB,YAAYiB,MACZjB,cAAckB,MACdlB,iBAAiBmB,MAEjBnB,WAAWoB,MACXpB,YAAYqB,MACZrB,eAAesB,MACftB,YAAYuB,MAEZvB,cAAcwB,MAEdxB,QAAQyB,MACRzB,QAAQ0B,MACR1B,aAAa2B,MACb3B,OAAO4B,MACP5B,YAAY6B,MACZ7B,OAAO8B,MACP9B,gBAAgB+B,MAEhB/B,YAAYgC,MAEZhC,MAAMiC,MACNjC,OAAOkC,MAEPlC,QAAQmC,MAERnC,cAAcoC,MACdpC,qBAAqBqC,MAErBrC,MAAMsC,MAENtC,SAASuC,MAETvC,QAAQwC,MACRxC,OAAOyC,MAEPzC,UAAU0C,MAEV1C,kBAAkB2C,MAElB3C,UAAU4C,MAEV5C,UAAU6C,MACV7C,WAAW8C,KACX9C,gBAAgB+C,KAEhB/C,MAAMgD,MACNhD,WAAWiD,MAEXjD,UAAUkD,MAEVlD,QAAQmD,MAERnD,WAAWoD,MAEXpD,WAAWqD,MAEXrD,YAAYsD,MAEZtD,UAAUuD,MAEVvD,eAAewD,MAEfxD,OAAOyD,MAEPzD,YAAY0D,MAEZ1D,YAAY2D,MAEZ3D,UAAU4D,MAEV5D,WAAW6D,MA7FhB7D,GAAb,EAAaA,iHCvDN,IAAM8D,EAAb,MAAM,QAKJ15B,YACUyuB,EACAkL,GADAz5B,gBACAA,4BANVA,WAAQ01B,IAQN11B,KAAK05B,gBAAkBD,EAAqBE,KAAKC,qBAGnDtH,WAAQ,CAERuH,oBACE/G,wBAAgC9yB,KAAKuuB,UAAU,iDAftCiL,GAA2B3gC,iDAA3B2gC,EAA2BpL,qGCRsB0L,iBAAAA,GAGOA,kDAAAA,GACJA,sCAAAA,GAO0BA,eAAAA,GAEvBA,MAAAA,GACEA,sBAAAA,IACFA,0FAAAA,IAKhBA,kBAAAA,4iBA1BpDjhC,4BACAA,iBAA2C,UAA3CA,CAA2C,WAGrCA,sBACAA,iBAAkC,OAAlCA,CAAkC,UAC5BA,WAAiEA,QAAQA,kBACtD,WAAMA,UAAqCA,QAAOA,iBAAMA,cAACA,YAEhFA,4BAA6GA,QAC7GA,6BAA6FA,QAC7FA,mBAA+B,YAA/BA,CAA+B,aAGzBA,uBACFA,QACAA,mBAAsB,WACpBA,aAA0FA,QAC1FA,iBAAqB,WACnBA,aAAwDA,QACxDA,gCAA0EA,QAC1EA,8BAEAA,UAEFA,sBACQA,gCAASyQ,wBADjBzQ,aAGAA,gBAMRA,mBACEA,mBACFA,qBA7B+BA,qDAOiBA,g6kEDFxCw8B,OAEDmE,GAAb,EAAaA,gGEdDO,EAGX,MAHD,OAAYA,QAAa,KACvBA,eACAA,mBAFUA,EAAZ,IAAYA,GAGX,yECHDlhC,iBACEA,4BACFA,kCAoBYA,qBAA+DA,SACnCA,kCADSA,2BAA0BA,0GAXvEA,iBAA2C,UAA3CA,CAA2C,UAA3CA,CAA2C,WAA3CA,CAA2C,aAKjCA,sBACFA,QACAA,+BAAwDA,UAE1DA,qBACQA,iFACNA,2BAEFA,uCAR8BA,qCAKtBA,4CACoBA,4DAU9BA,+EACuBA,sCACAA,iDACvBA,wFACgCA,sCACAA,uEAChCA,gCAImBA,6CAAWmhC,EAAXnM,OAAWmM,kBAAqBnhC,sEAHhCA,sCACAA,sBAAoB,4CATzCA,eACEA,0CAGAA,oDAGAA,uCAKFA,8CAX0BA,wHAGSA,mJAGbA,yJARxBA,eACEA,wBAaFA,kCAbyBA,8DA3B7BA,eACEA,4BAEAA,iBACEA,iCAGAA,wBAmBAA,uBAeFA,gCAzCGA,+BAIoBA,mCAAkB,2BAGrBA,yCAmBUA,yCCXzB,IAAMohC,GAAb,MAAM,QAwBJn6B,YACUo6B,EACA3L,IADAvuB,wBACAA,iBAzBVA,gBAAam6B,EACbn6B,eAAYm6B,EAAWC,QACvBp6B,WAAQ01B,IAWR11B,yBAAsBq6B,EAGtBr6B,iBAAyBpL,EACzBoL,qBAA0B,EAI1BA,iBAAa,EAhBTs6B,WACF,OAAOt6B,KAAKu6B,MAEVD,SAAKnlC,GACP6K,KAAKu6B,MAAQplC,EACb6K,KAAKw6B,wBAkBPlI,WAOEtyB,KAAKy6B,WAAaz6B,KAAKuuB,SAASoE,QAAQ92B,OAAO4+B,WAC/Cz6B,KAAKuuB,SAASwG,aAAaC,GACzB,IACA,CAAEyF,YAAY,GACd,CAAEzH,SAAU,YAGdhzB,KAAK06B,oBAGDA,kEACJ16B,KAAK26B,UAAYR,EAAWC,QAE5B,IAAIQ,GAAYC,KADOtM,SAASoE,QAAQ92B,OACZ++B,WACvBN,GAAMvJ,UAAa0B,SACtBzyB,KAAKk6B,iBAAiBQ,kBAAkBE,KAE1C,GAAI7J,GAEF,YADA+B,4BAAqC9yB,KAAKuuB,UAG5C,MAAMuM,GAAc96B,KAAK+6B,eAAeT,GAAKU,MAAOjB,QACpDO,GAAKU,MAAQF,GACb96B,KAAKs6B,KAAOA,GACZt6B,KAAK26B,UAAY36B,KAAKm6B,WAAWc,OAGnCF,eAAeC,EAAwBE,IACrC,OACSF,EAAM9gB,KADXghB,IAAiBnB,OACD,CAAC3f,GAAmB+gB,sBACpC,OAC2C,QAAxCC,GAA6B,QAA7BC,MAAGC,UAAU,GAAGC,qBAAaze,iBAAEwX,iBAASzL,UAAI,IACJ,QAAxC2S,GAA6B,QAA7BL,MAAGG,UAAU,GAAGC,qBAAaE,iBAAEnH,iBAASoH,UAAI,IAKjC,CAACthB,GAAmB+gB,sBACpC,OAC2C,QAAxCC,GAA6B,QAA7BC,MAAGC,UAAU,GAAGC,qBAAaze,iBAAEwX,iBAASzL,UAAI,IACJ,QAAxC2S,GAA6B,QAA7BL,MAAGG,UAAU,GAAGC,qBAAaE,iBAAEnH,iBAASoH,UAAI,KAQ3ClB,wBAENx6B,KAAKs6B,KAAKU,MAAMpoC,QAAQ+oC,IAAKA,GAAEC,qBAG/B,IAAIC,EAAiB77B,KAAKs6B,KAAKwB,UAAU9mC,IACvC+mC,IAAY,IAAIC,GAAsBD,KAEpCE,GAA6B,IAAIC,GAAoBL,GAGrDM,GAA2BC,GAAsBrvB,OACnD/M,KAAKs6B,KACL+B,iBAIEC,GAA0BF,GAAsBrvB,OAClD/M,KAAKs6B,KACL+B,gBAIEE,GAA0BH,GAAsBrvB,OAClD/M,KAAKs6B,KACL+B,gBAGFr8B,KAAKw8B,YAAc,CACjBP,GACAE,GACAG,GACAC,IAMFv8B,KAAKy8B,uBAGLz8B,KAAK08B,OAAS,GACd,MAAMC,GAAY38B,KAAKs6B,KAAKU,MAAMhmC,IAAI2mC,IAAKA,GAAEiB,QAAU,GACvDD,GAAUjpC,KAAKsM,KAAKs6B,KAAKsC,OACzBD,GAAU/pC,QAAQgqC,KACX58B,KAAK08B,OAAOt5B,KAAK6T,IAAKA,GAAE4lB,SAAWD,GAAMC,UAC5C78B,KAAK08B,OAAOhpC,KAAKkpC,MAGrB58B,KAAK88B,gBAAkB98B,KAAKs6B,KAAKsC,MAAMC,QACvC78B,KAAK08B,OAAOxiB,KAAK,CAAC6iB,GAAIC,qBACpB,SAAa,QAAVC,MAAGC,eAAOpgB,iBAAEqgB,aAAuB,QAAVC,MAAGF,eAAOrU,iBAAEwU,WACxC,GAAa,QAAVC,MAAGJ,eAAOzB,iBAAE0B,aAAuB,QAAVI,KAAGL,eAAOxB,eAAE2B,WACpC,GACA,IAGAZ,uBAEN,IAAIe,EAAwCx9B,KAAKs6B,KAAKwB,UAAU14B,KAC9Dq6B,IAAMA,GAAGb,MAAMhC,WAAa56B,KAAKs6B,KAAKsC,MAAMhC,WAI1C8C,GAA2C19B,KAAKs6B,KAAKU,MAAM53B,KAC7Du4B,IACEA,GAAEgC,YAActB,iBAChBV,GAAEiB,MAAMhC,WAAa56B,KAAKs6B,KAAKsC,MAAMhC,WAQzC,GAJG4C,GACAE,GAGoB,OAEvB,IAAIE,GAAe,IAAIC,GAAa79B,KAAKs6B,KAAKsC,OAG1CkB,GAAoB,IAAI5B,GAAoB,CAAC0B,KACjD59B,KAAKw8B,YAAY9oC,KAAKoqC,IAIxBC,YAAYpE,IACL35B,KAAKs6B,MACVt6B,KAAK06B,kEA3KIT,GAAkBphC,iDAAlBohC,EAAkB7L,8EDDgC0L,OAAAA,owBAlB/DjhC,uBAIAA,+BAJsEA,kDAIjDA,qi6DCaPw8B,OAED4E,GAAb,GA+KA,IAAKE,EAGJ,MAHD,OAAKA,QAAU,KACbA,uBACAA,mBAFGA,EAAL,IAAKA,GAGJ,GAEIE,EAIJ,MAJD,OAAKA,QAAmB,KACtBA,uBACAA,2CACAA,mBAHGA,EAAL,IAAKA,GAIJ,GAED,SACEv6B,YAA4B5C,gBAG9B,SAGE4C,YAAYk+B,GAFLh+B,YAA2B,GAGhCA,KAAKg+B,OAASA,GAIlB,SAA2B5Q,cAEvBkN,EACA2D,GAGA,IAAIC,GAAalD,EADAmD,2BAA2BF,GACrBjpC,IAAI2mC,IAAK,IAAIyC,GAAUzC,KAC1C0C,GAAiB,IAAInC,GACzBmC,UAAeL,OAASE,GACjBG,IAIX,iBAA2BC,GACzBx+B,YAAmB88B,GACjBtuB,MAAM+rB,EAAoBkE,SADTv+B,cAKrB,iBAAoCs+B,GAClCx+B,YAAmBi8B,GACjBztB,MAAM+rB,EAAoBmE,kBADTx+B,iBAKrB,iBAAwBs+B,GACtBx+B,YAAmB65B,GACjBrrB,MAAM+rB,EAAoBoE,MADTz+B,qHC3OrB,IAAa0+B,GAAb,cAAmCC,KAkBjC/C,oBACE,IAAIgD,EAAkCvC,EAAgBwC,UAElD7+B,KAAK8+B,QAAUC,YACjBH,EAAiBvC,EAAgB2C,YAGnC,IAAIC,GAAwB,EAC5B,OAAIj/B,KAAKk/B,YACPD,EAAwBj/B,KAAKk/B,UAAU97B,KAAKu4B,IAAMA,EAAEwD,UAIlDn/B,KAAK8+B,QAAUC,WAAqBE,IACtCL,EAAiBvC,EAAgB+C,WAI/Bp/B,KAAK8+B,QAAUC,YAAsBE,IACvCL,EAAiBvC,EAAgBwC,WAGnC7+B,KAAK29B,WAAaiB,EACXA,IAzCEF,IAAa,UADzBW,QAAgB,mBACJX,IA6CN,IAAKrC,EAaX,MAbD,OAAYA,QAAe,KAEzBA,6BAGAA,6BAGAA,6CAIAA,6BAZUA,EAAZ,IAAYA,GAaX,GAEWiD,EASX,MATD,OAAYA,QAAkB,KAC5BA,6BACAA,uCACAA,uCACAA,iDACAA,iCACAA,6BACAA,yBACAA,2BARUA,EAAZ,IAAYA,GASX,EATWA,0EC7DZ,IAAaC,EAAb,cAAmCZ,KAMjCR,2BAA2BR,GACzB,OAAO39B,KAAKg7B,MAAM5yB,OAAOuzB,GAAKA,EAAEgC,YAAcA,KAPrC4B,GAAa,UADzBF,QAAgB,cACJE,yNCkBb,MAAMC,GAAWC,IAAkB,IAAIpL,KAAKvxB,KAAKC,OAAO08B,GAAMzqC,IAAIw/B,UAK3D,IAAMkL,EAAb,MAAM,SACJ5/B,YACUoxB,EACAyO,EACAC,GACAzO,GACA0O,GACA5P,IALAjwB,gBACAA,2BACAA,qBACAA,mBACAA,wBACAA,8BAGJ8/B,YAAYlD,EAAqBmD,EAAkBC,kDACvD,IAAKC,GAAiBC,UAA4BzN,SAChDnB,OAActxB,KAAK4/B,aAAaO,iBAAiBC,MAAKC,YAGxD,GADIH,KACCD,GAAiB,OAEtB,IAAI1Q,GAAM,GAAGvvB,KAAKkxB,SAASG,uCAAuC0O,kBAAyBC,gBAAqBpD,EAAMhC,aACjHz+B,GAAGmkC,UAAgC7N,SACtCnB,OAActxB,KAAKmxB,WAAWxR,KAAK4P,GAAK,QAEtC+Q,IACFrR,QAAQ+B,MAAMsP,MAKJC,kBACZ3F,iDAEA,IACI4F,GAAe,IAAIC,KAAqBlB,IAD9B,mBAAmB3E,KAE9B8F,QAAQ,WACRA,QAAQ,mBACRA,QAAQ,UACRA,QAAQ,cAAe,CAAEjlC,SAAS,IAClCilC,QAAQ,qBACRA,QAAQ,6BACRA,QAAQ,UAAW,CAAEjlC,SAAS,IAC9BilC,QAAQ,oBAAqB,CAC5BjlC,SAAS,EACTI,OAAQ,CAAE8kC,KAAM3gC,KAAKiwB,sBAAsB2Q,kBAE5CF,QAAQ,kCACRA,QAAQ,iBACRA,QAAQ,yBACRA,QAAQ,oBAAqB,CAAEjlC,SAAS,IACxCilC,QAAQ,kCACRA,QAAQ,uCAAwC,CAC/CjlC,SAAS,EACTolC,KAAM,sBAGV,YAAKC,aAAe,IAAIC,KAAaP,GAAcxgC,KAAK6/B,iBACjD7/B,KAAK8gC,eAKRE,SAAS9iB,EAAqB+iB,uDAC5BjhC,KAAK8gC,aAAaE,SAAS9iB,EAAM+iB,KAOnCC,mBAAmBD,EAAcE,uDAC/BnhC,KAAK8gC,aAAaI,mBAAmBD,EAAME,KAM7CC,qBAAqBH,EAAcI,uDACjCrhC,KAAK8gC,aAAaM,qBAAqBH,EAAMI,KAKrDC,aAAapjB,EAAqB+iB,GAChC,OAAOjhC,KAAK8gC,aAAaQ,aAAapjB,EAAM+iB,GAK9CM,WAAWrjB,EAAqB+iB,GAC9B,OAAOjhC,KAAK8gC,aAAaS,WAAWrjB,EAAM+iB,GAGtCvG,kBAAkBE,uDAChB56B,KAAKugC,kBAAkB3F,GAC7B,IAAIN,QAAat6B,KAAK8gC,aAAaU,OAE/BxG,GAAQV,EAAKU,OAAS,GAC1B,QAASrB,MAAQqB,GACfh7B,KAAKyhC,aAAa9H,IAClB35B,KAAK0hC,+BAA+B/H,IACpC35B,KAAK2hC,kBAAkBhI,IACvB35B,KAAK4hC,qBAAqBjI,IAG5B,OAAOW,IAGDmH,aAAa9H,GACnBA,EAAKkI,YAAclI,EAAKkI,YAAc,IAAIxN,KAAKsF,EAAKkI,aAAe,KAG7DH,+BAA+B/H,GAKrC,IAAImI,EAA4B,EAC5BC,GAA8B,EAC9BzG,GAAY3B,EAAK2B,WAAa,GAOlC,GAHAA,GAAYA,GAAUlzB,OAAO8O,IAAgB,GAAXA,GAAE8qB,OAGZ,GAApB1G,GAAUvpC,OAGZ,OAFA4nC,EAAKsI,mBAAqB,SAC1BtI,EAAKuI,yBAA2B,KAIlC,QAASC,MAAY7G,GAAW,CAG9B,IAAI8G,GACFpiC,KAAKqiC,kCAAkC1I,EAAMwI,IAI3CG,GACFtiC,KAAKuiC,oCAAoC5I,EAAMwI,IAGjDL,GAA6BM,GAC7BL,IAA+BO,GAG/BH,GAASK,uBAAyB1/B,KAAKiM,MACrCqzB,IAEFD,GAASD,yBAA2Bp/B,KAAKiM,MACvCuzB,IAWJ3I,EAAKsI,mBAAqBn/B,KAAKiM,MAC7B+yB,EAA4BxG,GAAUvpC,QAExC4nC,EAAKuI,yBAA2Bp/B,KAAKiM,MACnCgzB,GAA8BzG,GAAUvpC,QAIpCswC,kCACN1I,EACAwI,GAEA,OAAIxI,EAAKmF,QAAUC,UACV,IAIP/+B,KAAK2/B,oBAAoB8C,sBACvBN,EAASO,aAAaC,OAKpBJ,oCACN5I,EACAwI,GAEA,IAAKxI,EAAKuF,UAAW,OAAO,IAE5B,IAAI0D,GAAoBjJ,EAAKuF,WAAa,GAUtC2D,GAA6BD,GAAkBx6B,OAAOuzB,IAAKA,GAAEwD,SAE7D2D,GAA8BF,GAAkB7wC,OAGpD,OAAK+wC,GAFiCD,GAA2B9wC,OAK5B+wC,GAA+B,IAH3B,IAOnCnB,kBAAkBhI,GACxB,IAAI2B,EAAY3B,EAAK2B,WAAa,GAClC,QAAS6G,MAAY7G,EACnBt7B,KAAK+iC,0BAA0BZ,IAI3BY,0BAA0BZ,SAChC,IAAI5G,GACAoH,IAA6B,QAArBK,IAASN,oBAAY5lB,eAAE6lB,QAAS,GAC5C,QAASM,MAAQN,GAAO,CACtB,IAAIO,GAAoB,IAAI7O,KAAK4O,GAAK1H,eACtCA,QAAkB2H,IAClB3H,GAAgBiE,GAAQ,CAACjE,GAAe2H,KAE1Cf,EAAS5G,cAAgBA,GAGnBqG,qBAAqBjI,YAC3B,GAAIA,EAAKmF,QAAUC,UAAmB,CACpC,IAAIrF,GAAgC,QAAdsJ,IAAK1H,iBAASxe,eAAE1U,OAAO8O,IAAgB,GAAXA,GAAE8qB,OAAY,GAC5DmB,GAAqD,QAA7BtQ,GAAe,MAAfiC,QAAe,EAAfA,GAAiB4N,oBAAY7Z,iBAAE8Z,MAAMv/B,KAC/DiX,IAAKA,GAAE9J,WAAa6yB,YAEtBzJ,EAAKsE,cAAgBkF,GACjB7D,oBACAA,gBAGN,GACE3F,EAAKmF,QAAUC,UACfpF,EAAKmF,QAAUC,cACf,CACA,IAAIsE,GAAoB1J,EAAKuF,UAAU97B,KAAKu4B,KAAMA,GAAEwD,SACpDxF,EAAKsE,cAAgBoF,GACjB/D,yBACAA,iBAGF3F,EAAKmF,QAAUC,iBACjBpF,EAAKsE,cAAgBqB,gBAIrB3F,EAAKmF,QAAUC,eACfpF,EAAKmF,OAASC,gBAEdpF,EAAKsE,cAAgBqB,cAGnB3F,EAAKmF,QAAUC,gBACjBpF,EAAKsE,cAAgBqB,8DAtQdI,IAAgB7mC,sGAAhB6mC,GAAgB5mC,QAAhB4mC,GAAgB,qBAFf,SAEDA,IAAb,EAAaA,sICrBN,IAAM4D,EAAb,MAAM,QAGJxjC,YAAmByjC,sBAFnBvjC,aAAUo3B,MAIV9E,WAAQ,+CALGgR,GAA8CzqC,sCAA9CyqC,EAA8ClV,iHCCc0L,2CAAAA,GACPA,6aAAAA,0JAXlEjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,0BAClDzQ,qBACFA,UACFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,QAMFA,YAAsGA,QACtGA,0BAIAA,kBAOVA,yBAEFA,eAtBeA,qn5CDOFyqC,GAAb,EAAaA,sIEAN,IAAME,EAAb,MAAM,QAGJ1jC,YAAmByjC,sBAFnBvjC,aAAUo3B,MAIV9E,WAAQ,+CALGkR,GAAsB3qC,sCAAtB2qC,EAAsBpV,wGCCW0L,gBAAAA,GAEIA,4DAAAA,GAGPA,SAAAA,GAGAA,qFAAAA,IAGOA,mDAAAA,IAGQA,OAAAA,IAEWA,uCAAAA,GAC1BA,qlBAAAA,IAMAA,6DAAAA,2RAjC3CjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,0BAClDzQ,qBACFA,UACFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,QAMFA,YAAgDA,QAChDA,cAAG,WACDA,YACAA,QACAA,4BACoCA,UAGtCA,2BACAA,QACAA,cAAG,WACDA,aACAA,QACAA,8BACiDA,UAEnDA,4BAA8FA,QAC9FA,2BAKAA,QACAA,2BAA0FA,kBAQpGA,yBAEFA,eAzCeA,qn5CDOF2qC,GAAb,EAAaA,sIEAN,IAAMC,EAAb,MAAM,QAGJ3jC,YAAmByjC,sBAFnBvjC,aAAUo3B,MAIV9E,WAAQ,+CALGmR,GAAuB5qC,sCAAvB4qC,EAAuBrV,mHCC0B0L,iBAAAA,GACAA,iBAAAA,GACMA,kZAAAA,GAMXA,sBAAAA,IACIA,8XAAAA,IAMSA,4BAAAA,IACNA,qOAAAA,GAKSA,+BAAAA,IACHA,+TAAAA,IAKHA,uBAAAA,GACKA,kGAAAA,GAGjBA,SAAAA,IACqBA,6NAAAA,sLA1C5EjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,0BAClDzQ,qBACFA,UACFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,QAMFA,YAAiEA,QACjEA,2BAAiEA,QACjEA,0BAIwBA,QAExBA,2BAAiEA,QACjEA,2BAIAA,QAEAA,4BAAoFA,QACpFA,2BAGoGA,QAEpGA,4BAA0FA,QAC1FA,2BAGAA,QAEAA,4BAA4EA,QAC5EA,2BACgCA,QAEhCA,4BAAkDA,QAClDA,2BAEkCA,kBAO5CA,yBAEFA,eAnDeA,qn5CDOF4qC,GAAb,EAAaA,sIEAN,IAAMC,EAAb,MAAM,QAGJ5jC,YAAmByjC,sBAFnBvjC,aAAUo3B,MAIV9E,WAAQ,+CALGoR,GAAyB7qC,sCAAzB6qC,EAAyBtV,6FCGa0L,cAAAA,GACHA,0JAAAA,GAGAA,maAAAA,4JAhBhDjhC,0BAAgB,iBAAhBA,CAAgB,cAEkBA,gCAASyQ,0BACrCzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,QAMFA,YAAmDA,QACnDA,0BAEAA,QACAA,0BAKAA,kBAOVA,yBAEFA,eA3BeA,qn5CDMF6qC,GAAb,EAAaA,mFEAN,IAAMtP,GAAb,MAAM,QAKJt0B,cAJAE,4BAAyB2jC,KAEzB3jC,UAAO01B,IAIPpD,WAAQ,+CAPG8B,8BAAchG,qFCNkB0L,uCAAAA,GACCA,4DAAAA,GAEAA,YAAAA,GACUA,qBAAAA,GACdA,UAAAA,GACYA,oBAAAA,gGATtDjhC,iBAA2B,eAEvBA,iBACAA,yBAAoEA,QACpEA,yBAA0FA,QAC1FA,aAAG,UACDA,WAAkDA,QAAOA,kBACzDA,+BAAqEA,QACrEA,6BAA4CA,QAC5CA,+BAAkEA,yk7CDA3Du7B,GAAb,EAAaA,wEEJN,IAAMwP,EAAb,MAAM,SAaJ9jC,cAZQE,YAA0B6jC,EAAgBC,QAE9CC,YACF,OAAO/jC,KAAKilB,OAEV8e,UAAM5uC,GAEJ6K,KAAKilB,QAAU4e,EAAgBG,SAEnChkC,KAAKilB,OAAS9vB,kDAVLyuC,mCAAgB9qC,QAAhB8qC,GAAgB,qBAFf,SAEDA,IAAb,GAgBO,IAAKC,EAIX,MAJD,OAAYA,SAAe,KACzBA,wBACAA,qBACAA,yBAHUA,EAAZ,IAAYA,IAIX,EAJWA,wOC4BIhrC,4CAAyBA,8BAAsB,yDC5BxD,IAAMorC,EAAb,MAAM,SAYJnkC,YACUokC,EACAzK,EACAlL,IAFAvuB,oBACAA,4BACAA,iBAdVA,mBAAe,EACfA,qBAAiB,EACjBA,sBAAmBojC,IACnBpjC,WAAQ01B,IACR11B,gBAAamkC,MAELnkC,kBAAe,CACrBO,KAAM,KACN6jC,iBAAkB,wBAQlB3K,EAAqB4K,YAGvB/R,WAAQ,CAERgS,qBACEtkC,KAAKkkC,aAAaK,KAAKd,IAAyBzjC,KAAKwkC,cAGvDC,uBACEzkC,KAAKkkC,aAAaK,KAAKb,IAA2B1jC,KAAKwkC,cAGzDE,oBACE1kC,KAAKkkC,aAAaK,KAAKf,IAAwBxjC,KAAKwkC,cAGtDG,4CACE3kC,KAAKkkC,aAAaK,KAChBjB,IACAtjC,KAAKwkC,cAIHI,8DACJ5kC,KAAK6kC,gBAAiB,EAEtB,IAAIjK,EAAY56B,KAAKy5B,qBAAqBmD,MAAMhC,UAC5CkK,EAAuB9kC,KAAKuuB,SAASoE,QAAQ92B,OAAOipC,aACpDC,GAAiB/kC,KAAKuuB,SAASoE,QAAQ92B,OAAOkpC,QAC7CpL,GAAM5I,UAAa0B,SACtBzyB,KAAKy5B,qBAAqBmL,cAAchK,EAAWkK,EAAcC,KAGnE,GAAIhU,GAGF,OAFA9B,QAAQ+B,MAAMD,SACd+B,4BAAqC9yB,KAAKuuB,UAS5CvuB,KAAKuuB,SAASwG,aAAaC,GACzBoO,mBAN2B,CAC3BpD,QAASrG,GAAKqG,QACdD,SAAUpG,GAAKoG,UAKfiF,GAIJC,QACEnS,uBAAgC9yB,KAAKuuB,UAAU,kDArEtC0V,IAAaprC,+DAAborC,GAAa7V,qHDfyB0L,4BAAAA,GAEDA,+FAAAA,GAG+BA,wBAAAA,IAYLA,yCAAAA,IACQA,eAAAA,IAEAA,iBAAAA,IAEtBA,MAAAA,IACmDA,mDAAAA,IAU3CA,kBAAAA,GAGAA,IAAAA,GAQfA,mBAAAA,GAWgCA,qCAAAA,IAIjCA,0CAAAA,IAIoBA,mDAAAA,IAIdA,wBAAAA,IAIFA,kDAAAA,81BA7E1DjhC,eACEA,4BACAA,iBAAuB,UAAvBA,CAAuB,UAAvBA,CAAuB,UAAvBA,CAAuB,QAIfA,WAAmEA,QACnEA,gBAAkB,UAChBA,YAC8FA,QAC9FA,iBAAMA,iBAAMA,QACZA,gBAAsCA,gCAASyQ,yBAA/CzQ,YAA2FA,QAAIA,eACjGA,QACAA,kBAA+C,YAA/CA,CAA+C,cAA/CA,CAA+C,eAIlCA,kEADPA,QAGAA,oBAEFA,QACAA,iBAAwB,cACtBA,aAAmGA,QACnGA,gBAAmCA,gCAASyQ,2BAA5CzQ,aACcA,QAAIA,oBAAyBA,cAACA,QAC5CA,gBAAsCA,gCAASyQ,wBAA/CzQ,aACgBA,QAAIA,oBAAyBA,cAACA,QAC9CA,iCAAkDA,QAClDA,gBAA2CA,gCAASyQ,gDAApDzQ,aACkDA,QAAIA,eACxDA,UAGFA,mBAAqB,YAArBA,CAAqB,WAEdA,gCAASyQ,YAAZzQ,aAKAA,QACAA,iCAAwDA,UAG1DA,iBAGGA,gCAASyQ,oBACVzQ,8BACAA,8BAAwDA,gBAMhEA,mBAAgD,UAE5CA,oBACAA,mBAA+B,YAA/BA,CAA+B,YAE3BA,aAA0GA,QAC1GA,eAAI,SAEAA,uBACAA,8BAA0EA,UAE5EA,eACEA,uBACAA,8BAAuGA,UAEzGA,eACEA,uBACAA,8BAA8DA,UAEhEA,eACEA,uBACAA,8BAAsFA,4BAY1GA,iCAzFKA,+BAgB2DA,0CAAwB,6BAuBrEA,8DAOFA,6DACAA,+CAE8DA,wCAe/BA,qCAIAA,oCAIAA,oCAIAA,u6oDCzDlCw8B,OAED4O,IAAb,EAAaA,oHCdbprC,uDAEAA,uCACqBA,qCCSd,IAAMqsC,EAAb,MAAM,QAOJplC,YAEUqlC,EACDC,GADCplC,wBACDA,uBATTA,qBAAkB6jC,IAIlB7jC,oBAAiBqlC,KAHbC,qBACF,OAAOtlC,KAAKmlC,iBAAiBpB,MAe/BzR,WAEM,sBAAuBiT,UAEzBA,QAAQC,kBAAoB,wDAtBrBN,GAAsBrsC,oDAAtBqsC,EAAsB9W,mMDnBnCv1B,kBAOAA,0CAEAA,+CAT2BA,uEAOHA,oEAE0BA,y8/ECOpCw8B,OAGD6P,GAAb,EAAaA,oMCCN,IAAMO,EAAb,MAAM,SAMJ3lC,YACUyuB,GACAmX,GACAjM,GACAkM,GACAC,GACAC,oBALA7lC,iBACAA,qBACAA,6BACAA,gCACAA,qBACAA,qBAERA,KAAK8lC,eAA6C,QAA5BC,QAAKxX,SAASoE,QAAQ92B,cAAMihB,iBAAE8d,UACpD56B,KAAKggC,QAAsC,QAA5BgG,QAAKzX,SAASoE,QAAQ92B,cAAMgtB,iBAAEmX,QAC7ChgC,KAAK+/B,SAAuC,QAA5BkG,QAAK1X,SAASoE,QAAQ92B,cAAM4/B,iBAAEsE,SAC9C//B,KAAK8kC,aAA2C,QAA5BoB,QAAK3X,SAASoE,QAAQ92B,cAAM6/B,iBAAEoJ,aAGpDqB,kBACEnmC,KAAKomC,WAGOA,gEACZ,IAAKxJ,GAAO7L,UAAa0B,QACvBzyB,KAAK0lC,aAAaW,iBAAiBrmC,KAAK8lC,iBAE1C,GAAI/U,GAEF,YADA+B,0BAAqC9yB,KAAKuuB,UAM5C,IAAKqO,KADE,MAAL0J,QAAK,EAALA,GAAO1L,aAAc56B,KAAK8lC,eAI1B,OAFA9lC,KAAKumC,gBACLzT,0BAAqC9yB,KAAKuuB,gBAKtCvuB,KAAKy5B,qBAAqBhlB,KAAKmoB,IAErC58B,KAAKumC,SAAS3J,GAAM4J,aAIdxmC,KAAK6lC,aAAarE,OAExB,IAAKrlC,GAAGsqC,UAA0ChU,QAChDzyB,KAAK2lC,wBAAwBe,+BAC3B1mC,KAAK8kC,eAOT,GAJI2B,IACFxX,QAAQ+B,MAAMyV,IAGZzmC,KAAK8lC,gBAAkB9lC,KAAKggC,SAAWhgC,KAAK+/B,SAAU,CAExD,IAAKpG,GAAMgN,UAAuBlU,QAChCzyB,KAAKy5B,qBAAqBmN,SACxB5mC,KAAK8lC,eACL9lC,KAAK+/B,SACL//B,KAAKggC,UAIL6G,GAAgBF,GACpB,GAA6B,MAAZ,MAAbG,QAAa,EAAbA,GAAehI,QAEjB,YADAhM,8BAAyC9yB,KAAKuuB,UAIhD,GAAIoY,GAEF,YADA7T,0BAAqC9yB,KAAKuuB,UAI5C,IAAQ,MAAJ0X,QAAI,EAAJA,GAAMnH,SAAUC,UAElB,YADAjM,yBAAoC9yB,KAAKuuB,SACzC,CAIJ,IAAIqE,GAAwC,QAA5BmU,QAAKxY,SAASoE,QAAQ92B,cAAMihB,iBAAE8V,UACzCA,IACH5yB,KAAKuuB,SAASwG,aAAaC,GAAG2O,YAM5B/Q,IADa5yB,KAAKuuB,SAASE,WAAWc,MAM1CvvB,KAAKuuB,SAASE,WAAWc,IAAIqD,IAJ3B5yB,KAAKuuB,SAASE,WAAWuY,MAIEpU,GAG/B2T,SAASU,IACP,IAAIC,GAAYC,aAGhB,OAFAF,IAAaA,IAAa,IAAInqC,eAEtBmqC,IACD,MACHC,GAAYC,SACZ,UACG,KACHD,GAAYC,QACZ,UACG,MACHD,GAAYC,SACZ,UACG,YACHD,GAAYC,eAIhBnnC,KAAK4lC,aAAaW,SAASW,qDAzHlBzB,IAAsB5sC,gGAAtB4sC,GAAsBrX,gFCpBnCv1B,4DDoBa4sC,IAAb,0JEPO,IAAM2B,GAAb,MAAM,SAEJtnC,YAAoByuB,qBADpBvuB,UAAO01B,KAGPmE,oBACE/G,qBAAgC9yB,KAAKuuB,UAAU,GAGjD8Y,mBACErnC,KAAKuuB,SAASwG,aAAaC,GAAG2O,0DATrByD,IAAuBvuC,uCAAvBuuC,GAAuBhZ,6FCVF0L,4BAAAA,IACCA,4EAAAA,IAMYA,qFAAAA,IAK2DA,yBAAAA,+NAf1GjhC,iBAA2B,eAEvBA,iBACAA,yBAAwDA,QACxDA,wBAAyGA,QAEzGA,oBAA+BA,gCAASyQ,yBACtCzQ,qBAA0CA,gCAC5CA,QACAA,kBAAiB,UACfA,YAA4HA,QAC5HA,mBACFA,QAGAA,sBAAyEA,gCAASyQ,wBAAlFzQ,aAA6HA,oBARlHA,yg9CDMFuuC,IAAb,6BEQM,eACYzD,WAAU,iBACVA,iBAAgB,GAAG7mB,EAAKwqB,wBACxB3D,QAAO,GAAG7mB,EAAKwqB,eACf3D,SAAQ,GAAG7mB,EAAKwqB,gBAChB3D,UAAS,GAAG7mB,EAAKwqB,iBACjB3D,kBAAiB,GAAG7mB,EAAKwqB,yBACzB3D,SAAQ,GAAG7mB,EAAKwqB,gBAChB3D,WAAU,GAAG7mB,EAAKwqB,kBAClB3D,aAAY,GAAG7mB,EAAKwqB,oBAGtC,MAkMaC,EAA6C,CAlMhB,CACxCxmC,KAAM4iC,GAAwB2D,QAC9B/X,IAAK,gEACLz6B,KAAM,CAAE4+B,cAAe,6BACvB73B,OAAQ,CACN++B,UAAW,CAAEzlC,MAAO,GAAImO,SAAS,GACjCy8B,SAAU,CAAEz8B,SAAS,GACrB08B,QAAS,CAAE18B,SAAS,GACpBwhC,aAAc,CAAE3vC,MAAO,GAAIqyC,QAAQ,GACnCzC,OAAQ,CAAE5vC,MAAO,GAAImO,SAAS,EAAMkkC,QAAQ,IAE9CjU,UAAW2R,KACXpR,QAAS2T,MACTC,WAAY/D,GAAwBgE,MAGC,CACrC5mC,KAAM4iC,GAAwBgE,KAC9BpY,IAAK,QACLgE,UAAW0Q,KACXnQ,QAAeC,KAAQC,yCAErB,MAAM4L,GAAepR,GADEA,WACOn5B,IAAiBuyC,MAC/C,IAAK3H,GAAiB9jC,UAAWs2B,SAC/BnB,QAAcsO,GAAaO,iBAAiBC,MAAKC,aAEnD,IAAKJ,GAAiB,OAAO,EAE7BlM,GAAME,QACNnB,GAAc+U,sBAAsB9T,GAAMI,WAIN,CACtCpzB,KAAM4iC,GAAwBmE,MAC9BvY,IAAK,SACLgE,UAAWwU,MACXlsC,OAAQ,CACN+2B,UAAW,CAAEz9B,MAAO,KAAMqyC,QAAQ,GAClCQ,SAAU,CACR9qC,KAAM,OACN/H,OAAO,IAGX2+B,QAAS,SAAUC,iBACjB,IACE/zB,KAAK4/B,aAAaqI,OAAO,CAAEC,WAAW,GACtC,CADsC,MACtChC,KAEF,IAAItT,GAEO,QAFKuV,MAAMhU,OAAOxB,QAAQtxB,WAClC+mC,cACAvsC,gBAAQgtB,iBAAE+J,WAETyV,OAAoBzV,IAAW,KACjCA,GAAYlhC,SAASshC,SAASsV,MAGhC,IAAIC,GAAexU,GAAMI,OAAOY,aAAauT,KAC3CvZ,eACA,CAAE6D,cACF,CAAE4V,UAAU,EAAMC,SAAS,IAG7BxZ,QAAQoD,IAAI,wCAAyCkW,IACrD,MAAM/Z,GAAWuF,GAAMvF,WACjBoR,GAAepR,GAASn5B,IAAiBuyC,MACzCnW,GAAkBjD,GAASn5B,IAAqBs5B,KAChDsB,GAAwBzB,GAASn5B,IACrC06B,MAGIiY,GAC4D,QAAhE1B,GAAsD,QAAtDS,MAAM5S,OAAOxB,QAAQtxB,WAAW+mC,cAAcvsC,gBAAQ4/B,iBAAEuM,gBAAQtM,WAGlE6J,QAAQmD,UAAU,GAAI,IAGtB1Z,yBACE4D,GACAnB,GAAgBC,MAAMiX,2BAGxB/I,GAAagJ,kBAAkB,CAC7BC,oBAAqB,CACnBC,aAAcP,GACdQ,eAAgB,UAChBC,SAAUvX,GAAgBC,MAAMmX,oBAAoBG,SACpDC,WAAYhZ,GAAsBiZ,wBAClCC,YAAanB,GAAW,SAAW,QAMF,CACvCjnC,KAAM4iC,GAAwByF,OAC9B7Z,IAAK,UACLgE,UAAWwU,MACXjU,QAAS,SAAUC,IAGjB,IACInB,GAAYmB,GAAMI,OAAOY,aAAauT,KACxC3E,GAAwBgE,KAFL,CAAE/M,UAAWlI,GADTyB,OAAOxB,QAAQ92B,OACO++B,WAI7C,CAAE4N,UAAU,EAAMC,SAAS,IAGzBY,GAAgBtV,GAAMI,OAAOY,aAAauT,KAC5CvZ,gBACA,CAAE6D,cACF,CAAE4V,UAAU,IAGdvZ,QAAQoD,IAAI,yCAA0CgX,IAEtDzJ,GAD2BpR,WAAWn5B,IAAiBuyC,MAC1CK,OAAO,CAClBqB,aAAc,CACZC,SAAUF,QAM+B,CAC/CtoC,KAAM4iC,GAAwB6F,eAC9Bja,IAAK,aACLgE,UAAW6T,IAG2B,CACtCrmC,KAAM4iC,GAAwB8F,MAC9Bla,IAAK,SACLgE,UAAWa,KAG+B,CAC1CrzB,KAAM4iC,GAAwB+F,cAC9Bna,IAAK,GACLgE,UAAWkS,EACX5pC,OAAQ,CACN+2B,UAAW,CAAEz9B,MAAO,MAqBoB,CAC1C4L,KAAM4iC,GAAwBgG,UAC9Bpa,IAAK,0BACLgE,UAAW0G,KACXnlC,KAAM,CAAE4+B,cAAe,2BACvB73B,OAAQ,CACN4+B,WAAY,CACVtlC,OAAO,EACP+H,KAAM,OACNsqC,QAAQ,EACRlkC,SAAS,IAGbwwB,QAAeC,KAAQC,yCAErB,MAAM4L,GAAepR,GADEA,WACOn5B,IAAiBuyC,MAC/C,IAAK3H,GAAiB9jC,UAAWs2B,SAC/BnB,QAAcsO,GAAaO,iBAAiBC,MAAKC,aAEnD,GAAIJ,GAAiB,OAAO,EAE5BlM,GAAME,QAENF,GAAMI,OAAOY,aAAaC,GAAG2O,GAAwBgE,KAAM,CACzD/M,UAFW7G,GAAMI,OAAOxB,QAAQ92B,OAEd++B,UAClBoF,QAAS,GACTD,SAAU,QA3C0B,CACxCh/B,KAAM4iC,GAAwBiG,QAC9Bra,IAAK,WACLgE,UAAWiG,KACX1F,QAAeC,KAAQC,yCAErB,MAAM4L,GAAepR,GADEA,WACOn5B,IAAiBuyC,MAC/C,IAAK3H,GAAiB9jC,UAAWs2B,SAC/BnB,QAAcsO,GAAaO,iBAAiBC,MAAKC,aAEnD,IAAKJ,GAAiB,OAAO,EAE7BlM,GAAME,QACNnB,GAAc+U,sBAAsB9T,GAAMI,cA6CzC0V,MAGC,SAAoBzc,8BACMmB,IAC5BA,GAASwG,aAAaC,GACpB2O,GAAwB8F,MACxBlb,GAASoE,QAAQ92B,OACjB,CAAEm3B,UAAU,6BAKdzE,GACAyZ,GACApV,GAAY,IAEZrE,GAASwG,aAAaC,GACpB2O,GAAwBmE,MACxB,CAAEE,SAAUA,GAAUpV,UAAWA,IACjC,CACEI,UAAU,EACVyV,SAAS,8BAKWla,IACxBA,GAASwG,aAAaC,GAAG2O,GAAwByF,OAAQ,KAAM,CAC7DpW,UAAU,EACVyV,SAAS,sCAIqBla,IAChCA,GAASwG,aAAaC,GAAG2O,GAAwB6F,eAAgB,KAAM,CACrExW,UAAU,iCAIezE,GAAoBkM,IAAa,GAC5D,IAAI/H,GAAenE,GAASoE,QAAQ92B,OAMpC0yB,GAASwG,aAAaC,GACpB2O,GAAwBgG,UANJ,CACpB/O,UAAuB,MAAZlI,QAAY,EAAZ4T,GAAc1L,UACzBkK,aAA0B,MAAZpS,QAAY,EAAZ4T,GAAcxB,aAC5BrK,eAKA,CAAEgO,SAAS,yLCvRX,WAAsC1U,mBAC1C,IAAI+V,GAAoB,CACtBnG,WACAA,YACAA,mBACAA,WACAA,qBAGEoG,EAAwB,QAAVC,MAAMlb,YAAIhS,iBAAE/b,KAE9B,IADKgpC,GACDD,GAAkBG,SAASF,GAAc,OAAO,KAEpD,IAAInP,EAA0B,QAAdsP,MAAMruC,gBAAQgtB,iBAAE+R,UAIhC,IAHqBA,EAInB7G,UAAME,QACNnB,4BAAqCiB,GAAMI,QACpC,KAKT,IAAIgW,IAA0B,EAE1BpK,GAAyB,QAAdqK,KAAMvuC,gBAAQ4/B,eAAEsE,SAC3BC,GAAwB,QAAdqK,MAAMxuC,gBAAQ6/B,iBAAEsE,QAC1BsK,KAAgBvK,GAChBwK,KAAcvK,GAEdvG,EAAuB1F,GACxBvF,WACAn5B,IAA0Bm1C,MAEzBC,IAAahR,EAAqBmD,MAQtC,GAFAuN,UAHoBM,GADlBA,GAAYhR,EAAqBmD,MAAMhC,WAAaA,IAMlD0P,IAAeC,GAAW,CAC5B,IAAIG,KAAYjR,EAAqBE,KACjCgR,GACFD,IAAWjR,EAAqBE,KAAKoG,UAAYA,GAC/C6K,GACFF,IAAWjR,EAAqBE,KAAKqG,SAAWA,GAIlDmK,UAHmBO,IAAWC,IAAuBC,KAOvD,IAAKT,GAAyB,OAE9B,IAAIx1C,GAAUo/B,GAAMjF,KAChB+b,GAAW9W,GAAMl4B,OAAO,MAExB+2B,GAAY,GACZj+B,KACFi+B,GAAYmB,GAAMI,OAAOY,aAAauT,KAAK3zC,GAASk2C,KAGjDjY,KACHA,GAAYmB,GAAMI,OAAOY,aAAauT,KACpC3E,aACAkH,KAQJ,IAAI3X,GAAWa,GAAMI,OAAOhB,eAAeD,WACvCA,IAAYN,GAAU13B,WAAWg4B,MACnCN,GAAYA,GAAUl9B,UAAUw9B,GAASnhC,OAAS,IAGpD,IAAI+4C,GAAsB,CACxBlY,aACAgI,UAAmB,MAARiQ,QAAQ,EAARE,GAAUnQ,UACrBmF,SAAkB,MAAR8K,QAAQ,EAARE,GAAUhL,SACpBC,QAAiB,MAAR6K,QAAQ,EAARE,GAAU/K,QACnB8E,aAAsB,MAAR+F,QAAQ,EAARE,GAAUjG,cAE1B/Q,GAAME,QACNF,GAAMI,OAAOY,aAAaC,GACxB2O,mBACAmH,GACA,CACE9X,UAAU,IAKV,WACJ3xB,IAcA,IAAI2pC,EAAgBC,GAXjBzc,WACAn5B,IAA0Bm1C,MAGNU,kBAAkBC,eACrC/H,sBAOAA,qBACAA,kBAIJ,GAAI4H,GADc3pC,GAAW+mC,cACIrnC,OAEjC,OAAOiqC,EAGH,WACJ3pC,IAEA,IAAIo4B,GAAuBp4B,GACxBmtB,WACAn5B,IAA0Bm1C,MAEzBY,GAAiB3R,GAAqBE,KAAK2B,UAAUl4B,KACvD8T,IAAI,MAAC,OAAc,QAAd8rB,IAAEqI,oBAAYvuB,eAAE/qB,SAEnBu5C,EAAiB7R,GAAqBE,KAAK2B,UAAUl4B,KACvD8T,IAAI,MAAC,OAAa,QAAb8rB,IAAEuI,mBAAWzuB,eAAE/qB,SAIlBi5C,GACFI,IAAkBE,EACdlI,kBACAA,eAIN,GAAI4H,IADc3pC,GAAW+mC,cACIrnC,OAEjC,OAAOiqC,GAGH,WACJ3pC,IAEA,IAAIo4B,GAAuBp4B,GACxBmtB,WACAn5B,IAA0Bm1C,MAEzBgB,GAAgB/R,GAAqBE,KAAK2B,UAAUl4B,KACtD8T,GAAKA,EAAEu0B,YAAY15C,QAGjB25C,EAAkBjS,GAAqBE,KAAK2B,UAAUl4B,KAAK8T,GAC7DA,EAAEy0B,OAAOvoC,KAAK6T,GAAK20B,cAAsB30B,EAAE/Z,QAIzC8tC,GACFQ,IAAiBE,EACbtI,mBACAA,gBAIN,GAAI4H,IADc3pC,GAAW+mC,cACIrnC,OAEjC,OAAOiqC,GAGH,WACJ3pC,IAWA,IAAI2pC,EAAgBa,GARjBrd,WACAn5B,IAA0Bm1C,MAEQ7Q,KAAK2B,UAAUl4B,KAAK8T,IACvDA,GAAEy0B,OAAOvoC,KAAK6T,GAAK20B,cAAsB30B,EAAE/Z,QAKzCkmC,kBACAA,eAIJ,GAAI4H,GADc3pC,GAAW+mC,cACIrnC,OAEjC,OAAOiqC,EAGH,WACJ3pC,kDAEA,IAAIo4B,GAAuBp4B,GACxBmtB,WACAn5B,IAA0Bm1C,MAEzBsB,GAAuBzqC,GACxBmtB,WACAn5B,IAA0B02C,WAEvBC,QAA4BvS,GAAsBqS,IAOxD,IAAId,GAAgBiB,GALmBtS,KAAK2B,UAAUl4B,KACpD8T,IAAI,MAAC,OAAY,QAAZ8rB,IAAEr1B,kBAAUmP,eAAE/qB,SAKjBqxC,sBACAA,mBAIJ,GAAI4H,IADc3pC,GAAW+mC,cACIrnC,OAEjC,OAAOiqC,KAGH,WACJ3pC,WAEA,IAAIo4B,GAAuBp4B,GACxBmtB,WACAn5B,IAA0Bm1C,MAE7B,IAAK/Q,GAAqBmD,MAAMsP,eAC9B,OAAO9I,WAGT,IAAI+I,EAAoD,QAAlCnC,MAAqBrQ,KAAKyS,gBAAQtvB,iBAAEogB,QAWtD8N,GATe,IAAkB,MAAfZ,OAAe,EAAfA,EAAiBjN,YAAa,OACnC,MAAfiN,OAAe,EAAfA,EAAiB/M,WAAY,KAC5BhuB,SACkC,MAAf+6B,OAAe,EAAfA,EAAiBiC,eACJ,MAAfjC,OAAe,EAAfA,EAAiBkC,OAMjClJ,WACAA,iBAIJ,OAAI4H,IADc3pC,GAAW+mC,cACIrnC,OAE1BiqC,QAFP,CAEOA,saCjKCnyC,iBAA2D,cAGlDA,gFAA2B,qCACjB0zC,EADiB1e,OACjB0e,yBAHjB1zC,QAIAA,gCAEAA,qCALOA,oDAAkC,yEA9EnDA,eAAiE,eAAjEA,CAAiE,UAAjEA,CAAiE,WAAjEA,CAAiE,WAIzDA,YAA6CA,QAC7CA,kBAAyB,cAChBA,mFAA+B,qCACrB+0B,EADqBC,MACrBD,oBADjB/0B,YAQJA,kBAA8B,WAC5BA,aAA2CA,QAC3CA,mBAAyB,eAChBA,kFAA8B,qCACpB2zC,EADoB3e,MACpB2e,oBADjB3zC,YAQJA,mBAA8B,YAC5BA,aAAiDA,QACjDA,mBAAyB,eAChBA,qFAAiC,qCACvB4zC,EADuB5e,MACvB4e,oBADjB5zC,YAUJA,mBAA8B,YAC5BA,aAAiDA,QACjDA,mBAAyB,eAChBA,uFAAmC,qCACzB6zC,EADyB7e,MACzB6e,oBADjB7zC,YAOJA,sBAAyH,YACvHA,aAAoCA,QACpCA,mBAAyB,eAChBA,+EAA2B,qCACjB8zC,EADiB9e,MACjB8e,iBADV9zC,CAA2B,oDAEnBmhC,qEAFfnhC,UAQFA,oBACEA,uBACAA,8BAA2EA,YAI/EA,kBAA4C,QAC1CA,aAAgDA,QAChDA,kBAAwB,eAGfA,+EAA2B,qCACjB+zC,EADiB/e,MACjB+e,yBAHjB/zC,QAIAA,kCAEAA,UAEFA,yBASAA,kBAAwB,eAGfA,+EAA2B,qCACjBg0C,EADiBhf,MACjBgf,yBAHjBh0C,QAIAA,kCAEAA,UAEFA,kBAAwB,eAGfA,+EAA2B,qCACjBi0C,EADiBjf,MACjBif,yBAHjBj0C,QAIAA,kCAEAA,4CArGLA,iCAMYA,+CAA+B,kJAW/BA,8CAA8B,kJAW9BA,iDAAiC,0CAajCA,mDAOiCA,2FAGjCA,2CASeA,2CASfA,oDAAkC,4BAOlBA,qDAWhBA,mDAAiC,4BASjCA,kDAAgC,6BCrG5C,IAAMk0C,GAAb,MAAM,SAaJjtC,YACUktC,GACAvT,GACAwT,GACA1e,IAHAvuB,wBACAA,6BACAA,oBACAA,iBAhBVA,UAAO01B,IACP11B,sBAAmBojC,GACnBpjC,oCAAiCktC,KACjCltC,qBAAkBmtC,GAClBntC,iBAAc,KACdA,sBAAmBotC,KACZptC,iBAAsB,EAavBgsB,4DACJ,IAAK7vB,GAAG60B,UAAeyB,SAAOzyB,KAAKgtC,gBAAgBhwB,WAIrDsV,WACEtyB,KAAKqtC,0BACHrtC,KAAKy5B,qBAAqBmD,MAAM0Q,OAAOD,0BAIzC,IAAIE,GACFC,KAH+B/T,qBAAqB+T,sBAG9BC,SAASC,oBAEjC1tC,KAAK2tC,0BACHJ,GAAwBK,4BAA4B5tC,KAAKk9B,SAGzDl9B,KAAKosC,UACLpsC,KAAKk9B,UACJl9B,KAAKk9B,QAAQC,WACZn9B,KAAKk9B,QAAQG,UACS,MAAtBr9B,KAAKosC,SAASlvC,QAEhB8C,KAAK6tC,YAAcV,GAAgBW,IACnC9tC,KAAK+tC,yBAIL3B,eACF,OAAOpsC,KAAKgtC,gBAAgBZ,SAG1BlP,cACF,OAAOl9B,KAAKgtC,gBAAgB9P,QAGvB8Q,uBACLhuC,KAAKgtC,gBAAgBiB,eACrBjuC,KAASosC,UAAYpsC,KAAKosC,SAASlvC,OAASkwC,cAC1CptC,KAAKitC,YAAYtT,KAAKuU,iBAAkB,EACxCluC,KAAKitC,YAAYtT,KAAKwU,gBAAkB,MAExCnuC,KAAKitC,YAAYtT,KAAKyU,sBAAwB,KAEhDpuC,KAAKitC,YAAYoB,OAEZC,kBACLtuC,KAAKgtC,gBAAgBuB,sBAGvBC,gBACMxuC,KAAKyuC,iBAAiBvB,mBACxBltC,KAAKgtC,gBAAgBuB,sBAIZG,sEACX,GAAK1uC,KAAK2tC,0BAA0BgB,QAApC,CAKA,IACE3uC,KAAK4uC,YAAa,QACZ5uC,KAAKgtC,gBAAgBhwB,QAC3Bhd,KAAKuuB,SAASwG,aAAaC,GAAGoO,UAC9B,CAD8BA,MACvBpS,IAAP,CAGFhxB,KAAK4uC,YAAa,CAVhB,MADA5uC,KAAK6uC,yBAWW,GAGbC,gBAAgB75C,IACrB,IAAI85C,GAAO/uC,KAAK2tC,0BAA0BqB,QAAQ/5C,IAClD,OAAI85C,IACKA,GAAKJ,OAEL,CAIJF,iBAAiBx5C,IACtB,IAAI85C,GAAO/uC,KAAK2tC,0BAA0BqB,QAAQ/5C,IAElD,OAAI85C,IACKA,GAAKE,UAEL,CAIHlB,wBACN/tC,KAAK2tC,0BAA0BsB,WAGzBJ,0BACD7uC,KAAKyuC,iBAAiBvB,mBACzBltC,KAAKkvC,gBAAgBC,cAAcC,eAAe,CAChDC,SAAU,SACVC,MAAO,SACPC,OAAQ,4DAzHHxC,IAAqBl0C,2EAArBk0C,GAAqB3e,kKAFjB,CAACohB,KAAiBC,QAAYC,yGD1BX5V,cAAAA,IAQGA,iCAAAA,IAO2CA,OAAAA,IAUFA,MAAAA,IAYnCA,YAAAA,IAIqEA,uBAAAA,IAOtEA,WAAAA,IAIqEA,sBAAAA,IAOlEA,cAAAA,IAKfA,yBAAAA,IAQeA,cAAAA,IAUNA,OAAAA,IAOTA,kBAAAA,IAK4BA,6BAAAA,IAKhBA,gBAAAA,IAMiEA,WAAAA,IAkBFA,UAAAA,IASFA,SAAAA,IAlBIA,WAAAA,y5EAnH7GjhC,qBAAuD,QACrDA,WAA8CA,QAK9CA,iBAAwB,UAAxBA,CAAwB,OAGpBA,WAAgEA,QAChEA,iBAAwB,aAKfA,8DAJPA,QAKAA,+BAEAA,UAEFA,kBAAwB,cAKfA,8DAJPA,QAKAA,kCAEAA,cAMNA,2BA4GFA,QAEAA,gBAAsB,uBACLA,qCAAcyQ,6BAC7BzQ,kBAlJoCA,iCAcvBA,+CAA6B,0BAU7BA,8CAA4B,0BAUlBA,8DA8GpBA,0CACmDA,+y4DCvH1Cw8B,OAGD0X,IAAb,GA+HO,IAAKI,GAGX,MAHD,OAAYA,WAAe,KACzBA,gBACAA,iBAFUA,GAAZ,IAAYA,IAGX,yHC3JM,IAAMwC,GAAb,MAAM,SACJ7vC,YAAoB8vC,sBACpBra,UAAUpgC,IACR,OAAO6K,KAAK4vC,UAAUC,wBAAwB16C,qDAHrCw6C,IAAY92C,4DAAZ82C,GAAYG,UAAZH,IAAb,GCQaI,GAAb,MAAM,SAGJjwC,YAAmByjC,wBAFVvjC,wBAAqB,GAC9BA,aAAUo3B,OAGV9E,WAAQ,kDALGyd,IAAuBl3C,wCAAvBk3C,GAAuB3hB,wICUI0L,SAAAA,mSAtBxCjhC,4BAA8C,iBAA9CA,CAA8C,cACOA,gCAASyQ,2BACxDzQ,qBACFA,UACFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,WAKJA,qCAIFA,cAKNA,yBAAc,eAEJA,gCAASyQ,2BACfzQ,sBACAA,6BAAyCA,sBApBhCA,kCAO4BA,mEAYZA,ml7CDTlBk3C,IAAb,uCEHO,IAAMC,GAAb,MAAM,SACJlwC,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,kDALG0d,IAA6Bn3C,wCAA7Bm3C,GAA6B5hB,wICEqC0L,eAAAA,IACeA,sCAAAA,IAGOA,qCAAAA,IAG3BA,cAAAA,IAESA,yBAAAA,IACoBA,6DAAAA,IAG3BA,oDAAAA,IAMKA,iBAAAA,IACeA,wCAAAA,IAGXA,6FAAAA,IAIIA,4FAAAA,IAIWA,0DAAAA,IAGEA,0EAAAA,IAINA,4DAAAA,IAEZA,0DAAAA,gNAnDpFjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,OAAZA,CAAY,WAMEA,YAA4EA,UAChFA,cAAG,uBAAmHA,UAEtHA,iBAAa,QAAbA,CAAa,WACPA,YACQA,UAEZA,eAAI,wBAAoEA,UAExEA,eAAI,wBAAwFA,UAC5FA,eAAI,wBAEFA,UACFA,eAAI,wBAEFA,YAIJA,eAAI,wBAAgFA,UACpFA,cAAG,wBACIA,UACPA,iBAAa,QAAbA,CAAa,WACPA,aAEFA,UAEFA,eAAI,wBAEFA,UAEFA,eAAI,wBACgBA,UAEpBA,eAAI,wBAE+BA,UAEnCA,eAAI,wBACeA,UACnBA,eAAI,wBACFA,gCAlDDA,8g5DDOFm3C,IAAb,GEAaC,GAAb,MAAM,SACJnwC,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,kDALG2d,IAAsBp3C,wCAAtBo3C,GAAsB7hB,6FCG2C0L,6mBAAAA,IASCA,s9BAAAA,IAeOA,4YAAAA,4KApCtFjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,SAAZA,CAAY,QAAZA,CAAY,WAOIA,YAQ+DA,UACnEA,eAAI,uBAcWA,UACfA,eAAI,uBAKaA,gCAvChBA,sp4DDOFo3C,IAAb,GEAaC,GAAb,MAAM,SACJpwC,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,kDALG4d,IAA2Br3C,wCAA3Bq3C,GAA2B9hB,sGCG4B0L,eAAAA,IACeA,+EAAAA,IAKjBA,cAAAA,IACgBA,uEAAAA,wLAnBlFjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,QAAZA,CAAY,WAOIA,YAA+DA,UACnEA,cAAG,uBACyBA,YAG9BA,kBAA6B,QAA7BA,CAA6B,WACvBA,YAA4DA,UAChEA,cAAG,wBACWA,gCAlBbA,834DDOFq3C,IAAb,GECaC,GAAb,MAAM,SAGJrwC,YAAoB25B,iCAFZz5B,4BAAyB,IAAI5K,IAGnCqkC,GAAqBE,KAAK2B,UAAU1oC,QAAQuvC,KAC1C,IAAIiO,GAAY,IAAIC,KAAkBlO,IACtCniC,KAAKswC,uBAAuBh7C,IAAI6sC,GAASlvB,GAAIm9B,MAI1CG,0BACLC,GACAv7C,IAEA,IAAIm7C,GAAYpwC,KAAKswC,uBAAuBj7C,IAAIm7C,IAEhD,QAAKJ,KAELA,GAAUnB,SAASh6C,IACZ+K,KAAKywC,iCAAiCD,GAAYv7C,IAHlC,CAMlBw7C,iCACLD,GACAv7C,IAEA,IAAIm7C,GAAYpwC,KAAKswC,uBAAuBj7C,IAAIm7C,IAEhD,QAAKJ,IAEErB,GADgBC,QAAQ/5C,IACnB05C,OAFW,kDA5BdwB,IAAuBt3C,yCAAvBs3C,GAAuBr3C,QAAvBq3C,GAAuB,qBAFtB,SAEDA,IAAb,yECSO,IAAMO,GAAb,MAAM,SA0BJ5wC,YACU25B,GACAqS,GACA5a,GACAyf,IAHA3wC,6BACAA,6BACAA,iBACAA,aA5BHA,0BAA8C,IAAI5K,IAKlD4K,iCAAoD,IAAI5K,IAQvD4K,uBAA4D,IAAI5K,IAKhE4K,8BACN,IAAI5K,IAWJ4K,KAAKs7B,UAAY7B,GAAqBE,KAAK2B,UAE3Ct7B,KAAKs7B,UAAU1oC,QAAQuvC,KAErB,MAAMyO,GAAkB9E,GAAqB+E,cAC3C1O,IACA,GAGFniC,KAAK8wC,kBAAkBx7C,IAAI6sC,GAASlvB,GAAI29B,IACxC5wC,KAAK+wC,qBAAqBz7C,IAAI6sC,GAASlvB,GAAIkvB,IAG3C,MAAM6O,GAAyBlF,GAAqB+E,cAClD1O,GAASjF,SACT,GAGFl9B,KAAKixC,yBAAyB37C,IAAI6sC,GAASlvB,GAAI+9B,IAC/ChxC,KAAKkxC,4BAA4B57C,IAAI6sC,GAASlvB,GAAIkvB,GAASjF,WAI7Dl9B,KAAKmxC,aAAerF,GAAqB+E,cACvCpX,GAAqBE,KAAKyX,MAC1B,GAGFpxC,KAAKqxC,gBAAkB5X,GAAqBE,KAAKyX,KAGjDpxC,KAAKsxC,aAAexF,GAAqB+E,cACvCpX,GAAqBE,MACrB,GAEF35B,KAAKuxC,gBAAkB9X,GAAqBE,KAGvC6X,aAAaC,IAClB,MAAMb,GAAkB5wC,KAAK8wC,kBAAkBz7C,IAAIo8C,GAAcx+B,IAClD,MAAf29B,OAAiBc,QAGZC,YAAYnB,GAAoBtT,IACrC,MAAM8T,GACJhxC,KAAKixC,yBAAyB57C,IAAIm7C,IACd,MAAtBQ,OAAwBU,QAGnBE,SAASR,IACdpxC,KAAKmxC,aAAaO,QAGbG,SAASlY,IACd35B,KAAKsxC,aAAaI,QAGPI,kBACXlR,GACAmR,GACAC,GACAC,wDAEMjyC,KAAKgd,QAEX,MAAMuS,GAAM,GAAGvvB,KAAKkxB,SAASG,uCAAuCrxB,KAAKy5B,qBAAqBE,KAAKqG,WAAWhgC,KAAKy5B,qBAAqBE,KAAKoG,YAAY//B,KAAKy5B,qBAAqBmD,MAAMhC,oBAAoB56B,KAAKy5B,qBAAqBE,KAAKuY,uBAAuBj/B,KAEnQ,IAAIk/B,GAAuC,CACzCC,gBAAgB,EAChBC,mBAAmB,EACnBC,sBAAuB1R,GACvBmR,2BAA4BA,GAC5BC,8BAA+BA,GAC/BO,OAAQC,uBACRC,wBAAyBR,UAGrB3gB,QAActxB,KAAK2wC,KAAKhxB,KAAsB4P,GAAK4iB,OAG9Cn1B,4DACLhd,KAAK8rC,qBAAqB9uB,2DAjHvB0zB,IAAa73C,8EAAb63C,GAAa53C,QAAb43C,GAAa,qBAFZ,SAEDA,IAAb,iBCTO,IAAMgC,GAAb,MAAM,SAGJ5yC,cAFAE,UAAO01B,IAIPpD,WAAQ,kDALGogB,iCAA8BtkB,iGCHQ0L,wBAAAA,IACKA,sEAAAA,IAGHA,+FAAAA,gIAXrDjhC,qBAAqD,UAArDA,CAAqD,UAArDA,CAAqD,UAArDA,CAAqD,WAK3CA,kBACFA,QACAA,yBAAiEA,QACjEA,wBAEAA,QACAA,0BAEAA,uBAb4BA,qj7DDQtBw8B,OAEDqd,IAAb,4EE8BM75C,kBAA0F,WAA1FA,CAA0F,YAGpFA,sBACFA,UAGFA,kBAAqB,UACLA,SAAqBA,QACnCA,iBAA8B,WAA9BA,CAA8B,WAA9BA,CAA8B,cAA9BA,CAA8B,eAMfA,wGAA2D,wDACjD85C,EADiD9kB,MACjD8kB,yBAFjB95C,QAGAA,oBACFA,QACAA,2BAEAA,cAINA,kBACFA,oDAvBkGA,qCAKlFA,4BAOCA,gHAiBvBA,qBAAiE,SAAjEA,CAAiE,UAAjEA,CAAiE,QAG3DA,YAAuEA,QACvEA,kBAAsC,WAAtCA,CAAsC,YAIhCA,gBAGFA,YAGJA,kBAAqD,YAArDA,CAAqD,cAArDA,CAAqD,eAIxCA,+FAA2C,uCACjC6zC,EADiC7e,MACjC6e,uCAFjB7zC,QAGAA,oBACFA,QACAA,2BAAiGA,4CAb5FA,2JASIA,yFA0LLA,sBAAkFA,SAAkBA,qCAAzCA,qBAAuBA,sEAkGxFA,iBAGiH,MAHjHA,CAGiH,UAE7GA,aAAqFA,QACrFA,mBAA4BA,aAACA,UAG/BA,0BAEaA,6EAAc+5C,EAAd/kB,OAAc+kB,oCAC0B/5C,2DATlDA,gKADAA,iCAUUA,oDAHAA,oDAA2C,yFAalDA,6BAA6GA,mCAC7GA,6BAA8GA,sDAY9GA,oBACMA,mFAASg6C,EAAThlB,OAASglB,8BAA6Ch6C,SAAoBA,uCAApBA,mDAWhEA,6BAA6GA,mCAC7GA,6BAA8GA,sCA0C5GA,sBAAmGA,SACnGA,qCADsEA,qBAA6BA,6EA4CzGA,iBAC+G,MAD/GA,CAC+G,UAE3GA,aAA2FA,QAC3FA,mBAA4BA,aAACA,UAE/BA,iBAAyB,eAEhBA,6GAAuD,iEAC7Ci6C,EAD6CjlB,OAC7CilB,oBAA0B,mBAF3Cj6C,6DANCA,8JADgFA,iCAQ1EA,4GAjTfA,sBAAyF,OAAzFA,CAAyF,UACnFA,YAA2FA,UAC/FA,iBAAwB,UAAxBA,CAAwB,MAAxBA,CAAwB,UAIlBA,YAAsDA,QAAQA,mBAA4BA,cAACA,UAE7FA,kBAAyB,eAEhBA,wGAAmD,gEACzCk6C,EADyCllB,OACzCklB,oBAA0B,eAF3Cl6C,YAYJA,kBAC+G,OAD/GA,CAC+G,WAC1GA,aAAoDA,QAAQA,oBAA4BA,cAACA,UAC5FA,kBAAyB,eAEhBA,uGAAkD,gEACxCm6C,EADwCnlB,OACxCmlB,oBAA0B,cAF3Cn6C,YAaJA,kBACgH,YADhHA,CACgH,UADhHA,CACgH,OADhHA,CACgH,aADhHA,CACgH,WAIzEA,aAA4EA,QACzGA,oBAA4BA,cAACA,QAC7BA,sBACQA,0CAASo6C,EAATplB,OAASolB,6BACfp6C,uBACFA,gBAMRA,kBAAyB,gBAIfA,wGAAmD,gEACzCq6C,EADyCrlB,OACzCqlB,oBAA0B,eAG1Cr6C,sBACEA,gBAAEA,8BAAoCA,QAAQA,gBAChDA,QACAA,6BACFA,YAKJA,kBAC0H,OAD1HA,CAC0H,WAEtHA,aAAiGA,QACjGA,oBAA4BA,cAACA,UAE/BA,kBAAyB,eAEhBA,+GAA0D,gEAChDs6C,EADgDtlB,OAChDslB,oBAA0B,sBAF3Ct6C,YAaJA,kBACsH,OADtHA,CACsH,WAElHA,aAAwFA,QACxFA,oBAA4BA,cAACA,UAE/BA,kBAAyB,eAEhBA,8GAAyD,gEAC/Cu6C,EAD+CvlB,OAC/CulB,oBAA0B,qBAF3Cv6C,YAaJA,kBACwH,OADxHA,CACwH,WAEpHA,aAAyFA,QACzFA,oBAA4BA,cAACA,UAG/BA,2BAEaA,4EAAcw6C,EAAdxlB,OAAcwlB,sCAE3Bx6C,UAIFA,mBAAsC,OAAtCA,CAAsC,WAGlCA,aAAqFA,QACrFA,oBAA4BA,cAACA,UAE/BA,mBAAwB,eAOfA,+GAA0D,gEAChDy6C,EADgDzlB,OAChDylB,oBAA0B,sBAP3Cz6C,QAQAA,kCAGAA,UAEFA,mBAAwB,eAOfA,+GAA0D,gEAChD06C,EADgD1lB,OAChD0lB,oBAA0B,sBAP3C16C,QAQAA,kCAGAA,YAKJA,0BAgBAA,kBAC6G,YAD7GA,CAC6G,UAD7GA,CAC6G,OAD7GA,CAC6G,WAIrGA,aAA2EA,QAC3EA,2BACAA,2BACAA,oBAA4BA,cAACA,cAKnCA,mBAA2B,YAA3BA,CAA2B,eAA3BA,CAA2B,WAGfA,UAAsCA,UAE9CA,mBACEA,2BAEFA,cAMNA,kBAC+G,OAD/GA,CAC+G,WAE3GA,aAAyFA,QACzFA,2BACAA,4BACAA,qBAA4BA,eAACA,UAE/BA,mBAAyB,gBAEhBA,4GAAuD,gEAC7C26C,EAD6C3lB,OAC7C2lB,oBAA0B,mBAF3C36C,YAaJA,mBACiH,aADjHA,CACiH,WADjHA,CACiH,QADjHA,CACiH,cADjHA,CACiH,YAKvGA,cAAqFA,QACrFA,kBAAOA,WAAyBA,qBAA4BA,gBAAEA,uBAClDA,0CAAS46C,EAAT5lB,OAAS4lB,6BACf56C,wBAA2DA,oBAOzEA,mBAAyB,iBAIfA,8GAAyD,gEAC/C66C,EAD+C7lB,OAC/C6lB,oBAA0B,kBAC1C76C,uBACEA,iBAAEA,gCAAoCA,QAAQA,iBAChDA,QACAA,8BAEFA,YAKJA,oBAAsC,QAAtCA,CAAsC,YAGlCA,cAAmHA,QACnHA,qBAA4BA,eAACA,UAE/BA,oBAAwB,gBAOfA,iHAA4D,gEAClD86C,EADkD9lB,OAClD8lB,oBAA0B,wBAP3C96C,QAQAA,oCAGAA,UAEFA,oBAAwB,gBAOfA,iHAA4D,gEAClD+6C,EADkD/lB,OAClD+lB,oBAA0B,wBAP3C/6C,QAQAA,qCAGAA,YAKJA,2BAoBFA,0DA7TsEA,iCAI/DA,mKAMMA,0DAYNA,kKAIMA,yDAaNA,mKAQgCA,0CASzBA,8CAEAA,iDAIEA,iCAGsBA,sDAO/BA,6KAOMA,iEAaNA,yKAOMA,gEAaNA,2KASUA,sDAHAA,oDAA2C,gEAkB/CA,mDAAsC,qCAEtCA,kBAAc,kDAIdA,0KADyBA,4CASzBA,sDAAyC,oCAEzCA,kBAAe,kDAIfA,0KADyBA,2CAS9BA,6GAgBDA,qKAKUA,8DACAA,+DASDA,gDAGwCA,uDASjDA,uKAGMA,8DACAA,+DAKAA,8DAaNA,yKAMYA,uCAEwBA,yCAS7BA,oDAEAA,uDAEEA,iCAG4BA,2DAiB/BA,kDAAqC,oCAErCA,kBAAc,oDAIdA,4KADyBA,2CASzBA,qDAAwC,mCAExCA,kBAAe,oDAIfA,4KADyBA,0CAQLA,8GAxVrCA,kBAA0F,WAA1FA,CAA0F,WAA1FA,CAA0F,YAIlFA,sBACFA,UAGFA,kBAAqB,UACLA,SAAqBA,QACnCA,iBAA8B,WAA9BA,CAA8B,YAA9BA,CAA8B,eASjBA,4FAA+C,oEACrCg7C,mDANjBh7C,QAOAA,kCAIAA,UAEFA,mBAAwB,eAMfA,4FAA+C,wDACrCi7C,EADqCjmB,OACrCimB,oBANjBj7C,QAOAA,kCAIAA,kBAQVA,iCAgUAA,kBAEFA,mDAjXiEA,4BAIqCA,qCAKlFA,4BAODA,iDAAoC,yBAEpCA,kBAAc,uCAIdA,+JACAA,gCAOAA,kDAAqC,wBAErCA,kBAAe,uCAIfA,+JACAA,+BAUcA,iGAhFnCA,yBAAkF,UAAlFA,CAAkF,OAAlFA,CAAkF,UAG1EA,YAA0FA,QAAQA,mBACxEA,aAACA,UAC/BA,kBAAsC,WAAtCA,CAAsC,aAIhCA,iBAIFA,cAKNA,mBAAoC,QAApCA,CAAoC,aAApCA,CAAoC,WACCA,aAERA,QAAQA,sBACvBA,0CAASk7C,EAATlmB,MAASkmB,sBACfl7C,uBAA2DA,YACjEA,kBAAa,QAAbA,CAAa,WACPA,aAAiHA,UACrHA,eAAI,wBAAmHA,UACvHA,eAAI,wBACYA,cAKpBA,4BAmXFA,kCA1YaA,wIAasBA,yCAUPA,sFAqX5BA,qBAA+E,WAE3EA,kBAIAA,kBAAsC,WAAtCA,CAAsC,YAGhCA,gBAGFA,YAGJA,kBAAoD,WAApDA,CAAoD,aAApDA,CAAoD,eAIvCA,yHADPA,QAEAA,oBACFA,QACAA,4BAAoGA,0CAnBpGA,6JAOKA,iKAQ6CA,kFAuBpDA,6BAA4HA,sDAblIA,qBAAgF,UAAhFA,CAAgF,OAAhFA,CAAgF,UAG1EA,aAEAA,QACAA,mBAA4BA,aAACA,UAG/BA,sBACQA,0CAASm7C,EAATnmB,MAASmmB,4BACfn7C,sBAEAA,0BAEFA,QAEAA,mBAAoD,YAApDA,CAAoD,cAApDA,CAAoD,eAIvCA,6GADPA,QAEAA,oBACFA,QACAA,4BAAoGA,0CAb7EA,2CAE4BA,oEAODA,4EAWxDA,6BAAiGA,qCAEjGA,8CAAyBA,+BAAsB,qCAInDA,mCC9iBO,IAAMo7C,GAAb,MAAM,SAkEJn0C,YACUo0C,GACAhQ,GACAzK,GACAxJ,GACAkkB,GACAC,GACA7lB,IANAvuB,wBACAA,qBACAA,6BACAA,8BACAA,sBACAA,gCACAA,iBAxEVA,WAAQ01B,IACR11B,gCAA6Bq0C,KAC7Br0C,oBAAiBqlC,MACjBrlC,sCAAmCs0C,KACnCt0C,8BAA0B,EAC1BA,mCAAgC,KAChCA,kBAAeu0C,GACfv0C,iBAAcu0C,GAAaC,aAC3Bx0C,0BAAuBy0C,MAGfz0C,gCAA6B,CACnCO,KAAM,KACN6jC,iBAAkB,wBAGZpkC,0BAAuB,CAC7BO,KAAM,MAGAP,+BAA4B,CAClCO,KAAM,MAGAP,iCAA8B,CACpCO,KAAM,MAGRP,mBAAgB,EAChBA,gBAAY,EACZA,+BAA2B,EAU3BA,iCAA6B,EAQ7BA,2BAAuB,EAUvBA,8BAA2B00C,kBAC3B10C,+BAA4B20C,mBAC5B30C,mCAAgC40C,uBAChC50C,sBAAmB60C,MAqDnB70C,wBAAqB80C,KAEd90C,sCAEH,GAEGA,2BAEH,GAsIIA,gBAAkC,GAMnCA,gBAAY,EA1LjBA,KAAK+0C,yBAFuBtb,GAAqB+T,sBAEKC,SACpDC,oBAGF1tC,KAAKm0C,cAAc7Y,UAAU1oC,QAAQuvC,KACnC,MAAM6S,GAAsBh1C,KAAKm0C,cAAcpD,qBAAqB17C,IAClE8sC,GAASlvB,IAGLgiC,GACJj1C,KAAKm0C,cAAcjD,4BAA4B77C,IAAI8sC,GAASlvB,IAExDiiC,GAAsC,CAC1CjiC,GAAIkvB,GAASlvB,GACbkiC,SAAU,GAAGhT,GAASjF,QAAQC,aAAagF,GAASjF,QAAQG,WAC5DF,UAAWgF,GAASjF,QAAQC,UAC5B6X,oBAAqBA,GACrBC,2BAA4BA,GAC5BG,kBAAkB,EAClBC,mBAAoBlT,GAASkT,oBAG3BH,GAAiBG,mBAAmBC,eACtCt1C,KAAKu1C,YAAY,CAACL,KAElBA,GAAiBG,mBAAmBC,gBAAiB,EAGvDt1C,KAAKw1C,WAAW9hD,KAAKwhD,IAErBl1C,KAAKy1C,sBACHtT,GAASlvB,IACP6mB,QAAmCA,GA5EvC4b,8BACF,OAAO11C,KAAK21C,yBAEVD,4BAAwBvgD,IAC1B6K,KAAK21C,yBAA2BxgD,GAChC6K,KAAK41C,kBAIHC,gCACF,OAAO71C,KAAK81C,2BAEVD,8BAA0B1gD,IAC5B6K,KAAK81C,2BAA6B3gD,GAKhC4gD,0BACF,OAAO/1C,KAAKg2C,qBAEVD,wBAAoB5gD,IACtB6K,KAAKg2C,qBAAuB7gD,GAC5B6K,KAAK41C,kBAqEAK,oBACYj2C,KAAKkkC,aAAaK,KACjC0L,GACAjwC,KAAKk2C,sBAIFC,2BACYn2C,KAAKkkC,aAAaK,KACjC2L,GACAlwC,KAAKo2C,2BAIFC,2BACYr2C,KAAKkkC,aAAaK,KACjCyL,GACAhwC,KAAKs2C,6BAIFC,2BAA2BpU,GAA6BqU,IAC7DrU,GAASkT,mBAAmBoB,gBAAkB,IAAIC,KAChDF,GAAOG,UACPH,GAAOI,WAAa,EACpBJ,GAAOK,eAET72C,KAAK82C,iBAAiB3U,GAAU,mBAG3B4U,6BACL5U,GACAqU,IAEArU,GAASkT,mBAAmB2B,kBAAoB,IAAIN,KAClDF,GAAOG,UACPH,GAAOI,WAAa,EACpBJ,GAAOK,eAET72C,KAAK82C,iBAAiB3U,GAAU,qBAG3B8U,kBAAkB9U,GAA6B+U,IACpD,MAAMC,GAAcn3C,KAAKo3C,0BAA0BhxC,KACjDixC,IAAKA,GAAEpkC,IAAMikC,IAETI,GC/MJ,YACJC,GACApiD,IAEA,OAAQlC,OAAOC,KAAKqkD,IAAsBnxC,KAAKnR,IAAOsiD,GAAQtiD,MAASE,ID2M1CqiD,CACzB3C,MACAqC,IAIF/U,GAASkT,mBAAmB8B,YADEtC,MAAiByC,IAE/Ct3C,KAAKy1C,sBAAsBtT,GAASlvB,IAAMkkC,GAAYM,KACtDz3C,KAAK82C,iBAAiB3U,GAAU,gBAG3B2U,iBAAiB3U,GAA6Bzd,IACnD,OAAQA,QACD,YACHyd,GAASkT,mBAAmBqC,WACzBvV,GAASkT,mBAAmBqC,UAC/B,UACG,eACHvV,GAASkT,mBAAmB8B,aACzBhV,GAASkT,mBAAmB8B,YAC/B,UACG,eACHhV,GAASkT,mBAAmBsC,iBACzBxV,GAASkT,mBAAmBsC,gBAC/B,UAEG,mBACExV,GAASkT,mBAAmBuC,mBAC/BzV,GAASkT,mBAAmBoB,gBAAkB,IAAIC,UAChD9hD,OACAA,OACAA,IAGJ,UACG,qBACEutC,GAASkT,mBAAmBwC,qBAC/B1V,GAASkT,mBAAmByC,cAAgB,MAelD93C,KAAKu1C,YAAY,CAACpT,KAGZoT,YACNja,GACArmC,IAEA,IAAI05C,IAAU,EAGd,UAAWxM,MAAY7G,GAAW,CAChC,IAAI8U,GAAYpwC,KAAK+0C,yBAAyBgD,gBAC5C5V,GAAS6S,qBAGP//C,GACFm7C,GAAUnB,SAASh6C,IAEnBm7C,GAAUnB,WAGZ,MAAM+I,GAAe5H,GAAU4H,aAC/BrJ,GAAUA,IAAkC,GAAvBqJ,GAAajmD,OAGlCiO,KAAKi4C,iCAAiC9V,GAASlvB,IAAM+kC,GAAahjD,IAChEqiD,IAAKA,GAAEpiD,KAGX,OAAO05C,GAOTuJ,UAAUC,IACR,OAAOn4C,KAAKo4C,aAAe7D,GAAa8D,WAK1C/lB,WACE,MAAMgb,GAASttC,KAAKy5B,qBAAqBmD,MAAM0Q,OAC/CttC,KAAKs4C,kBAAoBt4C,KAAKy5B,qBAAqBE,KAAK4e,aACxDv4C,KAAKw4C,UACHx4C,KAAKs4C,kBAAkBE,WAAax4C,KAAKy4C,YAAYD,UAEvDx4C,KAAK04C,8BAAiE,MAAjC14C,KAAK25B,KAAKgf,oBAE/C34C,KAAK44C,wBAAwD,MAA9BtL,GAAOqL,oBAEtC34C,KAAK41C,kBAGHhV,qBACF,OAAO5gC,KAAKiwB,sBAAsB2Q,eAGhC6X,kBACF,OAAOz4C,KAAKy5B,qBAAqBmD,MAAM0Q,OAGrChS,gBACF,OAAOt7B,KAAKw1C,WAGVpE,WACF,OAAOpxC,KAAKm0C,cAAc9C,gBAGxB1X,WACF,OAAO35B,KAAKm0C,cAAc5C,gBAGrBsH,wBAAwBrI,IAK7B,MAAMwE,GAAsB8D,KAJGtD,WAAWpvC,KACxC+7B,IAAYA,GAASlvB,KAAOu9B,IAGgBwE,oBAE1CA,IACFh1C,KAAKm0C,cAAc3C,aAAawD,IAClCh1C,KAAK41C,kBAGAtH,gBAAgBkC,IACrB,MAAMsI,GAAoB94C,KAAKw1C,WAAWpvC,KACxC+7B,IAAYA,GAASlvB,KAAOu9B,IAG9B,IAAKsI,GAAmB,OAExB,MAAMC,GAAeD,GAAkB7D,2BAEnC8D,IAAc/4C,KAAKm0C,cAAcxC,YAAYnB,GAAYuI,IAC7D/4C,KAAK41C,kBAGAoD,eACLh5C,KAAKm0C,cAAcvC,SAAS5xC,KAAKoxC,MAG5B6H,iCAAiCzC,IAIpCx2C,KAAK25B,KAAKgf,oBADR34C,KAAK04C,8BAFM14C,KAAKy5B,qBAAqBmD,MAAM0Q,OAGNqL,oBAEP,KAGlC34C,KAAKm0C,cAActC,SAAS7xC,KAAK25B,MAGnCuf,0BACmBl5C,KAAKkkC,aAAaK,KACjCwL,GACA/vC,KAAKm5C,4BAGEC,kBAAkBC,mBACzBr5C,KAAKs4C,kBAAkBe,mBAG3BzD,kBACE,IAAIjH,IAAU,EACd,UAAWxM,MAAYniC,KAAKs7B,UAAW,CACrC,MAAMge,GAAgBt5C,KAAKu5C,sBACzBpX,GAASlvB,GACTohC,UAGF,IAAKiF,GAAe,CAClB3K,GAAU2K,GACV,OAKJ,GADAt5C,KAAKw5C,UAAY7K,GACZ3uC,KAAKw5C,UAEV,IACEx5C,KAAKs4C,kBAAkBmB,uBACtBz5C,KAAK+1C,oBAGN,YADA/1C,KAAKw5C,WAAY,GAInBx5C,KAAKw5C,UAAYx5C,KAAK01C,yBAGjBgE,2BACLlJ,GACAv7C,IAQA,OALE+K,KAAKo0C,wBAAwB3D,iCAC3BD,GACAv7C,IAMCskD,sBACL/I,GACAv7C,IAIA,OADE+K,KAAKo0C,wBAAwB7D,0BAA0BC,GAAYv7C,IAI1D0kD,oEACX,GAAI35C,KAAKo4C,aAAe7D,GAAaC,aAAc,OACnDx0C,KAAK45C,gBAIL,MAAMC,GAAa75C,KAAKu1C,YAAYv1C,KAAKw1C,YAmBzC,GAfAviD,OAAOC,KAAK8M,KAAKi4C,kCAAkCrlD,QAAQqC,YACzD,MAAMu7C,GAAahc,OAAOv/B,IAC1B,GAAI+K,KAAKi4C,iCAAiCzH,IAAYz+C,OAAS,EAA/D,CACE,MAAM+nD,GACyB,QAA7BC,QAAKC,gCAAwBl9B,iBAAEqyB,cAAcl4C,cAC3C,QAAUu5C,IAGG,MAAjBsJ,OAAmB1K,eAAe,CAChCC,SAAU,UAEZ,IAICwK,KAEL75C,KAAK41C,kBACA51C,KAAKw5C,WAEV,MAAKpB,YAAc7D,GAAa8D,WAEhC,IACE,MAAMpG,GAAYjyC,KAAKi6C,6BACjBj6C,KAAKm0C,cAAcrC,kBACvB9xC,KAAKiwB,sBAAsB2Q,eAC3B5gC,KAAK04C,gCAAiC,EACtC14C,KAAK61C,4BAA6B,EAClC5D,IAGFjyC,KAAKo4C,YAAc7D,GAAanV,UAChCp/B,KAAKuuB,SAASwG,aAAaC,GAAG2O,cAK9B,CAL8BA,MACvB3S,IAIP,OAHAhxB,KAAKo4C,YAAc7D,GAAaC,kBAChCvlB,QAAQ+B,MAAMA,GAEd,KAIIipB,uBACN,MAAMhI,GAAmD,GAEzD,UAAW9P,MAAYniC,KAAKs7B,UAC1B2W,GAAU9P,GAASlvB,IAAMkvB,GAASkT,mBAGpC,OAAOpD,oDAzcEgC,IAAep7C,8GAAfo7C,GAAe7lB,0KAFX,CAACsiB,GAAeP,MAAwBT,0MDpCzB5V,QAAAA,IAGYA,yDAAAA,IAImCA,kBAAAA,IAezCA,cAAAA,IA4EWA,wDAAAA,IAoBWA,2CAAAA,IAjEDA,8EAAAA,IAgBNA,4BAAAA,IAmBeA,2CAAAA,IAwCrBA,uDAAAA,IAgB4DA,kFAAAA,IAMlBA,sCAAAA,IACCA,uCAAAA,IACOA,yCAAAA,IA6BxBA,OAAAA,IAcFA,MAAAA,IAWVA,4CAAAA,IAKHA,YAAAA,IASxBA,yCAAAA,IAQwBA,WAAAA,IAQxBA,yCAAAA,IAY8DA,+BAAAA,IAoB9CA,QAAAA,IAW6BA,kCAAAA,IAU7CA,kCAAAA,IAUkCA,oCAAAA,IAUlCA,oCAAAA,IAUmCA,oCAAAA,IAeFA,kCAAAA,IAa+DA,OAAAA,IAcAA,MAAAA,IA4B9DA,2BAAAA,IAyBHA,wCAAAA,IAY/BA,mBAAAA,IAayCA,gCAAAA,IAiBzBA,QAAAA,IAYsBA,2DAAAA,IAa4DA,OAAAA,IAcAA,MAAAA,IA1HjEA,kCAAAA,IAiBsDA,QAAAA,IACCA,QAAAA,IAwBLA,QAAAA,IACCA,QAAAA,IAyF/CA,oCAAAA,IAUrCA,iBAAAA,IAsCmCA,2CAAAA,IASdA,mBAAAA,IAqBcA,2CAAAA,IAXwCA,yBAAAA,IAkB1BA,oBAAAA,goHAplBnFjhC,iBAAmD,cAAnDA,CAAmD,QAM/CA,WAAkCA,QAClCA,iBAAwB,UAAxBA,CAAwB,OAEpBA,WAA2FA,QAC3FA,iBAAiB,UAAjBA,CAAiB,WAAjBA,CAAiB,iBAKDA,4DAAuB,2BACbyQ,oBAAgBzQ,oBAQhDA,sBAAiC,WAAjCA,CAAiC,SAI7BA,aAA4CA,QAC5CA,mBAAsC,YAAtCA,CAAsC,aAGhCA,iBAGFA,YAGJA,kBAEAA,2BA6BFA,UAGFA,+BA6BAA,sBAAiC,WAAjCA,CAAiC,QAAjCA,CAAiC,WAG3BA,aAEAA,QAAQA,oBAA4BA,cAACA,UAEvCA,mBAAsC,YAAtCA,CAAsC,aAGhCA,iBAGFA,YAGJA,mBAAoD,YAApDA,CAAoD,cAApDA,CAAoD,eAIvCA,0FADPA,QAEAA,oBACFA,QACAA,2BAA2FA,gBAOnGA,+BAsZAA,+BA4BAA,+BA6BAA,sBACQA,gCAASyQ,2BACfzQ,2BAEAA,8BAEFA,UAEFA,sDA1lBkCA,iCAeVA,wCAkBTA,iIAOiBA,uCAgCpBA,kDAwCGA,kJAQ6CA,qDAWhDA,oCAsZAA,gEA4BAA,iEA8B8BA,yCACPA,oEAGrBA,kEAGYA,+rhECjjBZw8B,OAGD4e,IAAb,GA6cO,OAAKM,GAIX,MAJD,OAAYA,WAAY,KACtBA,kCACAA,iCACAA,+BAHUA,GAAZ,IAAYA,IAIX,oCEneK,gBACYnR,gBAAe,wBACfA,kBAAiB,GAAGtmB,GAAKo9B,8BAEzB9W,aAAY,GAAGtmB,GAAKo9B,yBACpB9W,iBAAgB,GAAGtmB,GAAKq9B,iBACxB/W,oBAAmB,GAAGtmB,GAAKq9B,oBAE3B/W,UAAS,GAAGtmB,GAAKo9B,sBACjB9W,cAAa,GAAGtmB,GAAKs9B,cACrBhX,iBAAgB,GAAGtmB,GAAKs9B,iBAExBhX,WAAU,GAAGtmB,GAAKo9B,uBAClB9W,eAAc,GAAGtmB,GAAKu9B,eACtBjX,kBAAiB,GAAGtmB,GAAKu9B,kBAEzBjX,UAAS,GAAGtmB,GAAKo9B,sBACjB9W,cAAa,GAAGtmB,GAAKw9B,cACrBlX,iBAAgB,GAAGtmB,GAAKw9B,iBAExBlX,cAAa,GAAGtmB,GAAKo9B,0BACrB9W,kBAAiB,GAAGtmB,GAAKy9B,kBACzBnX,qBAAoB,GAAGtmB,GAAKy9B,qBAE5BnX,mBAAkB,GAAGtmB,GAAKo9B,+BAE1B9W,YAAW,GAAGtmB,GAAK09B,2BACnBpX,gBAAe,GAAGtmB,GAAK29B,gBAEvBrX,UAAS,GAAGtmB,GAAK09B,yBAEjBpX,UAAS,GAAGtmB,GAAK09B,yBAGnC,MA0Ka3Q,GAAsC,CA1KV,CACvC9oC,KAAMqiC,GAAiB8W,aACvB3qB,IAAK,UACLiE,UAAU,EACVD,UAAWmnB,MAGoC,CAC/C35C,KAAMqiC,GAAiBuX,eACvBprB,IAAK,kBACLgE,UAAWqnB,IACX9lD,KAAM,CAAE65C,SAAS,IAIjB,CACE5tC,KAAMqiC,GAAiB+W,UACvB5qB,IAAK,yBACLgE,UAAWwU,MACXL,WAAYmT,MACZh/C,OAAQ,CACN20C,WAAY,CACVtzC,KAAM,MACNoG,SAAS,EACTnO,MAAO,KACPqyC,QAAQ,IAGZ1yC,KAAM,CAAE65C,SAAS,IAEnB,CACE5tC,KAAMqiC,GAAiB0X,cACvBvrB,IAAK,QACLgE,UAAWwnB,KAEb,CACEh6C,KAAMqiC,GAAiB4X,iBACvBzrB,IAAK,WACLgE,UAAW0nB,MAKb,CACEl6C,KAAMqiC,GAAiBgX,OACvB7qB,IAAK,UACLgE,UAAWwU,MACXL,WAAYwT,MACZpmD,KAAM,CAAE65C,SAAS,IAEnB,CACE5tC,KAAMqiC,GAAiB+X,WACvB5rB,IAAK,kDACLgE,UAAW6nB,IACXv/C,OAAQ,CACN20C,WAAY,CAAEltC,SAAS,EAAMnO,MAAO,KAAM+H,KAAM,QAChDm+C,aAAc,CAAE/3C,SAAS,EAAMnO,MAAO,MACtCmmD,cAAe,CAAEh4C,SAAS,EAAMnO,MAAO,OAEzCL,KAAM,CAAEymD,YAAa,WAEvB,CACEx6C,KAAMqiC,GAAiBoY,cACvBjsB,IAAK,WACLgE,UAAWkoB,IACX5/C,OAAQ,CACN/G,KAAM,CAAEymD,YAAa,YAMzB,CACEx6C,KAAMqiC,GAAiBiX,QACvB9qB,IAAK,WACLgE,UAAWwU,MACXL,WAAYgU,MACZ5mD,KAAM,CAAE65C,SAAS,IAEnB,CACE5tC,KAAMqiC,GAAiBuY,YACvBpsB,IAAK,kDACLgE,UAAWqoB,MAEb,CACE76C,KAAMqiC,GAAiByY,eACvBtsB,IAAK,WACLgE,UAAWuoB,MAKb,CACE/6C,KAAMqiC,GAAiBkX,OACvB/qB,IAAK,UACLgE,UAAWwU,MACXL,WAAYqU,MACZjnD,KAAM,CAAE65C,SAAS,IAEnB,CACE5tC,KAAMqiC,GAAiB4Y,WACvBzsB,IAAK,8BACLgE,UAAW0oB,KAEb,CACEl7C,KAAMqiC,GAAiB8Y,cACvB3sB,IAAK,WACLgE,UAAW4oB,KAKb,CACEp7C,KAAMqiC,GAAiBmX,WACvBhrB,IAAK,cACLgE,UAAWwU,MACXL,WAAY0U,MACZtnD,KAAM,CAAE65C,SAAS,IAEnB,CACE5tC,KAAMqiC,GAAiBiZ,eACvB9sB,IAAK,yCACLgE,UAAW+oB,IACXzgD,OAAQ,CACN20C,WAAY,CAAEtzC,KAAM,MAAOoG,SAAS,EAAMnO,MAAO,MACjDonD,WAAY,CAAEr/C,KAAM,MAAOoG,SAAS,EAAMnO,MAAO,KAAMqyC,QAAQ,GAC/DgV,OAAQ,CAAEl5C,SAAS,EAAMnO,MAAO,KAAMqyC,QAAQ,KAGlD,CACEzmC,KAAMqiC,GAAiBqZ,kBACvBltB,IAAK,WACLgE,UAAWmpB,KAKb,CACE37C,KAAMqiC,GAAiBqX,SACvBlrB,IAAK,YACLgE,UAAWwU,MACXL,WAAYiV,OAEd,CACE57C,KAAMqiC,GAAiBwZ,aACvBrtB,IAAK,QACLgE,UAAWwZ,IAKb,CACEhsC,KAAMqiC,GAAiBoX,gBACvBjrB,IAAK,mBACLgE,UAAWwU,MACXL,WAAYtE,GAAiBqX,SAC7B3lD,KAAM,CAAE65C,SAAS,IAEnB,CACE5tC,KAAMqiC,GAAiByZ,OACvBttB,IAAK,UACLgE,UAAWupB,MAEb,CACE/7C,KAAMqiC,GAAiB2Z,OACvBxtB,IAAK,UACLgE,UAAW0gB,IAaV+I,gIC3ODnkD,SACEA,eAOEA,qBACAA,2BAAwCA,UAE5CA,8BALKA,sCAJAA,kDAAkD,+CAAlDA,CAAkD,oDAMtBA,oEAAmD,gDAQhFA,SACEA,sBACFA,+BAD2BA,gEAG3BA,SACEA,sBACFA,+BAD+BA,0HARnCA,SACEA,eAAmDA,yCAASokD,EAATpvB,MAASovB,YAE1DpkD,gCAIAA,gCAIAA,6BAAiFA,UAErFA,gCAZyEA,sCAEtDA,qCAIAA,sCAIiBA,oDClBjC,IAAMqkD,EAAb,MAAM,QAYJp9C,cAXSE,kBAAuB,EACvBA,eAAoB,EAMnBA,gBAAa,IAAIm9C,MAG3Bn9C,UAAO01B,IAGPpD,WAAQ,CAER8qB,WACOp9C,KAAKnL,WAAamL,KAAKq9C,aAC1Br9C,KAAKs9C,WAAWC,qDAlBTL,8BAAqB9uB,uQDGM0L,UAAAA,GAeyCA,UAAAA,wYA5BjFjhC,qBACEA,gBACAA,iBAEEA,gCAaAA,gCAcFA,iBA3BiBA,uCAaAA,0j6DCPNqkD,GAAb,EAAaA,sICcTrkD,kBAAgE,cACtDA,oEAAiB,oCAAW0zC,EAAX1e,MAAW0e,gBAElC1zC,gCAAsEA,QACtEA,oBAAsBA,cAAEA,QACxBA,oBAAsBA,cAAEA,QACxBA,oBAAsBA,cAAEA,QACxBA,qBAAsBA,eAAEA,QACxBA,qBAAsBA,eAAEA,QACxBA,qBAAsBA,eAAEA,QACxBA,qBAAsBA,eAAEA,QACxBA,qBAAsBA,eAAEA,QACxBA,qBAAsBA,eAAEA,QACxBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,QACzBA,qBAAuBA,eAAEA,oCAjCnBA,gCAGEA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,6BACAA,uDAQRA,qBAAkDA,SAAQA,kCAAvBA,iBAAeA,4CAKxDA,iBAAuC,WAAvCA,CAAuC,aAEfA,SAAmBA,kCAAnBA,wEClEnB,IAAM2kD,EAAb,MAAM,QAgCJ19C,cA/BSE,mBAAsCy0C,EAAqBgJ,MAG3Dz9C,gBAAa,EAkBZA,gBAAa,IAAIm9C,MAE3Bn9C,WAAiB,KACjBA,SAAe,KACfA,UAAgB,KAGhBA,oBAAyB,EArBZ09C,SAAKvoD,GAChB,IAAKA,EAIH,OAHA6K,KAAK29C,IAAM,KACX39C,KAAK49C,MAAQ,UACb59C,KAAK69C,KAAO,MAId,IAAIH,GAAO,IAAIrpB,KAAKl/B,GACpB6K,KAAK29C,IAAU,MAAJD,QAAI,EAAJI,GAAMnH,UACjB32C,KAAK49C,OAAY,MAAJE,QAAI,EAAJA,GAAMlH,YAAa,EAChC52C,KAAK69C,KAAW,MAAJH,QAAI,EAAJI,GAAMjH,cAepBvkB,WACEtyB,KAAK+9C,gBACD/9C,KAAKg+C,WAAUh+C,KAAK29C,IAAM,GAGhCI,sBACE,IAAIE,IAAW,IAAI5pB,MAAOwiB,cACtBqH,GAAkB,GAClBC,GAAgB,EAChBC,EAA0B,QAAdC,OAAKD,iBAASthC,QAAImhC,GAC9BK,GAAYt+C,KAAKs+C,UAErB,OAAQt+C,KAAKu+C,oBACN9J,EAAqB+J,OACxBL,GAAgBr7C,KAAK6H,IAAI3K,KAAKm+C,eAAiB,IACtC,MAATG,QAAcG,EAAyBC,YACvC,WACGjK,EAAqBkK,KACxBR,GAAgBr7C,KAAK6H,IAAI3K,KAAKm+C,eAAiB,KAC/CC,GAAaD,GAAgB,EACpB,MAATG,QAAcG,EAAyBG,WACvC,WACGnK,EAAqBgJ,MACxBU,GAAgBr7C,KAAK6H,IAAI3K,KAAKm+C,eAAiB,KAE/CC,GADkBD,GAAgBr7C,KAAKiM,MAAMovC,GAAgB,GAEpD,MAATG,QAAcG,EAAyBC,YAI3CN,IAAcp+C,KAAK6+C,WACnBX,GAAQ,IAAIrnD,MAAMsnD,IAAejrD,QAAQ8B,IAAIqiD,IAAK+G,EAAY/G,IAE9DhN,IAAiBoU,EAAyBG,UACxCV,GAAMhkC,KAAK,CAAC4kC,GAAIC,IAAOA,EAAKD,IACnBR,IAAaG,EAAyBC,YAC/CR,GAAMhkC,KAAK,CAAC4kC,GAAIC,IAAOD,GAAKC,GAE9B/+C,KAAKk+C,MAAQA,GAGfc,cAEE,IAAIrB,EAAM39C,KAAK29C,IACXC,GAAQ59C,KAAK49C,MACbC,GAAO79C,KAAK69C,KAEhB,IAAKF,IAAQC,KAAUC,GACrB,OAGF,IAAIliB,GAAI,IAAItH,KAAKwpB,GAAMD,GAAQ,EAAGD,GAClC,GAAI39C,KAAK49C,OAASjiB,GAAEib,YAAcgH,GAAQ,EAGxC,OAFA59C,KAAKi/C,eAAgB,OACrBj/C,KAAKk/C,gBAAkBC,EAAiBC,aAI1CzjB,GAAE0jB,SAAS,EAAG,EAAG,EAAG,GACpB,IAAIC,EAAQ,IAAIjrB,KAGhB,OAFAirB,EAAMD,SAAS,EAAG,EAAG,EAAG,GAEpBr/C,KAAKu+C,eAAiB9J,EAAqB+J,QAAU7iB,GAAI2jB,GAC3Dt/C,KAAKi/C,eAAgB,OACrBj/C,KAAKk/C,gBAAkBC,EAAiBI,iBAItCv/C,KAAKu+C,eAAiB9J,EAAqBkK,MAAQhjB,GAAI2jB,GACzDt/C,KAAKi/C,eAAgB,OACrBj/C,KAAKk/C,gBAAkBC,EAAiBK,eAIpCx/C,KAAK6+C,YAMLY,IALmBprB,KACrBsH,GAAEkb,cAAgB72C,KAAK6+C,WACvBljB,GAAEib,WACFjb,GAAEgb,WAEe2I,GACjBt/C,KAAKi/C,eAAgB,OACrBj/C,KAAKk/C,gBAAkBC,EAAiBO,eAAexjD,QACrD,QACA8D,KAAK6+C,WAAWjtD,eAMtBoO,KAAKi/C,eAAgB,EACrBj/C,KAAKk/C,qBAAkBtqD,OACvBoL,KAAK2/C,WAAWpC,KAAK5hB,mDA9HZ6hB,8BAAmBpvB,+TDC6C0L,OAAAA,GAChBA,SAAAA,IACCA,UAAAA,IACHA,OAAAA,IACAA,OAAAA,GACFA,KAAAA,IACCA,MAAAA,IACAA,MAAAA,GACEA,QAAAA,GACGA,WAAAA,IACDA,SAAAA,IACCA,UAAAA,IACAA,UAAAA,IA6CaA,MAAAA,IAtCDA,KAAAA,6cAzB3EjhC,iBAA2D,UAA3DA,CAA2D,UAA3DA,CAA2D,cAI7CA,wDAAmB,2BAAWyQ,mBAEpCzQ,+BAA0EA,QAC1EA,+BAA4DA,QAC5DA,+BAA8DA,QAC9DA,iCAAwDA,QACxDA,kCAAwDA,QACxDA,kCAAoDA,QACpDA,kCAAsDA,QACtDA,kCAAsDA,QACtDA,kCAA0DA,QAC1DA,kCAAgEA,QAChEA,kCAA6DA,QAC7DA,kCAA+DA,QAC/DA,kCAA+DA,YAInEA,4BAsCAA,kBAAyF,eAC/EA,uDAAkB,2BAAWyQ,mBAEnCzQ,kCAAwEA,QACxEA,4BACFA,YAIJA,yBAKFA,eA1EwBA,oCAGfA,gEACKA,mCAGEA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,4BACAA,6BACAA,6BACAA,6BAI8BA,oCAsCrCA,gEACKA,kCAGmBA,mCAKbA,mg5DChEP2kD,GAAb,GAmIO,IAAK2B,EAMX,MAND,OAAYA,QAAgB,KAC1BA,wCACAA,0CACAA,8CACAA,mCACAA,oDALUA,EAAZ,IAAYA,GAMX,GAEW1K,EAIX,MAJD,OAAYA,QAAoB,KAC9BA,iBACAA,uBACAA,qBAHUA,EAAZ,IAAYA,GAIX,GAEWgK,EAGX,MAHD,OAAYA,QAAwB,KAClCA,2BACAA,+BAFUA,EAAZ,IAAYA,GAGX,EAHWA,oFCrJN,WACJhlB,EACAqS,uDAEMA,EAAqB9uB,QAG3B,IAAI2c,EAAOF,EAAqBE,KAEhCA,EAAK2B,UAAU1oC,QAAQuvC,GACrBA,EAASx0B,WAAW/a,QAAQ8xB,GAC1BonB,EAAqB8T,iBAAiBl7B,EAASm7B,iBAI7CpmB,EAAqByH,mBACzB,yBACAvH,EAAK2B,aAIH,WACJ7B,EACAqS,EACA0E,uDAEM1E,EAAqB9uB,MAAM,yBAGjC,IAAI2c,EAAOF,EAAqBE,KAC5BwI,EAAWqO,EACX7W,EAAK2B,UAAUl1B,KAAK8Q,GAAKA,EAAEjE,IAAMu9B,GACjC7W,EAAK2B,UAAU,IACd6G,IAELA,EAASjF,QAAQ4iB,UAAUltD,QAAQitD,GACjC/T,EAAqB8T,iBAAiBC,UAGlCpmB,EAAqByH,mBACzB,gCACA,CAACiB,EAASjF,aAIR,YACJzD,EACAqS,uDAEMA,EAAqB9uB,QAE3B,IAAI+iC,EAAkBtmB,EAAqBE,KAAKomB,gBAChDjU,EAAqB8T,iBAAiBG,EAAgBF,eAEhDpmB,EAAqByH,mBAAmB,4BAA6B,CACzE6e,oGCtDJ,IAAaC,EAAb,cAAkCrhB,OAArBqhB,GAAY,UADxB3gB,QAAgB,UACJ2gB,GAeb,IAAaC,GAAb,cAAkCthB,OAArBshB,IAAY,UADxB5gB,QAAgB,YACJ4gB,IAUb,IAAaC,EAAb,cAAiCvhB,OAApBuhB,GAAW,UADvB7gB,QAAgB,WACJ6gB,qFC1Bb,IAAaC,EAAb,cAA6BxhB,OAAhBwhB,GAAO,UADnB9gB,QAAgB,cACJ8gB,GAkBN,IAAKC,GAMX,MAND,OAAYA,UAAgB,KAC1BA,UACAA,qCACAA,sCACAA,cACAA,gBALUA,GAAZ,IAAYA,GAMX,EANWA,8FClBZ,IAAaC,EAAb,cAAmC1hB,OAAtB0hB,GAAa,UADzBhhB,QAAgB,WACJghB,GAUN,IAAKC,GAgBX,MAhBD,OAAYA,UAAU,KAEpBA,sCACAA,8BACAA,oBACAA,cAGAA,cACAA,mCACAA,oBACAA,iCAGAA,gBACAA,0CAfUA,GAAZ,IAAYA,GAgBX,GAEM,MAAM1U,EAAe,CAC1B0U,GAAWC,SACXD,GAAWE,QACXF,GAAWG,YACXH,GAAWI,6GCxBb,IAAaC,GAAb,cAA8BhiB,KAA9B7+B,kCA4BEE,wBAAyC,IAAI4gD,OAGzC,WAA6BtlB,GACjC,OAAOA,EAAUphB,KAAK,CAAC2mC,EAAIC,IAClBD,EAAG7e,MAAQ8e,EAAG9e,MAAQ,GAAI,GAChC,GAGC,WAA+B1G,GACnC,OAAO1B,EAAmB0B,GAAWroB,GAtC1B0tC,IAAQ,UADpBthB,QAAgB,cACJshB,GAsC0B1tC,mFCpCvC,IAAa8tC,EAAb,cAA6BpiB,KA4B3BqiB,cAEE,OADeC,GAAgBjhD,QAK7B,YAA0Bk9B,aAC9B,IAAIgkB,EAAY,CACI,QAAlBC,EAAO,MAAPC,OAAO,EAAPA,EAASjkB,iBAASrgB,QAAI,GACH,QAAnBukC,EAAO,MAAPD,OAAO,EAAPA,EAASE,kBAAUz4B,QAAI,GACN,QAAjB04B,EAAO,MAAPH,OAAO,EAAPA,EAAS/jB,gBAAQ5B,QAAI,IAIvBylB,SAAYA,EAAU94C,OAAOhH,GAAKA,GAEnB8/C,EAAUM,KAAK,KA5CnBT,GAAO,UADnB1hB,QAAgB,aACJ0hB,EA4CmB,oFC9ChC,IAAatiB,GAAb,cAA0BE,KAmBxB/E,qBACE,OAAOA,QAAmB55B,KAAKs7B,aApBtBmD,IAAI,UADhBY,QAAgB,SACJZ,+JCXN,IAAKM,EAYX,MAZD,OAAYA,QAAY,KACtBA,iBACAA,iBACAA,6BACAA,2BACAA,2BACAA,uCACAA,uBACAA,2BACAA,uBACAA,6BACAA,4BAXUA,EAAZ,IAAYA,GAYX,GASW0iB,EAKX,MALD,OAAYA,QAAwB,KAClCA,mCACAA,uDACAA,uBACAA,+BAJUA,EAAZ,IAAYA,GAKX,GAEWrU,GAKX,MALD,OAAYA,UAAa,KACvBA,uBACAA,yBACAA,uBACAA,qBAJUA,GAAZ,IAAYA,GAKX,GA8CWsU,EAIX,MAJD,OAAYA,QAA+B,KACzCA,yBACAA,2BACAA,2BAHUA,EAAZ,IAAYA,GAIX,GAmBWC,EAQX,MARD,OAAYA,QAAa,KACvBA,qBACAA,+BACAA,6BACAA,yBACAA,iCACAA,2BACAA,uBAPUA,EAAZ,IAAYA,GAQX,GAEWC,EAKX,MALD,OAAYA,QAA+B,KACzCA,uBACAA,iBACAA,eACAA,iCAJUA,EAAZ,IAAYA,GAKX,GAEWC,GAIX,MAJD,OAAYA,UAAQ,KAClBA,eACAA,wBACAA,4BAHUA,GAAZ,IAAYA,GAIX,GAEWC,GAUX,MAVD,OAAYA,UAAwB,KAClCA,qCACAA,mCACAA,yBACAA,yBACAA,iDACAA,uDACAA,sBACAA,wCACAA,gDATUA,GAAZ,IAAYA,GAUX,GAEWC,GAIX,MAJD,OAAYA,UAAiC,KAC3CA,uBACAA,+BACAA,yBAHUA,GAAZ,IAAYA,GAIX,GAEWzN,EAMX,MAND,OAAYA,QAAgC,KAC1CA,iBACAA,+BACAA,mBACAA,yBACAA,uBALUA,EAAZ,IAAYA,GAMX,GAEW0N,GAGX,MAHD,OAAYA,UAAkB,KAC5BA,eACAA,oBAFUA,GAAZ,IAAYA,GAGX,GAEWC,GAKX,MALD,OAAYA,UAAuB,KACjCA,uBACAA,iBACAA,eACAA,iCAJUA,GAAZ,IAAYA,GAKX,EALWA,mFCvJZ,IAAaC,EAAb,cAAqCvjB,OAAxBujB,GAAe,UAD3B7iB,QAAgB,oBACJ6iB,GA8Bb,IAAaC,GAAb,cAA4CD,IAA/BC,IAAsB,UADlC9iB,QAAgB,2BACJ8iB,6EC3BN,IAAMC,EAAb,MAAM,SACJtiD,YAAoBuiD,8BAEbC,wBAAwBC,GAC7B,OAAOviD,KAAKqiD,oBAAoBG,YAAYp/C,KAAKq/C,GAAKA,EAAEttD,OAASotD,GAG5DG,yBAAyBH,GAC9B,OAAOviD,KAAKqiD,oBAAoBM,UAAUv/C,KAAKq/C,GAAKA,EAAEttD,OAASotD,GAG1DK,0BACLC,EACAC,GAEA,QACEA,GAAmB9iD,KAAKqiD,oBAAoBU,mBAAmB5tD,QAC/D6K,KAAKqiD,oBAAoBW,kBAAkB5/C,KACzCq/C,GAAKA,EAAEttD,OAAS0tD,OAKlBC,GAAmB9iD,KAAKqiD,oBAAoBY,gBAAgB9tD,QAC5D6K,KAAKqiD,oBAAoBa,UAAU9/C,KAAKq/C,GAAKA,EAAEttD,OAAS0tD,IAQrDM,SAAStD,SACd,IAAKA,EAAS,MAAO,GAErB,IAAIuD,EAAmBpjD,KAAKqiD,oBAAoBG,YAAYp8C,KAC1Dq8C,GAAKA,EAAEttD,OAAS0qD,EAAQwD,YAGtBC,EAAgBtjD,KAAKqiD,oBAAoBM,UAAUv8C,KACrDq8C,GAAKA,EAAEttD,OAAS0qD,EAAQ0D,SAGtBC,EAAiBxjD,KAAKyjD,0BAA0B5D,GAEhD6D,EACF,GAAG7D,EAAQ8D,WAAa9D,EAAQ8D,WAAa,MAAQ,KAClD9D,EAAQ+D,aAAe/D,EAAQ+D,aAAe,IAAM,KACpD/D,EAAQgE,WAAahE,EAAQgE,WAAa,IAAM,KAChDT,EAAmBA,EAAiBU,aAAe,IAAM,KAClC,QAAvBzC,IAAQ0C,uBAAejnC,QAAI,OAC3B+iC,EAAQmE,KAAOnE,EAAQmE,KAAO,KAAO,KACrCR,EAAiBA,EAAeM,aAAe,KAAO,KACtDjE,EAAQoE,WAAapE,EAAQoE,WAAa,KAAO,KACjDX,EAAgBA,EAAcQ,aAAe,KAChDz0C,OAEF,OACmB,KAAjBq0C,GACiB,YAAjBA,GACiB,mBAAjBA,KAEAA,EAAgB,IAGXA,EAGFQ,cAAcrE,SACnB,IAAKA,EAAS,MAAO,GAErB,IAAIuD,EAAmBpjD,KAAKqiD,oBAAoBG,YAAYp8C,KAC1Dq8C,GAAKA,EAAEttD,OAAS0qD,EAAQwD,YAItBK,EACF,GAAG7D,EAAQ8D,WAAa9D,EAAQ8D,WAAa,MAAQ,KAClD9D,EAAQ+D,aAAe/D,EAAQ+D,aAAe,IAAM,KACpD/D,EAAQgE,WAAahE,EAAQgE,WAAa,IAAM,KAChDT,EAAmBA,EAAiBU,aAAe,IAAM,KAClC,QAAvBzC,IAAQ0C,uBAAejnC,QAAI,OAC9BzN,OAEF,OAAIq0C,EAAcS,SAAS,QACzBT,EAAgBA,EAAct3C,MAAM,GAAG,GAAM,KAE1B,KAAjBs3C,IACFA,EAAgB,IAGXA,EAGFU,aAAavE,GAClB,OAAY,MAAPA,OAAO,EAAPsB,EAASkD,UAEPb,KADmBC,0BAA0B5D,GAC9BiE,aAFS,GAKzBL,0BAA0B5D,GAChC,IAAIyE,EAAuC,KAC3C,OAAIzE,EAAQ0D,SAAWvjD,KAAKqiD,oBAAoBU,mBAAmB5tD,MACjEmvD,EAAqBtkD,KAAKqiD,oBAAoBW,kBAAkB58C,KAC9Dq8C,GAAKA,EAAEttD,OAAS0qD,EAAQwE,UAG1BxE,EAAQ0D,SAAWvjD,KAAKqiD,oBAAoBY,gBAAgB9tD,QAE5DmvD,EAAqBtkD,KAAKqiD,oBAAoBa,UAAU98C,KACtDq8C,GAAKA,EAAEttD,OAAS0qD,EAAQwE,WAGrBC,iDAjHElC,IAAoBvpD,wCAApBupD,GAAoBtpD,QAApBspD,GAAoB,qBAFnB,SAEDA,IAAb,EAAaA,yGCIN,IAAMmC,EAAb,MAAM,QAGJzkD,YAAoB+/B,0BAFZ7/B,YAAuB,KAI3B48B,YACF,OAAuB,OAAhB58B,KAAKwkD,OAAkB,KAAQvxD,iBAAK+M,KAAKwkD,QAGrCne,iBAAiBzL,iDAE5B,GAAI56B,KAAKwkD,QAAUxkD,KAAKwkD,OAAO5pB,WAAaA,EAC1C,OAAO56B,KAAK48B,MAGd,IAAIA,QAActL,OAChBtxB,KAAK6/B,gBAAgB4kB,YAA0BzE,KAAcplB,IAE/D,KAAU,MAALgC,OAAK,EAAL//B,EAAOggC,SAAS,OAAO,KAC5B78B,KAAKwkD,OAAS5nB,EAEd,IAAIM,QAAgB5L,OAClBsL,EAAM8nB,YAA0B,YAElC9nB,EAAMM,QAAUA,EAEhB,IAAIoQ,QAAehc,OAAcsL,EAAM8nB,YAAyB,WAChE9nB,SAAM0Q,OAASA,EAER1Q,kDA7BE2nB,GAAY1rD,0CAAZ0rD,EAAYzrD,QAAZyrD,EAAY,qBAFX,SAEDA,GAAb,EAAaA,sICJN,IAAMI,EAAb,MAAM,QACJ7kD,YACUoxB,EACA0O,EACAzO,GAFAnxB,gBACAA,oBACAA,kBAGJ0mC,+BAA+B5B,iDACnC,IAAKA,EAAc,OAEnB,IAAK7E,EAAiBC,SAA4BzN,SAChDnB,OAActxB,KAAK4/B,aAAaO,iBAAiBC,MAAKC,YAGxD,GADIH,IACCD,EAAiB,OAEtB,IAAI1Q,GAAM,GAAGvvB,KAAKkxB,SAASG,iDAAiDyT,UACvE3oC,GAAGyoD,UAAmBnyB,SACzBnB,OAActxB,KAAKmxB,WAAWxR,KAAK4P,GAAK,QAEtCq1B,IACF31B,QAAQ+B,MAAM4zB,oDArBPD,GAAuB9rD,gEAAvB8rD,EAAuB7rD,QAAvB6rD,EAAuB,YAAvBA,GAAb,EAAaA,+FCFP,QAQJ7kD,cAPQE,sBAAmB,IAAI5K,IAG3ByvD,iBACF,OAAO7kD,KAAK8kD,YAKdC,SAASC,GAAuB/vD,IAC9B+K,KAAKilD,iBAAiB3vD,IAAIL,GAAK+vD,IAMjCvX,SAAwCx4C,IAEtC,OADY+K,KAAKilD,iBAAiB5vD,IAAIJ,IAIxCiwD,mBACEC,IAIA,MADYC,IADKplD,KAAKilD,iBAAiB/iD,UACpBmjD,QAAQ3iD,IAAKA,GAAEwiD,mBAAmBC,KAIvDG,mBAAmBH,IACLnlD,KAAKklD,mBAAmBC,IAC9BvyD,QAAQ2yD,IAAKA,GAAEtW,YAGnBN,cAGF,MADcyW,IADGplD,KAAKilD,iBAAiB/iD,UAClBsjD,MAAM9iD,IAAKA,GAAEisC,SAIpC8W,UACEzlD,KAAK8kD,aAAc,EAEnBM,IADiBplD,KAAKilD,iBAAiB/iD,UAChCtP,QAAQ8P,IAAKA,GAAE+iD,yKCzBnB,IAAMjb,EAAb,MAAM,QA0CJ1qC,YACU+/B,GACA3O,GACAyf,GACQzF,GACRhR,GACDwrB,EACC5Z,EACQ6Z,EACR11B,IARAjwB,wBACAA,iBACAA,aACQA,0BACRA,yBACDA,6BACCA,4BACQA,mBACRA,8BA7CFA,WAAc,KAJlB48B,YACF,OAAO58B,KAAKwkD,OAIV7qB,WACF,OAAO35B,KAAK4lD,MAIVpY,4BACF,IAAKxtC,KAAK6lD,uBAAwB,CAChC,IAAIC,GAAc,IAAIC,EACtBD,GAAYf,SACV,IAAIiB,IAA6BF,GAAa9lD,MAC9CgmD,oBAGFF,GAAYf,SACV,IAAIkB,IAAwBH,GAAa9lD,MACzCimD,oBAGFH,GAAYf,SACV,IAAImB,IAAsBJ,GAAa9lD,MACvCkmD,oBAGFJ,GAAYf,SACV,IAAIrX,IAAsBoY,GAAa9lD,MACvC0tC,oBAGF1tC,KAAK6lD,uBAAyBC,GAEhC,OAAO9lD,KAAK6lD,uBAiBRpxC,KAAK0xC,kDACTnmD,KAAKwkD,OAAS2B,SACRnmD,KAAKqkC,cAKPA,uEACErkC,KAAKkrC,kBAAkBkb,eAC7BpmD,KAAK8rC,qBAAqBx3B,QAEC,QAA3BwgB,QAAK+wB,8BAAsB/oC,WAAE2oC,UAC7BzlD,KAAK6lD,uBAAyB,KAE9B7lD,KAAK4lD,MAAQ,OAGDrlB,kBACZ3F,GACAmF,GACAC,kDAEA,IACIQ,GAAe,IAAIC,KAAqBhC,IAD9B,GAAG7D,MAAaoF,MAAWD,MAEtCW,QAAQ,iBAAkB,CACzB7kC,OAAQ,CAAE8kC,KAAM3gC,KAAKiwB,sBAAsB2Q,kBAE5CF,QAAQ,4BACRA,QAAQ,qCAAsC,CAAEjlC,SAAS,IACzDilC,QAAQ,cACRA,QAAQ,sBACRA,QAAQ,SAAU,CAAEG,KAAM,UAC1BH,QAAQ,qBACRA,QAAQ,4BAA6B,CAAEG,KAAM,cAC7CH,QAAQ,cAAe,CAAEjlC,SAAS,IAClCilC,QAAQ,0BAA2B,CAAEjlC,SAAS,IAC9CilC,QAAQ,mCACRA,QAAQ,2BAA4B,CACnCjlC,SAAS,EACTolC,KAAM,iBAEPH,QAAQ,0BAA2B,CAClCjlC,SAAS,EACTolC,KAAM,gBAEPH,QAAQ,yBAA0B,CAAEjlC,SAAS,IAC7CilC,QAAQ,kCACRA,QAAQ,qCAAsC,CAAEG,KAAM,gBACtDH,QAAQ,mCAAoC,CAAEjlC,SAAS,IACvDilC,QAAQ,qBAAsB,CAAEjlC,SAAS,IACzCilC,QAAQ,sBAAuB,CAAEG,KAAM,aACvCH,QAAQ,gCAAiC,CAAEjlC,SAAS,IACpDilC,QAAQ,4BACRA,QAAQ,iCAAkC,CACzCjlC,SAAS,EACTolC,KAAM,sBAGV,YAAKC,aAAe,IAAIC,KAAaP,GAAcxgC,KAAK6/B,iBACjD7/B,KAAK8gC,eAGD8F,SACXhM,GACAmF,GACAC,wDAEMhgC,KAAKqkC,YACX,IAAIvD,SAAqB9gC,KAAKugC,kBAC5B3F,GACAmF,GACAC,KAEG7jC,GAAGkqD,SAAsB5zB,SAC5BzyB,KAAKk6B,iBAAiB4F,YAAY9/B,KAAKwkD,OAAQzkB,GAAUC,KAE3D,OAAIqmB,GACFp3B,QAAQ+B,MAAMq1B,GAGhBrmD,KAAK4lD,YAAc9kB,GAAaU,aAE1BxhC,KAAKkrC,kBAAkBob,cAActmD,MACpCA,KAAK4lD,QAKR5kB,SAAS9iB,GAAY+iB,wDACnBjhC,KAAK8gC,aAAaE,SAAS9iB,GAAM+iB,MAOnCC,mBAAmBD,GAAcE,wDAC/BnhC,KAAK8gC,aAAaI,mBAAmBD,GAAME,MAM7CC,qBAAqBH,GAAcI,wDACjCrhC,KAAK8gC,aAAaM,qBAAqBH,GAAMI,MAKrDC,aAAapjB,GAAY+iB,IACvB,OAAOjhC,KAAK8gC,aAAaQ,aAAapjB,GAAM+iB,IAK9CM,WAAWrjB,GAAY+iB,IACrB,OAAOjhC,KAAK8gC,aAAaS,WAAWrjB,GAAM+iB,IAG/B2D,cACXhK,GACAkK,GACAyhB,kDAEA,IAAIh3B,GAAM,GAAGvvB,KAAKkxB,SAASG,4BAA4BuJ,KACnDkK,KACFvV,IAAO,iBAAiBuV,MAG1B,IAAI0hB,GAAiB,CACnBC,qBAAqB,EACrBF,aAAcA,IAIZG,QAAgBp1B,OAClBtxB,KAAK2wC,KAAKhxB,KAAW4P,GAAKi3B,KAS5B,aANiBxmD,KAAK4mC,SACpB5mC,KAAK48B,MAAMhC,UACX8rB,EAAQ3mB,SACR2mB,EAAQ1mB,2DApMDwK,GAAoB3xC,iJAApB2xC,EAAoB1xC,QAApB0xC,EAAoB,qBAFnB,SAEDA,GAAb,EAAaA,uICTN,IAAMmc,EAAb,MAAM,QACJ7mD,YACUyuB,EACAo3B,EACA7Z,GAFA9rC,gBACAA,mBACAA,4BAWJsmD,cACJ7sB,uDAEMz5B,KAAKomD,eACXpmD,KAAKy5B,qBAAuBA,EAI5B,IAAImtB,EAAaltB,KAFUD,qBAAqBE,KAAKC,qBAEpB8I,cAC5BkkB,IAEL5mD,KAAK6mD,gBAAkB7mD,KAAK8rC,qBAAqB+E,cAC/C+V,GACA,GAEF5mD,KAAK8mD,yBAA2B9mD,KAAKuuB,SAASK,kBAAkBm4B,UAC9D,CAAEj4B,GAAI,4BACNztB,KACErB,KAAKgnD,aAITC,WAAW,IAAMjnD,KAAKgnD,eAGlBZ,6DACApmD,KAAK6mD,wBACD7mD,KAAK6mD,gBAAgB7pC,QAC3Bhd,KAAK8rC,qBAAqBob,YAAYlnD,KAAK6mD,gBAAgB5xD,KAC3D+K,KAAK6mD,gBAAkB,MAGrB7mD,KAAK8mD,2BACP9mD,KAAK8mD,2BACL9mD,KAAK8mD,yBAA2B,MAGlC9mD,KAAKy5B,qBAAuB,OAGxButB,+DACJ,IAAKhnD,KAAKy5B,qBAAsB,OAGhC,IAAIiJ,EAAehJ,KADQD,qBAAqBE,KAAKC,qBAClB8I,aAE/B7mC,IAA8B,QAArBsrD,OAAK54B,SAASoE,eAAO7V,eAAEjhB,SAAU,GAC1CurD,GAAY1kB,EAAa2kB,aAAa,oBAAqB,CAC7DjwD,KAAM,CACJm4B,IAAKyD,SAASsV,KAAK12C,WACnB2e,UAAWvQ,KAAKuuB,SAASoE,QAAQ20B,QAAQvmD,KACzCwmD,YAAaC,KAAKC,UAAU5rD,QAI3B6rD,GAAW32B,SAAa0B,UAAOnB,OAAc81B,KAClD,GAAIr2B,IAAQ22B,GAEV,YADA1nD,KAAK2nD,kBAKPjlB,EAAaC,MAAQD,EAAaC,OAAS,GAC3C,IAAIA,GAAQD,EAAaC,MACrBilB,GAAYjlB,GAAMklB,UACpBxtC,GACEA,EAAEytC,+BACFJ,GAAUI,gCAEG,GAAbF,GACFjlB,GAAMroC,OAAOstD,GAAW,EAAGF,IAE3B/kB,GAAMjvC,KAAKg0D,IAGb1nD,KAAK2nD,oBAGCI,qCAEN,IAAIC,EAAkBtuB,KADKD,qBAAqBE,KAAKC,qBACf8I,aAAaC,MACnD,OAAO3iC,KAAKioD,oBAAoBD,GAG1BC,oBACND,GAEA,IAAKA,EAAiB,MAAO,GAE7B,IAAIE,GAAgB,EACpB,QAASC,MAAkBH,EAAiB,CAC1C,IAAII,EAA2BpoD,KAAKqoD,cAClCF,GAAe53C,WAEjB23C,EAAgBplD,KAAKC,IAAImlD,EAAeE,GAM1C,OAHsBpoD,KAAK2lD,YAAY2C,gBACJJ,IAAkB,IACjBnnD,MAAQ,GAI9CsnD,cAAc93C,GACZ,OAAKA,EAGYg4C,KADU5C,YAAY2C,gBACNT,UAAUnlD,IACzC6N,EAAUrV,WAAWwH,GAAE3B,QAJF,EAUzBynD,0BAEE,IAAIC,EAAmBx4C,KADCse,SAASoE,QAAQ20B,QACLvmD,KAChC2nD,EACF1oD,KAAK+nD,sCAAwCU,EAE3CE,GAAoB3oD,KAAKqoD,cAAcI,GACvCG,GAAoB5oD,KAAKqoD,cAAcK,GAI3C,OAF2B5lD,KAAKC,IAAI4lD,GAAmBC,IASzDzd,eAAe56B,GAGb,OAAIk4C,KAFoBl6B,SAASoE,QAAQ20B,QACLvmD,MACZwP,GAKFy3C,KAHKvuB,qBAAqBE,KAAKC,qBACf8I,aAAaC,MAEbv/B,KAAKiX,GAAKA,EAAE9J,WAAaA,GAIzDo3C,kBAEN,IAGIY,EAAkBvoD,KAAK2lD,YAAY2C,gBACnCO,GAAuB7oD,KAAKwoD,0BAE5Bvd,GAA4BjrC,KAAKmrC,eACnC/H,sBAGFmlB,EAAgB31D,QAAQ,CAACk2D,GAAYh1C,KACnC,IAAIi1C,GAAkBj1C,GAAS+0C,GAC/BE,QAAoB9d,IAEpB6d,GAAWh0D,KAAKi0D,gBAAkBA,GAGlCD,GAAWh0D,KAAKk0D,WADCl1C,GAAS+0C,EACGG,GAUjCvmB,sBACEulB,EACAiB,EAAgB,IAEhB,IAAIP,EAAmB1oD,KAAKioD,oBAAoBD,GAC5CY,GAAoB5oD,KAAKqoD,cAAcK,GAEvCH,GAAkBvoD,KAAK2lD,YAAY2C,gBAOvC,OAFExlD,KAAKiM,MAJuBk6C,EAAgBV,GAAgBx2D,QAE5C62D,GAAoB,KAEiB,gDAxM9CjC,GAA8B9tD,8DAA9B8tD,EAA8B7tD,QAA9B6tD,EAA8B,qBAF7B,SAEDA,GAAb,EAAaA,+FCNN,IAAMlX,EAAb,MAAM,QAIJ3vC,YACUgsC,EACAod,GADAlpD,4BACAA,2BAERA,KAAK25B,KAAO35B,KAAKkpD,oBAAoBvvB,KAErC35B,KAAKmpD,oBAAsBnpD,KAAK8rC,qBAAqB+E,cACnD7wC,KAAK25B,MAIF0U,OACLruC,KAAKmpD,oBAAoBzX,QAGd10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDApBvByyB,GAAW52C,mDAAX42C,EAAW32C,QAAX22C,EAAW,qBAFV,SAEDA,GAAb,EAAaA,yGCAN,IAAM2Z,EAAb,MAAM,QAIJtpD,YACUgsC,EACArS,GADAz5B,4BACAA,4BAGJqpD,iEACEC,QACJtpD,KAAKy5B,qBACLz5B,KAAK8rC,sBAGP9rC,KAAKupD,uBACHvpD,KAAKy5B,qBAAqBE,KAAKomB,gBAAgBF,QAEjD7/C,KAAKwpD,+BACHxpD,KAAK8rC,qBAAqB+E,cAAc7wC,KAAKupD,0BAG1Clb,OACLruC,KAAKwpD,+BAA+B9X,QAGzB10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDA3BvBosC,GAA6BvwD,qDAA7BuwD,EAA6BtwD,QAA7BswD,EAA6B,qBAF5B,SAEDA,GAAb,EAAaA,+FCDN,IAAMK,EAAb,MAAM,QAIJ3pD,YACUopD,EACApd,GADA9rC,2BACAA,4BAERA,KAAK+/C,gBAAkB//C,KAAKkpD,oBAAoBvvB,KAAKomB,gBACrD//C,KAAK0pD,wBAA0B1pD,KAAK8rC,qBAAqB+E,cACvD7wC,KAAK+/C,iBAIF1R,OACLruC,KAAK0pD,wBAAwBhY,QAGlB10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDAnBvBysC,GAAsB5wD,mDAAtB4wD,EAAsB3wD,QAAtB2wD,EAAsB,qBAFrB,SAEDA,GAAb,EAAaA,qFCFN,IAAME,GAAb,MAAM,QAUJ7pD,YAAoB+lC,uBAEdrE,yEACExhC,KAAK6lC,aAAa+jB,oBAAoB,oBAC5C5pD,KAAKwiD,YAA8D,QAAhDnB,OAAKxb,aAAagkB,gBAAgB,sBAAc/sC,eAAEgtC,MACrE9pD,KAAK+pD,iBACkD,QAArDxI,OAAK1b,aAAagkB,gBAAgB,2BAAmBhhC,eAAEihC,MACzD9pD,KAAK2iD,UAA0D,QAA9CqH,OAAKnkB,aAAagkB,gBAAgB,oBAAYpuB,eAAEquB,MACjE9pD,KAAKgjD,kBACmD,QAAtDnmD,OAAKgpC,aAAagkB,gBAAgB,4BAAoBnuB,eAAEouB,MAC1D9pD,KAAKkjD,UAA0D,QAA9C+G,OAAKpkB,aAAagkB,gBAAgB,oBAAYK,eAAEJ,MAEjE9pD,KAAK+iD,mBAAqB/iD,KAAK2iD,UAAUv8C,KAAK+jD,GAAc,UAATA,EAAEl1D,KACrD+K,KAAKijD,gBAAkBjjD,KAAK2iD,UAAUv8C,KAAK+jD,GAAc,gBAATA,EAAEl1D,IAAO,iDAvBhD00D,GAA0B9wD,uCAA1B8wD,EAA0B7wD,QAA1B6wD,EAA0B,qBAFzB,SAEDA,GAAb,EAAaA,qFCAN,IAAMS,GAAb,MAAM,QAGJtqD,YAAoB+lC,uBAEdrE,iEACExhC,KAAK6lC,aAAa+jB,oBAAoB,YAC5C5pD,KAAKqqD,mBAAkF,QAA7DhJ,OAAKxb,aAAagkB,gBAAgB,mCAA2B/sC,eAAEgtC,MAAM5vC,KAAK,CAACjD,EAAGC,IAAMD,EAAEqzC,mBAAqBpzC,EAAEozC,oEAP9HF,GAA2BvxD,uCAA3BuxD,EAA2BtxD,QAA3BsxD,EAA2B,qBAF1B,SAEDA,GAAb,EAAaA,+FCAN,IAAMG,EAAb,MAAM,QAGJzqD,YAAoB+lC,uBAEdrE,iEACExhC,KAAK6lC,aAAa+jB,oBAAoB,WAC5C5pD,KAAKwqD,gBAAoE,QAAlD3tD,OAAKgpC,aAAagkB,gBAAgB,wBAAgB/sC,eAAEgtC,MAAM5vC,KAAK,CAACjD,EAAGC,IAAMD,EAAEqzC,mBAAqBpzC,EAAEozC,oEAPhHC,GAA0B1xD,yCAA1B0xD,EAA0BzxD,QAA1ByxD,EAA0B,qBAFzB,SAEDA,GAAb,iBCGO,IAAME,EAAb,MAAM,QACF3qD,YAAoBuiD,EACAqI,EACAC,GAFA3qD,2BACAA,2BACAA,2BAEdwhC,2DACExhC,KAAKqiD,oBAAoB7gB,aACzBxhC,KAAK0qD,oBAAoBlpB,aACzBxhC,KAAK2qD,oBAAoBnpB,SAGtBqe,cACP,OAAO7/C,KAAKqiD,oBAGLuI,eACP,OAAO5qD,KAAK0qD,oBAGLxtB,cACT,OAAOl9B,KAAK2qD,kEApBLF,GAAmB5xD,+DAAnB4xD,EAAmB3xD,QAAnB2xD,EAAmB,qBAFlB,SAEDA,GAAb,EAAaA,wGCDN,IAAMI,EAAb,MAAM,QAQJ/qD,YACUgsC,EACArS,GADAz5B,4BACAA,4BATFA,oBAAyB,EAE1BA,qBAAmC,IAAIkiD,IAS5CliD,KAAK4mC,WAPHkkB,mBACF,OAAO9qD,KAAK+qD,cASNnkB,WACN,QAAI5mC,KAAK+qD,gBAEL/qD,KAAKy5B,qBAAqBE,OAC5B35B,KAAKgrD,mCACLhrD,KAAK+qD,eAAgB,GAGhB/qD,KAAK+qD,eAGNC,mCACNhrD,KAAKirD,gBACHjrD,KAAKy5B,qBAAqBE,KAAKuY,uBAEjClyC,KAAKkrD,wBAA0BlrD,KAAK8rC,qBAAqB+E,cACvD7wC,KAAKirD,iBAIF5c,OACAruC,KAAK+qD,eACR/qD,KAAK4mC,WAEP5mC,KAAKkrD,wBAAwBxZ,QAGlB10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDA3CvB6tC,GAAsBhyD,qDAAtBgyD,EAAsB/xD,QAAtB+xD,EAAsB,qBAFrB,SAEDA,GAAb,EAAaA,+FCCN,IAAMrb,EAAb,MAAM,QAQJ1vC,YACUgsC,EACArS,GADAz5B,4BACAA,4BAERA,KAAKmrD,sBAAwBrf,EAE7B9rC,KAAKosC,SAAWpsC,KAAKy5B,qBAAqBE,KAAKyS,SAC/CpsC,KAAKorD,yBAA2BprD,KAAK8rC,qBAAqB+E,cACxD7wC,KAAKosC,UAGPpsC,KAAKk9B,QAAUl9B,KAAKy5B,qBAAqBE,KAAKyS,SAASlP,QACvDl9B,KAAKqrD,gBAAkBrrD,KAAK8rC,qBAAqB+E,cAC/C7wC,KAAKk9B,SAIFouB,2BACLtrD,KAAKk9B,QAAQC,eAAYvoC,EACzBoL,KAAKk9B,QAAQG,cAAWzoC,EACxBoL,KAAKk9B,QAAQokB,gBAAa1sD,EAC1BoL,KAAKk9B,QAAQmP,iBAAcz3C,EAC3BoL,KAAKk9B,QAAQoP,WAAQ13C,EACrBoL,KAAKk9B,QAAQquB,eAAY32D,EACzBoL,KAAKk9B,QAAQsuB,eAAY52D,EACzBoL,KAAKk9B,QAAQuuB,mBAAgB72D,EAC7BoL,KAAKuuC,sBAGAN,eACLjuC,KAAKorD,yBAAyB1Z,QAGzBnD,sBACLvuC,KAAKqrD,gBAAgB3Z,QAGV10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDA9CvBwyB,GAAe32C,mDAAf22C,EAAe12C,QAAf02C,EAAe,qBAFd,SAEDA,GAAb,EAAaA,mHCNP,SAMF1vC,YAAoBilC,iBALZ/kC,mBAAwB,EAM9B,IAAI0rD,GAAgB1rD,KAAK2rD,kBAAkBC,KAAK5rD,MAChD+kC,EAAO8mB,OAAO,IAAMH,MANlBI,kBACF,OAAO9rD,KAAK+rD,aAQNJ,oBAEN,GADA3rD,KAAK+rD,cAAe,EAChB/rD,KAAK+kC,OAAOinB,cACd,KAAM,wCAKN,QAUJlsD,cAJAE,oBAAyB,EAEzBA,eAA2B,GAGzBA,KAAKisD,OAAS,IAAIC,GAAkBlsD,MATlCqG,YACF,OAAOrG,KAAKisD,OAWdJ,OAAO73D,GACLgM,KAAKmsD,UAAUz4D,KAAKM,GAGtB0yB,SACE,QAAS1yB,KAAYgM,KAAKmsD,UACxBn4D,KC5BR,MAAMw+B,EAAa,CAAI45B,EAAYj3D,IAC1B,IAAIynB,QAAQC,IAAWoqC,WAAW,IAAMpqC,GAAQ1nB,GAAQi3D,IAG3D,QAeJtsD,cAdQE,sBAAsC,GACtCA,mBAA2B,OAC3BA,qBAA6B,OAC7BA,mBAAqC,OACrCA,qBAA6B,OAE7BA,qBAAmCqsD,EAAgBpxB,KACvDqxB,qBACF,OAAOtsD,KAAKusD,gBAQRlnC,MAASmnC,EAA4DjrD,4DACzE,GAAIvB,KAAKusD,kBAAoBF,EAAgBpxB,KAC3C,KAAM,4CAGR,IAAIwxB,GAA+B,CACjCC,aAAa,GAEfnrD,QAAY,IACZA,GAAUtO,OAAOqe,OAAO,GAAIm7C,GAAgBlrD,IAE5CvB,KAAKusD,gBAAkBF,EAAgBM,QACvC3sD,KAAK4sD,wBAA0B,IAAIC,EACnC7sD,KAAK4sD,wBAAwBZ,cAAkE,QAAlDc,GAAoB,QAApBh4B,GAAO,MAAPjC,QAAO,EAAPA,GAAS65B,mBAAW5vC,UAAI2vC,GAAeC,mBAAW7jC,WAC/F,IAAIkkC,GAAoB/sD,KAAK4sD,wBAAwBvmD,MACjD2mD,GAAqB,IAAIH,EAEzB7sD,KAAKitD,eAAejtD,KAAKitD,gBAG7B,IAAIC,EAAsBC,EADHJ,IACe/iC,KACpCzyB,KACEy1D,GAAmBtmC,SACnB1mB,KAAKusD,gBAAkBF,EAAgBe,SACnCptD,KAAKqtD,kBAAoBN,GAAkBjB,YACtC9rD,KAAKqtD,kBAEP91D,IAETy5B,KAGE,GAFAg8B,GAAmBtmC,SACnB1mB,KAAKusD,gBAAkBF,EAAgBe,SACnCptD,KAAKstD,cACP,OAAOttD,KAAKstD,cAAct8B,IAI1B,MAAMA,KAMJhxB,KAAKutD,gBAAgBP,GAAmB3mD,aAG1C6mD,EACNltD,KAAKusD,gBAAkBF,EAAgBpxB,OAG3BsyB,gBAAgBlnD,iDAC5B,QAASmnD,MAAmBxtD,KAAKytD,iBAAkB,CAejD,SAdMj7B,EAAWg7B,GAAgBpB,IAO7B/lD,EAAMylD,aAON4B,KAD0BnB,iBACJF,EAAgBM,QAAS,MACnD,GAAIa,GAAgBx5D,SAAU,CAC5B,IAAI25D,GAAiBH,GAAgBx5D,iBACf4oB,QAAQC,QAAQ8wC,QAW5CC,aACM5tD,KAAKusD,kBAAoBF,EAAgBM,UAGjB,QAA5B3pB,OAAK4pB,+BAAuB9vC,SAAE4J,SAC1B1mB,KAAK6tD,iBAAiB7tD,KAAK6tD,mBAGjCC,YAAY1B,EAAYp4D,IAEtB,YAAKy5D,iBAAiB/5D,KADiB,CAAE04D,KAAIp4D,cAEtCgM,KAGT/L,QAAQD,GACN,YAAKi5D,cAAgBj5D,EACdgM,KAGT+mD,UAAU/yD,GACR,YAAKq5D,gBAAkBr5D,EAChBgM,KAGT+tD,QAAQ/5D,GACN,YAAKs5D,cAAgBt5D,EACdgM,KAGTguD,OAAOh6D,GACL,YAAK65D,gBAAkB75D,EAChBgM,MAIJ,IAAKqsD,EAIX,MAJD,OAAYA,QAAe,KACzBA,iBACAA,yBACAA,2BAHUA,EAAZ,IAAYA,GAIX,uBC9IK,QACJvsD,cAYQE,aAAW7K,MACX6K,YAAUiuD,MAsBVjuD,mBAAe,EAlCrBA,KAAKkuD,QAAU,IAAItxC,QAAa,CAACC,EAASsxC,MACxCnuD,KAAK6c,QAAUA,EACf7c,KAAKmuD,OAASA,KAKd52D,aACF,OAAOyI,KAAKkuD,QAOHE,oBACT,OAAOpuD,KAAKquD,eAQJrnB,KAAKzxC,GACb,GAAIyK,KAAKquD,eACP,KAAM,gEAERruD,KAAKquD,eAAiB94D,EACtBA,EAAQgC,OACLyyB,KAAK70B,IAAS6K,KAAK6c,QAAQ1nB,KAC3B27B,MAAMC,IAAO/wB,KAAKmuD,OAAOp9B,KAI1Bu9B,kBACF,OAAOtuD,KAAKuuD,aAGRC,wDACJ,GAAIxuD,KAAKuuD,aACP,KAAM,8DAER,GAAIvuD,KAAKquD,eACP,KAAM,sEAERruD,KAAKuuD,cAAe,EACpB,IACE,IAAIp5D,QAAc6K,KAAKyuD,SACvBzuD,KAAK6c,QAAQ1nB,EAED47B,CAFC57B,MACN47B,GACP/wB,KAAKmuD,OAAOp9B,SAER/wB,KAAKzI,UASf,gBAAuCm3D,EACrC5uD,YAAmB6uD,GACjBrgD,QADiBtO,eAGHyuD,oFC9DX,IAAMG,GAAb,MAAM,gBDsEA,QAoBJ9uD,cAnBQE,cAAsB,GACtBA,4BAAoC,GACpCA,uBAA+B,GAY/BA,gBAAqB,EA2CrBA,yBAAqB,EA+CrBA,6BAA0D,GAe1DA,mBAAe,EApHnB6uD,uBAMF,YAAKC,0BAEE,IAAU9uD,KAAK+uD,mBAIpBC,eACF,OAAOhvD,KAAKivD,UAQdjtD,IAAIzM,GACF,GAAIA,EAAQ+4D,YAAa,KAAM,4CAI/B,GAAItuD,KAAKkvD,mBAGP,OAFAlvD,KAAKmvD,uBAAuBz7D,KAAK6B,QACjCyK,KAAKovD,iBAIPpvD,KAAK+uD,kBAAkBr7D,KAAK6B,GAC5ByK,KAAKovD,iBACLpvD,KAAKqvD,gBAGOC,oBAKZ,OAHEtvD,KAAKmvD,uBAAuBp9D,OAC5BiO,KAAK+uD,kBAAkBh9D,OACvBiO,KAAKuvD,SAASx9D,OAIlBsiB,QACErU,KAAKivD,WAAY,EAGnBO,SACExvD,KAAKivD,WAAY,EACjBjvD,KAAKyvD,kBAIOJ,8DACZ,IAAIrvD,KAAKkvD,mBAAT,CAUA,GARAlvD,KAAKkvD,oBAAqB,EAC1BlvD,KAAK8uD,0BAGL9uD,KAAK+uD,wBAA0B/uD,KAAK0vD,gBAGV1vD,KAAK+uD,kBAAkBh9D,OAAS,EACjC,CAEvB,IAAI49D,GAAiB3vD,KAAK+uD,kBAAkBa,QAC5C5vD,KAAK6vD,WAAWF,IAGlB3vD,KAAK8uD,0BACL9uD,KAAKkvD,oBAAqB,EAGtBY,KAD2Bf,kBAAkBh9D,OAAS,GACjCiO,KAAKqvD,eApBD,CAoBCA,GAGxBP,0BAGN9uD,KAAK+uD,kBAAkBr7D,QAAQsM,KAAKmvD,wBACpCnvD,KAAKmvD,uBAAyB,GAIhBO,8DACd,OAAO1vD,KAAK+uD,oBAGJK,iBAAc,CAKhBS,WAAWt6D,GACjByK,KAAKuvD,SAAS77D,KAAK6B,GACnByK,KAAKyvD,kBAIPM,iBAAiB/7D,GACf,YAAKg8D,wBAAwBt8D,KAAKM,GACb,KACnB,IAAIi8D,GAAgBjwD,KAAKgwD,wBAAwBv6D,QAAQzB,IACpC,GAAjBi8D,IACJjwD,KAAKgwD,wBAAwB11D,OAAO21D,GAAe,IAK/CC,oBAAoB36D,GAC1ByK,KAAKgwD,wBAAwBp9D,QAAQu3D,IAAKA,GAAE50D,IAIhCk6D,gEAGZ,GAFIzvD,KAAKgvD,UAELhvD,KAAKmwD,aAAc,OACvBnwD,KAAKmwD,cAAe,EAEpB,IAAIC,EAAcpwD,KAAKuvD,SAASx9D,OAAS,EACzC,GAAIq+D,EAAa,CACf,IAAIT,GAAc3vD,KAAKuvD,SAASK,QAEhC,UACQ5vD,KAAKqwD,eAAeV,IAC1B3vD,KAAKkwD,oBAAoBP,GAGpBt7C,CAHoBs7C,MAClB3+B,IACP/B,QAAQ+B,MAAMA,IACdhxB,KAAKqU,SAITrU,KAAKmwD,cAAe,EACpBC,EAAcpwD,KAAKuvD,SAASx9D,OAAS,EACjCq+D,GAAapwD,KAAKyvD,oBAGRY,eAAe96D,uDACvBA,EAAQi5D,YAYhBxxC,MAAM2xC,EAAkB,IACtB,IAAI2B,GAA2B,IAAIC,EAAyB5B,GAC5D,YAAK3sD,IAAiBsuD,IACfA,GAAyB/4D,SCpOlCuI,YAAoBqlC,IAClB72B,QADkBtO,yBAFZA,uCAAoC,IAQ5B0vD,qEAId,IAAIb,GAAmB7uD,KAAK6uD,iBACxB2B,GAAuC,EAEvCC,GACFzwD,KAAK0wD,2BAA2B7B,IAC9B8B,GAA+BF,GAAwB1+D,OAIvD6+D,GACFD,IAAgCH,GAKlC,KAAOI,IAAyB,CACQ,QAAtC/9B,QAAKg+B,yCAAiC/zC,SAAtC9c,KAAK6wD,kCAAsC,IAAIC,iBAC/C,MAAMC,EAAc/wD,KAAK6wD,kCAAkCG,OAE3D,UACQx+B,QAAWxyB,KAAKixD,kCAAmCF,EACzD,CADyDA,MACzDG,IAIEH,EAAYI,UACdnxD,KAAK6wD,kCAAoC,IAAIC,iBAI/CjC,GAAmB7uD,KAAK6uD,iBAExB2B,GAAuCG,GACvCF,GACEzwD,KAAK0wD,2BAA2B7B,IAClC8B,GAA+BF,GAAwB1+D,OACvD6+D,GACED,IAAgCH,GAQpC,UAHOxwD,KAAK6wD,kCAGRF,GAA+B,EAAG,CACpC,MAAMS,EAAwBX,GAAwB,GACtD,QAAS31D,EAAI,EAAGA,EAAI21D,GAAwB1+D,OAAQ+I,IAElDs2D,EAAsBC,MADDZ,GAAwB31D,IAI/C+zD,GAAiBv0D,OAAO,EAAGq2D,GAA+B,GAI5D,OAAO9B,KAGD6B,2BACN7B,IAEA,IAAI4B,GAA4D,GAC5Da,GAAqB,GACzB,QAAS/7D,MAAWs5D,GAAkB,CAEpC,KADqBt5D,cAAmBg8D,IACnB,MAErB,IAAIC,GAAej8D,GAInB,GADA+7D,QAAuBE,GAAav8D,KADZu8D,GAAav8D,KAEZq8D,GAAoB,MAE7Cb,GAAwB/8D,KAAK89D,IAE/B,OAAOf,GAGUrB,wBACqB,QAAtCv8B,QAAKg+B,yCAAiC/zC,WAAEmX,MAAM,aAGvBo8B,eAAe96D,wDAiBhCk8D,IAhBgBC,GACnB5D,YACC,EAEA,IAAO9tD,KAAKmlC,iBAAiBpB,MAAQF,UAEtCkqB,QAAQ,IAAO/tD,KAAKmlC,iBAAiBpB,MAAQF,YAC7CkjB,UAAU,KAEM/mD,KAAKmlC,iBAAiBpB,OAASF,UAC1B7jC,KAAKsvD,cAAgB,IAGzCtvD,KAAKmlC,iBAAiBpB,MAAQF,eAGhBxe,MAAM,KAAW2O,uCAEjC,aAAaz+B,GAAQi5D,+DAnHdI,GAAqB/1D,yCAArB+1D,EAAqB91D,QAArB81D,EAAqB,qBAFpB,SAEDA,GAAb,GA0HM,iBACIF,EAGR5uD,cACEwO,SAIE,gBAEIqjD,GACR7xD,YACU8xD,EACAC,GACQC,IAEhBxjD,QAJQtO,sBACAA,qBACQA,iBAKFyuD,uDACd,IAAIsD,EAAgB/xD,KAAK4xD,eAAevK,aAAarnD,KAAK6xD,aAAc,CACtEz6D,KAAM4I,KAAK8xD,WAGb,aAAaxgC,OAAcygC,MAIzB,iBAEIJ,GAKR7xD,YACkBgyD,EACTE,GACCC,IAER3jD,QAJgBtO,gBACTA,iBACCA,+BAPN/K,UACF,OAAOi9D,mBAA+BlyD,KAAK8xD,UAWpBrD,uDAEvB,GAAIzuD,KAAKgyD,UAAkD,IAAtC/+D,OAAOC,KAAK8M,KAAKgyD,UAAUjgE,OAAc,OAE9D,IAAIogE,EAAiBnyD,KAAKiyD,uBAAuBG,cAC/CpyD,KAAK8xD,SACL,CACE16D,KAAM4I,KAAKgyD,SACXK,aAAc,CACZ3xB,QAAS4xB,oBAKf,aAAahhC,OAAc6gC,KAG7Bd,MAAM97D,EAAkCyxC,IAAgB,GACtD,GAAIzxC,EAAQN,KAAO+K,KAAK/K,IACtB,KAAM,6CAERhC,OAAOqe,OAAOtR,KAAKgyD,SAAUz8D,EAAQy8D,UAOjChrB,IAAMzxC,EAAQyxC,KAAKhnC,OAIrB,iBAEI2xD,GACR7xD,YACkBgyD,EACRG,GACAp2D,GAAc,MAEtByS,QAJgBtO,gBACRA,+BACAA,eAKeyuD,uDACvB,IAAI8D,EAAkBvyD,KAAKiyD,uBAAuBO,eAChDxyD,KAAK8xD,SACL,CAAEj2D,OAAQmE,KAAKnE,SAEjB,aAAay1B,OAAcihC,qGChOxB,IAAMxmB,EAAb,MAAM,QACJjsC,YACU2yD,EACAR,GADAjyD,qBACAA,8BAGFA,wBAAmE,GACnEA,kCAAgE,GAEjEsU,QACL,QAASrf,KAAO+K,KAAK0yD,mBACnB1yD,KAAKknD,YAAYjyD,GAEnB+K,KAAK0yD,mBAAqB,GAC1B1yD,KAAK2yD,6BAA+B,GAG/B31C,MAAM2xC,EAAkB,IAC7B,OAAO3uD,KAAKyyD,cAAcz1C,MAAM2xC,GAG3BiE,SAA6B39D,GAClC,OAA2B+K,KAAK0yD,mBAAmBz9D,GAG9C47C,cACLihB,EACAe,GAA6B,GAE7B,IAAKf,EAAU,OACf,MAAM78D,EAAMi9D,mBAA+BJ,GAE3C,OADgB9xD,KAAK4yD,SAAS39D,IACd49D,EACP7yD,KAAKgC,IAAI8vD,GAEX9xD,KAAK4yD,SAAS39D,GAGhB+M,IAAwB8vD,GAC7B,MAAM78D,EAAMi9D,mBAA+BJ,GAC3C,GAAI9xD,KAAK0yD,mBAAmBz9D,GAAM,OAElC,MAAMgI,EAAU,IAAIi1D,IAClBJ,EACA9xD,KAAKyyD,cACLzyD,KAAKiyD,wBAEP,YAAKS,mBAAmBz9D,GAAOgI,EAExB+C,KAAK4yD,SAAS39D,GAGhB2qD,iBAAqCkS,GAC1C,MAAM78D,EAAMi9D,mBAA+BJ,GAC3C9xD,KAAKknD,YAAYjyD,GAGZiyD,YAAYjyD,UACF+K,KAAK0yD,mBAAmBz9D,KAED,QAAtC+0D,OAAK2I,6BAA6B19D,UAAI6nB,SAAEg2C,qBACjC9yD,KAAK2yD,6BAA6B19D,UAClC+K,KAAK0yD,mBAAmBz9D,kDA9DtB82C,GAAoBlzC,qDAApBkzC,EAAoBjzC,QAApBizC,EAAoB,qBAFnB,SAEDA,GAAb,EAAaA,gECTP,QAAuB3e,eACF2X,EAAWguB,GAAgB,GAClD,IAAIf,EAAgB,GACpB,QAASttC,KAAYqgB,EAEjBA,EAAOrgB,aAAqBzxB,UAC1B8xC,EAAOrgB,aAAqB2P,MAE1B0+B,IACFf,EAASttC,GAAYsuC,EAAiBC,QAAQluB,EAAOrgB,GAAWquC,IAGlEf,EAASttC,GAAYqgB,EAAOrgB,GAGhC,OAAOstC,cAIPh2D,EACAk3D,EACAhgE,EAAiB,KACjBigE,EAAyB,CAAC,WAE1B,IAAIC,EAAe,GACf,MAAJlgE,MAASD,OAAOC,KAAK8I,IACrB9I,EAAOA,EAAKkV,OAAOirD,IAAMF,EAAalpB,SAASopB,IAE/C,QAASp+D,KAAO/B,EAAM,CACpB,IAAIogE,EAAeJ,EAAQj+D,GAEvBs+D,EADyBt+D,IACRq+D,IAGrBF,EAAQn+D,GAAOq+D,GAEjB,OAAOF,GCtBL,QAQJtzD,YACU0zD,EACAf,EACAR,GAFAjyD,aACAA,qBACAA,8BAERA,KAAKyzD,KAAOvB,EAAgBwB,eAAeF,GAC3CxzD,KAAK2zD,kBAVI1+D,UACT,OAAO+K,KAAKyzD,2BAYmC3B,GAC/C,OAAOA,EAAS8B,OAAUC,KAAQvrB,KAG5BqrB,kBACN3zD,KAAK8zD,cAAgBd,UAAyBhzD,KAAKwzD,OAAO,GAE5D7zC,KACEkyC,EACAC,EAAgB,GAChBiC,GAAuB,GAEvB/zD,KAAK2zD,kBACL,IAAIp+D,EAAU,IAAIy+D,KAAoBh0D,KAAKwzD,MAAO3B,EAAcC,GAEhE,OAAIiC,GACF/zD,KAAKyyD,cAAczwD,IAAIzM,GAGlBA,EAITD,IAAI2+D,GACFj0D,KAAKwzD,MAAWS,EAIlBC,OAAOD,GACLj0D,KAAKwzD,MAAQvgE,OAAOqe,OAAOtR,KAAKwzD,MAAOS,GAGzCviB,MAAMqiB,GAAuB,GAC3B,IAAII,EAAOnB,OAAsBhzD,KAAK8zD,cAAe9zD,KAAKwzD,OAC1DxzD,KAAK2zD,kBAEL,IAAIp+D,EAAU,IAAIg8D,KAChBvxD,KAAKwzD,MACLW,EACAn0D,KAAKiyD,wBAGP,OAAI8B,GACF/zD,KAAKyyD,cAAczwD,IAAIzM,GAGlBA,EAGT0iB,OAAOpc,EAAc,KAAMk4D,GAAuB,GAChD,IAAIx+D,EAAU,IAAI6+D,KAChBp0D,KAAKwzD,MACLxzD,KAAKiyD,uBACLp2D,GAGF,OAAIk4D,GACF/zD,KAAKyyD,cAAczwD,IAAIzM,GAGlBA,EAGTynB,MAAM2xC,EAAkB,IACtB,OAAO3uD,KAAKyyD,cAAcz1C,MAAM2xC,IAMErmB,6FC/FtC,SAQExoC,YAAmBu0D,cACjB,IAAIC,EAAYD,EAAIh2D,MAAM,KAK1B,GAHA2B,KAAKu0D,MAAQ,IAAID,GAAWviE,OAC5BiO,KAAKe,KAAO,IAAIuzD,GAAWE,MAEvBx0D,KAAKu0D,MAAQ,EAAG,CAClB,IAAIE,EAAY,IAAIH,GAAWloD,MAAM,GAAG,GAAIo1C,KAAK,KACjDxhD,KAAK5J,OAAS,IAAIs+D,GAASD,kBAfjBxzB,GACZ,OAAIA,aAAgByzB,GAAiBzzB,EAC9B,IAAIyzB,GAASzzB,GAiBtB0zB,iBAAiBJ,GACf,IAAIK,EAAW50D,KAAKu0D,MACpB,GAAIA,EAAQ,EACV,KAAM,6CAA6Cv0D,KAAKq0D,MAC1D,GAAIE,EAAQK,EACV,KAAM,sCAAsCL,cAAkBv0D,KAAKq0D,gBAAgBO,YAErF,IAAIC,EAAgC70D,KACpC,QAAS27B,GAAIi5B,EAAW,EAAGj5B,IAAK44B,EAAO54B,KACrCk5B,EAAsBA,EAAoBz+D,OAE5C,OAAOy+D,EAGTC,QAAQ7zB,GACN,OAAOjhC,KAAKq0D,KAAOpzB,EAAKozB,KA7BHK,QAAiB,IAAIA,GAAS,KAkDjD,QACJ50D,YACSi1D,EACAC,EACAzzD,GAFAvB,uBACAA,eACAA,eAGOA,mBAA4C,GAE5D0gC,QACEO,EACA1/B,GAEA,IAAI0zD,EAAe,IAAIC,EAAyBj0B,EAAM1/B,GACtD,YAAK4zD,cAAczhE,KAAKuhE,GACjBj1D,KAGTo1D,wBAAwBn0B,GACtB,OAAOjhC,KAAKm1D,cAAc/uD,KAAK+jD,GAAKA,EAAElpB,KAAKozB,KAAOpzB,GAGpDo0B,sBAAsBp0B,GAMpB,OALyBjhC,KAAKm1D,cAAc/sD,OAAOhH,IACjD,IAAIk0D,GAAiBl0D,EAAE6/B,KAAK7qC,OAC5B,QAAKk/D,IACEA,GAAeR,QAAQ7zB,EADF,IAO5B,QAGJnhC,YAAYmhC,EAAqB1/B,kBAC/BvB,KAAKihC,KAAO,IAAIyzB,GAASzzB,IAIvB,QACJnhC,YACUy1D,EACAtD,GADAjyD,gBACAA,8BAGJwhC,qDAQJ,IAAIswB,QAAiB0D,IAPQC,EAC3Bz1D,KAAKiyD,uBACLjyD,KAAKu1D,SAASR,gBACd/0D,KAAKu1D,SAASP,QACdh1D,KAAKu1D,SAASh0D,SAGwBigC,OAEpCH,EAAY,CAACywB,GAEjB,aAAM9xD,KAAKohC,qBAAqBszB,GAASgB,KAAMr0B,GAExCywB,IAGK6D,2BACZx0B,EACAy0B,iDAEA,IAAIC,EAAwD,GAC5D,QAASC,MAAqBF,EAC5B,QAASx/D,MAAU+qC,EAAS,CAM1B,IAAI40B,GAA6BC,IALDC,EAC9B7/D,GACA0/D,GAAkB70B,KAClB60B,GAAkBv0D,SAEmCigC,OACvDq0B,EAA4BniE,KAAKqiE,IAKrC,IAAIG,GAAwC,GAC5C,QAASH,MAA8BF,EAA6B,CAClE,IAAIM,SAAqBJ,GACzB,IAAKI,GAAc,SACnB,IAAIC,EAA4Bp2D,KAAKohC,qBACnC+0B,GAAal1B,KACbk1B,GAAa90B,WAEf60B,GAAqBxiE,KAAK0iE,SAEtBx5C,QAAQy5C,IAAIH,MAKdl1B,SAAS9iB,EAAqB+iB,iDAClC,IAAIE,EAAUnhC,KAAKuhC,WAAWrjB,EAAM+iB,SAC9BjhC,KAAKkhC,mBAAmBD,EAAME,KAOhCD,mBAAmBD,EAAcE,iDACrC,IAAI20B,EAAoB91D,KAAKu1D,SAASH,wBAAwBn0B,SACxDjhC,KAAK21D,2BAA2Bx0B,EAAS,CAAC20B,MAM5C10B,qBACJH,EACAI,iDAEA,IAAIi1B,EAAW5B,GAAS3nD,OAAOk0B,GAC3B20B,GAAqB51D,KAAKu1D,SAASF,sBAAsBiB,SACvDt2D,KAAK21D,2BAA2Bt0B,EAAWu0B,MAYnDt0B,aACEpjB,EACA+iB,GAEA,IAAIs1B,EAAc7B,GAASgB,KACvBc,GAAa,IAAI9B,GAASzzB,GAE9B,OAAOjhC,KAAKy2D,kBACVF,EACAC,GAHY,CAACt4C,GAIbijB,CAIIs1B,kBACNx1B,EACAu1B,EACAr1B,GAEA,IAAIu1B,GAAez1B,EAAKszB,MAIxB,GAAImC,IAHcF,EAAWjC,MAGI,OAAOpzB,EAExC,IACIw1B,EAAWH,EAAW7B,iBADV+B,GAAe,GAI3BE,GAA2B,GAC/B,QAASxgE,KAAU+qC,EAAS,CAC1B,IAAI01B,EAAazgE,EAAOugE,EAAS51D,MACjC,IAAK81D,EAAY,SACjB,IAAIC,GAAcjgE,MAAM4E,QAAQo7D,GAAcA,EAAa,CAACA,GAC5DD,GAASljE,QAAQojE,IAKnB,OADmB92D,KAAKy2D,kBAAkBE,EAAUH,EAAYI,IAIlEr1B,WACErjB,EACA+iB,GAGA,IAAI81B,GAAaC,IADGtC,GAASzzB,GACF7qC,OAC3B,OAAO4J,KAAKshC,aAAapjB,EAAM64C,GAAW1C,MAI9C,QACEv0D,YACUmyD,EACA8C,EACAC,EACAzzD,IAHAvB,8BACAA,uBACAA,eACAA,gBAGJwhC,6DACJ,IAAIy1B,EAAYj3D,KAAKiyD,uBAAuBxN,YAC1CzkD,KAAK+0D,gBACL/0D,KAAKg1D,QACL,CACEkC,SAAsB,QAAZ/P,OAAK5lD,eAAOub,eAAEo6C,SACxBC,QAAqB,QAAZC,OAAK71D,eAAOsnB,eAAEsuC,UAK3B,aADqB7lC,OAAc2lC,MAKvC,QACEn3D,YAAmBuhC,EAAkCJ,GAAlCjhC,iBAAkCA,aAGvD,QACEF,YACU1J,EACA6qC,EACA1/B,GAFAvB,cACAA,YACAA,eAGJwhC,6DACJ,IAAIqwB,GAA2B,QAAZ1K,OAAK5lD,eAAOub,eAAE+jB,OAAQ7gC,KAAKihC,KAAKlgC,KAEnD,OAAgB,QAAZq2D,OAAK71D,eAAOsnB,eAAEptB,eACHuE,KAAKq3D,sBAAsBxF,SAE7B7xD,KAAKs3D,YAAYzF,KAGxB0F,iBAAiBh2D,cACvB,IAAI21D,GAAiC,QAAtB7Y,EAAY,QAAZ+Y,OAAK71D,eAAOub,eAAEo6C,gBAAQruC,SACjChtB,GAAqB,QAAZiiD,QAAKv8C,eAAOk6B,iBAAE5/B,OAE3B,OAAKq7D,KACHr7D,GAASA,IAAU,GACnBA,GAAO27D,SAAUC,UAEZ57D,GAGKw7D,sBAAsBxF,4DAClC,IAAK7xD,KAAK5J,OAAOshE,YAAY7F,GAAe,OAAO,KAEnD,IAAIqF,GAAiC,QAAtB7Y,EAAY,QAAZ+Y,OAAK71D,eAAOub,eAAEo6C,gBAAQruC,SACjChtB,GAASmE,KAAKu3D,iBAAiBv3D,KAAKuB,SAEpCo2D,EAAW33D,KAAK5J,OAAOwhE,qBAAqB/F,EAAc,CAC5DqF,YACAr7D,UACAs7D,QAAqB,QAAZrZ,QAAKv8C,eAAOk6B,iBAAE07B,UAErBU,SAAgBvmC,OAAcqmC,GAGlC,YAAKvhE,OADc4J,KAAKihC,KAAKlgC,MACD82D,GAAQx2B,UAE7B,IAAIy2B,EAAcD,GAAQx2B,UAAWrhC,KAAKihC,QAGrCq2B,YAAYzF,4DACxB,IAAK7xD,KAAK5J,OAAOshE,YAAY7F,GAAe,OAAO,KAEnD,IAAIqF,GAAiC,QAAtB7Y,EAAY,QAAZ+Y,OAAK71D,eAAOub,eAAEo6C,gBAAQruC,SACjChtB,GAASmE,KAAKu3D,iBAAiBv3D,KAAKuB,SAEpCo2D,EAAW33D,KAAK5J,OAAOsuD,YAAYmN,EAAc,CACnDqF,YACAr7D,UACAs7D,QAAqB,QAAZrZ,QAAKv8C,eAAOk6B,iBAAE07B,UAGrBrF,SAAiBxgC,OAAcqmC,GAGnC,YAAKvhE,OADc4J,KAAKihC,KAAKlgC,MACD+wD,GAErB,IAAIgG,EAAc,CAAChG,IAAW9xD,KAAKihC,uGCzUvC,IAAM82B,EAAb,MAAM,QAaJj4D,YAAoB25B,+BAZZz5B,gBAAamnC,EAAW6wB,QAKxBh4D,WAAQi4D,GAAWC,MAJvBhxB,gBACF,OAAOlnC,KAAKm4D,WAIVC,WACF,OAAOp4D,KAAKq4D,MAOd9xB,SAASW,GACPlnC,KAAKm4D,WAAajxB,EAClBlnC,KAAKs4D,mBAGPC,QAAQH,GACNp4D,KAAKq4D,MAAQD,EACbp4D,KAAKs4D,mBAGPA,6BACEt4D,KAAK6X,YAAY7X,KAAKme,WAEtB,IAAI8oB,EAAoBjnC,KAAKm4D,WACzBn4D,KAAKm4D,YAAchxB,EAAWqxB,YAChCvxB,EAAsD,QAA1CpqC,EAAgC,QAAhCmtD,EAAyB,QAAzBzI,OAAK9nB,4BAAoB3c,eAAE8f,aAAK/T,eAAE4vC,gBAAQh9B,eAAE3+B,eAI1DmqC,MAAcE,EAAW6wB,SAEzBh4D,KAAKme,UAAY,GAAG8oB,WAAmBjnC,KAAKq4D,QAC5Cr4D,KAAKkW,SAASlW,KAAKme,WAGbtG,YAAYsG,IACbA,GACLzsB,SAAS0F,KAAK2lB,UAAU0G,OAAOtF,GAGzBjI,SAASiI,GACVzsB,SAAS0F,KAAK2lB,UAAUnmB,SAASunB,IACpCzsB,SAAS0F,KAAK2lB,UAAU/a,IAAImc,iDA/CrB45C,GAAYl/D,uCAAZk/D,EAAYj/D,QAAZi/D,EAAY,qBAFX,SAEDA,GAAb,GAoDO,IAAKE,GAGX,MAHD,OAAYA,UAAU,KACpBA,cACAA,cAFUA,GAAZ,IAAYA,GAGX,GAEW9wB,EAMX,MAND,OAAYA,QAAU,KACpBA,kBACAA,YACAA,YACAA,UACAA,wBALUA,EAAZ,IAAYA,GAMX,EANWA,kDCxDN,gBCAA,QAOJrnC,YAA4BgmD,wBAJpB9lD,mBAAgB,IAAI5K,IAEpB4K,iCAA8C,GAItD04D,WAGE,MADYC,IADS34D,KAAK44D,cAAc12D,UACjBmjD,QAAQhiD,GAAKA,EAAEw1D,OAIxCC,kBAGE,MADmBH,IADE34D,KAAK44D,cAAc12D,UACVmjD,QAAQhiD,GAAKA,EAAE20C,cAI/C+gB,gBAGE,MADiBJ,IADI34D,KAAK44D,cAAc12D,UACZmjD,QAAQhiD,GAAKA,EAAE21D,YAI7C9T,mBACEC,IAMA,MAHYwT,IADS34D,KAAK44D,cAAc12D,UACjBmjD,QAAQhiD,GAC7BA,EAAEw1D,MAAMzwD,OAAOm9C,GAAKJ,GAAcI,EAAE7lD,YAKxC4lD,mBAAmBH,IACLnlD,KAAKklD,mBAAmBC,IAC9BvyD,QAAQ2yD,GAAKA,EAAEtW,YAGvBA,WACmB,IAAIjvC,KAAK44D,cAAc12D,UAC7BtP,QAAQyQ,GAAKA,EAAE4rC,YAIxBN,cACF,OAAO3uC,KAAKi5D,SAGJC,aAAajkE,IAErB,OADmB+K,KAAKm5D,aAAalkE,IAErB+K,KAAK44D,cAAcvjE,IAAIJ,IADb,KAKlBmkE,aAAankE,GAAam7C,GAElC,GADmBpwC,KAAKm5D,aAAalkE,IAEnC,KAAM,sBAAsBA,gDAE9B+K,KAAK44D,cAActjE,IAAIL,GAAKm7C,GAC5B,IAAIipB,EAA6BjpB,EAAUkpB,eAAelpB,GACxDpwC,KAAKu5D,sBAAsBnpB,IAE7B,YAAKopB,4BAA4B9lE,KAAK2lE,GACtCr5D,KAAKy5D,wBACErpB,EAGCspB,gBAAgBzkE,KACL+K,KAAKm5D,aAAalkE,MAErC+K,KAAK44D,cAAc3gD,OAAOhjB,IAC1B+K,KAAKy5D,yBAGGN,aAAalkE,IACrB,OAAO+K,KAAK44D,cAAcv5D,IAAIpK,IAGxBwkE,wBAEN,IAAI9qB,EAAUgqB,IADO34D,KAAK44D,cAAc12D,UACfsjD,MAAMniD,GAAKA,EAAEsrC,SAClC3uC,KAAK2uC,SAAWA,IAEpB3uC,KAAKi5D,SAAWtqB,EAChB3uC,KAAK25D,uBAGCJ,sBAAsBnpB,IAC5BpwC,KAAKy5D,wBAIGE,sBAAmB,CAE7BlU,UACEzlD,KAAKw5D,4BAA4B5mE,QAAQu3D,IAAKA,QDlGhDrqD,YACEgmD,GACmBrsB,EACnBmgC,GAEAtrD,MAAMw3C,IAHa9lD,4BAMnB,IAAI65D,EAAclU,EADqBA,YACT2C,gBAC9BtoD,KAAK8oD,WAAa+Q,EAAYzzD,KAAK1D,GAAKA,EAAE3B,MAAQ64D,GAGjCD,sBACjB,IAAK35D,KAAK8oD,WAAY,OAMtB,IAAIgR,EAAuBp6D,KAJHo5D,kBACuC9jE,IAC7DuwD,GAAKA,EAAE7lD,UAE2B0D,KAAKvG,GAAKA,EAAEk9D,YAChD/5D,KAAK8oD,WAAWh0D,KAAK65C,SAAWmrB,sDE3B9B,gBCDA,QAuBJh6D,YACkB7K,EACAyK,GADAM,WACAA,gBAxBVA,eAAW,EAKXA,oBAAgB,EAKhBA,2BAA2D,GAT/D2uC,cACF,OAAO3uC,KAAKi5D,SAIVe,mBACF,OAAOh6D,KAAKi6D,cAIdX,eAAetlE,GACb,YAAKkmE,sBAAsBxmE,KAAKM,GAEZ,KAClB,IAAIi8D,EAAgBjwD,KAAKk6D,sBAAsBzkE,QAAQzB,IAClC,GAAjBi8D,GACJjwD,KAAKk6D,sBAAsB5/D,OAAO21D,EAAe,IAUrDhhB,WACEjvC,KAAKi6D,eAAgB,EACrB,IAAItrB,EAAU3uC,KAAKm6D,aACnB,YAAKC,gBAAgBzrB,GACdA,EAKDyrB,gBAAgBC,GACtB,GAAIr6D,KAAKi5D,UAAYoB,EACrB,MAAKpB,SAAWoB,EAGhB,QAASC,KAAuBt6D,KAAKk6D,sBACnCI,EAAoBt6D,SDlCxBF,YACUy6D,EACRtlE,EACQulE,EACR96D,GAEA4O,MAAMrZ,EAAKyK,GALHM,aAEAA,sBAMSm6D,aACjB,IAAKn6D,KAAKy6D,iBAAkB,OAAO,EAEnC,IAAIC,GAAiB,EAIrB,GAHI16D,KAAK26D,0BACPD,EAAiB16D,KAAK26D,wBAAwB36D,KAAKu6D,MAAM/G,SAEtDkH,EAAgB,OAAO,EAE5B,IAAIE,EAAa56D,KAAKw6D,eAAex6D,KAAKu6D,MAAM/G,OAGhD,OAFcxzD,KAAKy6D,iBAAiBG,GAKtCC,KACEC,GAEA,GAAI96D,KAAKy6D,iBACP,KAAM,sDAER,YAAKA,iBAAmBK,EACjB96D,KAGT+6D,KACED,GAEA,GAAI96D,KAAK26D,wBACP,KAAM,sDAER,YAAKA,wBAA0BG,EACxB96D,MEjDL,iBCDA,QAsBJF,cArBQE,cAAW,IAAI5K,IAEf4K,mBAAiC,GAKjCA,iBAA+B,GAyE/BA,2BAA4D,GA7EhEg4C,mBACF,OAAOh4C,KAAKg7D,cAIVhC,iBACF,OAAOh5D,KAAKi7D,YAIVtsB,cACF,OAAO3uC,KAAKi5D,SAGVJ,YACF,MAAO,IAAI74D,KAAKk7D,SAASh5D,UAKjBi5D,QAAQpsB,EAAqB95C,GACrC85C,EAAKuqB,eAAevqB,GAAQ/uC,KAAKo7D,iBAAiBrsB,IAClD/uC,KAAKk7D,SAAS5lE,IAAIL,EAAK85C,GACvB/uC,KAAKo7D,iBAAiBrsB,GAGjBC,QAAQ/5C,GACb,OAAO+K,KAAKk7D,SAAS7lE,IAAIJ,GAG3Bg6C,SAASh6C,GACP,IAAIomE,EAKFA,EAFEpmE,EAEgB,CADP+K,KAAKgvC,QAAQ/5C,IAGN,IAAI+K,KAAKk7D,SAASh5D,UAGtC,QAAS6sC,KAAQssB,EACftsB,EAAKE,WAICmsB,iBAAiBrsB,GAEzB,IAAIusB,EAAiBt7D,KAAKg4C,aAAaviD,QAAQs5C,GAC3CA,EAAKJ,UAA6B,GAAlB2sB,GAClBt7D,KAAKg4C,aAAa19C,OAAOghE,EAAgB,GAI3C,IAAIC,EAAev7D,KAAKg5D,WAAWvjE,QAAQs5C,IACtCA,EAAKJ,UAA2B,GAAhB4sB,GACnBv7D,KAAKg5D,WAAW1+D,OAAOihE,EAAc,IAIlCxsB,EAAKJ,UAA6B,GAAlB2sB,GACnBt7D,KAAKg4C,aAAatkD,KAAKq7C,GAIrBA,EAAKJ,UAA6B,GAAlB2sB,GAClBt7D,KAAKg5D,WAAWtlE,KAAKq7C,GAGvB/uC,KAAKw7D,qBAGCA,qBAENx7D,KAAKo6D,gBADsC,GAA7Bp6D,KAAKg7D,cAAcjpE,OACZ48C,CAIvB2qB,eAAetlE,GACb,YAAKkmE,sBAAsBxmE,KAAKM,GAEZ,KAClB,IAAIi8D,EAAgBjwD,KAAKk6D,sBAAsBzkE,QAAQzB,IAClC,GAAjBi8D,GACJjwD,KAAKk6D,sBAAsB5/D,OAAO21D,EAAe,IAK7CmK,gBAAgBC,GACtB,GAAIr6D,KAAKi5D,UAAYoB,EACrB,MAAKpB,SAAWoB,EAGhB,QAASC,KAAuBt6D,KAAKk6D,sBACnCI,EAAoBt6D,SD5FxBF,YAAY0zD,GACVllD,QACAtO,KAAKy7D,OAASjI,EANZA,YACF,OAAOxzD,KAAKy7D,OAQdC,QACE32B,EACA9vC,EACAyK,GAGA,GADmBM,KAAKgvC,QAAQ/5C,GAE9B,KAAM,6BAA6BA,6BAGrC,IAAI85C,EAAO,IAAI4sB,EAAmB37D,KAAM/K,EAAK8vC,EAAQrlC,GACrD,YAAKy7D,QAAQpsB,EAAM95C,GACZ85C,oMEjBJ,IAAM6sB,GAAb,MAAM,QACJ97D,YAAmByjC,sBAEnBvjC,UAAO01B,IAEPpD,WAAQ,+CALGspC,GAAiC/iE,sCAAjC+iE,EAAiCxtC,sGCGkC0L,qEAAAA,GAKoCA,mBAAAA,IAUnBA,QAAAA,2UA3BjGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,4BAEAA,QAEAA,qBAAQA,gCAASyQ,yBACfzQ,uBAA+DA,8BACnDA,oBAOxBA,yBAAc,gBACJA,gCAASyQ,2BACfzQ,uBAA6DA,8BAAoCA,qBAzBxFA,qCAe6BA,wCAURA,ih4DDlBvB+iE,GAAb,+GEwDE/iE,eAA+D,WAA/DA,CAA+D,QAE3DA,YAA0DA,QAG1DA,oBAAuBA,+CAAegjE,EAAfhuC,OAAeguC,kBAAiBhjE,QAMvDA,qBACQA,yCAAS+0B,EAATC,OAASD,kBACf/0B,sBAAyDA,4BAAqCA,uCAb/FA,0CAKMA,gCAQoBA,+EAK/BA,eAAyE,WAAzEA,CAAyE,QAErEA,YAAyDA,QACzDA,oBAAuBA,+CAAeijE,EAAfjuC,OAAeiuC,kBAAiBjjE,QAGvDA,qBACQA,yCAAS85C,EAAT9kB,OAAS8kB,kBACf95C,sBAAyDA,4BAAqCA,uCAR/FA,0CAGMA,gCAKoBA,+EAK/BA,eAAkE,WAAlEA,CAAkE,QAE9DA,YAA0CA,QAC1CA,oBAAuBA,+CAAe4zC,EAAf5e,OAAe4e,kBAAiB5zC,QAGvDA,qBACQA,yCAAS6zC,EAAT7e,OAAS6e,kBACf7zC,sBAAyDA,4BAAqCA,uCAR/FA,0CAGMA,gCAKoBA,+EAK/BA,eAAwE,WAAxEA,CAAwE,QAEpEA,YAAmDA,QACnDA,oBAAuBA,+CAAekjE,EAAfluC,OAAekuC,kBAAiBljE,QAGvDA,qBACQA,yCAASmhC,EAATnM,OAASmM,kBACfnhC,sBAAyDA,4BAAqCA,uCAR/FA,0CAGMA,gCAKoBA,+EAK/BA,kBAA8D,WAA9DA,CAA8D,WAA9DA,CAA8D,YAItDA,sBACFA,QACAA,kBAAsB,WACpBA,YAA+EA,QAC/EA,yBAC8BA,cAKpCA,kBAAwB,YAAxBA,CAAwB,QAGpBA,aAAqFA,QACrFA,mBAAwB,eAKfA,kGAA8C,oCACpCmjE,EADoCnuC,OACpCmuC,iCALjBnjE,QAMAA,kCAEAA,UAEFA,mBAAwB,eAKfA,kGAA8C,oCACpCojE,EADoCpuC,OACpCouC,iCALjBpjE,QAMAA,kCAEAA,yCAlCsBA,6CAkBfA,uDAAqC,8CAWrCA,qDAAoC,wFA3JrDA,qBAA6E,QAE3EA,WAAiCA,QAEjCA,6BAEiBA,sDAAoBi0C,EAApBjf,MAAoBif,yBAA4Bj0C,QAEjEA,iBAAwB,MAAxBA,CAAwB,UACnBA,WAA2CA,UAC9CA,iBAA8B,UAA9BA,CAA8B,WAA9BA,CAA8B,WAA9BA,CAA8B,eAMfA,4DAASqjE,uCAFhBrjE,QAGAA,qBACEA,mBACAA,8BAA4DA,cAKlEA,kBAAsC,WAAtCA,CAAsC,eAI3BA,4DAASsjE,iDAFhBtjE,QAGAA,qBACEA,mBACAA,8BAA2DA,cAKjEA,kBAAsC,WAAtCA,CAAsC,eAI3BA,4DAASujE,0CAFhBvjE,QAGAA,qBACEA,mBACAA,8BAA4CA,cAKlDA,kBAAsC,WAAtCA,CAAsC,eAI3BA,4DAASwjE,gDAFhBxjE,QAGAA,qBACEA,mBACAA,8BAAqDA,oBAUjEA,yBAkBAA,0BAaAA,0BAaAA,0BAaAA,2BA8CAA,6BAGFA,gCA3K8DA,+BAK3CA,0CAUAA,oDAYAA,8DAYAA,uDAYAA,6DAceA,iDAkBAA,2DAaAA,oDAaAA,0DAaHA,mDA8CdA,iEC5IV,IAAMojD,GAAb,MAAM,QAwBJn8C,YACUyuB,EACA+tC,GACAC,GACAC,GAEA/iC,GAEAyK,IAPAlkC,gBACAA,sBACAA,yBACAA,+BAEAA,6BAEAA,qBAxBVA,gBAAasgD,KAKbtgD,sBAAmBojC,KAGnBpjC,6BAA0BiiD,MAO1BjiD,UAAO01B,IAWL11B,KAAK48B,MAAQnD,GAAqBmD,MAhBhC6/B,sBACF,OAAOz8D,KAAKw8D,uBAAuBt/B,QAkB/B5K,qEACJtyB,KAAKwwC,aAA0C,QAA5BksB,OAAKnuC,SAASoE,QAAQ92B,cAAMihB,eAAE0zB,YACjDxwC,KAAK28D,UAAuC,QAA5BC,QAAKruC,SAASoE,QAAQ92B,cAAMgtB,iBAAE8zC,SAEzC38D,KAAKwwC,aACRxwC,KAAKwwC,WAAaxwC,KAAKu8D,iBAAiBjhC,UAAU,GAAGroB,IAEvDjT,KAAKs8D,cAAcjT,WAAWrpD,KAAKwwC,kBAC7BxwC,KAAKw8D,uBAAuBnT,WAAWrpD,KAAKwwC,YAE9CxwC,KAAK28D,UACP38D,KAAK68D,MAAQ78D,KAAKs8D,cAAc3wB,OAAOvlC,KACrC6Q,IAAKA,GAAE0lD,SAAW38D,KAAK28D,SAEzB38D,KAAK9C,KAAiB,QAAV4hD,QAAK+d,aAAKphC,iBAAEv+B,MAG1B8C,KAAK88D,mBAAqB98D,KAAKwwC,aAGjCusB,aACQ/8D,KAAK68D,QACT78D,KAAK68D,MAAM1nE,WAAQP,EACnBoL,KAAK68D,MAAMG,iBAAcpoE,EACzBoL,KAAK68D,MAAMI,uBAAoBroE,GAI7BsoE,mBAAmBC,wDAEvB,GADAn9D,KAAKwwC,WAAa2sB,EACbn9D,KAAK68D,MAEV,WACQ78D,KAAKs8D,cAAcc,aACb,QAAVR,QAAKC,aAAK//C,iBAAE6/C,QACZ38D,KAAK88D,mBACL98D,KAAKwwC,WAEP,CAFOA,MAEAxf,IAAP,OAKIhxB,KAAKuuB,SAASwG,aAAaC,GAAGoO,gBAA6B,CAC/DoN,WAAY2sB,EACZR,QAAS38D,KAAK28D,aAIlBU,gBACEr9D,KAAKs8D,cAAcjuB,KAAKruC,KAAK68D,OAGlBS,8DACX,IAAKt9D,KAAK68D,MAAO,OAEjB,IAAIU,EAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,SAAO8qC,EAAwBhmE,QAE7D,GAAImmE,GAAS,OAEb,IAAKvhE,GAAG40B,UAAa0B,SAAOzyB,KAAKs8D,cAAcrkD,OAAOjY,KAAK68D,MAAMF,UAG7D5rC,KAEJ/wB,KAAK9C,KAAO,QAGRygE,WAAWzgE,EAAkBnJ,kDACjC,GAAIiM,KAAK9C,OAASA,EAAlB,CAKA,GAAI8C,KAAK49D,UAAW,CAClB7pE,GAAM8pE,iBACN,IAAIC,GAA2B99D,KAAK+9D,uBAC/B5hE,GAAGuhE,UAAiBjrC,SAAOqrC,GAAyBvmE,QACzD,GAAImmE,GAAS,OACb19D,KAAK+8D,aAGF/8D,KAAK68D,QAAO78D,KAAK68D,YAAc78D,KAAKs8D,cAAc0B,YAAY9gE,IAEnE8C,KAAK9C,KAAOA,EACZ8C,KAAK68D,MAAM3/D,KAAO8C,KAAK9C,KACvB8C,KAAKs8D,cAAcjuB,KAAKruC,KAAK68D,MAf3B,MADA9oE,GAAM8pE,gBAgBqBhB,GAGxBoB,+BACLj+D,KAAKw8D,uBAAuBnuB,OAG9BuvB,sBACE,OACY,QAAVlB,OAAKG,aAAK//C,eAAE3nB,SACF,QAAVynE,QAAKC,aAAKh0C,iBAAEm0C,eACF,QAAVle,QAAK+d,aAAKphC,iBAAEwhC,mBAIRc,sBAMN,OAAO/9D,KAAKkkC,aAAaK,KAAKq3B,GALjB,CACXr7D,KAAM,KACN6jC,iBAAkB,qCAG6C/W,CAG3DmwC,kBAMN,OAAOx9D,KAAKkkC,aAAaK,KAAK25B,KALjB,CACX39D,KAAM,KACN6jC,iBAAkB,qCAG6C/W,+CA1JxD4uB,GAAkBpjD,+FAAlBojD,EAAkB7tB,mDAFd,CAAC+vC,IAAeC,IAAkBC,QAAuB3uB,oGDxB7C5V,QAAAA,GAOSA,cAAAA,IAUoBA,kBAAAA,IAYAA,iBAAAA,IAYPA,SAAAA,IAYEA,gBAAAA,IAYLA,kBAAAA,IAW+CA,SAAAA,IAO/CA,iBAAAA,IAM+CA,SAAAA,IAOtDA,SAAAA,IAMsDA,SAAAA,GAOpDA,gBAAAA,IAMoDA,SAAAA,IAYtBA,kBAAAA,IACHA,4FAAAA,IASJA,6BAAAA,IAQ2BA,OAAAA,IAWFA,MAAAA,gnDA9J3FjhC,mCAAUA,+84DCyBIw8B,OAGD4mB,GAAb,EAAaA,gJChBN,IAAMqiB,EAAb,MAAM,SACJx+D,YAAoB25B,iCAEZ8kC,WAAWC,IACjB,OAAIA,IAAale,UACRxmB,kBAA2DA,CAEhE0kC,IAAale,oBACRxmB,iBAA0DA,CAE/D0kC,IAAale,aACRxmB,SAA2CA,CAEhD0kC,IAAale,mBACRxmB,gBAAoDA,CAEtD,GAGE2kC,cAiCT,OAAOnjC,KAhCc7B,qBAAqBE,KAAK2B,UAAUtmC,IAAImtC,eAC3D,IAAIwJ,IACa,QAAf1O,MAAS0O,cAAM7uB,iBAAE1U,OAAOivC,KAAMzL,cAAsByL,GAAEn6C,SAAU,GA2BlE,MAzB+B,CAC7B+V,GAAIkvB,GAASlvB,GACb+uB,MAAOG,GAASH,MAChBjhC,MAAMkgD,OAAgB9e,GAASjF,SAC/BwhC,aAAcv8B,GAASjF,QAAQC,UAC/BwhC,MAAOhzB,GACJ32C,IAAIqiD,IAAKA,GAAEliD,OACXypE,OAAO,CAACD,GAAOE,KAAeF,KAASE,GAAY,GACtDC,eAaK,QAZH1hC,MACGpoC,IACCiiB,KACgB,CACZlW,KAAMf,KAAKu+D,WAAWtnD,GAAE/Z,MACxB+V,GAAIgE,GAAE0lD,QACNE,MAAO5lD,GACP/Z,KAAM+Z,GAAE/Z,KACR/H,MAAO8hB,GAAE9hB,MACT4pE,cAAe9nD,GAAE9hB,OAAS8hB,GAAEgmD,kBAC5BD,YAAa/lD,GAAE+lD,sBAEpBn0C,iBACC3O,KAAK,CAACjD,GAAGC,KAAOD,GAAElW,KAAOmW,GAAEnW,KAAO,GAAI,KAAQ,MAMvCmZ,KAAK,CAACjD,GAAGC,KAAMD,GAAE+qB,MAAQ9qB,GAAE8qB,wDApDnCs8B,IAAoBzlE,wCAApBylE,GAAoBxlE,QAApBwlE,GAAoB,qBAFnB,SAEDA,IAAb,oHCXEzlE,yBAAsEA,sCAqB9DA,kBAAoF,WAApFA,CAAoF,WAApFA,CAAoF,YAI5EA,sBACFA,QACAA,kBAAsB,UACpBA,YAC+BA,6DARsBA,uCAIbA,uCAITA,qEAY7BA,8CACgDA,uDAChDA,8CAC+CA,6DAC/CA,8CACuCA,2DACvCA,8CAC8CA,yIAZtDA,eAAoC,UAApCA,CAAoC,UAApCA,CAAoC,WAK5BA,4BAEAA,4BAEAA,6BAEAA,6BAGFA,UAGFA,iBAAqB,WAArBA,CAAqB,SAEbA,UAAcA,QAElBA,mBAA6B,YAA7BA,CAA6B,YAA7BA,CAA6B,WAGFA,UAAqBA,UAE5CA,mBAA+D,UAA/DA,CAA+D,cAEzCA,cAACA,QAAOA,2BAAuCA,YAKvEA,mBAAiB,YAAjBA,CAAiB,YAAjBA,CAAiB,gBAOTA,uBAAuCA,8BAAiCA,UAE1EA,sBACQA,0FAASkjE,EAATluC,MAASkuC,6BACfljE,uBAAyDA,8BAAqCA,8FAtC9FA,mDAEAA,kDAEAA,0CAEAA,iDAONA,wBAKuBA,+BAIOA,sDASlBA,wDAAsC,qCAGnCA,oCAIgBA,oEA7C7CA,kBACEA,0BAsDFA,qDAvD6EA,wCACrEA,yEAyDVA,kBAAkD,WAAlDA,CAAkD,WAAlDA,CAAkD,YAI1CA,iBACAA,kBAAuB,UACrBA,YAA4EA,QAC5EA,gBAA2BA,0BAA2CA,oDAA3CA,qFAQnCA,yFA1GRA,SACEA,iBAAqB,UAArBA,CAAqB,UAArBA,CAAqB,WAIbA,qBACFA,UAGFA,iBAAqB,WAArBA,CAAqB,QAEbA,SAAiBA,cAI3BA,kBAAqB,aAIjBA,0BAcAA,0BAwDFA,QAEAA,2BAcAA,mBACEA,wBAGAA,sBAIEA,uBAAsCA,8BAA0DA,gBAM1GA,gDAlHwGA,oCAM1FA,wBAQwBA,4CAcoBA,2CA0DhCA,2CAemBA,yCAI7BA,wDAAsC,6BAGnCA,iEAUrBA,eACEA,4BAEFA,gCAFiBA,wGCpGV,IAAMsjD,GAAb,MAAM,SAiBJr8C,YACSk/D,GACA1C,GACCp4B,IAFDlkC,uBACAA,sBACCA,qBAlBVA,UAAO01B,KAEP11B,sBAAmBojC,IASVpjC,uBAA4B,EAC5BA,qBAA0B,EAC1BA,uBAA4B,KAmB7BA,oCAAiC,CACvCO,KAAM,KACN6jC,iBAAkB,qCA7BTq6B,qBACT,OAAkB,QAAbtjC,QAAK8jC,gBAAQniD,iBAAE/qB,UAAQiO,KAAKi/D,SAAWj/D,KAAKg/D,eAAeP,SAEzDz+D,KAAKi/D,SAYdC,YAAYC,IAER,sBAAuBA,IACvBA,GAAQC,kBAAqBC,cAC3BF,GAAQC,kBAAqBxgD,gBAE/B5e,KAAKi/D,SAAW,IAIpB3sC,WAAQ,CAOAkrC,kBACN,OAAOx9D,KAAKkkC,aAAaK,KACvB25B,IACAl+D,KAAKs/D,gCAIHC,cAAc/uB,GAAoBmsB,kDACtC,IAAIY,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAC7D,GAAImmE,GAAS,OAEb19D,KAAKs8D,cAAcjT,WAAW7Y,IAE9B,IAAKr0C,EAAG40B,UAAa0B,QAAOzyB,KAAKs8D,cAAcrkD,OAAO0kD,KAEtD38D,KAAKw/D,kBAAkBhvB,GAAYmsB,MAGrC6C,kBAAkBhvB,GAAoBmsB,IACpC,IAAI8C,GAAkBz/D,KAAKy+D,QAAQr4D,KAAKixC,IAAKA,GAAEpkC,IAAMu9B,IACjD18B,GAAQ2rD,GAAgBX,cAAcjX,UAAU5wC,IAAKA,GAAEhE,IAAM0pD,IAEjE8C,GAAgBX,cAAcxkE,OAAOwZ,GAAO,GAGvC+3B,UAAU6zB,WAEf,OAA6B,QAAtBlkC,QADeyjC,SAAS74D,KAAK8Q,IAAKA,GAAEjE,KAAOysD,IAClCZ,qBAAahiD,iBAAE/qB,QAAS,mDAnE/BoqD,IAAsBtjD,2DAAtBsjD,GAAsB/tB,qKAFlB,CAAC+vC,IAAeG,IAAqBzlE,wEDxBYihC,QAAAA,IAmH6BA,eAAAA,IAvFhBA,4EAC3D,IA+C6EA,OAAAA,IAIoBA,SAAAA,IAmB7BA,QAAAA,suDApGxFjhC,qBACEA,uBAEAA,kCAwHFA,QAGAA,gCA9HsCA,gDAAwC,yBAClCA,yCAEPA,qCA2H/BA,4phECtGQw8B,OAGD8mB,IAAb,EAAaA,yGCZN,IAAMgiB,EAAb,MAAM,QAKJr+D,YACUgsC,EACArS,GADAz5B,4BACAA,4BAERA,KAAK8rC,qBAAuBA,EAGtB6zB,YAAY1sD,GAKlB,OAJejT,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACtD+7B,GAAYA,EAASlvB,KAAOA,GAMzBo2C,WAAW7Y,SAChB,GAAIA,IAA2B,QAAb3zC,OAAKslC,gBAAQrlB,eAAE7J,IAAI,OAErCjT,KAAKmiC,SAAWniC,KAAK2/D,YAAYnvB,GAEjC,IAAI7E,EAAS3rC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACpD8Q,GAAKA,EAAEjE,IAAMu9B,GACb7E,OACF3rC,KAAK4/D,SAAW,GAChB5/D,KAAK6/D,QAAU,GAEfl0B,EAAO/4C,QAAQiqE,IACb,IAAI5/D,EAAU+C,KAAK8rC,qBAAqB+E,cAAcgsB,GAAO,GAC7D78D,KAAK4/D,SAASlsE,KAAKuJ,GACnB+C,KAAK6/D,QAAQnsE,KAAKmpE,KAIXlxB,mBACT,OACsB,QAApBqe,OAAK7nB,SAASwJ,cAAM7uB,eAAE1U,OAAOivC,IAAMzL,cAAsByL,EAAEn6C,SAAU,GAI9D4iE,qBACT,OACsB,QAApB9V,OAAK7nB,SAASwJ,cAAM7uB,eAAE1U,OAAOivC,GAAKzL,cAAsByL,EAAEn6C,SAAU,GAIjEmxC,KAAKwuB,GACV,IAAI/hE,EAAIkF,KAAK6/D,QAAQhY,UAAUxQ,GAAKA,EAAEslB,SAAWE,EAAMF,SACvD38D,KAAK4/D,SAAS9kE,GAAG42C,QAGN10B,4DACLhd,KAAK8rC,qBAAqB9uB,UAGrBghD,YACX9gE,EACA6iE,EAA+B,oDAE/B,IAAInvB,EAAkB5wC,KAAK8rC,qBAAqB+E,cAC9C7wC,KAAKmiC,UAEH69B,EAAuC,CACzC9iE,OACA6iE,wBAEEE,QAAgCrvB,EAAgBjxB,KAClD,eACAqgD,GACAzoE,OACFyI,KAAKmiC,SAASwJ,OAAOj4C,KAAKusE,GAE1B,IAAIC,EAAalgE,KAAK8rC,qBAAqB+E,cAAcovB,GACzD,YAAKL,SAASlsE,KAAKwsE,GACnBlgE,KAAK6/D,QAAQnsE,KAAKusE,GAEXA,IAGIhoD,OAAO0kD,iDAClB,IAAIwD,EAAgBngE,KAAKmiC,SAASwJ,OAAOvlC,KAAKixC,GAAKA,EAAEslB,SAAWA,GAChE,IAAKwD,EAAe,OAEpB,IAAIC,EACFpgE,KAAK8rC,qBAAqB+E,cAAcsvB,GAC1C,IAAKC,EACH,aAGIA,EAAgBnoD,SAAS1gB,OAE/B,IAAIuD,EAAIkF,KAAK6/D,QAAQhY,UAAUxQ,GAAKA,EAAEslB,SAAWA,GAC7C7hE,GAAK,IACPkF,KAAKmiC,SAASwJ,OAAOrxC,OAAOQ,EAAG,GAC/BkF,KAAK6/D,QAAQvlE,OAAOQ,EAAG,GACvBkF,KAAK4/D,SAAStlE,OAAOQ,EAAG,MAIfsiE,aACXT,EACA0D,EACAlD,iDAEA,MAAMN,EAAQ78D,KAAK6/D,QAAQz5D,KAAK6Q,IAAKA,GAAE0lD,SAAWA,GAGlD,IAAI2D,QAAqBrjE,KAFJ6uC,qBAAqB+E,cAAcgsB,GAEvBl9C,KAAK,gBAAiB,CAAEw9C,iBACtD5lE,OAGHyI,KAAK8rC,qBAAqB8T,iBAAiBid,GAE3C,MAAM0D,GAAuBvgE,KAAK2/D,YAAYU,GAC9CE,GAAqB50B,OAAS40B,GAAqB50B,OAAOvjC,OACxD6O,IAAKA,GAAE0lD,SAAWA,GAIpB38D,KAAK8rC,qBAAqB9pC,IAAIs+D,GAG9BE,KADgCb,YAAYxC,GACzBxxB,OAAOj4C,KAAK4sE,mDA9HtBnC,GAAatlE,qDAAbslE,EAAarlE,QAAbqlE,EAAa,qBAFZ,SAEDA,GAAb,EAAaA,oICJN,IAAMD,EAAb,MAAM,QACJp+D,YAAmByjC,sBAEnBvjC,UAAO01B,IAEPpD,WAAQ,+CALG4rC,GAAiCrlE,sCAAjCqlE,EAAiC9vC,qGCCsB0L,6CAAAA,GAGsDA,cAAAA,GAUzBA,QAAAA,sTAzBjGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,0BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,0BACgCA,QAChCA,qBAAQA,gCAASyQ,wBACfzQ,sBAA8DA,8BACvDA,oBAOnBA,yBAAc,gBACJA,gCAASyQ,0BACfzQ,sBAA6DA,8BAAoCA,qBAvBxFA,oCAa6BA,sCAURA,ih4DDdvBqlE,GAAb,EAAaA,uNEAN,IAAMuC,GAAb,MAAM,QAKJ3gE,YAAmByjC,EAAqChV,IAArCvuB,mBAAqCA,iBAExDA,UAAO01B,KANPgrC,kBACE1gE,KAAKuuB,SAASwG,aAAaC,GAAGoO,oBAOhC9Q,WAAQ,+CATGmuC,GAAkC5nE,kDAAlC4nE,EAAkCryC,uGCCyB0L,qEAAAA,GAMgDA,UAAAA,IAQvBA,QAAAA,0TA1BjGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,0BACmCA,UAIrCA,qBAAQA,yBAASyQ,4BAAmBA,2BAClCzQ,sBAAgEA,8BAAoDA,kBAM9HA,yBAAc,gBACJA,gCAASyQ,2BACfzQ,sBAA6DA,8BAAoCA,qBAxBxFA,qCAgB2BA,yCAQNA,mh4DDfvB4nE,GAAb,wCEEQ5nE,yBAAmGA,gCACnGA,yBAAiHA,kCAS3GA,qBAAqEA,SAAaA,kCAA/BA,oBAAkBA,gEAQ/EA,iBAA6E,OAC3EA,YAA2FA,QAC3FA,kBAAyB,cAKhBA,yEAAsB,oCAAW2zC,EAAX3e,MAAW2e,qBAJxC3zC,oCAH0BA,iCAOnBA,+EAIXA,eAA8F,WAA9FA,CAA8F,WAA9FA,CAA8F,YAOtFA,sBACFA,QACAA,kBAAsB,UACpBA,YAEgFA,cAKtFA,kBAA4C,OAC1CA,aAA4EA,QAC5EA,mBAAwB,eAGfA,gFAA6B,2CACZ8nE,EADY9yC,MACZ8yC,4BAHxB9nE,QAIAA,kCAEAA,UAEFA,mBAAwB,eAGfA,gFAFPA,QAGAA,kCAEAA,sCAlCDA,iCAO2CA,mCAcnCA,2BAAc,6BASdA,2BAAe,uEAa9BA,eAAuE,wBACEA,4EAA0BA,kCAD9FA,iCACcA,0CAAyB,4BAAzBA,CAAyB,mEAYtCA,qBAA6DA,yCAAS+nE,EAAT/yC,OAAS+yC,4BAEpE/nE,sBACAA,4BAAyDA,mCADhDA,8EAXjBA,eAAuF,eAAvFA,CAAuF,uBAKnEA,wDAAsBmjE,EAAtBnuC,MAAsBmuC,2BACtCnjE,QAEAA,sBACEA,4BAMFA,oCAfCA,iCAEeA,yFAA+C,0BAA/CA,CAA+C,qBAQpDA,kDCzEV,IAAM+iD,GAAb,MAAM,QA4BJ97C,YACUyuB,EACDsyC,GACAvE,GACCp4B,GACAzK,IAJAz5B,gBACDA,sBACAA,sBACCA,qBACAA,6BAhCHA,iBAAsB,EAO7BA,2BAAwBA,KAAK6gE,cAAcC,SACvCC,0BACAA,iCACEC,KAAOA,GAAGC,QAEhBjhE,qBAAkB,KAElBA,iBAAsB,KACtBA,kBAAqC,KACrCA,sBAAmBojC,IACnBpjC,qBAAiB,EAGjBA,kBAAekhE,GAGflhE,UAAO01B,KACP11B,cAAWihD,IA0DXjhD,8BAA0B,EAC1BA,uBAAmB,EAjDjBA,KAAK48B,MAAQnD,GAAqBmD,MAIpCukC,+BAA4B,CAE5B7uC,6BACEtyB,KAAKggC,QAAsC,QAA5B08B,OAAKnuC,SAASoE,QAAQ92B,cAAMihB,eAAEkjB,QAC7ChgC,KAAKohE,OAAqC,QAA5BxE,QAAKruC,SAASoE,QAAQ92B,cAAMgtB,iBAAEu4C,OAC5CphE,KAAKqhE,SAAuC,QAA5BviB,QAAKvwB,SAASoE,QAAQ92B,cAAM4/B,iBAAE4lC,SAC9CrhE,KAAKwwC,aAA0C,QAA5BzF,QAAKxc,SAASoE,QAAQ92B,cAAM6/B,iBAAE8U,YACjDxwC,KAAKshE,YAAyC,QAA5BjmC,QAAK9M,SAASoE,QAAQ92B,cAAMquD,iBAAEoX,WAEhDthE,KAAKuhE,iBAC4B,IAA/BvhE,KAAK48B,MAAM4kC,sBAA2B5sE,EAExCoL,KAAWshE,WAETthE,KAAKyhE,YAAcP,GAAaQ,KAChC1hE,KAAKuhE,iBAAkB,GAGvBvhE,KAAKyhE,YAFAzhE,KAASwwC,WAEK0wB,GAAal/D,IAEbk/D,GAAaS,UAGlC3hE,KAAK4hE,uBAEL5hE,KAAK88D,mBAAqB98D,KAAKwwC,WAGjCqxB,mBACE7hE,KAAK4hE,uBAGPA,mCACE5hE,KAAK8hE,aACHf,+BACEC,IAAMA,GAAG/tD,IAAMjT,KAAKohE,SAEH,QAAjB1E,OAAKoF,oBAAYhlD,eAAEilD,WAAS/hE,KAAKuhE,iBAAkB,GACvDvhE,KAAKgiE,aAA+B,QAAjBpF,QAAKkF,oBAAYj5C,iBAAEk5C,SAClC/hE,KAAKqhE,SACY,QAAjBviB,QAAKgjB,oBAAYrmC,iBAAExoB,GACvBjT,KAAKiiE,yBAA0B,EAMjCC,qBAAqBC,GAEnBniE,KAAK6gE,cAAcuB,0BAA0BD,GAC7CniE,KAAKiiE,yBAA0B,EAC/BjiE,KAAKqiE,kBAAmB,EAG1BC,0BACEtiE,KAAKuhE,gBAAkB,KAGzBgB,0BACEviE,KAAKiiE,yBAA0B,EAG3BvB,gEAMJ,GALA1gE,KAAK4uC,YAAa,EACd5uC,KAAKshE,YAActhE,KAAKuhE,wBACpBvhE,KAAKs8D,cAAct/C,SAGtBhd,KAAKuhE,kBAAmBvhE,KAAKqiE,iBAGhC,YAAKzzB,YAAa,EAEX5uC,KAAKkkC,aAAaK,KAAKk8B,GAAoC,CAChElgE,KAAM,KACN6jC,iBAAkB,mDANpBpkC,KAAKuuB,SAASwG,aAAaC,GAAGoO,mBAMV,iDAlHbwY,GAAoB/iD,mFAApB+iD,EAAoBxtB,qDAFhB,CAACo0C,IAAerE,OAAczuB,+EDrBhB5V,SAAAA,GAkBkDA,kBAAAA,IARSA,mBAAAA,IACMA,2BAAAA,IAkB7CA,gDAAAA,IAGvBA,oBAAAA,IAiBsCA,2JAAAA,IAQnBA,uCAAAA,IAMyCA,OAAAA,IAQFA,MAAAA,IA2BpCA,mBAAAA,s/CAnGlDjhC,qBAAuD,QACrDA,WAAoCA,QAEpCA,6BACiBA,gEAA4BA,QAE7CA,SAGEA,iBAAwB,WAEpBA,sBACAA,sBACAA,iBAAiB,WAAjBA,CAAiB,eAGLA,yDAAoB,2BACVyQ,4BAChBzQ,qBACEA,gBAAEA,8BAA+EA,QAAQA,gBAC3FA,QACAA,4BACFA,gBAORA,yBAWAA,0BAyCFA,QAEAA,yBAIAA,yBAqBFA,QAGAA,gBAAK,uBACYA,qCAAcyQ,uBAC7BzQ,iBAjHoCA,iCAInBA,2CAO+BA,4DACMA,4DAIpCA,oCAEEA,iCAGiBA,mDAQaA,0EAWzBA,oHA2CFA,8DAIAA,qFAyByBA,sl/GC3FpCw8B,OAGDumB,GAAb,GAwHO,IAAKslB,GAIX,MAJD,OAAYA,UAAY,KACtBA,2BACAA,mBACAA,iBAHUA,GAAZ,IAAYA,GAIX,EAJWA,gJCpIL,IAAMsB,EAAb,MAAM,QACJ1iE,YACU2xB,EACAiU,EACAuH,GACAw1B,GACA9xB,GACAlX,EACAxJ,IANAjwB,uBACAA,oBACAA,oBACAA,kBACAA,aACAA,4BACAA,8BAGE0iE,0BACV,MAAO,WAAW1iE,KAAKyxB,gBAAgBkxC,OAAOC,4CAKnCC,qEACX,GAAsB,QAAlBzL,OAAK0L,qBAAahmD,eAAE/qB,OAAQ,OAAOiO,KAAK+iE,kBAE5C,IAAIpiC,GAAO3gC,KAAKiwB,sBAAsB+yC,yBAEtChjE,KAAK8iE,cAAgB,GAErB,IAAIvzC,GAAM,GAD+B,QAAvB8uB,OAAK3Y,aAAa9I,aAAK/T,eAAEo6C,8CACgBtiC,KAE3D,aAAM3gC,KAAK2wC,KACRt7C,IAAIk6B,IACJ2zC,YACAl5C,KACEzyB,IACCyI,KAAK8iE,cAAgBvrE,GAEvBy5B,OAGJhxB,KAAK+iE,kBAAoB/iE,KAAK8iE,cAAc9tE,IAAIqiD,GAAKA,EAAEt2C,MAChDf,KAAK+iE,oBAGPI,cAAcpiE,SACnB,OAAmD,QAA5Cs9C,OAAKykB,cAAc18D,KAAKixC,IAAKA,GAAEt2C,MAAQA,UAAK+b,eAAE7J,GAG5C6tD,eACT,OAAO9gE,KAAKyxB,gBAAgBkxC,OAAO7B,SAG9BsC,UAAUrD,GACf,IAAKA,EACH,OAAO//D,KAAKyiE,UAAUY,+BAA+B,IAEvD,IAEIxnE,GAAS,CACX2qC,MAAO,QAEP88B,eAAe,EACfC,eAAe,EACfC,KAAMxjE,KAAK8gE,SACX2C,uBAAuB,EACvBC,yBAAyB,EACzBC,iBAAiB,EACjBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,iBAAiB,EACjBC,2BAA2B,EAC3BC,mBAAoB,KACpBC,SAhBSjkE,KAAKiwB,sBAAsB+yC,0BAmBlCkB,GAAcjxE,OAAOC,KAAK2I,IAC3B7G,IAAIC,IAAOA,GAAM,IAAM4G,GAAO5G,KAC9BusD,KAAK,KAOR,OAFgBxhD,KAAKyiE,UAAUY,+BAFrB,GADOrjE,KAAK0iE,iCAAiC3C,KAC/BmE,KAEsC30C,CAKnD6yC,0BAA0BD,iDAErC,IAAIhgC,EAAqBniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KAC/D8Q,IAAgBA,GAAEjE,IAAMkvD,EAAW3xB,YAGlC2zB,GAAqBhiC,EAASsJ,YAAYoc,UAC5Cuc,IAAMA,GAAGC,cAAgBlC,EAAWkC,cAGlCF,IAAsB,EAExBhiC,EAASsJ,YAAY04B,IAAsBhC,EAK7ChgC,EAASsJ,YAAY/3C,KAAKyuE,KAGjBmC,uBACT,IAEI1pC,GAAmC,QAAvBw8B,OAAK1xB,aAAa9I,aAAK9f,eAAE8d,UAErCrL,GAAM,GAAGvvB,KAAKyxB,gBAAgBJ,mCAJpBrxB,KAAKitC,YAAYtT,KAAKqG,WACrBhgC,KAAKitC,YAAYtT,KAAKoG,YAGuDnF,wBAC5F3L,eAAQoD,IAAI,cAAe9C,IACpBA,iDA9GEizC,GAAa3pE,6GAAb2pE,EAAa1pE,QAAb0pE,EAAa,qBAFZ,SAEDA,GAAb,EAAaA,sICON,IAAM+B,EAAb,MAAM,SAIJzkE,YAAoB25B,+BAeZz5B,cAAqC,GAlB7CsU,QACEtU,KAAKi/D,SAAW,GAIVuF,iBAAiBhG,GACvB,OAAIA,GAAale,eAAsBke,GAAale,eAC3CxmB,MAA4CA,CAEjD0kC,GAAale,kBACRxmB,aAAyDA,CAE9D0kC,GAAale,WACRxmB,MAA4CA,CAE9C,cAAgB0kC,EAIdC,cACT,GAAIz+D,KAAKi/D,SAASltE,OAAS,EAAG,OAAOiO,KAAKi/D,SAE1C,IAAI3jC,EAAYt7B,KAAKy5B,qBAAqBE,KAAK2B,UAAUtmC,IAAImtC,KAC3D,IAAIsiC,GAAQzkE,KAAK0kE,WAAWviC,IAc5B,MAZ8C,CAC5ClvB,GAAIkvB,GAASlvB,GACb+uB,MAAOG,GAASH,MAChBjhC,MAAMkgD,OAAgB9e,GAASjF,SAC/BwhC,aAAcv8B,GAASjF,QAAQC,UAC/BwhC,MAAO8F,GAAMzvE,IAAIkiB,IAAKA,GAAEynD,OAAOC,OAAO,CAAC3nD,GAAGC,KAAMD,GAAIC,GAAG,GACvDutD,MAAOA,MASX,YAAKxF,SAAW3jC,EAAUphB,KAAK,CAACjD,GAAGC,KAAMD,GAAE+qB,MAAQ9qB,GAAE8qB,OAE9ChiC,KAAKi/D,SAGN0F,gBACNC,EACAtD,IAEA,OAAOsD,EAAa9E,SAASjY,UAAU5wC,IAAKA,GAAEhE,IAAMquD,IAG9CuD,qBAAqBC,EAA0BnI,IACrD,OAAOmI,EAAKC,cAAcld,UACxB+c,IAAgB5kE,KAAK2kE,gBAAgBC,GAAcjI,KAAY,GAI3DqI,aAAa7iC,EAAkCw6B,IACrD,OAAOx6B,EAASsiC,MAAM5c,UACpBid,IAAQ9kE,KAAK6kE,qBAAqBC,GAAMnI,KAAY,GAIxDsI,8BAA8Bz0B,EAAoBmsB,IAChD,IAAI8B,GAAUz+D,KAAKy+D,QAAQr4D,KAAKixC,IAAKA,GAAEpkC,IAAMu9B,GAEzC00B,GAAYllE,KAAKglE,aAAavG,GAAS9B,IACvCmI,GAAOrG,GAAQgG,MAAMS,IACrBC,GAAoBnlE,KAAK6kE,qBAAqBC,GAAMnI,IACpDiI,GAAeE,GAAKC,cAAcI,IAClCC,GAAeplE,KAAK2kE,gBAAgBC,GAAcjI,IAElD0I,GAAeT,GAAa9E,SAASsF,IAAcjwE,MACvDyvE,GAAajG,OAAS0G,GACtBP,GAAKnG,OAAS0G,GACd5G,GAAQE,OAAS0G,GAEjBT,GAAa9E,SAASxlE,OAAO8qE,GAAc,GAEP,GAAhCR,GAAa9E,SAAS/tE,QACxB+yE,GAAKC,cAAczqE,OAAO6qE,GAAmB,GAEd,GAA7BL,GAAKC,cAAchzE,QAAa0sE,GAAQgG,MAAMnqE,OAAO4qE,GAAW,GAGtEI,YAAYC,GAgBV,OAfeA,EACZvwE,IACCwwE,KACyB,CACrBvyD,GAAIuyD,GAAQvyD,GACZ4pD,MAAO2I,GAAQ3I,MACf3/D,KAAMsoE,GAAQtoE,KACd/H,MAAOqwE,GAAQrwE,MACf4pE,cAAeyG,GAAQzG,iBAG5B7kD,KAAK,CAACjD,GAAGC,KAAOD,GAAE/Z,KAAOga,GAAEha,KAAO,GAAI,GAO3CuoE,iBAAiBF,GACf,IAAIG,GAAkBH,EAAY3G,OAAO,SAAUrZ,GAAGtuC,IACpDsuC,UAAEtuC,GAAE0uD,cAAgBpgB,GAAEtuC,GAAE0uD,eAAiB,GACzCpgB,GAAEtuC,GAAE0uD,cAAcjyE,KAAKujB,IAChBsuC,IACNtyD,OAAO8Z,OAAO,OAkBjB,OAhBoB9Z,OAAOC,KAAKwyE,IAC7B1wE,IAAIC,KACH,IAAI2wE,GAAiCF,GAAgBzwE,IACjD6qE,GAAW9/D,KAAKslE,YAAYM,IAEhC,MAAmC,CACjC9F,SAAUA,GACV+F,SAAUD,GAAiB,GAAGC,SAC9B9kE,KAAM6kE,GAAiB,GAAGD,aAC1BhH,MAAOmB,GAAS9qE,IAAIiiB,IAAKA,GAAE9hB,OAAOypE,OAAO,CAAC3nD,GAAGC,KAAMD,GAAIC,GAAG,MAG7DgD,KAAK,CAACjD,GAAGC,KAAOD,GAAElW,KAAOmW,GAAEnW,KAAO,GAAI,GAO3C2jE,WAAWviC,GAGT,IAAI2jC,GAAeP,KAFIQ,eAAe5jC,GAEPy8B,OAAO,SAAUrZ,GAAGtuC,IACjDsuC,UAAEtuC,GAAE6tD,KAAK/jE,MAAQwkD,GAAEtuC,GAAE6tD,KAAK/jE,OAAS,GACnCwkD,GAAEtuC,GAAE6tD,KAAK/jE,MAAMrN,KAAKujB,IACbsuC,IACNtyD,OAAO8Z,OAAO,OAmBjB,OAjBY9Z,OAAOC,KAAK4yE,IAAc9wE,IAAIC,KACxC,IAAI+wE,GAAgCF,GAAa7wE,IAC7C8vE,GAAgB/kE,KAAKylE,iBAAiBO,IAEtClB,GAAOkB,GAAgB,GAAGlB,KAC9B,MAA2B,CACzB7xD,GAAI6xD,GAAK7xD,GACTgzD,SAAUnB,GAAKmB,SACfllE,KAAM+jE,GAAK/jE,KACXmlE,UAAWpB,GAAKoB,UAChBnB,cAAeA,GACfpG,MAAOoG,GAAc/vE,IAAImxE,IAAMA,GAAGxH,OAAOC,OAAO,CAAC3nD,GAAGC,KAAMD,GAAIC,GAAG,MAS/D6uD,eAAe5jC,UACrB,IAEIikC,GAAkB,GACtB36B,OAHkBtJ,EAASsJ,YAGf74C,QAAQuvE,KAClB,IAAIoD,GAAcpD,GAAWrC,SAAS9qE,IACpCiiB,KACc,CACV0uD,aAAc1uD,GAAE0uD,aAChB9I,MAAO,KACPiI,KAAM/D,+BACJ1pB,IAAKA,GAAE4uB,UAAY9D,GAAWkE,aAEhC71B,WAAYrO,EAASlvB,GACrBqzD,aAAcnkC,EAASjF,QAAQC,UAC/BopC,cAAepkC,EAASH,MACxB/uB,GAAIgE,GAAEhE,GACN8rD,eAAe,EACf8G,UAAU,EACV3oE,KAAM+Z,GAAEuvD,MACRrxE,MAAO8hB,GAAEwvD,WAGfL,GAAgB1yE,QAAQ6xE,QAOT,QAAfmB,KAAS/6B,cAAM7uB,iBAAE1U,OAAOivC,IAAKzL,eAAsByL,GAAEn6C,SAAU,IAClDtK,QAAQqkB,KACrB,IAAI6tD,GAAO/D,+BACT1pB,IAAKA,GAAEpkC,IAAMgE,GAAE8oD,sBAEZ+E,KACHA,GAAO/D,+BACL1pB,IAAKA,GAAE0qB,SAET+C,GAAK/jE,KAAOulC,GAAIy5B,qBAAuB9oD,GAAE8oD,qBAAuB,QAChE+E,GAAKoB,UAAYpB,GAAK/jE,MAExB,IAAI4lE,GAAyB,CAC3BhB,aAAc3lE,KAAKwkE,iBAAiBvtD,GAAE/Z,MACtC2/D,MAAO5lD,GACP6tD,KAAMA,GACNt0B,WAAYrO,EAASlvB,GACrBqzD,aAAcnkC,EAASjF,QAAQC,UAC/BopC,cAAepkC,EAASH,MACxB/uB,GAAIgE,GAAE0lD,QACNoC,cAAe9nD,GAAEgmD,mBAAqBhmD,GAAE9hB,MACxC0wE,UAAU,EACV3oE,KAAM+Z,GAAE/Z,KACR/H,MAAO8hB,GAAE9hB,OAGXixE,GAAgB1yE,KAAKizE,MAGhBP,kDA5NE7B,IAAqB1rE,wCAArB0rE,GAAqBzrE,QAArByrE,GAAqB,qBAFpB,SAEDA,IAAb,yICpBE1rE,yBAA0EA,qCAwBlEA,kBAAgF,WAAhFA,CAAgF,WAAhFA,CAAgF,YAIxEA,sBACFA,QACAA,kBAAsB,UACpBA,YAC+BA,4DARkBA,uCAITA,uCAITA,oEA8BnBA,iEAESA,oCAA2B,2CAMpCA,4BACEA,kBACkBA,oJAqBtBA,kBAA+C,WAA/CA,CAA+C,WAA/CA,CAA+C,eAOvCA,sBAAuCA,4BAAiCA,UAE1EA,qBACQA,0FAASg0C,EAAThf,MAASgf,6BACfh0C,sBAAyDA,6BACjDA,0GARFA,yDAAuC,iDAGpCA,oCAIgBA,oEAzBnCA,kBAC6B,WAD7BA,CAC6B,WAD7BA,CAC6B,UAGFA,SAAqCA,UAE5DA,kBAA+D,SAA/DA,CAA+D,aAEzCA,aAACA,QACnBA,0BAAyCA,YAK/CA,2BAiBAA,kBACFA,qEA/BKA,wCAGsBA,qDAKnBA,2DAKYA,iEAtCxBA,kBAC6B,WAD7BA,CAC6B,WAD7BA,CAC6B,QAKnBA,SACFA,4BAMFA,QACAA,4CAKFA,UAIFA,kBACEA,0BAmCFA,QACAA,kBACFA,gDA5DKA,wCAKKA,8BACQA,mCAiB+CA,qCAA0B,iEA1B7FA,kBAEEA,0BA8DFA,qDA9DqDA,0CAAuB,2IAgE5EA,qBAGEA,sBAAsCA,4BAAkEA,4EAFlGA,gDAAuC,yCAEpCA,mCAA+FA,kEAnFlHA,kBAAyF,UAAzFA,CAAyF,UAAzFA,CAAyF,WAKjFA,sBAEFA,UAGFA,iBAAqB,WAArBA,CAAqB,QAEbA,SAAaA,QAEjBA,yBAkEAA,4BAMFA,2EAhFWA,uCAMLA,uBAEEA,4CAkEkDA,uEAjFlEA,eACEA,yBA4FFA,oDA5FkDA,kCAAmB,8DAiGvEA,kBAAmD,WAAnDA,CAAmD,WAAnDA,CAAmD,YAI3CA,iBACAA,kBAAuB,UACrBA,YAA8EA,QAC9EA,gBAA2B,aAAkBA,cAACA,QAAOA,2BAA0CA,mDAA1CA,+EAQ7DA,2FArJRA,SACEA,iBAAqB,UAArBA,CAAqB,UAArBA,CAAqB,WAIbA,qBAEFA,UAGFA,iBAAqB,WAArBA,CAAqB,QAEbA,SAAiBA,cAM3BA,kBAAqB,aAIjBA,yBAcAA,yBAgGFA,QAEAA,2BAcAA,mBACEA,yBAGAA,sBAEEA,uBAAsCA,8BAAiDA,gBAKjGA,+CAzJmBA,oCAMLA,uBAUAA,4CAcAA,2CAkGYA,2CAemBA,yCAGYA,yDAAuC,6BAE7EA,iEASrBA,eACEA,4BAEFA,+BAFiBA,mGCzIV,IAAMijD,GAAb,MAAM,SAcJh8C,YACSk/D,EACA1C,GACCp4B,IAFDlkC,sBACAA,sBACCA,qBAfVA,UAAO01B,IAEP11B,sBAAmBojC,IAMVpjC,uBAA4B,EAC5BA,qBAA0B,EAC1BA,uBAA4B,KAsB7BA,6CAA0C,CAChDO,KAAM,KACN6jC,iBAAkB,qCA9BTq6B,cACT,OAAOz+D,KAAKg/D,eAAeP,QAa7BS,YAAYC,GAER,sBAAuBA,GACvBA,EAAQC,kBAAqBC,cAC3BF,EAAQC,kBAAqBxgD,eAE/B5e,KAAKg/D,eAAe1qD,QAIxBge,WACEtyB,KAAKg/D,eAAe1qD,QAQdkpD,kBACN,OAAOx9D,KAAKkkC,aAAaK,KACvBqiC,IACA5mE,KAAK6mE,yCAIHtH,cAAc/uB,EAAoBmsB,kDACtC,IAAIY,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAC7D,GAAImmE,GAAS,OAEb19D,KAAKs8D,cAAcjT,WAAW7Y,GAE9B,IAAKr0C,GAAG40B,UAAa0B,QAAOzyB,KAAKs8D,cAAcrkD,OAAO0kD,KAGtD38D,KAAKg/D,eAAeiG,8BAA8Bz0B,EAAYmsB,MAGhEmK,gBAAgBhzD,EAAe0xD,IAC7B,OAAOA,GAAQvyD,GAEjB8zD,qBACEjzD,EACA8wD,IAEA,OAAOA,GAAa7jE,KAGtBimE,gBAAgBlzD,EAAe2qD,IAC7B,OAAOA,GAAQxrD,GAGVg0D,WAAWz2B,UAEhB,OAAqB,QAAdk2B,QADejI,QAAQr4D,KAAK8Q,IAAKA,GAAEjE,KAAOu9B,GACjCi0B,aAAK3nD,iBAAE/qB,QAAS,EAG3Bm1E,mBAAmBhqE,GACxB,OAAQA,QACDojD,eACH,OAAOxmB,kBAA2EA,MAC/EwmB,cACH,OAAOxmB,iBAAyEA,MAE7EwmB,WACH,OAAOxmB,cAAmEA,MACvEwmB,kBACH,OAAOxmB,0BAAsFA,SAG7F,MAAO,mDA3FFgiB,IAAuBjjD,2DAAvBijD,GAAuB1tB,sKAFnB,CAACm2C,EAAuBpG,MAActlE,6ED3BcihC,SAAAA,GA4JeA,iBAAAA,IA7HTA,6EACvD,IAsCuEA,4GAElD,IA4B8DA,OAAAA,IAIoBA,SAAAA,IAkB5BA,sCAAK,IAoBVA,QAAAA,q8EA/I1FjhC,qBACEA,uBAEAA,mCAgKFA,QAGAA,+BAtKsCA,+BAAc,0CACLA,yCAEVA,qCAAY,mCAmK3CA,+2iEC3IQw8B,OAGDymB,IAAb,EAAaA,kDCrBP,QACOqrB,mCAET,OAAOnnE,KAAKonE,uBAAuBpyE,IAAI5C,GAAWa,iBAAMb,KAGlC2uE,yBAAiD,CAEvE,CACE9tD,GAAI,SACJgzD,SAAU,gBACVllE,KAAM+4B,gBAA4DA,CAClEosC,UAAWpsC,gBAAkEA,CAC7EmnC,QAAQ,GAEV,CACEhuD,GAAI,KACJgzD,SAAU,KACVllE,KAAM+4B,iBAAkDA,CACxDosC,UAAWpsC,IAA2CA,EAExD,CACE7mB,GAAI,MACJgzD,SAAU,MACVllE,KAAM+4B,4BAA8DA,CACpEosC,UAAWpsC,KAA6CA,EAE1D,CACE7mB,GAAI,MACJgzD,SAAU,MACVllE,KAAM+4B,wBAA0DA,CAChEosC,UAAWpsC,KAA6CA,EAE1D,CACE7mB,GAAI,SACJgzD,SAAU,SACVllE,KAAM+4B,YAAiDA,CACvDosC,UAAWpsC,YAAuDA,EAEpE,CACE7mB,GAAI,OACJgzD,SAAU,OACVllE,KAAM+4B,MAAyCA,CAC/CosC,UAAWpsC,MAA+CA,EAE5D,CACE7mB,GAAI,WACJgzD,SAAU,WACVllE,KAAM+4B,eAAsDA,CAC5DosC,UAAWpsC,eAA4DA,EAEzE,CACE7mB,GAAI,aACJgzD,SAAU,aACVllE,KAAM+4B,YAAqDA,CAC3DosC,UAAWpsC,YAA2DA,EAExE,CACE7mB,GAAI,YACJgzD,SAAU,YACVllE,KAAM+4B,WAAmDA,CACzDosC,UAAWpsC,WAAyDA,EAEtE,CACE7mB,GAAI,UACJgzD,SAAU,UACVllE,KAAM+4B,SAA+CA,CACrDosC,UAAWpsC,SAAqDA,EAElE,CACE7mB,GAAI,MACJgzD,SAAU,MACVllE,KAAM+4B,eAAiDA,CACvDosC,UAAWpsC,eAAuDA,EAEpE,CACE7mB,GAAI,UACJgzD,SAAU,UACVllE,KAAM+4B,SAA+CA,CACrDosC,UAAWpsC,SAAqDA,EAElE,CACE7mB,GAAI,WACJgzD,SAAU,WACVllE,KAAM+4B,UAAiDA,CACvDosC,UAAWpsC,UAAuDA,EAEpE,CACE7mB,GAAI,aACJgzD,SAAU,eACVllE,KAAM+4B,YAAuDA,CAC7DosC,UAAWpsC,YAA6DA,EAE1E,CACE7mB,GAAI,eACJgzD,SAAU,eACVllE,KAAM+4B,eAA0DA,CAChEosC,UAAWpsC,eAAgEA,EAE7E,CACE7mB,GAAI,OACJgzD,SAAU,OACVllE,KAAM+4B,MAAyCA,CAC/CosC,UAAWpsC,MAA+CA,EAE5D,CACE7mB,GAAI,SACJgzD,SAAU,SACVllE,KAAM+4B,SAA8CA,CACpDosC,UAAWpsC,SAAoDA,EAEjE,CACE7mB,GAAI,QACJ8uD,SAAS,EACTkE,SAAU,GACVllE,KAAM+4B,OAA2CA,CACjDosC,UAAWpsC,OAAiDA,sICnH3D,IAAM8sC,EAAb,MAAM,QACJ9mE,YAAmByjC,sBAEnBvjC,UAAO01B,IACPpD,WAAQ,+CAJGs0C,GAAkC/tE,sCAAlC+tE,EAAkCx4C,sGCEsB0L,+CAAAA,GAKsDA,gBAAAA,GAS1BA,QAAAA,sTA1BjGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,0BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,0BACkCA,UAGpCA,qBAAQA,gCAASyQ,wBACfzQ,sBAA8DA,8BACrDA,kBAMnBA,yBAAc,gBACJA,gCAASyQ,0BACfzQ,sBAA6DA,8BAAoCA,qBAxBxFA,oCAe2BA,sCASNA,ih4DDhBvB+tE,GAAb,EAAaA,gMEDN,IAAMS,GAAb,MAAM,SACJvnE,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,kDALG+0C,IAAsCxuE,uCAAtCwuE,GAAsCj5C,gHCG4B0L,cAAAA,IAEGA,8CAAAA,IACvBA,wEAAAA,GAQzBA,MAAAA,+NAvBlCjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,2BACAA,QACAA,0BAAkHA,QAClHA,0BAAqHA,kBAM/HA,yBAAc,gBACJA,gCAASyQ,yBACfzQ,8BAAgCA,sBArBvBA,ih4DDOFwuE,IAAb,6HENIxuE,eAAiD,UAAjDA,CAAiD,QAG7CA,WAEAA,UAGFA,iBAAwB,OACtBA,WAAmFA,QACnFA,iBAAiB,UAAjBA,CAAiB,eAGLA,uFACNA,sBAAsBA,cAACA,QACvBA,sBAAsBA,cAACA,QACvBA,sBAAsBA,cAACA,QACvBA,sBAAsBA,cAACA,gBAM/BA,kBACFA,kCAXgBA,qDACEA,4BACAA,4BACAA,4BACAA,6BCef,IAAMkiD,GAAb,MAAM,SAaJj7C,YACUyuB,GACAguC,GACAr4B,EACAzK,GAHAz5B,iBACAA,yBACAA,oBACAA,4BAbVA,0CAA+C,EA6F/CA,wBAA6B,EAkB7BA,kBAAc,EACdA,sBAAkB,EAhGlBsnE,kBACEh8D,GACAyoB,IAEI,eAAgBzoB,IAClBtL,KAAKunE,qBAITv7C,cAAW,CAEXsG,WACEtyB,KAAKunE,qBAGCA,4BACN,IAAIC,GAAiBxnE,KAAKu8D,iBAAiBjhC,UAAUvpC,OACrD,IAAKy1E,GAIH,YADA10C,6BAAqC9yB,KAAKuuB,UAM5CvuB,KAAKynE,oCAAwD,GAAlBD,GAC3CxnE,KAAK0nE,wBAA0BF,GAE/B,IAAIh3B,EAAyC,QAA5Bp2B,QAAKmU,SAASoE,QAAQ92B,cAAMihB,iBAAE0zB,WAC/C,IAAKA,EAUH,YALAxwC,KAAKuuB,SAASwG,aAAaC,GACzB,IACA,CAAEwb,WALoB9W,KADG6iC,iBAAiBjhC,UAAU,GACdroB,IAMtC,CAAE+f,SAAU,YAKhBhzB,KAAKmiC,SAAWniC,KAAKu8D,iBAAiBjhC,UAAUl1B,KAC9C8Q,IAAKA,GAAEjE,IAAMu9B,GAIf,IAAIm3B,EACFn6B,KAF+B/T,qBAAqB+T,sBAE9BC,SAASwY,qBACjCjmD,KAAK4nE,kBAAoBD,EAAyBE,qBAChD7nE,KAAKmiC,UAIT+V,UAAUC,IACR,IAAIn4C,KAAK8nE,kBAET,YAAK74B,WACAjvC,KAAK4nE,kBAAkBj5B,SAASwJ,GAAclkB,QAC5Cj0B,KAAK4nE,kBAAkBj5B,QAG1BM,yDAEJ,GADAjvC,KAAK4nE,kBAAkB34B,WACnBjvC,KAAK4nE,kBAAkBj5B,QAAS,OAAO,EAE3C,IAAIo5B,GAAQ/nE,KAAKkkC,aAAaK,KAAK8iC,GAAwC,CACzE9mE,KAAM,KACN6jC,iBAAkB,qCAEpB,aAAM3R,QAAOs1C,GAAMxwE,QAEnByI,KAAKgoE,kBAAkBn5B,2BAChB,IAIHo5B,wBAAwBz3B,kDAC5B,IAAI+sB,GAA0Bv9D,KAAKkkC,aAAaK,KAC9C2jC,KACA,CACE3nE,KAAM,KACN6jC,iBAAkB,uCAGjBjoC,EAAGuhE,SAAiBjrC,QAAO8qC,GAAwBhmE,QACpDmmE,UAEE19D,KAAKu8D,iBAAiB4L,eAAe33B,IAC3CxwC,KAAK8nE,mBAAoB,EAEzB9nE,KAAKooE,yBAKD1H,iEAGChvE,SAAS22E,eAAe,kCAEvBroE,KAAKu8D,iBAAiBv/C,gBAERhd,KAAKivC,eAGrBjvC,KAAKynE,4CACDznE,KAAKsoE,4BAGbtoE,KAAKooE,yBAGOE,yEACZ,IACIC,GAAwBvoE,KAAK0nE,wBADZ1nE,KAAKu8D,iBAAiBjhC,UAAUvpC,OAErD,KAAIw2E,IAAyB,GAE7B,MAAKlrB,aAAc,EACnB,QAASviD,EAAI,EAAGA,EAAIytE,GAAuBztE,UACnCkF,KAAKu8D,iBAAiBv/C,cACtBhd,KAAKu8D,iBAAiBiM,iBAE9BxoE,KAAKq9C,aAAc,KAGrB+qB,sBACE,IAAIK,GAAezoE,KAAKu8D,iBAAiBmM,iBACvC1oE,KAAKmiC,SAASlvB,GACdiE,KAAMA,GAAEgmB,QAAQ8jB,eAEdynB,GAEFzoE,KAAKuuB,SAASwG,aAAaC,GAAGoO,kBAAgC,CAC5DoN,WAAYi4B,GAAax1D,KAM7BjT,KAAKuuB,SAASwG,aAAaC,GAAGoO,uEAjKrB2X,IAAsBliD,0EAAtBkiD,GAAsB3sB,2EAQtBu6C,KAAiB,qFAdb,CACbvK,KACAC,IACAuK,QACDl5B,qDD3BoD5V,+BAAAA,IAMGA,mCAAAA,gUAZxDjhC,qBAGEA,yBA2BAA,eAAK,gBAEOA,iDAAyByQ,gCACnCzQ,UAIFA,eAAK,qBACYA,qCAAcyQ,uBAC7BzQ,oBAvCkCA,iCAG9BA,8DA4BMA,uCAOsCA,ul4DCVxCw8B,OAOD0lB,IAAb,EAAaA,sZC9BXliD,qBACQA,0CAAS+zC,EAAT/e,OAAS+e,0BACf/zC,sBAAyDA,4BAAuDA,qCAAvFA,iEAuErBA,4BAA2FA,mCAC3FA,4BAAsHA,mCAgBtHA,4BAA2GA,mCAC3GA,4BAEQA,sCAmCZA,mBAAsE,UACpEA,YAA6FA,QAC7FA,SAA4BA,4BAEsBA,mCAFlDA,gFAqBFA,eAAmE,UAAnEA,CAAmE,MAAnEA,CAAmE,UAE5DA,YAAiEA,QAAOA,SAAqBA,QAChGA,kBAA2B,MAA3BA,CAA2B,UACtBA,YAA4BA,QAAQA,UAAsBA,QAC7DA,cAAGA,UAAqCA,8BAEVA,UAC9BA,2BAA2GA,UAE7GA,sBACEA,uBAAwDA,8BAAiEA,uCAX1HA,iCAE0EA,wCAElCA,gDACpCA,8DAMsBA,kFAzCjCA,kBACEA,iBAEAA,aAAG,sBAAoGA,QAAQA,SAC7GA,4BAC4GA,UAE9GA,0BAKAA,kBAAwB,eAGfA,+EAFPA,QAGAA,kCAEAA,UAEFA,mBAAwB,eAGfA,+EAFPA,QAGAA,kCAEAA,UAIFA,yBAeFA,mCA1CiHA,gDAIxGA,gEAOEA,gDAA8B,2BAQ9BA,+CAA6B,2BAQfA,6FA0CnBA,qBAEEA,SACFA,qCAFQA,0BACNA,mEAQAA,kBAAiEA,aAACA,sDAKpEA,oBAOOA,8EAAyB,qCACf+5C,EADe/kB,OACf+kB,eADV/5C,CAAyB,mCAEjBgwE,EAFiBh7C,OAEjBg7C,gBATfhwE,mCAGOA,wBAAoB,wEAQ3BA,oBAMOA,8EAAyB,qCACfiwE,EADej7C,OACfi7C,gBAPjBjwE,mCAMOA,8EAkCTA,kBAA0C,QACxCA,YAA8DA,QAC9DA,yBAAmFA,QAEnFA,+BAIkBA,oDAAiBkwE,EAAjBl7C,OAAiBk7C,sBAAyBlwE,0DAJ1CA,2CAA8B,sBAA9BA,CAA8B,aAA9BA,CAA8B,kGAQlDA,kBAAuC,QACrCA,YAAgEA,QAChEA,yBAAyFA,QAEzFA,+BAIkBA,oDAAiBi6C,EAAjBjlB,OAAiBilB,sBAAyBj6C,0DAJ1CA,2CAA8B,sBAA9BA,CAA8B,aAA9BA,CAA8B,kFAnBpDA,eAGEA,yBAYAA,yBAUFA,iCAzB8DA,0CAG9BA,6BAYHA,2EAa/BA,qBACQA,0CAASmwE,EAATn7C,OAASm7C,0BACfnwE,sBAAyDA,4BAA8CA,qCAA9EA,qIAnS7BA,eAAiC,SAAjCA,CAAiC,UAE7BA,WAA2CA,QAC3CA,gBAAMA,SAAmBA,UAE3BA,2BAKAA,iBAAwB,YAAxBA,CAAwB,OAAxBA,CAAwB,WAGlBA,YAAsDA,QAAQA,mBAA4BA,cAACA,UAE7FA,kBAAyB,eAQhBA,mFAA+B,qCACrBowE,EADqBp7C,MACrBo7C,sBARjBpwE,UAUFA,iCACEA,uBACFA,kBAGFA,kBAA8B,QAC5BA,aAAqDA,QACrDA,kBAAyB,eAOhBA,oFAAgC,qCACtBqwE,EADsBr7C,MACtBq7C,oBAPjBrwE,YAaJA,qBAAiF,OAAjFA,CAAiF,WAC5EA,aAAoDA,QAAQA,mBAA4BA,cAACA,UAC5FA,kBAAyB,eAKhBA,kFAA8B,qCACpBswE,EADoBt7C,MACpBs7C,qBALjBtwE,UAOFA,iCACEA,uBACFA,kBAGFA,kBAEAA,qBAAkG,OAAlGA,CAAkG,WAC7FA,aAA6CA,QAAQA,mBAA4BA,cAACA,UACrFA,kBAAyB,eAOhBA,+EAA2B,qCACjBuwE,EADiBv7C,MACjBu7C,kBAPjBvwE,UASFA,oBACEA,uBAA0DA,kBAC1DA,0BACAA,0BACFA,UAGFA,qBACsE,OADtEA,CACsE,WACjEA,aAAmEA,QAAQA,mBAA4BA,cAACA,UAC3GA,kBAAyB,eAIhBA,mFAA+B,qCACrBq6C,EADqBrlB,MACrBqlB,kBAJjBr6C,UAMFA,oBACEA,uBAA0DA,kBAC1DA,0BACAA,0BAGFA,UAGFA,kBAA8B,OAA9BA,CAA8B,WACzBA,aAAmEA,UACtEA,kBAAyB,eAIhBA,mFAA+B,qCACrBwwE,EADqBx7C,MACrBw7C,kBAJjBxwE,YAQJA,kBAA8B,OAA9BA,CAA8B,WACzBA,aAAmEA,UACtEA,kBAAyB,eAIhBA,uFAAmC,qCACzBs6C,EADyBtlB,MACzBslB,kBAJjBt6C,cAUNA,0BA+CAA,kBAEAA,kBAAwB,cAAxBA,CAAwB,OAAxBA,CAAwB,WAGlBA,aAAgDA,QAChDA,mBAA4BA,cAACA,UAG/BA,2BAEaA,kFAA8B,yCAChBywE,EADgBz7C,MAChBy7C,wBAAuBzwE,UAEpDA,kBAA8B,YAA9BA,CAA8B,QAE1BA,aAA2DA,UAK7DA,sBACQA,uFAAmC,qCACzBu6C,EADyBvlB,MACzBulB,oBAChBv6C,sBAAuCA,eAAEA,8BAAoCA,QAAQA,eAACA,QACtFA,4BAIFA,UAEFA,mBACAA,sBAA6E,aAA7EA,CAA6E,QAA7EA,CAA6E,YAEtEA,cAA0EA,QAC3EA,4BACFA,UAEFA,mBAEEA,6BAWAA,6BASAA,oBAAgC,iBACGA,8FAC/BA,wBACFA,YAGJA,mCAAuHA,UAEzHA,mBAA8B,SAC5BA,cAAsEA,QACtEA,mBAAyB,iBAEfA,yFAAqC,qCAC3B0wE,EAD2B17C,MAC3B07C,oBAChB1wE,uBAAsBA,eAACA,QACvBA,uBAAsBA,eAACA,QACvBA,uBAAsBA,eAACA,QACvBA,uBAAsBA,gBAAEA,gBAMhCA,mBACEA,mBAEAA,8BAAiEA,QAEjEA,2BA0BFA,QAEAA,8BAIFA,kCApSMA,oDAEIA,yDAECA,oCAM0CA,6CAYtCA,+CAIeA,2CAafA,gDAAgC,kJAOKA,4CAOrCA,8CAIeA,2CAMmBA,iEASlCA,2CAIeA,2CACoBA,wCACOA,+DAKhDA,6EAMMA,+CAIeA,2CACwBA,8CACOA,2EAY9CA,+CAWAA,mDAO0BA,0BAkDcA,+CAMpCA,6DAA2C,gBAA3CA,CAA2C,+BAahDA,mDAEEA,6BAC0BA,kEAOWA,uCAGpCA,0EAKDA,uCAWAA,wCAWKA,8EAULA,qDAEEA,4BACAA,4BACAA,4BACAA,4BAWWA,+CA4BlBA,qCC1PJ,IAAM8vE,GAAb,MAAM,SAwFJ7oE,YACUy8D,GACAC,GACAgN,GACD3jC,GACCpM,IAJAz5B,yBACAA,+BACAA,sCACDA,qBACCA,6BAnFVA,4BAAoC,GAE1BA,2BAA8C,IAAIm9C,MAU5Dn9C,0BAAuBy0C,KACvBz0C,sBAAmBojC,IAEnBpjC,sBAAmBogD,IACnBpgD,uBAAoBypE,EACpBzpE,sBAAmB0pE,GACnB1pE,kBAAe,KAEfA,6BAA0B2pE,GAC1B3pE,yBAAsB,KAiCtBA,UAAO01B,IACP11B,cAAWihD,IAEXjhD,mBAAwB,EAjEbmiC,eACT,OAAOniC,KAAK4pE,UAEDznC,aAAShtC,IACpB6K,KAAK4pE,UAAYz0E,GACjB6K,KAAKqpD,aA0BHwgB,6BACF,OAA2C,QAApCC,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAE+sD,oBAAYhhD,UAAI,CAE7CmhD,mCACF,OAAiD,QAA1CF,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAEktD,0BAAkBnhD,UAAI,CAEnDohD,iCACF,OAA+C,QAAxCH,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAEmtD,wBAAgBphD,UAAI,CAEjDqhD,gCACF,OAA8C,QAAvCJ,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAEotD,uBAAerhD,UAAI,CAEhDshD,mCACF,OAA2C,QAApCL,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAEstD,oBAAYvhD,UAAI,CAE7CwhD,yCACF,OAAiD,QAA1CP,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAEwtD,0BAAkBzhD,UAAI,CAGnD0hD,2BACF,OAAyC,QAAlCT,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAEytD,kBAAU1hD,UAAI,CAG3C2hD,mCACF,OAAiD,QAA1CV,GAAsB,QAAtBxjC,QAAKyjC,yBAAiBjtD,iBAAE0tD,0BAAkB3hD,UAAI,CAY5C4hD,sCACT,OAAiD,QAA1CnkC,QAAKi2B,iBAAiBjhC,UAAU,GAAG4B,eAAOpgB,iBAAE7J,GAG1Cy3D,wBACT,OAAO1qE,KAAKyqE,0BAA4BzqE,KAAKk9B,QAAQjqB,GAG5CiqB,cAET,OADcl9B,KAAKw8D,uBAAuBt/B,QAIjCytC,wBACT,OAAO3qE,KAAKwpE,8BAA8B1pB,UAa5CxtB,WAAQ,CAEF+2B,2DACJ,IAAKrpD,KAAKmiC,SAAU,OAGpB,IAAIwlC,GACFn6B,KAF+B/T,qBAAqB+T,sBAE9BC,SAASwY,oBACjCjmD,KAAK+pE,kBAAoBpC,GAAyBE,qBAChD7nE,KAAKmiC,UAEPniC,KAAK6uC,0BAEL,IAAI+7B,GACF5qE,KAAKw8D,uBAAuBnT,WAAWrpD,KAAKmiC,SAASlvB,IACnD43D,GACF7qE,KAAKwpE,8BAA8BngB,WAAWrpD,KAAKmiC,SAASlvB,UAExD2J,QAAQy5C,IAAI,CAChBuU,GACAC,KAGF7qE,KAAK8qE,uBACH9qE,KAAKwpE,8BAA8BuB,4BAErC/qE,KAAKgrE,UAAmC,GAAvBhrE,KAAKmiC,SAASH,KAAS,GAGnC6M,0BACA7uC,KAAKiqE,iBAWLjqE,KAAKuqE,WAWLvqE,KAAKkqE,gBAWLlqE,KAAK6pE,cAAiB7pE,KAAKgqE,mBAW3BhqE,KAAKmqE,oBAAuBnqE,KAAKqqE,yBAWjCrqE,KAAKwqE,oBACRvjB,WAAW,YACyB,QAAlC3gB,QAAK2kC,qCAA6BnuD,WAAEqyB,cAAcC,eAAe,CAC/DC,SAAU,SACVC,MAAO,QACPC,OAAQ,YAfZ0X,WAAW,YACiB,QAA1B3gB,QAAK4kC,6BAAqBpuD,WAAEqyB,cAAcC,eAAe,CACvDC,SAAU,SACVC,MAAO,QACPC,OAAQ,YAfZ0X,WAAW,YACW,QAApB3gB,QAAK4I,uBAAepyB,WAAEqyB,cAAcC,eAAe,CACjDC,SAAU,SACVC,MAAO,QACPC,OAAQ,YAfZ0X,WAAW,YACc,QAAvB3gB,QAAK6kC,0BAAkBruD,WAAEqyB,cAAcC,eAAe,CACpDC,SAAU,SACVC,MAAO,QACPC,OAAQ,YAfZ0X,WAAW,YACgB,QAAzB3gB,QAAK8kC,4BAAoBtuD,WAAEqyB,cAAcC,eAAe,CACtDC,SAAU,SACVC,MAAO,QACPC,OAAQ,YAfZ0X,WAAW,YACe,QAAxB3gB,QAAK+kC,2BAAmBvuD,WAAEqyB,cAAcC,eAAe,CACrDC,SAAU,SACVC,MAAO,QACPC,OAAQ,WA0DZ,CAIJjB,kBACEtuC,KAAKw8D,uBAAuBnuB,OAG9Bi9B,gBAAgBv3E,IAAU,CAI1Bw3E,oBAEE,OAAOvrE,KAAK6pE,aAGd2B,cACExrE,KAAKw8D,uBAAuBnuB,OAC5BruC,KAAKyrE,cAGPC,oBACE1rE,KAAK2rE,oBACL3rE,KAAKsuC,kBAGPq9B,oBACE3rE,KAAK+pE,kBAAkB96B,SAASoF,gBAGlCu3B,mBACE5rE,KAAK6rE,mBACL7rE,KAAKsuC,kBAGPu9B,mBACE7rE,KAAK+pE,kBAAkB96B,SAASoF,eAGlCo3B,cACEzrE,KAAK+pE,kBAAkB96B,SAASoF,UAGlC7F,gBACExuC,KAAK8rE,gBAED9rE,KAAKgqE,oBAAsBhqE,KAAK6pE,cAClC7pE,KAAKsuC,kBAITw9B,gBACE9rE,KAAK+pE,kBAAkB96B,SAASoF,YAChCr0C,KAAK+pE,kBAAkB96B,SAASoF,kBAGlC03B,gBACE/rE,KAAKgsE,gBACLhsE,KAAKsuC,kBAEP09B,gBACEhsE,KAAK+pE,kBAAkB96B,SAASoF,YAChCr0C,KAAK+pE,kBAAkB96B,SAASoF,kBAGlC43B,sBACEjsE,KAAKksE,sBACLlsE,KAAKsuC,kBAEP49B,sBACElsE,KAAK+pE,kBAAkB96B,SAASoF,kBAG5B83B,sEACJnsE,KAAKosE,sBAAsB7uB,KAAKv9C,KAAKmiC,SAASlvB,uDAxQrC01D,IAAiB9vE,mFAAjB8vE,GAAiBv6C,0tBDrCQ0L,WAAAA,IAWcA,YAAAA,IAMxBA,uBAAAA,IAQpBA,6FAAgD,IAKRA,aAAAA,IAKpBA,yBAAAA,IAWwBA,WAAAA,IAEyDA,uBAAAA,IAQrGA,4FAAgD,IAOPA,OAAAA,IAIrBA,kBAAAA,IAgB+BA,mBAAAA,IAkBAA,mBAAAA,IAWAA,mBAAAA,IAgEhBA,eAAAA,IAWUA,gBAAAA,IAQ0BA,QAAAA,IAUvBA,+BAAAA,IAO5BA,qCAAAA,IAWAA,qCAAAA,IAcwCA,2DAAAA,IAGZA,sBAAAA,IAiBLA,oBAAAA,IA5PiDA,kBAAAA,IAuE7BA,8BAAAA,IAC6BA,4BAAAA,IAgBnBA,oCAAAA,IACmCA,mCAAAA,IAiC9BA,uBAAAA,IAEAA,8BAAAA,IAWLA,OAAAA,IAQFA,MAAAA,IAhBgBA,MAAAA,IAC6BA,sFAAAA,IAuB5DA,cAAAA,IAEzBA,IAAAA,IAC+EA,+EAAAA,IAG1CA,2CAAAA,IAG4CA,aAAAA,IAkGjEA,iBAAAA,IACQA,8BAAAA,IAWPA,kBAAAA,IACUA,iCAAAA,IAayBA,kBAAAA,27IAnS3FjhC,iCAAMA,2y6DCqCQw8B,QAEDszC,IAAb,GA4QO,IAAKc,EAOX,MAPD,OAAYA,SAAiB,KAC3BA,gBACAA,qBACAA,0BACAA,yBACAA,uBACAA,qBANUA,EAAZ,IAAYA,IAOX,GAEWC,GAGX,MAHD,OAAYA,WAAgB,KAC1BA,gBACAA,iBAFUA,GAAZ,IAAYA,IAGX,GAEWC,GAGX,MAHD,OAAYA,WAAuB,KACjCA,gBACAA,iBAFUA,GAAZ,IAAYA,IAGX,EAHWA,iRChUV9wE,yBAAwGA,qCAe5FA,aAAwCA,yBACtCA,4BAA+DA,6CADzBA,qGAGxCA,aAAwCA,yBACtCA,4BAA+DA,6CADzBA,sGAGxCA,aAA4CA,yBAC1CA,4BAA+DA,6CADrBA,gHAI5CA,aAAoCA,SAA0BA,2CAA1BA,+DAKlCA,cACEA,sBACAA,4BAA4EA,mCADnEA,yEAIXA,cACEA,sBACAA,4BAA0EA,mCADjEA,yEAIXA,cACEA,sBACAA,4BAA2EA,mCADlEA,yEAIXA,cACEA,sBACAA,4BAA0EA,mCADjEA,wEAKXA,cACEA,sBACAA,4BAA0EA,mCADjEA,wEAKXA,cACEA,sBACAA,4BAAsFA,mCAD7EA,wEAIXA,cAEEA,sBACAA,4BAAyFA,mCADhFA,yEAIXA,cACEA,sBACAA,4BAA8FA,mCADrFA,yEAzCbA,iBAEEA,uBAKAA,uBAKAA,uBAKAA,uBAMAA,sBAMAA,sBAKAA,sBAMAA,uBAIFA,+EA1COA,2EAKAA,0EAKAA,uEAKAA,gHAMAA,uEAMAA,gHAKAA,2EAMAA,2HAcLA,qBAEQA,sEAASsjE,EAATtuC,MAASsuC,4BACftjE,sBACAA,4BAAsDA,qCAD7BA,iHAlFvCA,iBAAwE,UAAxEA,CAAwE,UAAxEA,CAAwE,YAKhEA,sBACFA,UAEFA,kBAAqB,WAArBA,CAAqB,QAEbA,SAA8BA,QAClCA,kBACEA,sBAGAA,sBAGAA,uBAIAA,uBAGAA,yBA8CAA,mBAA+C,gBAI3CA,uBACAA,8BAAiCA,UAGnCA,6BAMFA,sEArFWA,wCAKiFA,oCAK1FA,wCAEEA,8CAGAA,8CAGAA,kDAIAA,0CAGoBA,kEAgDdA,2DAAyC,+BAEtCA,oCAIFA,qGAjFvBA,SAEEA,0BA6FFA,qCA7FgDA,8DA+FhDA,8DAEAA,qBAGQA,0CAASgwE,EAATh7C,MAASg7C,uBACfhwE,sBACAA,4BAAgEA,oCAH1DA,sCAEmBA,iEAM7BA,eACEA,4BAGFA,gCAHiBA,+DAAkD,8FCvF5D,IAAMoiD,EAAb,MAAM,SAmBJn7C,YACSusE,GACC5yC,GACDtF,GACC+P,IAHDlkC,wBACCA,6BACDA,eACCA,qBAtBHA,2BAAwB,CAC7BssE,OAAQlpC,eACRmpC,SAAU,IAILvsE,eAAwB,GAOtBA,uBAA4B,EAC5BA,qBAA0B,EAEzBA,yBAA4C,IAAIm9C,MAc1Dn9C,UAAO01B,IACP11B,sBAAmBojC,IACnBpjC,cAAWihD,IAqCJjhD,uBAA4B,EA5CjCA,KAAK2nE,yBADuBluC,GAAqB+T,sBACKC,SACpDwY,oBAjBG7V,UAAUjO,IACf,OAAOniC,KAAK2nE,yBAAyBE,qBAAqB1lC,IAwB5D7P,WACEtyB,KAAKs7B,UAAY,IAAIt7B,KAAKy5B,qBAAqBE,KAAK2B,WACpDt7B,KAAK2nE,yBAAyB14B,WAE9BjvC,KAAKwsE,sBAAwB,CAC3BF,OAAQlpC,eACRmpC,SAAU,CAAE/7B,YAAYi8B,QAAqBzsE,KAAKs7B,aAI9CkiC,kBACN,OAAOx9D,KAAKkkC,aAAaK,KAAK2jC,IAAqC,CACjE3nE,KAAM,KACN6jC,iBAAkB,sCAIhB+nC,sBAAsBhqC,kDAC1B,IAAIo7B,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAC7D,GAAImmE,GAAS,OAEb,IAAKvhE,GAAG40B,UAAa0B,QACnBzyB,KAAKqsE,gBAAgBlE,eAAehmC,GAASlvB,KAG3C8d,KAKJ/wB,KAAKs7B,UAAYt7B,KAAKs7B,UAAUlzB,OAAO8O,IAAKA,GAAEjE,IAAMkvB,GAASlvB,IAC7DjT,KAAK0sE,oBAAoBnvB,KAAKpb,GAASlvB,OAInC05D,mEACJ,IAAI3sE,KAAK4sE,iBAET,MAAKA,kBAAmB,EACxB,IACE,IAAIC,SAAoB7sE,KAAKqsE,gBAAgB7D,iBAC7CxoE,KAAKm0B,OAAOY,aAAaC,GAAGoO,kBAAgC,CAC1DoN,WAAYq8B,GAAY55D,IAH5B,CAG4BA,MAEnB+d,IAEPhxB,KAAK4sE,kBAAmB,EAP1B,qDA3ES3xB,IAAwBpiD,yEAAxBoiD,GAAwB7sB,qLAFpB,CAACgwC,OAAiB1uB,4FDtB6C5V,4BAAAA,IA+ElCA,OAAAA,IA/D2BA,QAAAA,IAGAA,QAAAA,IAGAA,QAAAA,IAUGA,oBAAAA,IAKDA,mBAAAA,IAKHA,uBAAAA,IAKNA,4BAAAA,IAMMA,sBAAAA,IAMDA,mCAAAA,IAMDA,uCAAAA,IAKQA,oCAAAA,IAgBbA,SAAAA,IAmBTA,cAAAA,mhCA1GxDjhC,iBACEA,uBACAA,iCAiGAA,uBAEAA,2BAOFA,QAGAA,gCA/GkCA,gDAAwC,2BAChBA,yCACrBA,uCAiGEA,yCAG5BA,6CASLA,+j4DCzFQw8B,QAGD4lB,IAAb,EAAaA,oICfN,IAAMitB,EAAb,MAAM,QACJpoE,YAAmByjC,sBAEnBvjC,UAAO01B,IACPpD,WAAQ,+CAJG41C,GAAmCrvE,sCAAnCqvE,EAAmC95C,uGCEyB0L,gDAAAA,GAGsDA,iBAAAA,GAU9BA,QAAAA,0TAzBjGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,0BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,0BACmCA,QACnCA,qBAAQA,gCAASyQ,wBACfzQ,sBAA8DA,8BACpDA,oBAOtBA,yBAAc,gBACJA,gCAASyQ,0BACfzQ,sBAA6DA,8BAAoCA,qBAvBxFA,oCAa6BA,sCAURA,ih4DDfvBqvE,GAAb,EAAaA,mHECN,IAAMU,EAAb,MAAM,QAMJ9oE,YACU25B,EACAqzC,EACAhhC,GAFA9rC,4BACAA,4BACAA,4BAGJqpD,WAAW7Y,uDACTu8B,QACJ/sE,KAAKy5B,qBACLz5B,KAAK8rC,qBACL0E,GAGF,IAAIrO,EAAWniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACtD8Q,GAAKA,EAAEjE,IAAMu9B,GAEf,IAAKrO,EACH,KAAM,iEAAiEqO,eAGzExwC,KAAKwwC,WAAaA,EAClBxwC,KAAK8/C,UAAY3d,EAASjF,QAAQ4iB,UAElC9/C,KAAKgtE,gBAAkB,GACvBhtE,KAAK8/C,UAAUltD,QAAQitD,IACrB,IAAIotB,EAAiBjtE,KAAK8rC,qBAAqB+E,cAAcgP,GAC7D7/C,KAAKgtE,gBAAgBt5E,KAAKu5E,OAIvBlC,4BAcL,OAbqB/qE,KAAKy5B,qBAAqBE,KAAK2B,UACjDlzB,OAAOivC,GAAKA,EAAEpkC,IAAMjT,KAAKwwC,YACzB6U,QAAQnuC,GAAKA,EAAEgmB,QAAQ4iB,WACvB13C,OAAO6O,GAA8C,IAAzCjX,KAAK8sE,qBAAqB3pB,SAASlsC,IAC/C7O,OACC,CAACy3C,EAAS/kD,EAAG0B,IACXA,EAAIqrD,UACF5wC,GACEjX,KAAK8sE,qBAAqB3pB,SAASlsC,KACnCjX,KAAK8sE,qBAAqB3pB,SAAStD,MACjC/kD,GAMPuzC,OACL,QAASvzC,EAAI,EAAGA,EAAIkF,KAAK8/C,UAAU/tD,OAAQ+I,IACzCkF,KAAKgtE,gBAAgBlyE,GAAG42C,QAIf10B,4DACLhd,KAAK8rC,qBAAqB9uB,UAGrBkwD,8DACX,MAAMhwC,EAAUl9B,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACvD8Q,GAAKA,EAAEjE,IAAMjT,KAAKwwC,YAClBtT,QAGF,IAAIiwC,QAA4BC,KADJthC,qBAAqB+E,cAAc3T,GAChBvd,KAAK,kBACjDpoB,OACHyI,KAAK8/C,UAAUpsD,KAAKy5E,GAEpB,IAAIE,EAAoBrtE,KAAK8rC,qBAAqB+E,cAAcs8B,GAChEntE,KAAKgtE,gBAAgBt5E,KAAK25E,KAGfC,cAAcC,iDACzB,IAAIC,EAAkBxtE,KAAK8/C,UAAU15C,KAAK6Q,IAAKA,GAAEhE,IAAMs6D,GACvD,IAAKC,EAAiB,OAEtB,IAAIpN,EACFpgE,KAAK8rC,qBAAqB+E,cAAc28B,GAC1C,IAAKpN,EAAiB,OAEtB,IAAIj+B,EAAWniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACtD8Q,IAAKA,GAAEjE,IAAMjT,KAAKwwC,YAEpB,IAAKrO,EAAU,OAEf,MAAMjF,EAAUiF,EAASjF,cACnBkjC,EAAgBnoD,OAAO,CAAEw1D,UAAWvwC,EAAQjqB,KAAM1b,OACxDyI,KAAK8rC,qBAAqB8T,iBAAiB4tB,GAE3C,IAAIE,GAAe1tE,KAAK8/C,UAAU+H,UAChC5wC,IAAKA,GAAEhE,IAAMu6D,EAAgBv6D,KAEX,GAAhBy6D,IACF1tE,KAAK8/C,UAAUxlD,OAAOozE,GAAc,GAGtC,IAAIC,GAAsB3tE,KAAKgtE,gBAAgBv3E,QAAQ2qE,IAC5B,GAAvBuN,IACF3tE,KAAKgtE,gBAAgB1yE,OAAOqzE,GAAqB,mDAvG1C/E,GAA6B/vE,8DAA7B+vE,EAA6B9vE,QAA7B8vE,EAA6B,qBAF5B,SAEDA,GAAb,EAAaA,+FCDN,IAAMvK,EAAb,MAAM,QAaJv+D,YACU25B,EACAqS,GADA9rC,4BACAA,4BAXNk9B,cACF,OAAOl9B,KAAK4tE,SAIVzrC,eACF,OAAOniC,KAAK4pE,UAQRvgB,WAAW7Y,uDACTxwC,KAAKgd,MAAM,yBAEjBhd,KAAK4pE,UAAY5pE,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACxD8Q,GAAKA,EAAEjE,IAAMu9B,GAEVxwC,KAAKmiC,WAEVniC,KAAK4tE,SAAW5tE,KAAKmiC,SAASjF,QAG9Bl9B,KAAK8rC,qBAAqB8T,iBAAiB5/C,KAAKk9B,SAChDl9B,KAAKotE,eAAiBptE,KAAK8rC,qBAAqB+E,cAAc7wC,KAAKk9B,YAGrEmR,OACEruC,KAAKotE,eAAe17B,QAGtB10B,MAAM2xC,EAAkB,IACtB,OAAO3uD,KAAK8rC,qBAAqB9uB,MAAM2xC,iDAtC9B0P,GAAsBxlE,mDAAtBwlE,EAAsBvlE,QAAtBulE,EAAsB,qBAFrB,SAEDA,GAAb,EAAaA,yGCGN,IAAMD,EAAb,MAAM,QAIJt+D,YACUgsC,EACArS,SADAz5B,4BACAA,4BAkEFA,mBAAgD,GAhEtDA,KAAKs7B,UAAYt7B,KAAKy5B,qBAAqBE,KAAK2B,UAEhDt7B,KAAK8wC,kBAAkC,QAAdmZ,OAAK3uB,iBAASxe,eAAE9nB,IAAImtC,GAC3CniC,KAAK8rC,qBAAqB+E,cAAc1O,IAI/BqmC,+DACX,MAAM7uC,EAAO35B,KAAKy5B,qBAAqBE,KAGvC,IAAIkzC,QAA8BgB,KADT/hC,qBAAqB+E,cAAclX,GACdha,KAAK,mBAChDpoB,OACHoiC,EAAK2B,UAAU5nC,KAAKm5E,SAGd7sE,KAAKy5B,qBAAqB2H,qBAAqB,cAAe,CAClEyrC,IAIF,IAAIiB,EACF9tE,KAAK8rC,qBAAqB+E,cAAcg8B,GAC1C,YAAK/7B,kBAAkBp9C,KAAKo6E,GAG5B9tE,KAAKs7B,UAAY3B,EAAK2B,UAEfuxC,IAGI1E,eAAe33B,uDAC1B,IAAIu9B,EAAe/tE,KAAKy5B,qBAAqBE,KAEzCq0C,EAA0C,QAAvBnxE,EAAY,MAAZotD,OAAY,EAAZA,EAAc3uB,iBAASxe,eAAE1W,KAC9C8Q,GAAKs5B,GAAct5B,EAAEjE,IAGvB,IAAK+6D,EAAkB,OAGvB,IAAI5N,EAAkBpgE,KAAK8rC,qBAAqB+E,cAC9Cm9B,GACA,SAEI5N,EAAgBnoD,SAAS1gB,OAG/Bw2E,EAAazyC,UAAYyyC,EAAazyC,UAAUlzB,OAC9C8O,GAAKA,EAAEjE,IAAMu9B,GAGfxwC,KAAK8wC,kBAAoB9wC,KAAK8wC,kBAAkB1oC,OAC9CivC,GAAKA,EAAEpiD,KAAOmrE,EAAgBnrE,KAIhC+K,KAAKs7B,UACFlzB,OAAO8O,GAAKA,EAAE8qB,MAAQgsC,EAAiBhsC,OACvCpvC,QAAQskB,GAAKA,EAAE8qB,SAElBhiC,KAAKs7B,UAAYt7B,KAAKs7B,UAAUlzB,OAAOivC,GAAKA,EAAEpkC,IAAMu9B,KAI/Cy9B,6BACL,OACoB,QAAlBjkB,OAAKkkB,qBAAapxD,eAAE/qB,UACoB,QAAxC8K,OAAK48B,qBAAqBE,KAAK2B,iBAASzS,eAAE92B,UAE1CiO,KAAKkuE,cAAwD,QAAxCjkB,OAAKxwB,qBAAqBE,KAAK2B,iBAASG,eAAEzmC,IAC7DmtC,IACS,CACLlvB,GAAIkvB,EAASlvB,GACblS,MAAMkgD,OAAgB9e,EAASjF,aAKhCl9B,KAAKkuE,cAGP7/B,KAAKmC,GACV,MAAMrO,EAAWniC,KAAKs7B,UAAUl1B,KAAK8Q,GAAKA,EAAEjE,IAAMu9B,GAClCxwC,KAAK8rC,qBAAqB+E,cAAc1O,GAChDuP,QAGG10B,4DACLhd,KAAK8rC,qBAAqB9uB,UAG3BkgB,QAAQsT,WACb,OAEC,QAFMyZ,EAAwC,QAAxCptD,OAAK48B,qBAAqBE,KAAK2B,iBAASxe,eAAE1W,KAC/C+7B,GAAYA,EAASlvB,IAAMu9B,UAC5B3nB,eAAEqU,QAGLixC,eAAe39B,GACb,MAAMlV,EAAYt7B,KAAKs7B,UACvB,OAAOA,EAAUusB,UAAUxQ,GAAKA,EAAEpkC,IAAMu9B,GAAc,GAAKlV,EAAUvpC,OAGvE22E,iBACEl4B,EACAsqB,EAA6C,MAAM,IAEnD,MAAMx/B,EAAYt7B,KAAKs7B,UAEvB,IAAI8yC,EAAgB9yC,EAAUusB,UAAUxQ,IAAKA,GAAEpkC,IAAMu9B,IAChC,GAAjB49B,IAAqBA,EAAgB,GAEzC,MAAMC,EAAYD,EAAgB,EAClC,GAAIC,GAAa/yC,EAAUvpC,OAAQ,OAAO,KAE1C,IAAI02E,EAAentC,EAAU+yC,GAI7B,OAAIvT,IAAcA,EAAU2N,GACnBzoE,KAAK0oE,iBAAiBD,EAAax1D,GAAI6nD,GAGzC2N,EAGT6F,QAAQ99B,WACN,IAAItT,EAEH,QAFa+sB,EAAwC,QAAxCptD,OAAK48B,qBAAqBE,KAAK2B,iBAASxe,eAAE1W,KACtD8Q,GAAKA,EAAEjE,IAAMu9B,UACd3nB,eAAEqU,QACH,SAAgB,MAAPA,OAAO,EAAPiqB,EAAShqB,eAAsB,MAAPD,OAAO,EAAPiqB,EAAS9pB,wDA1IjC+gC,GAAgBvlE,qDAAhBulE,EAAgBtlE,QAAhBslE,EAAgB,qBAFf,SAEDA,GAAb,EAAaA,mFCJD/pB,EASX,MATD,OAAYA,QAA0B,KACpCA,sBACAA,sBACAA,gBACAA,4BACAA,gBACAA,4BACAA,YACAA,4BARUA,EAAZ,IAAYA,GASX,GAEK,iBAAiCk6B,IA4CrCzuE,YAAYqiC,GACV7zB,MAAM6zB,GAEN,IAAIqsC,EAAsD,CACxDC,kBAAkB,EAClB1U,YAAY,GAId/5D,KAAK0uE,wBAA0B1uE,KAAK07D,QAClCxkD,GAAKA,EAAEgmB,QAAQC,UACfkX,EAA2Bs6B,UAC3BH,GACA3T,KAAK19B,IAAsB,MAATokB,OAAS,EAATA,EAAWxvD,QAAS,GAGxCiO,KAAK4uE,uBAAyB5uE,KAAK07D,QACjCxkD,GAAKA,EAAEgmB,QAAQG,SACfgX,EAA2Bw6B,SAC3BL,GACA3T,KAAKx9B,IAAoB,MAARkkB,OAAQ,EAARA,EAAUxvD,QAAS,GAGtCiO,KAAK8uE,oBAAsB9uE,KAAK07D,QAC9BxkD,GAAKA,EAAEgmB,QAAQoP,MACf+H,EAA2B06B,MAC3BP,GACA3T,KAAKvuB,IAAc,MAALiV,OAAK,EAALA,EAAOxvD,QAAS,GAGhCiO,KAAKgvE,0BAA4BhvE,KAAK07D,QACpCxkD,GAAKA,EAAEgmB,QAAQoP,MACf+H,EAA2B46B,YAC3BT,GAECzT,KAAK7jD,IAAI,MAAC,OAAe,QAAf8yC,IAAE9sB,QAAQoP,aAAKxvB,eAAE/qB,QAAS,IACpC8oE,KAAKvuB,IAIG4iC,OAAQ5iC,IAInBtsC,KAAKmvE,oBAAsBnvE,KAAK07D,QAC9BxkD,GAAKA,EAAEgmB,QAAQsuB,UACfnX,EAA2B+6B,MAC3BZ,GAECzT,KACC7jD,YACE,SAAqB,QAAnB8yC,IAAE9sB,QAAQquB,iBAASzuC,eAAE/qB,QAAS,IACP,QAAvB8K,IAAEqgC,QAAQuuB,qBAAa5iC,eAAE92B,QAAS,KAEvC8oE,KAAKrP,IAAsB,MAATjK,OAAS,EAATA,EAAWxvD,QAAS,GAGzCiO,KAAKqvE,0BAA4BrvE,KAAK07D,QACpCxkD,GAAKA,EAAEgmB,QAAQsuB,UACfnX,EAA2Bi7B,YAC3Bd,GAECzT,KACC7jD,YACE,SAAqB,QAAnB8yC,IAAE9sB,QAAQquB,iBAASzuC,eAAE/qB,SAAU,KACR,QAAvB8K,IAAEqgC,QAAQuuB,qBAAa5iC,eAAE92B,SAAU,MAExC8oE,KAAKrP,IAAsB,MAATjK,OAAS,EAATA,EAAWxvD,SAAU,IAG1CiO,KAAKuvE,kBAAoBvvE,KAAK07D,QAC5BxkD,GAAKA,EAAEgmB,QAAQsyC,IACfn7B,EAA2Bo7B,IAC3BjB,GAECzT,KAAK7jD,IAAI,MAAC,OAAY,QAAZ8yC,IAAE0lB,kBAAU5yD,QAAI,GAC1B+9C,KAAK2U,KAAQnnC,OAAoBmnC,GAAK,IAEzCxvE,KAAK2vE,0BAA4B3vE,KAAK07D,QACpCxkD,GAAKA,EAAEgmB,QAAQ0yC,YACfv7B,EAA2Bw7B,YAC3BrB,GACA3T,KAAK+U,GAA8B,MAAfA,EAAe,CAzHnC3F,uBACF,OAAOjqE,KAAK0uE,wBAAwB//B,QAIlCu7B,sBACF,OAAOlqE,KAAK4uE,uBAAuBjgC,QAIjCk7B,mBACF,OAAO7pE,KAAK8uE,oBAAoBngC,QAI9Bq7B,yBACF,OAAOhqE,KAAKgvE,0BAA0BrgC,QAIpCy7B,mBACF,OAAOpqE,KAAKmvE,oBAAoBxgC,QAI9B27B,yBACF,OAAOtqE,KAAKqvE,0BAA0B1gC,QAIpC47B,iBACF,OAAOvqE,KAAKuvE,kBAAkB5gC,QAI5B67B,yBACF,OAAOxqE,KAAK2vE,0BAA0BhhC,sIChDnC,IAAMsX,EAAb,MAAM,gBAAuC6pB,IAK3ChwE,YACEgmD,EACArsB,GAEAnrB,MAAMw3C,EAAarsB,EAAsB2J,eAGzC3J,EAAqBE,KAAK2B,UAAU1oC,QAAQskB,GAC1ClX,KAAK6nE,qBAAqB3wD,IAI5BlX,KAAK+vE,yBACHt2C,EAAqBisB,sBAAsBqK,iBAAiBx6D,GAC1DyK,KAAK+vD,iBAAiBx6D,IAInBkwD,UACPn3C,MAAMm3C,UACNzlD,KAAK+vE,2BAGOhgB,iBAAiBx6D,iDAK7B,IAAKgC,EAAQw5B,SAAa0B,QAAOl9B,EAAQgC,SACpCA,GAAUw5B,IAEXx7B,aAAmBy+D,OAAuBz8D,aAAkBopD,MAC9D3gD,KAAK6nE,qBAAqBtwE,GAI1BhC,aAAmB6+D,OACnB7+D,EAAQu8D,UACRv8D,EAAQu8D,oBAAoBnR,MAE5B3gD,KAAKgwE,wBAAwBz6E,EAAQu8D,aAIjCme,eAAe9tC,GAErB,MADU,YAAYA,EAASlvB,KAIjC40D,qBAAqB1lC,GACnB,IAAIltC,EAAM+K,KAAKiwE,eAAe9tC,GAC1BiO,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAIC,IAAkBlO,GAClCniC,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGT4/B,wBAAwB7tC,GACtB,IAAIltC,EAAM+K,KAAKiwE,eAAe9tC,GAC9BniC,KAAK05D,gBAAgBzkE,IAjEPgxD,wBAAiB,2BADtBA,GAAb,EAAaA,gQCJN,IAAMiqB,EAAb,MAAM,QACJpwE,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,iDALG49C,GAA4Cr3E,uCAA5Cq3E,EAA4C9hD,wHCGsB0L,cAAAA,IAEGA,8CAAAA,IACvBA,wEAAAA,IAQzBA,MAAAA,gOAvBlCjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,2BACAA,QACAA,0BAAkHA,QAClHA,0BAAqHA,kBAM/HA,yBAAc,gBACJA,gCAASyQ,yBACfzQ,8BAAgCA,sBArBvBA,qh4DDOFq3E,GAAb,0GEwCEr3E,eACEA,2BAGFA,+BAJKA,iCACWA,oHAAqE,kHAKrFA,eACEA,8BACFA,cAFKA,wDAILA,eACEA,0BACFA,cAFKA,iCCtBA,IAAM+hD,EAAb,MAAM,QAcJ96C,YACUqwE,GACAjsC,GACA3V,GACAkL,GACAwT,GACAD,IALAhtC,+BACAA,qBACAA,iBACAA,6BACAA,oBACAA,wBAnBHA,iBAAsB,EAC7BA,sBAAmBojC,IACnBpjC,cAAW6hD,KA4CX7hD,UAAO01B,IAqBP11B,6BAAkC,EA0BlCA,uBAA4B,EAxFjBowE,2BACT,OAAOpwE,KAAKmwE,uBAAuBllB,gBAG1BH,mBACT,OAAO9qD,KAAKmwE,uBAAuBrlB,aAY/B5S,UAAUC,kDACd,aAAMn4C,KAAKivC,UAAS,GAEfjvC,KAAK4nE,kBAAkBj5B,SAASwJ,GAAclkB,QAC5Cj0B,KAAK4nE,kBAAkBj5B,UAG1B3iB,4DACJ,IAAK7vB,GAAG60B,UAAeyB,SAAOzyB,KAAKitC,YAAYjwB,WAI3CsV,yDAEJ,IAAIq1C,GACFn6B,KAF+B/T,qBAAqB+T,sBAE9BC,SACpBuY,qBAEJhmD,KAAK4nE,kBACHD,GAAyB0I,4BACvBrwE,KAAKowE,wBAMEE,yBAAyBv8E,kDACpCiM,KAAKuwE,wBAAyB,EAC9BvwE,KAAKmwE,uBAAuB9hC,OAG1BruC,KAAKowE,qBAAqBI,UACzBxwE,KAAKowE,qBAAqBI,UAAY3uB,gBACrC7hD,KAAKowE,qBAAqBI,UAAY3uB,cAExC7hD,KAAKitC,YAAYtT,KAAKuU,gBAAkB,KACxCluC,KAAKitC,YAAYtT,KAAKwU,gBAAkB,KACxCnuC,KAAKitC,YAAYoB,OAEjBruC,KAAKgtC,gBAAgBZ,SAASlvC,KAAO,KACrC8C,KAAKgtC,gBAAgBiB,eACrBjuC,KAAKgtC,gBAAgBse,8BAKnBrc,SAASonB,IAAe,iDAE5B,GADAr2D,KAAK4nE,kBAAkB34B,WACnBjvC,KAAK4nE,kBAAkBj5B,QAAS,OAAO,EAE3C,IAAIo5B,GAAQ/nE,KAAKkkC,aAAaK,KAC5B2rC,EACA,CACE3vE,KAAM,KACN6jC,iBAAkB,qCAKtB,aAFM3R,SAAOs1C,GAAMxwE,QAEfyI,KAAM4nE,kBAAkB6I,eAM1BzwE,KAAK4nE,kBAAkB8I,aACvB1wE,KAAK4nE,kBAAkB+I,uBANvB3wE,KAAKuwE,wBAAyB,GACvB,KAWL7P,uEACJ1gE,KAAK4uC,YAAa,QACZ5uC,KAAKmwE,uBAAuBnzD,eAEdhd,KAAKivC,aACZjvC,KAAKuuB,SAASwG,aAAaC,GAAGoO,eAE3CpjC,KAAK4wE,wBAGyB,QAA9B9xB,QAAK+xB,iCAAyB/zD,WAAEqyB,cAAcC,eAAe,CAC3DC,SAAU,WAGZrvC,KAAK4uC,YAAa,IAGpBgiC,wBACE5wE,KAAK8wE,kBAAmB,EAExB7pB,WAAW,IAAOjnD,KAAK8wE,kBAAmB,EAAQ,qDAnHzCl2B,GAAuB/hD,iGAAvB+hD,EAAuBxsB,2KAXnB,CACbqhB,IACAob,IACAuT,IACA2S,IACAtnB,IACAL,IACA5Z,IACA6uB,OACD3uB,mEDhCuE5V,4CAAAA,IAQPA,6BAAAA,IAOdA,kBAAAA,IAUAA,wBAAAA,IAWAA,oBAAAA,IAMWA,0DAAAA,w1BA7ChEjhC,qBAAuD,UAAvDA,CAAuD,QAGnDA,WAEAA,QACAA,gBACFA,QAGAA,mBAA+F,MAA/FA,CAA+F,UAC1FA,WAAuFA,QAAOA,mBAA4BA,cAACA,UAE9HA,kBAAwB,cAEfA,+EAA0C,6BAChCyQ,kCAFjBzQ,QAGAA,kCAGAA,UAEFA,kBAAwB,eAGfA,+EAA2C,6BACjCyQ,kCAHjBzQ,QAIAA,kCAGAA,UAGFA,kBAAwB,eAGfA,+EAA0C,6BAChCyQ,kCAHjBzQ,QAIAA,kCAGAA,UAEFA,oBACEA,uBACAA,8BAAkHA,YAItHA,0BAMAA,0BAIAA,yBAGAA,gBAAsB,uBACLA,qCAAcyQ,uBAC7BzQ,oBAhEkCA,iCAUmBA,mDAImBA,wCAAsB,2CAIrFA,mDAMAA,8CAA4B,2CAI5BA,mDAOAA,0CAAwB,2CAIxBA,mDAKeA,2CAKHA,yFAMAA,+FAIAA,2FAGlBA,0CAC6CA,0l4DCtCtCw8B,OAYDulB,GAAb,EAAaA,+FC1BN,IAAMm2B,EAAb,MAAM,QAKJjxE,YACUgsC,EACAod,GADAlpD,4BACAA,2BAERA,KAAKmrD,sBAAwBrf,EAC7B9rC,KAAKgxE,cACHhxE,KAAKkpD,oBAAoBvvB,KAAKuY,uBAAuB++B,UAAU7qE,KAC7DvJ,GAAkB,IAAbA,EAAEq0E,QAGXlxE,KAAKmxE,sBAAwBnxE,KAAK8rC,qBAAqB+E,cACrD7wC,KAAKgxE,eAIF3iC,OACLruC,KAAKmxE,sBAAsBz/B,QAGhB10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDAzBvB+zD,GAA+Bl4E,mDAA/Bk4E,EAA+Bj4E,QAA/Bi4E,EAA+B,qBAF9B,SAEDA,GAAb,EAAaA,+FCDDK,EAIX,MAJD,OAAYA,QAA8B,KACxCA,kBACAA,cACAA,kCAHUA,EAAZ,IAAYA,GAIX,GAEK,gBAAwC7C,IAmB5CzuE,YACEuxE,EACA53C,GAEAnrB,MAAM+iE,GAEN,IAAI7C,EAAsD,CACxDC,kBAAkB,EAClB1U,YAAY,GAId/5D,KAAKsxE,sBAAwBtxE,KAAK07D,QAChC6V,GAAMA,EAAGf,QACTY,EAA+BI,QAC/BhD,GACA3T,KAAK2V,GAAsB,MAAXA,GAGlBxwE,KAAKyxE,mBAAqBzxE,KAAK07D,QAC7B6V,GAAMA,EAAGr0E,KACTk0E,EAA+BM,KAC/BlD,GAECzT,KAAKwW,GAAMA,EAAGf,SAAW3uB,WACzBgZ,KAAK39D,GAAgB,MAARA,GAGhB8C,KAAK2xE,6BAA+B3xE,KAAK07D,QACvC6V,GAAMA,EAAGr0E,KACTk0E,EAA+BQ,eAC/BpD,GAECzT,KACCwW,GAAMA,EAAGf,SAAW3uB,WAAgB0vB,EAAGr0E,MAAQ8kD,WAEhD6Y,KAAK39D,GAE6C,MAA1Cw8B,EADoCC,KAAKC,qBACzBsD,QAAQ20C,eAAkB,CApDnDpB,qBACF,OAAOzwE,KAAKsxE,sBAAsB3iC,QAIhC+hC,kBACF,OAAO1wE,KAAKyxE,mBAAmB9iC,QAI7BgiC,4BACF,OAAO3wE,KAAK2xE,6BAA6BhjC,SC3BtC,IAAKmjC,EAEX,OAFWA,MAA6B,KACvCA,0BADUA,GAEX,GAEK,gBAAuCvD,IAS3CzuE,YAAYo9B,GACV5uB,MAAM4uB,GAQNl9B,KAAKgvE,0BAA4BhvE,KAAK07D,QACpCvR,GAAKA,EAAE7d,MACPwlC,EAA8B7C,YAR0B,CACxDR,kBAAkB,EAClB1U,YAAY,IASXgB,KAAK5Q,IAAI,MAAC,OAAO,QAAP9L,IAAE/R,aAAKxvB,eAAE/qB,QAAS,IAC5B8oE,KAAKvuB,IACJ,IAAIylC,EAAiB,MAALzlC,OAAK,EAAL8qB,EAAO3hE,QAAQ,KAC3Bu8E,GAAsB,MAAL1lC,OAAK,EAAL8qB,EAAO6a,YAAY,KAMxC,QAJI3lC,GACFylC,EAAY,GACZC,GAAiB,GAAS,MAAL1lC,OAAK,EAAL8qB,EAAOrlE,SAC5BigF,GAAiBD,EAAY,IA1BjC/H,yBACF,OAAOhqE,KAAKgvE,0BAA0BrgC,SCCnC,IAAMqX,EAAb,MAAM,gBAA4C8pB,IAGhDhwE,YACEgmD,EACArsB,GAEAnrB,MAAMw3C,EAAarsB,EAAsB2J,mBAMpC8uC,CAGEzsB,UACPn3C,MAAMm3C,UAGA0sB,sBAAsBd,GAE5B,MADU,mBAAmBA,EAAgBp+D,KAIvCm/D,cAAcl1C,GAEpB,MADU,WAAWA,EAAQjqB,KAI/Bo9D,4BACEgB,GAEA,IAAIp8E,EAAM+K,KAAKmyE,sBAAsBd,GACjCjhC,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAIiiC,EACdhB,EACArxE,KAAKy5B,sBAEPz5B,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGT8hC,2BAA2Bh1C,GACzB,IAAIjoC,EAAM+K,KAAKoyE,cAAcl1C,GACzBkT,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAIkiC,EAAwBp1C,GACxCl9B,KAAKo5D,aAAankE,EAAKm7C,IAElBA,GAnDO4V,wBAAiB,gCADtBA,GAAb,EAAaA,+FCPN,IAAMusB,EAAb,MAAM,QAQJzyE,YACEgsC,EACArS,GAPMz5B,gBAAyB,GAS/BA,KAAKmrD,sBAAwBrf,EAC7B9rC,KAAKwyE,sBAAwB/4C,EAC7Bz5B,KAAKw1C,WAAax1C,KAAKwyE,sBAAsB74C,KAAK2B,UAGhDA,gBACF,MAAO,IAAIt7B,KAAKw1C,YAGXi9B,iBAAiBjiC,GACtB,OAAIxwC,KAAK0yE,gBAAkB1yE,KAAK0yE,eAAez/D,KAAOu9B,IAItDxwC,KAAK0yE,eAAiB1yE,KAAKw1C,WAAWpvC,KAAK8Q,GAAKA,EAAEjE,KAAOu9B,GACzDxwC,KAAK2yE,iBAAmB3yE,KAAKmrD,sBAAsBta,cACjD7wC,KAAK0yE,iBALE1yE,KAAK0yE,cAQFA,CAGPrkC,OACLruC,KAAK2yE,iBAAiBjhC,QAGX10B,4DACLhd,KAAKmrD,sBAAsBnuC,wDAvCxBu1D,GAAqB15E,mDAArB05E,EAAqBz5E,QAArBy5E,EAAqB,qBAFpB,SAEDA,GAAb,EAAaA,+FCAN,IAAMK,EAAb,MAAM,QAKJ9yE,YACUgsC,EACArS,GADAz5B,4BACAA,4BAGH6yE,8BACLriC,EACA6K,GAEA,GAAIr7C,KAAK8yE,mBACP,OAAO9yE,KAAK8yE,mBAOd,MAAMC,EAAqBC,KAJGv5C,qBAAqBE,KAAK2B,UAAUl1B,KAChE+7B,GAAYA,EAASlvB,KAAOu9B,GAGcjF,YAAYnlC,KACtD6sE,GAAcA,EAAW53B,eAAiBA,GAG5C,YAAK63B,2BAA6BH,EAAmBlzB,QACrD7/C,KAAK8yE,mBAAqB9yE,KAAKkzE,2BAE/BlzE,KAAKmzE,0BAA4BnzE,KAAK8rC,qBAAqB+E,cACzD7wC,KAAK8yE,oBACL,GAGK9yE,KAAK8yE,mBAGDM,8DAEXpzE,KAAK8rC,qBAAqB8T,iBAAiB5/C,KAAKkzE,4BAChDlzE,KAAKmzE,0BAA4B,KACjCnzE,KAAKkzE,2BAA6B,KAClClzE,KAAK8yE,mBAAqB,OAGrBzkC,QACAruC,KAAKmzE,2BACVnzE,KAAKmzE,0BAA0BzhC,QAGpB10B,4DACLhd,KAAK8rC,qBAAqB9uB,wDAnDvB41D,GAAwB/5E,mDAAxB+5E,EAAwB95E,QAAxB85E,EAAwB,qBAFvB,SAEDA,GAAb,EAAaA,mHCIN,IAAMS,EAAb,MAAM,QAMJvzE,YACUgsC,EACArS,EACA65C,GAFAtzE,4BACAA,4BACAA,gCAGGuzE,yBACX/iC,EACAgjC,EACAC,EACAC,iDAEA,MAAMV,EAAmBhzE,KAAK2zE,oBAAoBnjC,GAE5CojC,GAAuC,CAC3CC,aAAcL,EACdC,UAAWA,EACXpuD,MAAO,KACPquD,QAASA,EACTI,aAAcnyB,aAKhB,IAAIoyB,SAA0CnjC,KADvC9E,qBAAqB+E,cAAcmiC,GACoBrzD,KAC5D,oBACAi0D,IACAr8E,aAEIyI,KAAKy5B,qBAAqByH,mBAC9B,0BACA,CAAC8xC,IAGH,IAAID,EAAqBC,EAAiBznC,YAAYnlC,KACpD/R,IAAKA,GAAEgnD,cAAgB04B,GAAc14B,cAGvC,YAAK24B,WAAWjB,GACT,CAAC/yE,KAAKi0E,iBAAkBj0E,KAAKk0E,2BAG/BC,2BACL3jC,EACA6K,GAIA,MAAM03B,EAAqBC,KAFGW,oBAAoBnjC,GAENjF,YAAYnlC,KACtD6sE,GAAcA,EAAW53B,eAAiBA,GAG5C,OAAI03B,EACF/yE,KAAKg0E,WAAWjB,GAEhB/yE,KAAKi0E,iBAAmB,KAGnB,CAACj0E,KAAKi0E,iBAAkBj0E,KAAKk0E,yBAGzBE,yBACX5jC,EACA6K,uDAGA,MAAM23B,EAAmBhzE,KAAK2zE,oBAAoBnjC,GAElD,IAAKwiC,EAAkB,OAGvB,IAAIqB,EAA2D,QAA7BltB,EAAgB,MAAhBiQ,OAAgB,EAAhBA,EAAkB7rB,mBAAWzuB,eAAE1W,KAC/D6sE,IAAcA,GAAW53B,cAAgBA,GAGtCg5B,UAMCC,KAJuBxoC,qBAAqB+E,cAChDwjC,GACA,GAEsBp8D,SAAS1gB,aAG3ByI,KAAKy5B,qBAAqByH,mBAC9B,0BACA,CAAC8xC,IAIDhzE,KAAKi0E,kBACLj0E,KAAKi0E,iBAAiB54B,cAAgBA,IAEtCr7C,KAAKszE,yBAAyBF,gBAC9BpzE,KAAKk0E,wBAA0B,KAC/Bl0E,KAAKi0E,iBAAmB,SAIrBM,iBACL,IAAI/iB,EAAexxD,KAAKw0E,mBAAmB9iC,OAAM,GAO7C+iC,GAAmB,EACvBA,MAAqB,cAAejjB,EAAaQ,UACjDyiB,MAAqB,UAAWjjB,EAAaQ,UAC7CyiB,MAAqB,QAASjjB,EAAaQ,UAEvCyiB,IACFjjB,EAAaQ,SAAS3sC,MAAQrlB,KAAKi0E,iBAAiB5uD,MACpDmsC,EAAaQ,SAAS5nC,IAAMpqB,KAAKi0E,iBAAiB7pD,KAGpDpqB,KAAKy5B,qBAAqBisB,sBAAsB1jD,IAAIwvD,GAG/CkjB,cACL10E,KAAKszE,yBAAyBjlC,OAGnBsmC,eACXt5B,EACAglB,EACAlD,iDAEA,IAAIyX,QAA0B50E,KAAKw0E,mBAAmB70D,KACpD,gBACA,CAAEw9C,iBACF5lE,OAGFq9E,EAAkB/0B,QAAU7/C,KAAKi0E,iBAAiBp0B,QAGlD7/C,KAAK8rC,qBAAqB8T,iBAAiB5/C,KAAKi0E,kBAEhD,MAAM1T,EAAuBvgE,KAAK2zE,oBAAoBtT,GACtDE,EAAqBh1B,YAAcg1B,EAAqBh1B,YAAYnjC,OAClE6O,IAAKA,GAAEokC,cAAgBA,GAIzBr7C,KAAK8rC,qBAAqB9pC,IAAI4yE,GAG9BpU,KADgCmT,oBAAoBxW,GACjC5xB,YAAY73C,KAAKkhF,KAG9BZ,WAAWjB,GACjB/yE,KAAKw0E,mBACHx0E,KAAK8rC,qBAAqB+E,cAAckiC,GAE1C/yE,KAAKi0E,iBAAmBlB,EAExB/yE,KAAKk0E,wBACHl0E,KAAKszE,yBAAyBT,8BAC5BE,EAAmBviC,WACnBuiC,EAAmB13B,cAIjBs4B,oBAAoBnjC,GAI1B,OAHyBxwC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KAChE8Q,GAAKA,EAAEjE,KAAOu9B,iDA7KP6iC,GAAuBx6E,8DAAvBw6E,EAAuBv6E,QAAvBu6E,EAAuB,qBAFtB,SAEDA,GAAb,EAAaA,8GCTDwB,EAaX,MAbD,OAAYA,QAAW,KACrBA,6BACAA,uCACAA,yBACAA,iDACAA,uCACAA,mCACAA,uCACAA,+CACAA,uDACAA,6BACAA,gCACAA,0BAZUA,EAAZ,IAAYA,GAaX,GAEWC,EAKX,MALD,OAAYA,QAAQ,KAClBA,sBACAA,0BACAA,oBACAA,gBAJUA,EAAZ,IAAYA,GAKX,GAEWC,GAKX,MALD,OAAYA,UAAoB,KAC9BA,yBACAA,mCACAA,iCACAA,yBAJUA,GAAZ,IAAYA,GAKX,GAEK,WACJ9B,GAEA,MAAMS,EAAoBT,EAAWS,QACrC,IAAKA,EACH,OAAOT,EAAWY,aACdgB,EAAYG,eACZH,EAAYI,WAGlB,OAAQvB,QACDoB,EAASI,UACZ,OAAOL,EAAYK,eAChBJ,EAASK,QACZ,OAAON,EAAYM,aAChBL,EAASM,WACZ,OAAOP,EAAYO,mBAGnB,OAAOP,EAAYI,YAInB,WACJI,GAEA,OAAQA,EAAoBn4E,WACrB4kD,aACH,OAAO+yB,EAAYS,aAChBxzB,yBACH,OAAO+yB,EAAYU,yBAChBzzB,oBACH,OAAO+yB,EAAYW,oBAChB1zB,4BACH,OAAO+yB,EAAYY,4BAChB3zB,aACH,OAAO+yB,EAAYa,oBAChB5zB,kBACH,OAAO+yB,EAAYc,kBAChB7zB,wBACH,OAAO+yB,EAAYe,2BAEnB,OAAOf,EAAYS,SAInB,WACJO,GAEA,OAAQA,QACDhB,EAAYI,WACf,OAAOF,GAAqBe,cAEzBjB,EAAYG,eACf,OAAOD,GAAqBgB,kBAEzBlB,EAAYS,aACZT,EAAYU,yBACZV,EAAYW,oBACZX,EAAYc,kBACZd,EAAYa,oBACZb,EAAYe,wBACZf,EAAYY,uBACf,OAAOV,GAAqBiB,iBAEzBnB,EAAYK,eACZL,EAAYO,gBACZP,EAAYM,QACf,OAAOJ,GAAqBkB,gOC3F3B,IAAMC,GAAb,MAAM,QACJp2E,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,iDALG4jD,GAA6Br9E,sCAA7Bq9E,EAA6B9nD,oGCE4C0L,iEAAAA,IAMtBA,eAAAA,IASiCA,QAAAA,gVA3BjGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,4BAEAA,QAEAA,qBAAQA,gCAASyQ,yBACfzQ,uBACAA,8BAA+DA,oBAO3EA,yBAAc,gBACJA,gCAASyQ,2BACfzQ,uBAA6DA,8BAAoCA,sBAzBxFA,qCAe6BA,wCAURA,mh4DDjBvBq9E,GAAb,iFEEO,IAAMC,GAAb,MAAM,QAKJr2E,YAAmByjC,GAAqChV,IAArCvuB,oBAAqCA,iBAExDA,UAAO01B,IANPgrC,kBACE1gE,KAAKuuB,SAASwG,aAAaC,GAAGoO,oBAOhC9Q,WAAQ,iDATG6jD,GAAkCt9E,mDAAlCs9E,EAAkC/nD,4GCA2C0L,kBAAAA,IACbA,sEAAAA,IAO2CA,UAAAA,IAQpBA,sBAAAA,6UA5BpGjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,6BAA8FA,QAC9FA,0BAEAA,UAIFA,sBAAQA,yBAASyQ,4BAAmBA,2BAClCzQ,uBAAgEA,8BAAoDA,kBAM9HA,yBAAc,gBACJA,gCAASyQ,2BACfzQ,uBAAgEA,8BAAkDA,sBA1BzGA,qCAkB2BA,yCAQNA,sh4DDhBvBs9E,GAAb,oFEsJIt9E,eAA4E,WAA5EA,CAA4E,0BAKrDA,6EAAyB0zC,kBAAc,EAAKiK,GAAQjK,sDAApD1zC,CAAmG,sDAC1Eu9E,EAD0EvoD,MAC1EuoD,6BADzBv9E,CAAmG,6DAEnE+0B,EAFmEC,MAEnED,oCAFhC/0B,CAAmG,sDAG1EijE,EAH0EjuC,MAG1EiuC,yBAC5CjjE,qCATuDA,iCAEpCA,gEAA8C,8CAA9CA,CAA8C,oEAYrEA,eACsB,WADtBA,CACsB,+BAKMA,4DAAyB2zC,EAAzB3e,MAAyB2e,eAAc,EAAIgK,KAA3C39C,CAAoD,sDAC3B4zC,EAD2B5e,MAC3B4e,6BADzB5zC,CAAoD,6DAEpB8nE,EAFoB9yC,MAEpB8yC,oCAFhC9nE,CAAoD,sDAG3B6zC,EAH2B7e,MAG3B6e,yBAA4B7zC,qCAR5EA,iCAEuBA,gEAA8C,8CAA9CA,CAA8C,gDAYtEA,0BAEAA,gCACAA,0BAEAA,gCACAA,0BAEAA,iCACAA,0BAEAA,iCACAA,0BAEAA,iCACAA,0BAEAA,iCACAA,0BAEAA,oDAtBJA,eAAsF,YAElFA,uBAGAA,uBAGAA,uBAGAA,wBAGAA,wBAGAA,wBAGAA,wBAGAA,2BAEcA,6DAA0BojE,EAA1BpuC,MAA0BouC,8BAA1BpjE,CAA2D,uDACjCw9E,EADiCxoD,MACjCwoD,0BAA6Bx9E,qCA1BpEA,iCAEIA,sEAGAA,kFAGAA,6EAGAA,2EAGAA,6EAGAA,iFAGAA,qFAGSA,kEAAgD,iDAS9DA,0BAA4FA,iCAC5FA,0BAA+FA,iCAC/FA,0BAAsFA,oDAJ1FA,eAAkF,YAE9EA,wBACAA,wBACAA,wBACAA,8BAEiBA,6EAAyBwjE,kBAAc,EAAK7lB,GAAQ6lB,sDAApDxjE,CAAmG,sDAC1EgwE,EAD0Eh7C,MAC1Eg7C,6BADzBhwE,CAAmG,sDAE1Ey9E,EAF0EzoD,MAE1EyoD,yBAA4Bz9E,qCATrEA,iCAEIA,wEACAA,yEACAA,sEACYA,gEAA8C,yBCjLhE,IAAMuiD,GAAb,MAAM,QAuDJt7C,YACUq0B,GACAoiD,GACAC,GACAC,GACAvyC,GACAtV,GACA4tC,IANAx8D,eACAA,8BACAA,gCACAA,2BACAA,qBACAA,0BACAA,+BA7DVA,UAAO01B,IAEP11B,sBAAmBojC,KACnBpjC,iBAAc60E,KACd70E,0BAAuB+0E,KACvB/0E,cAAW80E,IAEX90E,yBAAoC,KAC7BA,iBAAsB,EAIrBA,0BAA6C,KAiBrDA,6BAAkC,EAClCA,iBAAc60E,KACd70E,mBAA0B,IAAI2gD,KAC9B3gD,6BAA8C,KAC9CA,4BAAkC,KAElCA,uBAA4B,EAE5BA,eAAoB,EAQZA,8BAA2B,CACjCO,KAAM,KACN6jC,iBAAkB,qCAEZpkC,kCAA+B,CACrCO,KAAM,KACN6jC,iBAAkB,qCA4cZpkC,iCAA8B,IAAIhB,IAmBlCgB,gCAA6B,IAAIhB,IAyBjCgB,8BAA2B,EA9hB/B02E,0BACF,OAAO12E,KAAK22E,qBAEVD,wBAAoBvhF,IACtB6K,KAAK22E,qBAAuBxhF,GAEK,MAA7B6K,KAAK22E,sBACT1vB,WAAW,YACoB,QAA7B9e,QAAKyuC,gCAAwB95D,WAAEqyB,cAAcC,eAAe,CAC1DC,SAAU,SACVC,MAAO,QACPC,OAAQ,YAeHrS,cACT,OAAOl9B,KAAKw8D,uBAAuBt/B,QAwBrC5K,WACEtyB,KAAKqpD,aAGDA,2DACCrpD,KAAKu2E,sBAAsBj7C,WAC9Bt7B,KAAK62E,qBAGP72E,KAAKw1C,WAAax1C,KAAKu2E,sBAAsBj7C,UAC7Ct7B,KAAK82E,oBAAsB92E,KAAKm0B,OAAOxB,QAAQ92B,OAAO20C,aAEjDxwC,KAAK82E,oBAAkD,IAA5B92E,KAAK82E,sBACnC92E,KAAK82E,oBAAqBrK,QAAqBzsE,KAAKw1C,YAEpDx1C,KAAKm0B,OAAOY,aAAaC,GAAGoO,gBAA6B,CACvDoN,WAAYxwC,KAAK82E,sBAIrB92E,KAAKyxC,cAAgBzxC,KAAKu2E,sBAAsB9D,iBAC9CzyE,KAAK82E,oBAGP,MAAMz7B,IAAgBr7C,KAAKm0B,OAAOxB,QAAQ92B,OAAOw/C,aAC7CA,IAAgBA,GAAe,IACjCr7C,KAAK+2E,UAAW,EAChB/2E,KAAKg3E,qBAAqBh3E,KAAKm0B,OAAOxB,QAAQ92B,OAAOw/C,eAGvD,MAAMC,IAAiBt7C,KAAKm0B,OAAOxB,QAAQ92B,OAAOy/C,cAC9CA,IAAiBA,GAAgB,IACnCt7C,KAAK+2E,UAAW,EAChB/2E,KAAKi3E,sBAAsBj3E,KAAKm0B,OAAOxB,QAAQ92B,OAAOy/C,sBAGlDt7C,KAAKw8D,uBAAuBnT,WAAWrpD,KAAKmiC,SAASlvB,MAGhDikE,wBAAwBjE,kDACnCjzE,KAAKw2E,wBAAwBjC,mBAGxB4C,+BAA+Bt3B,IACpC7/C,KAAKw2E,wBAAwB9B,cAGlB0C,yBAAyBC,kDACpCr3E,KAAKy2E,mBAAmBpoC,SAGnBC,gBAAgBkI,IACrBx2C,KAAKw8D,uBAAuBnuB,OAGvBipC,qBACLt3E,KAAKu2E,sBAAsBloC,OAGtBi5B,kBACLh8D,GACAyoB,IAEI,eAAgBzoB,KAClBtL,KAAK82E,oBAAsB92E,KAAKm0B,OAAOxB,QAAQ92B,OAAO20C,WACtDxwC,KAAKyxC,cAAgBzxC,KAAKu2E,sBAAsB9D,iBAC9CzyE,KAAK82E,oBAGP92E,KAAKu3E,wBAA0B,KAC/Bv3E,KAAKw3E,yBAA2B,KAChCx3E,KAAKy3E,kBAILt1C,eACF,OAAIniC,KAAKw1C,YAAcx1C,KAAKw1C,WAAWzjD,OAC9BiO,KAAKw1C,WAAWpvC,KACrB+7B,IAAYA,GAASlvB,KAAOjT,KAAK82E,oBAG9B,KAGI5Z,mBAAmB1sB,kDAC1BxwC,KAAKu3E,8BACDv3E,KAAK03E,uBAAuBlnC,IACzBxwC,KAAKw3E,iCACRx3E,KAAK23E,wBAAwBnnC,WAG/BxwC,KAAKm0B,OAAOY,aAAaC,GAAGoO,gBAA6B,CAC7DoN,WAAYA,OAIHonC,oBAAoBt8B,kDAC/B,MAAMu8B,GAAmBxjD,KAAKyjD,MAC9B,GAAK93E,KAAKw3E,0BAENx3E,KAAKw3E,yBAAyBl8B,gBAAkBA,GAAe,CACjE,IAAIiiB,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAE7D,GAAImmE,GAAS,OAEb,IAAKvhE,GAAG40B,UAAa0B,QACnBzyB,KAAK+3E,kBACH/3E,KAAKmiC,SAASlvB,GACdjT,KAAKw3E,yBAAyBl8B,gBAIlC,GAAIvqB,GAEF,OAGF/wB,KAAKg4E,uBAAuBH,GAAkB,KAAM,SAI3CI,cACXzE,IAAiB,EACjBC,IAAY,EACZC,kDAEA,MAAMmE,GAAmBxjD,KAAKyjD,MAC9B93E,KAAKk4E,wBAAyB,GAC7Bl4E,KAAKu3E,wBAAyBv3E,KAAKm4E,8BAC5Bn4E,KAAKw2E,wBAAwBjD,yBACjCvzE,KAAKmiC,SAASlvB,GACdugE,GACAC,GACAC,IAEJ1zE,KAAKk4E,wBAAyB,EAE9Bl4E,KAAK4uB,kBAAkBwpD,2BACjBp4E,KAAKg4E,uBACTH,GACA73E,KAAKu3E,wBAAwBl8B,aAC7B,KACAr7C,KAAKq4E,qBAEPr4E,KAAK4uB,kBAAkB0pD,sBAGZC,mBAAmBl9B,kDAC9B,GAAIr7C,KAAKu3E,wBAAwBl8B,eAAiBA,GAAc,CAC9D,MAAMw8B,GAAmBxjD,KAAKyjD,MAE9B,IAAIva,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAE7D,GADImmE,KACC19D,KAAKu3E,wBAAyB,OAEnC,IAAKp7E,GAAG40B,UAAa0B,QACnBzyB,KAAKw4E,iBACHx4E,KAAKmiC,SAASlvB,GACdjT,KAAKu3E,wBAAwBl8B,eAIjC,GAAItqB,GAEF,OAGF/wB,KAAKg4E,uBAAuBH,GAAkB,KAAM,SAI3CY,kBAAkB1kF,GAAc8hF,kDAI3C,MAAMgC,GAAmBxjD,KAAKyjD,MAE9B,GAAI93E,KAAKq4E,sBAAwBxC,GAE/B,YADA9hF,GAAM8pE,iBAIR,GAAiC,OAA7B79D,KAAKq4E,oBAA8B,CACrCtkF,GAAM8pE,iBACN,IAAIC,GAA2B99D,KAAK04E,gCAC/Bv8E,GAAGuhE,UAAiBjrC,QAAOqrC,GAAyBvmE,QACzD,GAAImmE,GAAS,aAEP19D,KAAK24E,qBACL34E,KAAKg4E,uBACTH,GACA,KACA,KACAhC,IAMJ,IAAIv6B,GAA+B,KAEnC,OAAQu6B,SACDhB,aACHv5B,SAAsBt7C,KAAK44E,eACzB92B,cAEF,WAEG+yB,yBACHv5B,SAAsBt7C,KAAK44E,eACzB92B,0BAEF,WAEG+yB,oBACHv5B,SAAsBt7C,KAAK44E,eACzB92B,qBAEF,WAEG+yB,kBACHv5B,SAAsBt7C,KAAK44E,eACzB92B,mBAEF,WAEG+yB,oBACHv5B,SAAsBt7C,KAAK44E,eACzB92B,cAEF,WAEG+yB,wBACHv5B,SAAsBt7C,KAAK44E,eACzB92B,yBAEF,WAEG+yB,4BACHv5B,SAAsBt7C,KAAK44E,eACzB92B,mCASA9hD,KAAKg4E,uBACTH,GACA,KACAv8B,GACAu6B,MAIGgD,yBAAyBhD,IAC9B,OAAQA,SACDhB,eACH,OAAOC,mBAEJD,gBACH,OAAOC,oBAEJD,aACH,OAAOC,iBAEJD,gBACH,OAAOC,kBAGP,OAAO,MAIApmC,sEACX,GACE,CAACmmC,gBAAwBA,qBAA4B5qC,SACnDjqC,KAAKq4E,uBAENr4E,KAAKk4E,wBAC0B,MAAhCl4E,KAAKu3E,wBACL,CACA,IAAIuB,GACF94E,KAAK+4E,sCACF58E,GAAGuqB,UAAgB+L,QAAOqmD,GAA+BvhF,QAE9D,GAAImvB,GAAQ,OAGd,IACE1mB,KAAK4uC,YAAa,QACZ5uC,KAAKu2E,sBAAsBv5D,QACjChd,KAAKm0B,OAAOY,aAAaC,GAAGoO,mBAC5B,CAD4BA,MACrBpS,IAAP,CAIFhxB,KAAK4uC,YAAa,IAGZmqC,qCACN,OAAO/4E,KAAKkkC,aAAaK,KAAK4xC,GAAoC,CAChE51E,KAAM,KACN6jC,iBAAkB,kDAIRw0C,eACZI,kDAEA,YAAKd,wBAAyB,EAC9Bl4E,KAAKw3E,+BACGx3E,KAAKy2E,mBAAmBwC,kBAC5Bj5E,KAAKmiC,SAASlvB,GACd+lE,IAEJh5E,KAAKk4E,wBAAyB,EAEvBl4E,KAAKw3E,yBAAyBl8B,gBAG/Bo9B,+BACN,OAAO14E,KAAKkkC,aAAaK,KACvB2xC,GACAl2E,KAAKk5E,8BAID1b,kBACN,OAAOx9D,KAAKkkC,aAAaK,KACvB40C,IACAn5E,KAAKo5E,0BAIDnC,qBAAqBoC,IAC3Br5E,KAAKw3E,yBACHx3E,KAAKy2E,mBAAmB6C,sCACtBt5E,KAAK82E,mBACLuC,IAGJr5E,KAAKq4E,qBAAsBkB,QACzBv5E,KAAKw3E,0BAEPx3E,KAAK02E,qBAAsB8C,QAAqBx5E,KAAKq4E,qBAG/CrB,oBAAoB37B,KACzBr7C,KAAKu3E,wBAAyBv3E,KAAKm4E,wBAClCn4E,KAAKw2E,wBAAwBrC,2BAC3Bn0E,KAAK82E,mBACLz7B,IAGJr7C,KAAKq4E,qBAAsBoB,QACzBz5E,KAAKu3E,yBAEPv3E,KAAK02E,qBAAsB8C,QAAqBx5E,KAAKq4E,qBAGzCV,wBAAwBnnC,kDACpC,UACQxwC,KAAKy2E,mBAAmBiD,iBAC3B15E,KAAKw3E,yBAAyBl8B,eAC9Bt7C,KAAK82E,oBACLtmC,GAIWA,CAJXA,MAEIxf,UACDhxB,KAAKm0B,OAAOY,aAAaC,GAAGoO,gBAA6B,CAC7DoN,WAAYA,WAIVxwC,KAAKm0B,OAAOY,aAAaC,GAC7BoO,gBACA,CACEoN,WAAYA,GACZ8K,eAAgBt7C,KAAKw3E,yBAAyBl8B,eAEhD,CAAEq+B,QAAQ,EAAM3mD,UAAU,MAIhB0kD,uBAAuBlnC,kDACnC,UACQxwC,KAAKw2E,wBAAwB7B,gBAChC30E,KAAKu3E,wBAAwBl8B,cAC7Br7C,KAAK82E,oBACLtmC,GAIWA,CAJXA,MAEIxf,UACDhxB,KAAKm0B,OAAOY,aAAaC,GAAGoO,gBAA6B,CAC7DoN,WAAYA,WAIVxwC,KAAKm0B,OAAOY,aAAaC,GAC7BoO,gBACA,CACEoN,WAAYA,GACZ6K,cAAer7C,KAAKu3E,wBAAwBl8B,cAE9C,CAAEs+B,QAAQ,EAAM3mD,UAAU,MAIhB2lD,6DACZ,OAAQ34E,KAAKq4E,0BACNxD,qBACAA,yBACAA,oBACAA,qBACAA,aACC70E,KAAKu3E,yBAA2Bv3E,KAAKyxC,sBACjCzxC,KAAKw4E,iBACTx4E,KAAKyxC,cAAcx+B,GACnBjT,KAAKu3E,wBAAwBl8B,eAIjC,WAEGw5B,kBACAA,8BACAA,yBACAA,uBACAA,yBACAA,6BACAA,4BACC70E,KAAKyxC,eAAiBzxC,KAAKw3E,iCACvBx3E,KAAK+3E,kBACT/3E,KAAKyxC,cAAcx+B,GACnBjT,KAAKw3E,yBAAyBl8B,gBAMlC,GAKQy8B,kBACZvnC,GACA8K,kDAEA,MAAMrmD,GAAM,GAAGu7C,MAAc8K,KAExBt7C,KAAK45E,4BAA4Bv6E,IAAIpK,MACxC+K,KAAK45E,4BAA4B53E,IAAI/M,UAE/B+K,KAAKy2E,mBAAmBoD,0BAC5BrpC,GACA8K,KAIJt7C,KAAKw3E,yBAA2B,OAIpBgB,iBACZhoC,GACA6K,kDAEA,MAAMpmD,GAAM,GAAGu7C,MAAc6K,KAExBr7C,KAAK85E,2BAA2Bz6E,IAAIpK,MACvC+K,KAAK85E,2BAA2B93E,IAAI/M,UAE9B+K,KAAKw2E,wBAAwBpC,yBACjC5jC,GACA6K,KAIJr7C,KAAKu3E,wBAA0B,KAC/Bv3E,KAAKm4E,uBAAyB,OAGxBV,iBACNz3E,KAAKq4E,oBAAsB,KAC3Br4E,KAAK02E,oBAAsB,KAIfsB,uBACZ+B,GACA1+B,GACAC,GACAu6B,kDAEIkE,IAAaA,IAAa/5E,KAAKg6E,2BACnCh6E,KAAKg6E,yBAA2BD,GAChC/5E,KAAKq4E,oBAAsBxC,GAC3B71E,KAAK02E,qBAAsB8C,QAAqB3D,IAEhD71E,KAAK4uB,kBAAkBwpD,2BACjBp4E,KAAKm0B,OAAOY,aAAaC,GAAGoO,gBAA6B,CAC7DoN,WAAYxwC,KAAK82E,mBACjBz7B,aAAcA,GACdC,cAAeA,KAEjBt7C,KAAK4uB,kBAAkB0pD,uBAGjBzB,qBACN72E,KAAKm0B,OAAOY,aAAaC,GACvBoO,oBACA,GACA,CAAEpQ,UAAU,oDArkBLooB,GAAmBviD,4GAAnBuiD,EAAmBhtB,0KARf,CACbmkD,IACA0H,IACA5G,KACAT,KACAvU,QACD3uB,6HD5C0B5V,QAAAA,IAOuCA,kCAAAA,IAGaA,wEAAAA,IAY/BA,UAAAA,IAWIA,eAAAA,IAYLA,SAAAA,IAYYA,6BAAAA,IAWLA,wBAAAA,IAYQA,0BAAAA,IAYRA,iBAAAA,IAYFA,eAAAA,IAYMA,4BAAAA,IAYTA,WAAAA,IAWCA,YAAAA,IAWHA,SAAAA,IAwCsCA,WAAAA,IAGwBA,+BAAAA,IAGVA,0BAAAA,IAGJA,iBAAAA,IAGIA,mBAAAA,IAGQA,8BAAAA,IAGQA,4BAAAA,IAY1BA,WAAAA,IACEA,YAAAA,IACNA,SAAAA,4rFA/NvFjhC,qBAAqD,QACnDA,WAAiCA,QAEjCA,6BAEiBA,6CAAoByQ,4BAA4BzQ,QAEjEA,iBAAwB,QAAxBA,CAAwB,UACNA,WAAgFA,QAAQA,kBAC1EA,aAACA,UAE/BA,+BACcA,QAEdA,kBAA8B,YAA9BA,CAA8B,YAA9BA,CAA8B,YAA9BA,CAA8B,eAMfA,kCAASyQ,qDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAA4CA,cAIlDA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,yDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAAqDA,cAK3DA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,kDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAA0CA,cAKhDA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,8DAFhBzQ,QAGAA,qBACEA,mBACAA,8BAA0EA,cAIhFA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,yDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAAgEA,cAKtEA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,iEAFhBzQ,QAGAA,qBACEA,mBACAA,8BAA0EA,cAKhFA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,yDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAAyDA,cAK/DA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,uDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAAqDA,cAK3DA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,6DAFhBzQ,QAGAA,qBACEA,mBACAA,8BAAwEA,cAK9EA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,oDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAA8CA,cAIpDA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,qDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAAgDA,cAItDA,mBAAsC,YAAtCA,CAAsC,eAI3BA,kCAASyQ,kDAFhBzQ,QAGAA,qBACEA,mBACAA,8BAA0CA,oBAQtDA,sBAGEA,2BAcAA,2BAaAA,6BA8BAA,2BAYFA,QAEAA,8BAAeA,qCAAcyQ,6BAC7BzQ,kBA1OoCA,+BAInBA,6EAeAA,8EAWAA,iFAYAA,0EAYAA,sFAWAA,iFAYAA,yFAYAA,iFAYAA,+EAYAA,qFAYAA,4EAWAA,6EAWAA,0EAeTA,yEAcAA,6EAaiBA,mFA8BAA,+EAc6BA,uz4DCnM1Cw8B,OASD+lB,GAAb,EAAaA,4TC9CXviD,yBAAsEA,sCAe9DA,kBAAoF,WAApFA,CAAoF,WAApFA,CAAoF,YAI5EA,sBACFA,QACAA,kBAAsB,UACpBA,YACoCA,6DARiBA,uCAIbA,uCAIJA,wEAUtCA,mFADFA,SACEA,kCAEFA,uFAFiBA,sCAAiC,oFAKhDA,kFADFA,SACEA,iCAEFA,uFAFiBA,sCAAkC,wFARrDA,kBAEEA,iCAKAA,gCAKAA,iBACFA,iDAb4EA,wCAE3DA,+DAKAA,8FARnBA,SACEA,yBAcFA,qDAd0BA,gFAgB5BA,kBAAkD,WAAlDA,CAAkD,WAAlDA,CAAkD,YAI1CA,iBACAA,kBAAuB,UACrBA,YAA4EA,QAC5EA,gBAA2B,aAAkBA,cAACA,QAAOA,2BAAiEA,+DAAjEA,8GAM/DA,kBAA6D,WAA7DA,CAA6D,WAA7DA,CAA6D,YAKrDA,sBACFA,QACAA,kBAAsB,OACpBA,YAAiFA,aAC1BA,iDAJPA,+DAatDA,8DA3ERA,iBAAwD,UAAxDA,CAAwD,UAAxDA,CAAwD,WAKhDA,sBACFA,UAEFA,kBAAqB,WAArBA,CAAqB,QAEbA,SAA4DA,QAGhEA,yBAcAA,kCAgBFA,QACAA,2BAaAA,0BAiBAA,mBACEA,yBAEAA,sBAAQA,6DAASsjE,EAATtuC,MAASsuC,kBAEftjE,uBAAsCA,8BAA4CA,4DA1EUA,oCAK1FA,mEAGEA,4CAcSA,wDAiBGA,2CAaEA,oDAkBiBA,yCAI1BA,iEAQrBA,eACEA,4BAEFA,gCAFiBA,sFAaTA,0BAA+EA,mCAC/EA,0BAAkFA,mCAClFA,0BAAyEA,qCACzEA,0BAAwFA,iHAOxFA,8DAAmDA,qFAKjDA,0BAEEA,sBACFA,yCADWA,yEAQTA,cACEA,sBACAA,4BAAmEA,mCAD1DA,yEAGXA,cACEA,sBACAA,4BAA6DA,mCADpDA,yEAVbA,gBAKEA,uBAIAA,uBAIFA,uDAROA,yHAIAA,oJAMPA,cACEA,sBACAA,4BAAgEA,mCADvDA,yEAIXA,cACEA,sBACAA,4BAA0DA,mCADjDA,yEAIXA,cACEA,sBACAA,4BAAmEA,mCAD1DA,yEAOfA,kBAA4F,SAA5FA,CAA4F,aAEtEA,aAACA,QAAOA,yBAC5BA,8CAD4BA,4HA5DlCA,kBAAwD,WAAxDA,CAAwD,YAKlDA,wBACAA,wBACAA,wBACAA,uBACFA,UAGFA,kBAAiB,WAAjBA,CAAiB,UAEQA,UAAuBA,QAC5CA,wBAGAA,kBAEEA,wBAKAA,0BAeAA,wBAKAA,wBAKAA,wBAIFA,UAIFA,0BAMFA,QACAA,mBAAiB,YAAjBA,CAAiB,YAAjBA,CAAiB,gBAIHA,sEAASk6C,EAATllB,MAASklB,uBAEfl6C,uBAAuCA,8BAAiCA,UAE1EA,sBACQA,sEAASqwE,EAATr7C,MAASq7C,kDACfrwE,uBAAyDA,8BAAqCA,kEAvE/FA,sCACEA,qDACAA,sDACAA,mDAOgBA,4BACjBA,gCAKGA,yFAMEA,8HAcFA,6HAKAA,2HAKAA,0HAQHA,oCAaSA,oCAIgBA,gEA3EnCA,iCAAMA,4DAkGAA,0BACAA,mCACAA,0BAAyFA,mCACzFA,0BAAgGA,mCAChGA,0BACuBA,mCACvBA,0BACwEA,mCACxEA,0BAAwGA,mCACxGA,0BAEAA,mCACAA,0BAEeA,sCAKfA,gBAAoDA,yCACuBA,6CADvBA,+IAIlDA,cACEA,sBACAA,4BAAmEA,mCAD1DA,yEAGXA,cACEA,sBACAA,4BAA4FA,mCADnFA,yFAjCnBA,kBAAyD,WAAzDA,CAAyD,YAKnDA,wBAEAA,wBACAA,wBACAA,wBAEAA,wBAEAA,wBACAA,wBAGAA,yBAGFA,UAEFA,mBAAiB,aAEbA,wBAGAA,kBACEA,wBAIAA,wBAIFA,UAGFA,mBAA+D,UAA/DA,CAA+D,cAEzCA,cAACA,QAAOA,2BAA+EA,YAI/GA,mBAAiB,YAAjBA,CAAiB,YAAjBA,CAAiB,gBAIHA,uEAAS0wE,EAAT17C,MAAS07C,wBAEf1wE,uBAAuCA,8BAAiCA,UAE1EA,sBACQA,uEAASy6C,EAATzlB,MAASylB,oDACfz6C,uBAAyDA,8BAAqCA,mEAnD/FA,mCACEA,wEAEAA,mEACAA,mEACAA,+EAEAA,kFAEAA,iEACAA,0EAGAA,8EAODA,gCAIGA,kGAIAA,qGASqBA,yEAUfA,oCAIgBA,gEAvDnCA,iCAAMA,4ECxJD,IAAM4iD,GAAb,MAAM,SAmBJ37C,YACU02E,GACAC,GACAh9C,GACAygD,GAEA/lD,GACA+P,IANAlkC,gCACAA,2BACAA,6BACAA,iBAEAA,eACAA,qBAzBVA,UAAO01B,KACU11B,2BAAwB,GACzCA,cAAW80E,IACX90E,sBAAmBm6E,GACnBn6E,8BAA2B8hD,KAC3B9hD,sBAAmBojC,IACnBpjC,gCAA6Bo6E,KAC7Bp6E,uCAAoCq6E,IAG7Br6E,0BAA4C,IAAI5K,IAI9C4K,uBAA4B,EAC5BA,qBAA0B,EAC1BA,uBAA4B,KA8NrCA,mBAAiC,GAjN/BA,KAAKs6E,uBAFuB7gD,GAAqB+T,sBAEGC,SAClDyY,qBAGFlmD,KAAKu6E,mCAAqCzgD,SAAyCA,CAGrFolC,YAAYC,IAER,sBAAuBA,IACvBA,GAAQC,kBAAqBC,cAC3BF,GAAQC,kBAAqBxgD,eAE/B5e,KAAKomC,WAIT9T,WACEtyB,KAAKomC,WACLpmC,KAAKs6E,uBAAuBrrC,WAGtBuuB,kBACN,OAAOx9D,KAAKkkC,aAAaK,KAAK40C,IAA4B,CACxD54E,KAAM,KACN6jC,iBAAkB,sCAIdo2C,mBACNhqC,GACAv9B,GACA/V,IAEA,MAAMu9E,GAAoBz6E,KAAK06E,cAAclqC,IAAYqX,UAAU/sD,IAC1DA,GAAEoC,MAAQA,IAAQpC,GAAEmY,IAAMA,IAE/BwnE,IAAoB,GACtBz6E,KAAK06E,cAAclqC,IAAYl2C,OAAOmgF,GAAmB,GAIvDjC,iBACJhoC,GACA6K,kDAEA,IAAIkiB,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAC7D,GAAImmE,GAAS,OAEb,IAAKvhE,GAAG40B,UAAa0B,QACnBzyB,KAAKw2E,wBAAwBpC,yBAC3B5jC,GACA6K,KAGAtqB,KAKJ/wB,KAAKw6E,mBACHhqC,GACA6K,GACA8+B,GAAiBlH,YAEnBjzE,KAAK26E,qBAAqBnqC,IAC1BxwC,KAAKs6E,uBAAuBrrC,cAGvB2rC,iBAAiB3H,IAKtBjzE,KAAKm0B,OAAOY,aAAaC,GAAGoO,eAJb,CACboN,WAAYyiC,GAAWziC,WACvB6K,aAAc43B,GAAW53B,cAE8Bx/C,CAG9Ck8E,kBACXvnC,GACA8K,kDAEA,IAAIiiB,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAC7D,GAAImmE,GAAS,OAEb,IAAKvhE,GAAG40B,UAAa0B,QACnBzyB,KAAKy2E,mBAAmBoD,0BACtBrpC,GACA8K,KAGAvqB,KAKJ/wB,KAAKw6E,mBACHhqC,GACA8K,GACA6+B,GAAiB9C,aAEnBr3E,KAAK26E,qBAAqBnqC,IAC1BxwC,KAAKs6E,uBAAuBrrC,cAGvB4rC,kBAAkBxF,IAKvBr1E,KAAKm0B,OAAOY,aAAaC,GAAGoO,eAJb,CACboN,WAAY6kC,GAAoB7kC,WAChC8K,cAAe+5B,GAAoB/5B,eAEoBz/C,CAGpDi/E,YAAY34C,IAIjBniC,KAAKm0B,OAAOY,aAAaC,GAAGoO,eAHb,CACboN,WAAYrO,GAASlvB,IAEkCpX,CAGpDk/E,UAAUvqC,IACf,MAAMrO,GAAWniC,KAAKs7B,UAAUl1B,KAAK8Q,IAAKA,GAAEjE,KAAOu9B,IACnD,SACIrO,GAASkJ,cAAgD,GAAhClJ,GAASkJ,aAAat5C,QAC/CowC,GAASoJ,aAA8C,GAA/BpJ,GAASoJ,YAAYx5C,OAAU,CAKtDipF,0BAA0B/H,IAC/B,IAAIgI,GAAY,IAAI5mD,KAAK4+C,GAAW5tD,OAEpC,OADc,IAAIgP,KAAK4+C,GAAW7oD,KACjB6wD,GAGZC,wBACL7D,GACApiF,IAKA,IAAI85C,GAAOosC,KAFJb,uBAAuBc,gCAAgC/D,IAE9BroC,QAAQ/5C,IAExC,OAAI85C,IACKA,GAAKJ,OAEL,CAIJ0sC,uBACLC,GACArmF,IAOA,IAAI85C,GAAOwsC,KAJJjB,uBAAuBkB,+BAC1BF,IAGmCtsC,QAAQ/5C,IAE/C,OAAI85C,IACKA,GAAKJ,OAEL,CAIJ8sC,qBAAqBt5C,IAI1B,IAAI4M,GAAO2sC,KAFJpB,uBAAuBqB,kCAAkCx5C,IAEtB6M,QACxC4sC,0BAGF,OAAI7sC,IACKA,GAAKJ,OAEL,CAIJktC,uBAAuB5I,IAU5B,MAAO,IATuBjzE,KAAKk6E,SAAS3kD,UAC1C09C,GAAW5tD,MACX,iBAG0B4tD,GAAWQ,UACnCzzE,KAAKu6E,mCACLv6E,KAAKk6E,SAAS3kD,UAAU09C,GAAW7oD,IAAK,cAEJ0xD,CAGlC11C,WACNpmC,KAAKs7B,UAAYt7B,KAAKy5B,qBAAqBE,KAAK2B,UAAUphB,KACxD,CAAC6hE,GAAWC,KAAeD,GAAU/5C,MAAQg6C,GAAUh6C,MAAQ,GAAI,GAGrEhiC,KAAKs7B,UAAU1oC,QAAQuvC,KACrBniC,KAAK26E,qBAAqBx4C,GAASlvB,IACnCjT,KAAKi8E,gBAAgB95C,GAASlvB,MAK1BgpE,gBAAgBzrC,IACtB,IAAIrO,GAAWniC,KAAKs7B,UAAUl1B,KAAK+7B,IAAYA,GAASlvB,KAAOu9B,IAC/D,IAAKrO,GAAU,OAEf,IAAImd,GAAc,IAAIjrB,KAEtBr0B,KAAK06E,cAAclqC,IAAcrO,GAASoJ,YAAYv2C,IACpDi+E,KACe,CACXhgE,GAAIggE,GAAW53B,aACfh2B,MAA2B,MAApB4tD,GAAW5tD,MAAgBi6B,GAAQ,IAAIjrB,KAAK4+C,GAAW5tD,OAC9D+E,IAAuB,MAAlB6oD,GAAW7oD,IAAck1B,GAAQ,IAAIjrB,KAAK4+C,GAAW7oD,KAC1DltB,KAAMi9E,GAAiBlH,cAI7BjzE,KAAK06E,cAAclqC,IAAY98C,QAC1ByuC,GAASkJ,aAAar2C,IACvBqiF,KACe,CACXpkE,GAAIokE,GAAY/7B,cAChBj2B,MACuB,MAArBgyD,GAAYhyD,MAAgBi6B,GAAQ,IAAIjrB,KAAKgjD,GAAYhyD,OAC3D+E,IAAwB,MAAnBitD,GAAYjtD,IAAck1B,GAAQ,IAAIjrB,KAAKgjD,GAAYjtD,KAC5DltB,KAAMi9E,GAAiB9C,gBAK/Br3E,KAAK06E,cAAclqC,IAAcxwC,KAAK06E,cAAclqC,IAAYt2B,KAC9D,CAACoQ,GAAI4xD,KACC5xD,GAAGF,KAAO8xD,GAAG9xD,IAAYE,GAAGjF,MAAQ62D,GAAG72D,OAAQ,EAAK,EAEjDiF,GAAGF,IAAM8xD,GAAG9xD,KAAM,EAAK,GAK5BuwD,qBAAqBnqC,IAC3B,IAAIrO,GAAWniC,KAAKs7B,UAAUl1B,KAAK+7B,IAAYA,GAASlvB,KAAOu9B,IAC/D,IAAKrO,GAAU,OAEfniC,KAAKm8E,qBAAqB7mF,IAAIk7C,GAAY,GAC1C,IAAI4rC,GAAcp8E,KAAKm8E,qBAAqB9mF,IAAI8sC,GAASlvB,IAEzDkvB,GAASoJ,YACNnjC,OAAO/T,IAAKA,GAAEo/E,WACd7gF,QAAQqgF,KACPmJ,IAAenJ,GAAWoJ,QAAU,IAGxCl6C,GAASkJ,aAAaz4C,QAAQykF,KAC5B+E,IAAe/E,GAAYiF,QAAU,IAGvCt8E,KAAKm8E,qBAAqB7mF,IAAI6sC,GAASlvB,GAAImpE,IAG7CG,UAAUp6C,GAAoBq6C,IAC5B,OAAIA,GAAYt/E,MAAQi9E,GAAiBlH,WAChC9wC,GAASoJ,YAAYnlC,KAAKixC,IAAKA,GAAEgE,cAAgBmhC,GAAYvpE,IAGlEupE,GAAYt/E,MAAQi9E,GAAiB9C,YAChCl1C,GAASkJ,aAAajlC,KAAKixC,IAAKA,GAAEiE,eAAiBkhC,GAAYvpE,SADxE,CACwEA,kDAhT/DwoC,IAAsB5iD,kGAAtB4iD,GAAsBrtB,qKANlB,CACbilD,IACAT,IACAqH,MACDphF,6IDrC+DihC,QAAAA,IAiFiBA,aAAAA,IA3DHA,4EAC5D,IA6BoEA,QAAAA,IAe9BA,qJACjC,IAqGsDA,OAAAA,IAIoBA,SAAAA,IAtErBA,WAAAA,IACEA,YAAAA,IACNA,SAAAA,IACJA,yBAAAA,IAc1DA,wFAAmC,IAUYA,wBAAAA,IAIHA,qBAAAA,IAMCA,qBAAAA,IAKJA,mBAAAA,IAKKA,uBAAAA,IA4FqBA,OAAAA,IAIoBA,SAAAA,IAlDCA,gBAAAA,IAEVA,SAAAA,IACOA,SAAAA,IACiBA,wBAAAA,IAG1DA,0BAAAA,IACmDA,OAAAA,IACHA,mBAAAA,IAGQA,uBAAAA,IAatDA,uBAAAA,IAIGA,6CAAAA,usEAlO7DjhC,qBACEA,uBAEAA,yBAqFFA,QAEAA,wBAMAA,2CA6FAA,mDA7LsCA,+BAAc,0CACRA,yCAEAA,uCAuFtCA,ql4DCzDQw8B,OAODomB,IAAb,GA4TA,IAAK0+B,GAGJ,MAHD,OAAKA,WAAgB,KACnBA,8BACAA,mCAFGA,GAAL,IAAKA,IAGJ,EAHIA,oIC1VE,IAAMhB,EAAb,MAAM,QACJr5E,YAAmByjC,sBAEnBvjC,UAAO01B,IAEPpD,WAAQ,+CALG6mD,GAA0BtgF,sCAA1BsgF,EAA0B/qD,6FCEoC0L,8CAAAA,GAGsDA,eAAAA,GAUhCA,QAAAA,sTAzBjGjhC,0BAAgB,iBAAhBA,CAAgB,cAEkBA,gCAASyQ,0BACrCzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAKFA,iBACAA,0BACiCA,QACjCA,qBAAQA,gCAASyQ,wBACfzQ,sBAA8DA,8BACtDA,oBAOpBA,yBAAc,gBACJA,gCAASyQ,0BACfzQ,sBAA6DA,8BAAoCA,qBAtBxFA,oCAY6BA,sCAURA,ih4DDfvBsgF,GAAb,EAAaA,yGEKN,IAAMc,EAAb,MAAM,QAOJn6E,YACUgsC,EACArS,GADAz5B,4BACAA,4BAERA,KAAKmrD,sBAAwBrf,EAC7B9rC,KAAKwyE,sBAAwB/4C,EAGlBw/C,kBACXzoC,EACAisC,iDAEA,MAAMzJ,EAAmBhzE,KAAKwyE,sBAAsB74C,KAAK2B,UAAUl1B,KACjE+7B,IAAYA,GAASlvB,KAAOu9B,GAGxBojC,EAAwC,CAC5CvuD,MAAO,KACPnoB,KAAMu/E,EACN3I,aAAcnyB,aAKhB,IAAI+6B,QAA4C9rC,KADzC9E,qBAAqB+E,cAAcmiC,GACsBrzD,KAC9D,qBACAi0D,GACAr8E,OAEEolF,GAAmBD,EAAephC,cActC,SAXMt7C,KAAKwyE,sBAAsBtxC,mBAC/B,2BACA,CAAC8xC,IAGH0J,EAAiB1J,EAAiB3nC,aAAajlC,KAC7CtL,IAAKA,GAAEwgD,eAAiBqhC,IAG1B38E,KAAK48E,oBACH58E,KAAK8rC,qBAAqB+E,cAAc6rC,GACrC18E,KAAK48E,oBAEV,YAAKC,kBAAoBH,EAClB18E,KAAK68E,oBAGPvD,sCACL9oC,EACA8K,GAEA,MAAM03B,EAAmBhzE,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KAChE+7B,GAAYA,EAASlvB,KAAOu9B,GAG9B,YAAKqsC,kBAAoB7J,EAAiB3nC,aAAajlC,KACrDixE,GAAeA,EAAY/7B,gBAAkBA,GAG/Ct7C,KAAK48E,oBAAsB58E,KAAK8rC,qBAAqB+E,cACnD7wC,KAAK68E,mBAGA78E,KAAK68E,kBAGDhD,0BACXrpC,EACA8K,uDAGA,IAAI03B,EAAmBhzE,KAAKwyE,sBAAsB74C,KAAK2B,UAAUl1B,KAC/D+7B,IAAYA,GAASlvB,KAAOu9B,GAE9B,IAAKwiC,EAAkB,OAGvB,IAAI8J,EAA6D,QAA9B7yB,EAAgB,MAAhB9C,OAAgB,EAAhBA,EAAkB9b,oBAAYvuB,eAAE1W,KACjEixE,IAAeA,GAAY/7B,eAAiBA,GAGzCwhC,UAMCC,KAJwB5xB,sBAAsBta,cAClDisC,GACA,GAEuB7kE,SAAS1gB,aAG5ByI,KAAKwyE,sBAAsBtxC,mBAC/B,2BACA,CAAC8xC,IAIDhzE,KAAK68E,mBACL78E,KAAK68E,kBAAkBvhC,eAAiBA,IAExCt7C,KAAK68E,kBAAoB,SAIhBnD,gBACXp+B,EACA+kB,EACAlD,iDAEA,IAAI6f,QAA2Bh9E,KAAK48E,oBAAoBj9D,KACtD,gBACA,CAAEw9C,iBACF5lE,OAGFyI,KAAKmrD,sBAAsBvL,iBAAiB5/C,KAAK68E,mBAEjD,MAAMtc,EAAuBvgE,KAAK2zE,oBAAoBtT,GACtDE,EAAqBl1B,aACnBk1B,EAAqBl1B,aAAajjC,OAChC6O,IAAKA,GAAEqkC,eAAiBA,GAI5Bt7C,KAAKmrD,sBAAsBnpD,IAAIg7E,GAG/Bxc,KADgCmT,oBAAoBxW,GACjC9xB,aAAa33C,KAAKspF,KAGhC3uC,OACLruC,KAAK48E,oBAAoBlrC,QAGd10B,4DACLhd,KAAK8rC,qBAAqB9uB,UAG1B22D,oBAAoBnjC,GAI1B,OAHyBxwC,KAAKwyE,sBAAsB74C,KAAK2B,UAAUl1B,KACjE8Q,GAAKA,EAAEjE,KAAOu9B,iDApJPypC,GAAkBphF,qDAAlBohF,EAAkBnhF,QAAlBmhF,EAAkB,qBAFjB,SAEDA,GAAb,EAAaA,wECVDI,EAMX,MAND,OAAYA,SAAiC,KAC3CA,0BACAA,uBACAA,2BACAA,uBACAA,yBALUA,EAAZ,IAAYA,IAMX,GAEK,gBAA2C9L,IAI/CzuE,YAAYw7E,GACVhtE,MAAMgtE,GAEN,IAAI9M,EAAsD,CACxDC,kBAAkB,EAClB1U,YAAY,GAId/5D,KAAK07D,QACHuX,GAAcA,EAAW5mC,YACzBguC,EAAkC4C,YAClCzO,GACA3T,KAAKxuB,IAA0B,MAAXgV,OAAW,EAAXA,EAAatvD,QAAS,GAG5CiO,KAAK07D,QACHuX,GAAcA,EAAWiK,SACzB7C,EAAkC8C,SAClC3O,GAECzT,KAAKkY,IAAeA,EAAWY,cAC/BhZ,KAAKqiB,IAAoB,MAAR77B,OAAQ,EAARA,EAAUtvD,QAAS,GAGvCiO,KAAK07D,QACHuX,GAAcA,EAAWoJ,OACzBhC,EAAkC+C,aAClC5O,GACA3T,KAAKwhB,GAAUA,EAAS,GAG1Br8E,KAAK07D,QACHuX,GAAcA,EAAW5tD,MACzBg1D,EAAkCgD,gBAClC7O,GACA3T,KAAKogB,GAA0B,MAAbA,GAGpBj7E,KAAK07D,QACHuX,GAAcA,EAAW7oD,IACzBiwD,EAAkCiD,cAClC9O,GAECzT,KAAKkY,GAAsC,GAAxBA,EAAWQ,WAC9B5Y,KAAK0iB,GAAsB,MAAXA,EAAW,CAmBvBtuC,SAASh6C,GAChBqZ,MAAM2gC,SAASh6C,6EClFb,QAKJ6K,YAAYulB,EAAa+E,GAFjBpqB,eAAkC,IAAI5K,IAG5C4K,KAAKw9E,OAASn4D,EACdrlB,KAAKy9E,KAAOrzD,EACZpqB,KAAK09E,qBAEAzuC,SAAS0uC,GACd,IAAKA,GAAmC,GAArBA,EAAW5rF,OAAa,OAAO,EAElD4rF,EAAW/qF,QAAQgrF,IACjB,IAAIC,EAAW,IAAIxpD,KAAKupD,EAAUv4D,OAClCw4D,EAASC,QAAQ,GACjB,MAAMP,EAAU,IAAIlpD,KAAKupD,EAAUxzD,KACnC,KAAOyzD,GAAYN,GAAS,CAC1B,MAAMQ,EAAW,GAAGF,EAAShnC,cAAcjlD,cAAcisF,EACtDjnC,WACAhlD,aACCoO,KAAKg+E,UAAU3+E,IAAI0+E,IACrB/9E,KAAKg+E,UAAU1oF,IAAIyoF,GAAU,GAE/BF,EAASI,SAASJ,EAASjnC,WAAa,MAI5C,UAAY3hD,EAAKE,KAAU6K,KAAKg+E,UAC9B,IAAK7oF,EAAO,OAAO,EAGrB,OAAO,EAGDuoF,qBACN,IAAIG,EAAW,IAAIxpD,KAAKr0B,KAAKw9E,QAC7B,MAAMD,EAAU,IAAIlpD,KAAKr0B,KAAKy9E,MAE9B,KAAOI,GAAYN,GACjBv9E,KAAKg+E,UAAU1oF,IACb,GAAGuoF,EAAShnC,cAAcjlD,cAAcisF,EACrCjnC,WACAhlD,cACH,GAEFisF,EAASI,SAASJ,EAASjnC,WAAa,IAKxC,QAIJ92C,YAAYulB,EAAa+E,GACvBpqB,KAAKqlB,MAAQA,EACbrlB,KAAKoqB,IAAMA,GCjDR,IAAKwxD,GAEX,OAFWA,QAA0B,KACpCA,0CADUA,IAEX,GAEK,gBAA8CrN,IAMlDzuE,YAAYqiC,GACV7zB,MAAM6zB,GAHSniC,8BAA2B,GAW1CA,KAAK07D,QACHv5B,GAAYA,EACZy5C,GAA2BsC,oBAR6B,CACxDzP,kBAAkB,EAClB1U,YAAY,IAQZc,KAAK14B,GAAYniC,KAAKm+E,2BAA2Bh8C,IAG7Cg8C,2BAA2Bh8C,GACjC,IAAIi8C,EACFp+E,KAAKq+E,+BAA+Bl8C,GAEtC,MAAMm8C,EAAc,IAAIjqD,KAClBkpD,EAAU,IAAIlpD,KAAKiqD,GACzBf,SAAQU,SAASK,EAAY1nC,WAAa52C,KAAKu+E,0BAIxBC,IAFjBC,EAAiClB,EAASe,GAEQrvC,SACtDmvC,GAMIC,+BAA+Bl8C,WACrC,IAAIu8C,EAAgC,GACpC,MAAMJ,EAAc,IAAIjqD,KAExB,OAAoB,QAApBktB,IAAShW,mBAAWzuB,SAAElqB,QAAQqgF,IACxBA,EAAWQ,WAAaR,EAAW5tD,MACrCq5D,EAAiBhrF,KAAK,IAAIirF,EAAU1L,EAAW5tD,MAAOi5D,IAC7CrL,EAAW5tD,OAAS4tD,EAAW7oD,KACxCs0D,EAAiBhrF,KAAK,IAAIirF,EAAU1L,EAAW5tD,MAAO4tD,EAAW7oD,QAIhD,QAArB4/B,IAAS3e,oBAAYxiB,SAAEj2B,QAAQy4C,IACzBA,EAAahmB,OACfq5D,EAAiBhrF,KAAK,IAAIirF,EAAUtzC,EAAahmB,MAAOi5D,MAIrDI,2EChECtE,EAGX,MAHD,OAAYA,SAA0B,KACpCA,sBACAA,2BAFUA,EAAZ,IAAYA,IAGX,GAEK,gBAA4C7L,IAIhDzuE,YAAYu1E,GACV/mE,MAAM+mE,GAEN,IAAI7G,EAAsD,CACxDC,kBAAkB,EAClB1U,YAAY,GAId/5D,KAAK07D,QACH2gB,GAAUA,EAAOC,OACjBlC,EAA2BgD,aAC3B5O,GACA3T,KAAKyhB,KAAYA,GAGnBt8E,KAAK07D,QACH2gB,GAAUA,EAAOh3D,MACjB+0D,EAA2BiD,gBAC3B7O,GACA3T,KAAKogB,GAA0B,MAAbA,EAAa,2GCvB9B,IAAM/0B,EAAb,MAAM,gBAAqC4pB,IAGzChwE,YACEgmD,EACArsB,GAEAnrB,MAAMw3C,EAAarsB,EAAsB2J,YAGzC3J,EAAqBE,KAAK2B,UAAU1oC,QAAQuvC,GAC1CA,EAASkJ,aAAaz4C,QAAQykF,IAC5Br3E,KAAKo7E,gCAAgC/D,MAKzC59C,EAAqBE,KAAK2B,UAAU1oC,QAAQuvC,GAC1CA,EAASoJ,YAAY34C,QAAQqgF,IACtBA,EAAWY,cACd7zE,KAAKw7E,+BAA+BvI,MAM1Cx5C,EAAqBE,KAAK2B,UAAU1oC,QAAQuvC,GAC1CniC,KAAK27E,kCAAkCx5C,IAIpCi5C,gCACL/F,GAEA,IAAIpgF,EAAM+K,KAAK4+E,0BAA0BvJ,GACrCjlC,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAIyuC,IAA6BxJ,GAC7Cr1E,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGForC,+BACLF,GAEA,IAAIrmF,EAAM+K,KAAK8+E,yBAAyBxD,GACpClrC,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAI2uC,KAA4BzD,GAC5Ct7E,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGFurC,kCACLx5C,GAEA,IAAIltC,EAAM+K,KAAKg/E,4BAA4B78C,GACvCiO,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAI6uC,IAA+B98C,GAC/CniC,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGDwuC,0BACNvJ,GAGA,MADU,yBAAyBA,EAAoB/5B,gBAIjDwjC,yBACNxD,GAGA,MADU,uBAAuBA,EAAmBjgC,eAI9C2jC,4BAA4B78C,GAElC,MADU,2BAA2BA,EAASlvB,KAIvCwyC,UACPn3C,MAAMm3C,WAtFQS,wBAAiB,wBADtBA,GAAb,EAAaA,qFCJN,IAAMg5B,GAAb,MAAM,QACJp/E,YAAoByuB,mBAEpB+5B,sBAgBE,OAfkD,QAAhCjH,OAAK9yB,SAASwG,aAAa1/B,aAAKynB,eAAE1U,OAAOivC,KACrDA,EAAEt2C,MAAQqiC,mBACTiU,EAAEt2C,KAAK7F,WAAWkoC,oBAQT+7C,EANiBp+E,KAAKrL,UAClC0tC,wBACAiU,EAAEt2C,KAAKhP,QAG0BsM,MAAM,KAAK+J,OAAOivC,GAAKA,GACtCtlD,QAAU,iDAdvBmtF,GAAWrmF,wCAAXqmF,EAAWpmF,QAAXomF,EAAW,qBAFV,SAEDA,GAAb,EAAaA,6KCGN,IAAME,EAAb,MAAM,SACJt/E,YACU25B,GACAqzC,IADA9sE,6BACAA,6BAGCq/E,uBAgCT,OAAO/jD,KA/Bc7B,qBAAqBE,KAAK2B,UAAUtmC,IAAImtC,KAC3D,IAAIx0B,GAAaw0B,GAASx0B,YAAc,GA2BxC,MAzB+B,CAC7BsF,GAAIkvB,GAASlvB,GACb+uB,MAAOG,GAASH,MAChBjhC,MAAMkgD,OAAgB9e,GAASjF,SAC/BwhC,aAAcv8B,GAASjF,QAAQC,UAC/BxvB,WAAYA,GAAW3Y,IACrBqlB,qBACE,MAAiB,CACfpH,GAAIoH,GAAEkiC,WACN+iC,YAAajlE,GAAEklE,YACfr7B,cAAelkD,KAAK8sE,qBAAqB5oB,cAAc7pC,GAAEwlC,SACzDmE,KAAe,QAATw7B,MAAE3/B,eAAO/iC,iBAAEknC,KACjBK,SAAUrkD,KAAK8sE,qBAAqB1oB,aAAa/pC,GAAEwlC,SACnDoE,WAAqB,QAATw7B,MAAE5/B,eAAOh3B,iBAAEo7B,WACvBy7B,0BAA2B1/E,KAAK2/E,wBAC9BtlE,GAAEwlC,SAEJ+/B,0BACGvlE,GAAEwlE,WAAap+B,qBACL,QAAT1b,MAAE8Z,eAAOpkB,iBAAEqkD,iBAAkB1/B,UAClB,QAAXpa,MAAEirC,iBAASv1C,iBAAE3pC,QAAS,SAQnBmoB,KAAK,CAACjD,GAAGC,KAAMD,GAAE+qB,MAAQ9qB,GAAE8qB,OAGtC29C,wBACNI,IAEA,OACGA,KACD13C,OAAoB03C,GAAgB/7B,MAAM,KAC1C3b,OAAoB03C,GAAgBn8B,cAAc,KAClDvb,OAAoB03C,GAAgB97B,YAAY,KAChD5b,OAAoB03C,GAAgBl8B,YAAY,KAC/C7jD,KAAK8sE,qBAAqBpqB,yBACzBq9B,GAAgBx8B,WAEjBvjD,KAAK8sE,qBAAqBlqB,0BACzBm9B,GAAgB17B,SAChB07B,GAAgBx8B,WAEjBvjD,KAAK8sE,qBAAqBxqB,wBACzBy9B,GAAgB18B,YAGX28B,EAA0BC,SAEjC53C,OAAoB03C,GAAgB/7B,MAAM,KAC1C3b,OAAoB03C,GAAgBn8B,cAAc,KAClDvb,OAAoB03C,GAAgB97B,YAAY,KAChD5b,OAAoB03C,GAAgBl8B,YAAY,KAC/C7jD,KAAK8sE,qBAAqBpqB,yBACzBq9B,GAAgBx8B,WAEjBvjD,KAAK8sE,qBAAqBlqB,0BACzBm9B,GAAgB17B,SAChB07B,GAAgBx8B,WAEjBvjD,KAAK8sE,qBAAqBxqB,wBACzBy9B,GAAgB18B,YAGX28B,EAA0BE,WAG5BF,EAA0BG,uDAjFxBf,IAAwBvmF,mDAAxBumF,GAAwBtmF,QAAxBsmF,GAAwB,YAAxBA,IAAb,GAwGO,IAAKY,EAIX,MAJD,OAAYA,SAAyB,KACnCA,oBACAA,iCACAA,2BAHUA,EAAZ,IAAYA,IAIX,mEC5GM,IAAMI,EAAb,MAAM,SACJtgF,YAAmByjC,wBAEnBvjC,UAAO01B,IAEPpD,WAAQ,kDALG8tD,IAAqCvnF,wCAArCunF,GAAqChyD,6GCEuB0L,gDAAAA,IAIwDA,iBAAAA,IAUpCA,QAAAA,4TA1B7FjhC,0BAAgB,iBAAhBA,CAAgB,cAC+BA,gCAASyQ,2BAClDzQ,qBACFA,UAEFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,WAMFA,iBACAA,0BACmCA,QAEnCA,qBAAQA,gCAASyQ,yBACfzQ,sBAA8DA,8BACpDA,oBAOtBA,yBAAc,gBACJA,gCAASyQ,2BACfzQ,sBAA6DA,8BAAgCA,sBAxBpFA,qCAc6BA,uCAURA,qh4DDhBvBunF,IAAb,iGETEvnF,yBAAsFA,qCAc9EA,kBAAwF,WAAxFA,CAAwF,WAAxFA,CAAwF,YAIhFA,sBACFA,QACAA,kBAAsB,UACpBA,YACkFA,6DARzBA,uCAIjBA,uCAI0CA,sEAQtFA,kBAA2G,UACjFA,SAA0BA,QAClDA,gBAAcA,SACZA,mBAAmBA,SAAqBA,QACxCA,mBAA+BA,SAAuBA,8CAHhCA,iCACVA,gCACOA,4BACYA,wDAGnCA,kBAAyD,OACvDA,YAAyDA,wCAOzDA,cACEA,sBACAA,4BAAwFA,mCAD/EA,yEAGXA,cACEA,sBACAA,4BAA8FA,mCADrFA,yFAOfA,kBAA8D,WAA9DA,CAA8D,WAA9DA,CAA8D,YAItDA,sBACFA,QACAA,kBAAsB,OACpBA,YACkBA,QAClBA,qBAAiDA,0FAASkjE,EAATluC,MAASkuC,6CACxDljE,sBAAsCA,8BAA+DA,6CANhEA,uCAM5BA,+IAvCrBA,kBAA+F,YAE3FA,wBAOAA,wBAGFA,QAGAA,kBAAiB,WAEbA,uBAIAA,uBAIFA,UAIFA,0BAkBAA,kBAAsB,YAAtBA,CAAsB,YAAtBA,CAAsB,gBAOdA,uBAAuCA,8BAAiCA,UAE1EA,sBAA6DA,kFAAS+zC,EAAT/e,MAAS+e,6BACpE/zC,uBAAyDA,8BAAqCA,gBAKtGA,kBACFA,uEA/DuEA,wCAE7DA,wFAOyBA,oCAQxBA,0FAIAA,6FAQaA,kDAsBRA,4DAA0C,iEAGvCA,oCAGgBA,gEAUnCA,2FA7FRA,iBAA+D,UAA/DA,CAA+D,UAA/DA,CAA+D,WAIvDA,qBACFA,UAEFA,iBAAqB,WAArBA,CAAqB,QAEbA,SAAiBA,QAGrBA,wBAcAA,4BAgEFA,QAEAA,mBACEA,yBACAA,sBAIEA,uBAAsCA,8BAAuDA,0DA9FDA,oCAK1FA,wBAG0BA,gDAciBA,wCAmEVA,yCAE7BA,4DAA0C,4CAGvCA,iEAQrBA,eACEA,4BAEFA,gCAFiBA,sGChFV,IAAM6jD,EAAb,MAAM,SAmBJ58C,YACSk/D,GACAqhB,GACCn8C,GACA3V,GACA+xD,IAJDtgF,uBACAA,0BACCA,qBACAA,iBACAA,yBAtBVA,UAAO01B,IAEP11B,sBAAmBojC,IACnBpjC,+BAA4BggF,EAUnBhgF,uBAA4B,EAC5BA,qBAA0B,EAC1BA,uBAA4B,KAsB7BA,uCAAoC,CAC1CO,KAAM,KACN6jC,iBAAkB,qCAjCTi7C,8BACT,OAA2B,QAAtBl3C,QAAKo4C,yBAAiBzjE,iBAAE/qB,UAC3BiO,KAAKugF,kBAAoBvgF,KAAKg/D,eAAeqgB,kBAExCr/E,KAAKugF,kBAedrhB,YAAYC,IAER,sBAAuBA,IACvBA,GAAQC,kBAAqBC,cAC3BF,GAAQC,kBAAqBxgD,gBAE/B5e,KAAKugF,kBAAoB,IAI7BjuD,WAAQ,CAOAkrC,kBACN,OAAOx9D,KAAKkkC,aAAaK,KACvB67C,EACApgF,KAAKwgF,mCAIHjhB,cAAc/uB,GAAoB+L,kDACtCv8C,KAAKqgF,kBAAkBh3B,WAAW7Y,IAClC,IAAI+sB,GAA0Bv9D,KAAKw9D,mBAC9BC,GAAQC,UAAiBjrC,QAAO8qC,GAAwBhmE,QAC7D,GAAImmE,GAAS,OAEb,IAAKvhE,GAAG40B,UAAa0B,QAAOzyB,KAAKqgF,kBAAkBpoE,OAAOskC,KAE1Dv8C,KAAKygF,4BAA4BjwC,GAAY+L,MAG/CkkC,4BAA4BjwC,GAAoB+L,IAC9C,IAAIkjB,GAAkBz/D,KAAKq/E,iBAAiBj5E,KAAKixC,IAAKA,GAAEpkC,IAAMu9B,IAC1D18B,GAAQ2rD,GAAgB9xD,WAAWk6C,UAAU5wC,IAAKA,GAAEhE,IAAMspC,IAE9DkjB,GAAgB9xD,WAAWrT,OAAOwZ,GAAO,GAGpC4sE,cAAclwC,WAEnB,OAA0B,QAAnBzJ,QADew5C,kBAAkBn6E,KAAK8Q,IAAKA,GAAEjE,KAAOu9B,IAC3C7iC,kBAAUmP,iBAAE/qB,QAAS,EAGhC4uF,2BAA2Bj8D,IAChC,OAAO,EAGHk8D,8BAA8BpwC,GAAoB+L,kDAEtDv8C,KAAKsgF,iBAAiBj3B,WAAW7Y,GAAY+L,UACvCv8C,KAAKsgF,iBAAiBO,iBAS5B7gF,KAAKuuB,SAASwG,aAAaC,GAAGoO,mBAPf,CACboN,WAAYA,GACZ+L,WAAYA,GACZC,QAAQ,GAIqD3gD,oDA1FtD6gD,IAA0B7jD,qFAA1B6jD,GAA0BtuB,yKAFtB,CAAC0yD,IAAmB1B,IAAyBvmF,oFD3BgBihC,YAAAA,IAoGeA,cAAAA,IA/EPA,iFACf,IA4DgBA,OAAAA,IAGoBA,SAAAA,IA/C1CA,UAAAA,IASaA,8BAAAA,IAIGA,iCAAAA,IAabA,sEAAAA,IAGsCA,mBAAAA,o+CApE1GjhC,qBACEA,uBAEAA,0BAwGFA,QAEAA,gCA7GsCA,gDAAwC,yBACtBA,yCAEZA,8CA0GtCA,+l6DClFQw8B,QAGDqnB,IAAb,EAAaA,4KCnBN,IAAMqkC,EAAb,MAAM,QASJjhF,YACUgsC,GACArS,GACDunD,IAFChhF,6BACAA,6BACDA,sBAmBDA,gCAAoC,EACpCA,qBAA6B,GAlBnCA,KAAK8rC,qBAAuBA,GAGvBud,WAAW7Y,GAAoB+L,cAChC/L,IAAcxwC,KAAKwwC,YAAc+L,IAAcv8C,KAAKu8C,aAExDv8C,KAAKmiC,SAAWniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACvDixC,IAAKA,GAAEpkC,IAAMu9B,IAEfxwC,KAAK0kB,SAAwB,QAAbu8D,QAAK9+C,gBAAQrlB,iBAAEnP,WAAWvH,KACxCixC,IAAKA,GAAEkF,YAAcA,IAGvBv8C,KAAK6/C,QAAuB,QAAbzlC,QAAKsK,gBAAQmE,iBAAEg3B,QAC9B7/C,KAAKitE,eAAiBjtE,KAAK8rC,qBAAqB+E,cAAc7wC,KAAK6/C,UAK9DqhC,aAAa1wC,IAClB,GAAIxwC,KAAKmhF,2BAA6B3wC,GAAY,CAChD,MAAM4wC,GAAmBphF,KAAKy5B,qBAAqBE,KAAK2B,UAAUtmC,IAChEkiB,GAAKA,EAAEgmB,QAAQ4iB,WAEXuhC,GAAoBrhF,KAAKy5B,qBAAqBE,KAAK2B,UAAUtmC,IACjEkiB,GAAKA,EAAEvJ,WAAW3Y,IAAIqlB,GAAKA,EAAEwlC,UAIzBC,GAAYwhC,GAFsBz8D,OAAOw8D,IAEdziB,OAC/B,CAAC2iB,EAAapsF,IAAUosF,EAAY18D,OAAO1vB,GAC3C,IAEF6K,KAAKwhF,gBAAkB1hC,GACpB13C,OAAO6O,GAAuC,IAAlCjX,KAAKghF,cAAc79B,SAASlsC,IACxC7O,OACC,CAACy3C,EAAS/kD,EAAG0B,IACXA,EAAIqrD,UACF5wC,IACEjX,KAAKghF,cAAc79B,SAASlsC,MAC5BjX,KAAKghF,cAAc79B,SAAStD,MAC1B/kD,GAEZkF,KAAKmhF,0BAA4B3wC,GAGnC,OAAOxwC,KAAKwhF,gBAGPnzC,OACLruC,KAAKitE,eAAev7B,QAGT10B,4DACLhd,KAAK8rC,qBAAqB9uB,0DApEvB+jE,GAAsBloF,6DAAtBkoF,EAAsBjoF,QAAtBioF,EAAsB,YAAtBA,GAAb,gFCHEloF,iBAA0F,OACxFA,WAAkEA,QAClEA,iBAAwB,aAEfA,kFAA8B,qCAAWokD,EAAXpvB,MAAWovB,uBADhDpkD,QAEAA,gCAEAA,UAEFA,iBAAwB,cAEfA,kFAA8B,qCAAWgjE,EAAXhuC,MAAWguC,2BADhDhjE,QAEAA,iCAEAA,qCAXiGA,2BAAc,+BAOhBA,2BAAe,8BAAfA,CAAe,6EAWhHA,sBACSA,0EAAqB,4CAEJ85C,EAFI9kB,OAEJ8kB,oBAAmB95C,kCAFpCA,4BAAqB,6EAkB9BA,2BAAcA,4EAAuB,6CAA+C6zC,EAA/C7e,OAA+C6e,qBACpF7zC,kCADcA,8BAAuB,0DArBvCA,eAAyC,OACvCA,YAAiFA,QACjFA,6BAmBAA,iCAEFA,+BAvBKA,iCAEOA,qCAmB+FA,sCClBtG,IAAMyjD,GAAb,MAAM,QAyBJx8C,YACUyuB,GACAguC,GACA8jB,GACAoB,GACD3U,IAJC9sE,iBACAA,yBACAA,0BACAA,uBACDA,6BA7BTA,sBAAmBojC,IAGnBpjC,UAAO01B,KAQP11B,kBAAekhE,EAERlhE,wBAAoB,EACpBA,iBAAsB,EAElB2N,iBACT,OAAO3N,KAAKqgF,kBAAkB1yE,WAGrBuzE,mBACT,OAAOlhF,KAAKyhF,eAAeP,aAAalhF,KAAKwwC,YAWzCle,mEAqBJ,OApBAtyB,KAAKwwC,aAA0C,QAA5B1b,QAAKvG,SAASoE,QAAQ92B,cAAMihB,iBAAE0zB,YACjDxwC,KAAKu8C,aAA0C,QAA5BuQ,QAAKv+B,SAASoE,QAAQ92B,cAAMgtB,iBAAE0zB,YAI/Cv8C,KAAKyhE,YAFPzhE,KAAWu8C,WAEU2kB,EAAaQ,KAC3B1hE,KAASwwC,WAEK0wB,EAAal/D,IAEbk/D,EAAaS,UAG7B3hE,KAAKwwC,aACRxwC,KAAKwwC,WAAaxwC,KAAKu8D,iBAAiBjhC,UAAU,GAAGroB,IAGvDjT,KAAKqgF,kBAAkBh3B,WAAWrpD,KAAKwwC,YACvCxwC,KAAK88D,mBAAqB98D,KAAKwwC,WAEvBxwC,KAAKyhE,kBACNP,EAAal/D,IAChBhC,KAAK0kB,eAAiB1kB,KAAKqgF,kBAAkBqB,iBAC7C1hF,KAAKu8C,WAAav8C,KAAK0kB,SAAS63B,iBAC1Bv8C,KAAKuuB,SAASwG,aAAaC,GAAGoO,mBAAiC,CACnEoN,WAAYxwC,KAAKwwC,WACjB+L,WAAYv8C,KAAKu8C,aAGnBv8C,KAAK2hF,qBACL,WAEGzgB,EAAaQ,KAChB1hE,KAAK2hF,qBAMT3hF,KAAK4hF,mBAAoB,IAG3BD,qBACQ3hF,KAAKu8C,aACTv8C,KAAK0kB,SAAW1kB,KAAK2N,WAAWvH,KAC9BiU,IAAKA,GAAEkiC,YAAcv8C,KAAKu8C,aAIxBv8C,KAAK0kB,WACT1kB,KAAKyhF,eAAep4B,WAAWrpD,KAAKwwC,WAAYxwC,KAAK0kB,SAAS63B,YAC9Dv8C,KAAK6/C,QAAU7/C,KAAKyhF,eAAe5hC,SAIjCqd,mBAAmBC,yDAEvB,GADAn9D,KAAKwwC,YAAc2sB,GACdn9D,KAAK0kB,SAEV,WACQ1kB,KAAKqgF,kBAAkBjjB,aACd,QAAbtQ,QAAKpoC,gBAAQ5H,iBAAEy/B,WACfv8C,KAAK88D,mBACL98D,KAAKwwC,WAKYA,CALZA,MAEAxf,UAEDhxB,KAAKuuB,SAASwG,aAAaC,GAAGoO,mBAAiC,CACnEoN,WAAYxwC,KAAKwwC,mBAKfxwC,KAAKuuB,SAASwG,aAAaC,GAAGoO,mBAAiC,CACnEoN,WAAY2sB,GACZ5gB,WAAYv8C,KAAKu8C,gBAIfslC,mEACJ7hF,KAAK4hF,mBAAoB,EACzB5hF,KAAK0kB,eAAiB1kB,KAAKqgF,kBAAkBqB,iBAC7C1hF,KAAK2hF,qBACL3hF,KAAK4hF,mBAAoB,IAGrBE,uEACJ,GAAM9hF,KAAK0kB,WAAa1kB,KAAKu8C,WAAY,CACvC,IAAKpgD,GAAG60B,UAAeyB,SACrBzyB,KAAKqgF,kBAAkBpoE,OAAOjY,KAAK0kB,SAAS63B,aAG1CvrB,IACFv/B,OAAOuhC,SAAS2mD,SAGlB35E,KAAK0kB,SAAW,KAChB1kB,KAAKu8C,WAAa,KAClBv8C,KAAK6/C,QAAU,QAInBkiC,mBACE/hF,KAAKqgF,kBAAkBhyC,KAAKruC,KAAK0kB,UAGnC4mD,kBACEtrE,KAAKyhF,eAAepzC,OAGTK,sEACX1uC,KAAKgiF,YAAa,EAClB,UACQhiF,KAAKyhF,eAAezkE,QAC1Bhd,KAAKuuB,SAASwG,aAAaC,GAAGoO,sBAC9B,CAD8BA,MACvBpS,IAAP,CAIFhxB,KAAKgiF,YAAa,oDAzJT1lC,GAAqBzjD,gFAArByjD,EAAqBluB,0DATjB,CACbgwC,IACA0iB,IACAC,EACA3+B,IACA6/B,IACAC,OACDxyC,8DD3BoC5V,YAAAA,IAQKA,4BAAAA,IAIyCA,OAAAA,IAOFA,MAAAA,IAQ7BA,iCAAAA,42BA5BtDjhC,qBAAqD,QACnDA,WAA+CA,QAE/CA,6BAEiBA,6CAAoByQ,4BAA4BzQ,QAGjEA,yBAmBAA,wBA0BAA,eAAsB,qBACLA,qCAAcyQ,6BAC7BzQ,oBAvDkCA,+BAInBA,2CAI4BA,iEAmBtBA,qCA0BlBA,0CACmDA,uh4DClC5Cw8B,OAUDinB,GAAb,GA6JO,IAAK4kB,EAIX,MAJD,OAAYA,QAAY,KACtBA,2BACAA,mBACAA,iBAHUA,EAAZ,IAAYA,GAIX,EAJWA,+FC/KL,IAAMghB,EAAb,MAAM,QAOJpiF,YACUgsC,EACArS,GADAz5B,4BACAA,4BAERA,KAAK8rC,qBAAuBA,EAGvBud,WAAW7Y,EAAoB+L,eAElC/L,IAA2B,QAAb3zC,OAAKslC,gBAAQrlB,eAAE7J,KAC7BspC,IAA2B,QAAb0N,OAAKvlC,gBAAQmE,eAAE0zB,cAI/Bv8C,KAAKmiC,SAAWniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACvDixC,GAAKA,EAAEpkC,IAAMu9B,GAEfxwC,KAAK0kB,SAAwB,QAAbyiC,OAAKhlB,gBAAQ1G,eAAE9tB,WAAWvH,KACxCixC,GAAKA,EAAEkF,YAAcA,GAGvBv8C,KAAKu/E,YAA2B,QAAbnoB,OAAK1yC,gBAAQgX,eAAE6jD,YAClCv/E,KAAKmiF,mBAAqBniF,KAAK8rC,qBAAqB+E,cAClD7wC,KAAKu/E,cAIFlxC,OACLruC,KAAKmiF,mBAAmBzwC,QAGb10B,4DACLhd,KAAK8rC,qBAAqB9uB,UAGrBolE,kEACX,GAAMpiF,KAAKu/E,YAAa,OAAOv/E,KAAKu/E,YAEpC,MAAM8C,EAAkBriF,KAAK8rC,qBAAqB+E,cAChD7wC,KAAK0kB,UAEP,YAAK66D,kBAAoB8C,EAAgB1iE,KAAK,sBAAsBpoB,OAEpEyI,KAAKmiF,mBAAqBniF,KAAK8rC,qBAAqB+E,cAClD7wC,KAAKu/E,aAGAv/E,KAAKu/E,cAGDtnE,wDACNjY,KAAKu/E,oBAEJv/E,KAAKmiF,mBAAmBlqE,SAAS1gB,OACvCyI,KAAKu/E,YAAc,sDA7DV2C,GAAkBrpF,mDAAlBqpF,EAAkBppF,QAAlBopF,EAAkB,YAAlBA,GAAb,EAAaA,yGCFN,IAAMpB,EAAb,MAAM,QAKJhhF,YACUgsC,EACArS,GADAz5B,4BACAA,4BAERA,KAAK8rC,qBAAuBA,EAGtB6zB,YAAY1sD,GAKlB,OAJejT,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACtD+7B,GAAYA,EAASlvB,KAAOA,GAMzBo2C,WAAW7Y,SACZA,IAA2B,QAAb3zC,OAAKslC,gBAAQrlB,eAAE7J,MAEjCjT,KAAKmiC,SAAWniC,KAAK2/D,YAAYnvB,GAEjCxwC,KAAK4/D,SAAW,GAChB5/D,KAAK2N,WAAa,GAElB3N,KAAKmiC,SAASx0B,WAAW/a,QAAQ8xB,IAC/B,IAAIznB,EAAU+C,KAAK8rC,qBAAqB+E,cAAcnsB,GAAU,GAChE1kB,KAAK4/D,SAASlsE,KAAKuJ,GACnB+C,KAAK2N,WAAWja,KAAKgxB,MAIlB2pB,KAAK3pB,GACV,IAAI49D,EAAgBtiF,KAAK2N,WAAWk6C,UAClCxtC,GAAKA,EAAEkiC,YAAc73B,EAAS63B,aAEX,GAAjB+lC,IACJtiF,KAAK2N,WAAW20E,GAAiB59D,EACjC1kB,KAAK4/D,SAAS0iB,GAAe5wC,SAGlBgwC,+DACX,MAAMv/C,EAAWniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACxD8Q,GAAKA,EAAEjE,IAAMjT,KAAKmiC,SAASlvB,IAM7B,IAAIsvE,QAAsC3xC,KAHf9E,qBAAqB+E,cAC9C7wC,KAAKmiC,UAEmDxiB,KACxD,mBACApoB,OAGE41E,QAAmB77C,OACrBixD,EAAY79B,YAAqB,YAEnC69B,EAAY1iC,QAAUstB,EACtBoV,EAAYhV,UAAYJ,EAAWl6D,GAEnCkvB,EAASx0B,WAAWja,KAAK6uF,GAEzB,IAAIriB,EAAalgE,KAAK8rC,qBAAqB+E,cAAc0xC,GAAa,GACtE,YAAK3iB,SAASlsE,KAAKwsE,GACnBlgE,KAAK2N,WAAWja,KAAK6uF,GAEdA,IAGItqE,OAAOskC,iDAClB,IAAIimC,EAAmBxiF,KAAKmiC,SAASx0B,WAAWvH,KAC9CixC,GAAKA,EAAEkF,YAAcA,GAEvB,IAAKimC,EAAkB,OAEvB,IAAIpiB,EACFpgE,KAAK8rC,qBAAqB+E,cAAc2xC,GAC1C,IAAKpiB,EACH,aAGIA,EAAgBnoD,SAAS1gB,OAE/B,IAAIuD,EAAIkF,KAAK2N,WAAWk6C,UACtBxQ,GAAKA,EAAEkF,YAAcimC,EAAiBjmC,YAEpCzhD,GAAK,IACPkF,KAAKmiC,SAASx0B,WAAWrT,OAAOQ,EAAG,GACnCkF,KAAK2N,WAAWrT,OAAOQ,EAAG,GAC1BkF,KAAK4/D,SAAStlE,OAAOQ,EAAG,MAIfsiE,aACX7gB,EACA8jB,EACAlD,iDAEA,MAAMz4C,EAAW1kB,KAAK2N,WAAWvH,KAAK6Q,IAAKA,GAAEslC,YAAcA,GAG3D,IAAIkmC,QAAwBxlF,KAFP6uC,qBAAqB+E,cAAcnsB,GAEpB/E,KAAK,gBAAiB,CAAEw9C,iBACzD5lE,OAGHkrF,EAAgB5iC,QAAUn7B,EAASm7B,QAGnC7/C,KAAK8rC,qBAAqB8T,iBAAiBl7B,GAE3C,MAAM67C,GAAuBvgE,KAAK2/D,YAAYU,GAC9CE,GAAqB5yD,WAAa4yD,GAAqB5yD,WAAWvF,OAChE6O,IAAKA,GAAEslC,YAAcA,GAIvBv8C,KAAK8rC,qBAAqB9pC,IAAIygF,GAG9BjiB,KADgCb,YAAYxC,GACzBxvD,WAAWja,KAAK+uF,mDA1H1B3B,GAAiBjoF,qDAAjBioF,EAAiBhoF,QAAjBgoF,EAAiB,YAAjBA,GAAb,EAAaA,8FCAN,IAAMmB,EAAb,MAAM,QAKJniF,YACUgsC,EACArS,GADAz5B,4BACAA,4BAERA,KAAK8rC,qBAAuBA,EAGvBud,WAAW7Y,EAAoB+L,aACpC,GACE/L,IAA2B,QAAb3zC,OAAK6nB,gBAAQ5H,eAAE0zB,aAC7B+L,IAA2B,QAAb0N,OAAKvlC,gBAAQmE,eAAE0zB,YAE7B,OAEF,IAAIpa,EAAWniC,KAAKy5B,qBAAqBE,KAAK2B,UAAUl1B,KACtD+7B,GAAYA,EAASlvB,IAAMu9B,GAG7BxwC,KAAK0kB,SAAWyd,EAASx0B,WAAWvH,KAAKixC,GAAKA,EAAEkF,YAAcA,GAC9Dv8C,KAAK4/D,SAAW,GAChB5/D,KAAKixE,UAAY,GAEM,QAAvB9pB,OAAKziC,SAASusD,iBAASx1C,SAAE7oC,QAAQg4D,IAC/B,IAAI3tD,GAAU+C,KAAK8rC,qBAAqB+E,cAAc+Z,GACtD5qD,KAAK4/D,SAASlsE,KAAKuJ,IACnB+C,KAAKixE,UAAUv9E,KAAKk3D,KAEtB5qD,KAAK0kB,SAASusD,UAAYjxE,KAAK0kB,SAASusD,WAAa,GAGhD5iC,KAAK6iC,GACV,IAAIp2E,EAAIkF,KAAKixE,UAAUppB,UAAUxQ,GAAKA,EAAE65B,QAAUA,GAClDlxE,KAAK4/D,SAAS9kE,GAAG42C,QAGN10B,4DACLhd,KAAK8rC,qBAAqB9uB,UAGrB6jE,+DAIX,IAAI6B,QAAsCL,KAHfv2C,qBAAqB+E,cAC9C7wC,KAAK0kB,UAEmD/E,KACxD,mBACApoB,OAEFyI,KAAK0kB,SAASusD,UAAUv9E,KAAKgvF,GAE7B,IAAIxiB,EAAalgE,KAAK8rC,qBAAqB+E,cAAc6xC,GACzD,YAAK9iB,SAASlsE,KAAKwsE,GAEnBlgE,KAAKixE,UAAUv9E,KAAKgvF,GAEbA,IAGIzqE,OAAOi5D,iDAClB,IAAIyR,EAAW3iF,KAAK0kB,SAASusD,UAAU7qE,KAAKixC,GAAKA,EAAE65B,QAAUA,GAC7D,IAAKyR,EAAU,OAEf,IAAIviB,EAAkBpgE,KAAK8rC,qBAAqB+E,cAAc8xC,GAC9D,IAAKviB,EACH,aAGIA,EAAgBnoD,SAAS1gB,OAE/B,IAAIuD,EAAIkF,KAAKixE,UAAUppB,UAAUxQ,GAAKA,EAAEkF,YAAcomC,EAASpmC,YAC3DzhD,GAAK,IACPkF,KAAK0kB,SAASusD,UAAU32E,OAAOQ,EAAG,GAClCkF,KAAKixE,UAAU32E,OAAOQ,EAAG,GACzBkF,KAAK4/D,SAAStlE,OAAOQ,EAAG,oDA7EjBmnF,GAAwBppF,mDAAxBopF,EAAwBnpF,QAAxBmpF,EAAwB,YAAxBA,GAAb,EAAaA,kFCJDntC,EAeX,MAfD,OAAYA,QAAkB,KAC5BA,cACAA,wBACAA,sBACAA,wBACAA,4BACAA,oCACAA,4CACAA,oCACAA,gCACAA,sCACAA,0CACAA,gCACAA,wCACAA,oCAdUA,EAAZ,IAAYA,GAeX,GAEK,iBAA4By5B,IAIhCzuE,YAAY0zD,GACVllD,MAAMklD,GAEN,IAAIgb,EAAsD,CACxDC,kBAAkB,EAClB1U,YAAY,GAGd,MAAM6oB,EAAiB,SAAsBllC,GAC3C,QAAIA,GACKA,EAAK/O,SAEP,EAGT3uC,KAAK07D,QAAQ7+D,GAAKA,EAAEgmF,MAAO/tC,EAAmBguC,MAAOtU,GAClDzT,KAAKl+D,GAAyB,GAApBA,EAAEy4C,gBACZulB,KAAKgoB,GAAkB,MAATA,GAEjB7iF,KAAK07D,QACH7+D,GAAKA,EAAEsgC,UACP2X,EAAmB65B,UACnBH,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAK19B,KAAckL,OAAoBlL,GAAW,IAErDn9B,KAAK07D,QACH7+D,GAAKA,EAAEwgC,SACPyX,EAAmB+5B,SACnBL,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAKx9B,KAAagL,OAAoBhL,GAAU,IAEnDr9B,KAAK07D,QACH7+D,GAAKA,EAAE66C,UACP5C,EAAmBiuC,UACnBvU,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAKnjB,GAA0B,MAAbA,GAErB13C,KAAK07D,QACH7+D,GAAKA,EAAEs6C,YACPrC,EAAmBkuC,YACnBxU,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAK1jB,GAA8B,MAAfA,GAEvBn3C,KAAK07D,QACH7+D,GAAKA,EAAE86C,gBACP7C,EAAmBmuC,gBACnBzU,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAKljB,GAAsC,MAAnBA,GAE3B33C,KAAK07D,QACH7+D,GAAKA,EAAEqmF,iBACPpuC,EAAmBquC,oBACnB3U,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KACCuoB,KAAwB/6C,OAAoB+6C,GAAqB,IAGrEpjF,KAAK07D,QACH7+D,GAAKA,EAAEwmF,gBACPvuC,EAAmBwuC,gBACnB9U,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAKwoB,KAAoBh7C,OAAoBg7C,GAAiB,IAEjErjF,KAAK07D,QACH7+D,GAAKA,EAAE0mF,cACPzuC,EAAmB0uC,cACnBhV,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAK0oB,KAAkBl7C,OAAoBk7C,GAAe,IAE7DvjF,KAAK07D,QACH7+D,GAAKA,EAAE+6C,iBACP9C,EAAmB2uC,iBACnBjV,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAKjjB,GAAwC,MAApBA,GAE5B53C,KAAK07D,QACH7+D,GAAKA,EAAEg7C,mBACP/C,EAAmB4uC,mBACnBlV,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KAAKhjB,GAA4C,MAAtBA,GAE9B73C,KAAK07D,QACH7+D,GAAKA,EAAEi7C,cACPhD,EAAmB6uC,cACnBnV,GAECzT,KACCl+D,GACa,GAAXA,EAAEgmF,OACsB,MAAxBhmF,EAAEg7C,oBACsB,GAAxBh7C,EAAEg7C,oBAELgjB,KAAK/iB,KAAkBzP,OAAoByP,GAAe,IAE7D93C,KAAK07D,QACH7+D,GAAKA,EAAEm6C,kBACPlC,EAAmB8uC,kBACnBpV,GAECzT,KAAKl+D,GAAgB,GAAXA,EAAEgmF,OACZhoB,KACC7jB,GACuB,MAArBA,GAA6B4rC,EAAe5rC,IAGlDh3C,KAAK07D,QACH7+D,GAAKA,EAAE45C,gBACP3B,EAAmB+uC,gBACnBrV,GAECzT,KACCl+D,GACa,GAAXA,EAAEgmF,OACoB,MAAtBhmF,EAAE+6C,kBACoB,GAAtB/6C,EAAE+6C,kBAELijB,KAAKpkB,IACJxnB,QAAQoD,IAAI,qBAAsBryB,KAAKwzD,MAAM5b,kBAC7C3oB,QAAQoD,IAAI,kBAAmBokB,GACL,MAAnBA,GAA2BmsC,EAAensC,wFC9J7CvJ,EAEX,OAFWA,MAA8B,KACxCA,0BADUA,GAEX,GAEK,iBAAwCqhC,IAI5CzuE,YAAYo9B,GACV5uB,MAAM4uB,GAQNl9B,KAAK07D,QACHvR,GAAKA,EAAE7d,MACPY,EAA+B+hC,YARyB,CACxDR,kBAAkB,EAClB1U,YAAY,IASXgB,KACC5Q,KACG9hB,OAAoB8hB,EAAEhtB,WAAW,MACjCkL,OAAoB8hB,EAAE9sB,UAAU,MAChCgL,OAAoB8hB,EAAE7d,OAAO,IAEjCuuB,KAAKvuB,IACG4iC,OAAQ5iC,kGC5BhB,IAAMoB,EAAb,MAAM,gBAAqCoiC,IAGzChwE,YACEgmD,EACArsB,WAEAnrB,MAAMw3C,EAAarsB,EAAsB2J,qBAEzCpjC,KAAK4tC,4BACgC,QAAnCqc,EAAyB,QAAzBptD,IAAqB88B,YAAI7c,eAAEsvB,gBAAQvjB,eAAEqU,SAIvCzD,EAAqBE,KAAK2B,UAAU1oC,QAAQuvC,GAC1CniC,KAAK+3C,gBAAgB5V,IAIlByL,4BACL1Q,GAEA,IAAIjoC,EAAM+K,KAAK8jF,sBAAsB5mD,GACjCkT,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAI2zC,KAAyB7mD,GACzCl9B,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGF2H,gBAAgB5V,GACrB,MAAMltC,EAAM+K,KAAKgkF,kBAAkB7hD,GACnC,IAAIiO,EAAYpwC,KAAKk5D,aAAajkE,GAClC,OAAKm7C,IACHA,EAAY,IAAI6zC,IAAa9hD,EAASkT,oBACtCr1C,KAAKo5D,aAAankE,EAAKm7C,IAElBA,EAGD0zC,sBAAsB5mD,GAE5B,MADU,oBAAoBA,EAAQjqB,KAIhC+wE,kBAAkB7hD,GAExB,MADU,gBAAgBA,EAASlvB,KAI5BwyC,UACPn3C,MAAMm3C,WAnDQ/X,wBAAiB,0BADtBA,GAAb,EAAaA,gMCGN,IAAMw2C,GAAb,MAAM,QAMJpkF,YAAmByjC,GAAqChV,IAArCvuB,oBAAqCA,iBAL/CA,eAAY,GACZA,6BAA0B,GAEnCA,aAAUo3B,MACVp3B,gBAAamkC,MAGb7R,WAAQ,CAED2S,QACLjlC,KAAKujC,YAAYm6B,UACjB5qC,uBACE9yB,KAAKuuB,UACL,EACAvuB,KAAKmkF,yBAIFC,uBACLpkF,KAAKujC,YAAYm6B,UACjB19D,KAAKuuB,SAASwG,aAAaC,GAAGh1B,KAAKkQ,2DArB1Bg0E,GAAgBrrF,kDAAhBqrF,EAAgB91D,iMCF+C0L,0BAAAA,IACXA,8FAAAA,IAgBcA,qBAAAA,IACDA,oEAAAA,IAOIA,uBAAAA,IACCA,yEAAAA,IAODA,uBAAAA,IACSA,yDAAAA,IAOhBA,iBAAAA,IACOA,mFAAAA,GAWbA,kBAAAA,IAMZA,mBAAAA,wkBArEzDjhC,4BAAuC,iBAAvCA,CAAuC,cACQA,gCAASyQ,4BAClDzQ,qBACFA,UACFA,sBAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAAZA,CAAY,UAMFA,YAAwFA,QACxFA,8BAGWA,cAIjBA,kBAAiB,YAAjBA,CAAiB,YAAjBA,CAAiB,YAAjBA,CAAiB,YAAjBA,CAAiB,WAAjBA,CAAiB,SAOHA,uBACAA,gBAAK,cACHA,aAA8EA,QAC9EA,iCACQA,YAGZA,eACEA,uBACAA,gBAAK,cACHA,aAAmFA,QACnFA,iCACeA,YAGnBA,eACEA,uBACAA,gBAAK,cACHA,aAAmFA,QACnFA,iCACWA,YAGfA,eACEA,uBACAA,gBAAK,cACHA,aAAsEA,QACtEA,iCAC2BA,cAIjCA,mBACFA,QACAA,mBAAqB,WAEhBA,gCAASyQ,aAAZzQ,aAIAA,QACAA,iBAEGA,gCAASyQ,4BACVzQ,8BAAwDA,wBAUxEA,yBAIFA,gBAjFeA,kCAuBiCA,sCAQAA,qCAQAA,qCAQAA,u1+CDrCnCqrF,GAAb,6EEmBgBrrF,mBACsB,SACfA,aAACA,QAAMA,yBAA8CA,gCAA9CA,yFACdA,mBAEEA,gBAAGA,mCAVTA,gBAAoE,UAClEA,YAAmHA,QACnHA,gBAA4B,yBAClBA,QAERA,0BAGAA,yBAEYA,iCALLA,6CAGAA,0EASPA,mBACsB,SACfA,aAACA,QAAMA,yBAA8CA,gCAA9CA,0FACdA,mBAEEA,gBAAGA,oCAVTA,gBAA0E,UACxEA,YACUA,QACVA,gBAA4B,yBAA2EA,QAErGA,0BAGAA,0BAEYA,iCALLA,6CAGAA,0EASPA,mBAAiD,SAC1CA,aAACA,QAAMA,yBAA8CA,gCAA9CA,0FAEdA,mBACEA,gBAAGA,oCATTA,gBAAsE,UACpEA,YACUA,QACVA,gBAA4B,yBAClBA,QACRA,0BAGAA,0BAGFA,iCANyBA,6CAGAA,sEAwFnCA,iBAAkD,WAAlDA,CAAkD,UAAlDA,CAAkD,WAGnBA,aAACA,UAE5BA,iBAAqB,WAArBA,CAAqB,QAEjBA,YAA8CA,cAIpDA,+BACFA,eADoBA,qCC5IjB,IAAMikD,EAAb,MAAM,QAQJh9C,YACU25B,GACAmG,GACArR,GACA2V,IAHAlkC,6BACAA,qBACAA,iBACAA,qBAXVA,UAAO01B,KACP11B,cAAW6hD,MACX7hD,sBAAmBojC,KACZpjC,sBAAkB,EAElBA,uBAA4B,KAQjC4/B,GAAaO,iBAAiBkkD,UAAUptE,IAAMjX,KAAKigC,gBAAkBhpB,IAGnE0iB,WACF,OAAO35B,KAAKy5B,qBAAqBE,KAG/BiD,YACF,OAAO58B,KAAKy5B,qBAAqBmD,MAGnCtK,WACErD,QAAQoD,IAAI,QAEPiyD,sBAAsB9zC,IAC3BxwC,KAAKo/D,kBAAoB5uB,GAGdkwB,gEACX,GAAI1gE,KAAKigC,gBAEP,YADAjgC,KAAKuuB,SAASwG,aAAaC,GAAGoO,aAIhC,MAAMxQ,GAAY5yB,KAAKuuB,SAASwG,aAAauT,KAC3ClF,YACA,GACA,CAAEoF,UAAU,IAGR+7C,GAAWvkF,KAAKkkC,aAAaK,KAAK2/C,GAAkB,CACxD3jF,KAAM,KACN6jC,iBAAkB,iDAGpBmgD,GAASnrC,kBAAkB+qC,wBAA0BvxD,GACrD2xD,GAASnrC,kBAAkBlpC,UAAYkzB,8DAlD9B0Z,GAAejkD,0EAAfikD,EAAe1uB,0HDdG0L,QAAAA,IAsBgBA,iBAAAA,IAoDKA,WAAAA,IAgBNA,QAAAA,IAeEA,SAAAA,IAeFA,QAAAA,IAeQA,YAAAA,IA/G0CA,mCAAAA,IACMA,iBAAAA,IAWAA,yCAAAA,GAEAA,iBAAAA,IAUJA,qCAAAA,IAEIA,iBAAAA,IAoGpDA,UAAAA,wlBAzJlDjhC,eAAoB,cAApBA,CAAoB,QAGhBA,WAAiCA,QAejCA,iBAAqB,UAArBA,CAAqB,UAArBA,CAAqB,WAGUA,aAACA,UAE5BA,iBAAqB,WAArBA,CAAqB,SAEjBA,YAAkDA,QAClDA,yBAYAA,0BAYAA,0BAcFA,cAMNA,kBAAqB,YAArBA,CAAqB,WAArBA,CAAqB,YAGUA,cAACA,UAE5BA,kBAAqB,YAArBA,CAAqB,SAEjBA,aAAiDA,cAIvDA,gCAAkBA,gDAAuByQ,+BACzCzQ,UAIFA,kBAAqB,YAArBA,CAAqB,WAArBA,CAAqB,YAGUA,cAACA,UAE5BA,kBAAqB,YAArBA,CAAqB,SAEjBA,aAAwCA,cAI9CA,8BACFA,QAGAA,kBAAqB,YAArBA,CAAqB,WAArBA,CAAqB,YAGUA,cAACA,UAE5BA,kBAAqB,YAArBA,CAAqB,SAEjBA,aAA2CA,cAIjDA,+BACFA,QAGAA,kBAAqB,YAArBA,CAAqB,WAArBA,CAAqB,YAGUA,cAACA,UAE5BA,kBAAqB,YAArBA,CAAqB,SAEjBA,aAAwCA,cAI9CA,8BACFA,QAGAA,kBAAqB,YAArBA,CAAqB,WAArBA,CAAqB,YAGUA,cAACA,UAE5BA,kBAAqB,YAArBA,CAAqB,SAEjBA,aAAoDA,cAI1DA,kCACFA,QAGAA,0BAaFA,UAKFA,gBAAK,uBACYA,qCAAcyQ,uBAC7BzQ,kBAtKGA,+BA0BcA,iFAYAA,sFAYAA,kFA+B2DA,uCAA0B,qBAgBlFA,0DAAuC,sBAAvCA,CAAuC,qBAetCA,0DAAuC,sBAAvCA,CAAuC,qBAexCA,0DAAuC,sBAAvCA,CAAuC,qBAenCA,0DAAuC,sBAAvCA,CAAuC,qBAIvDA,226DCnIIw8B,OAEDynB,GAAb,EAAaA,sGCfP,QAANh9C,cACEE,qBAA0B,EAC1BA,gBAAkBpL,EAQlBoL,uBAA8B,IAAI02C,SAAS9hD,OAAWA,OAAWA,GACjEoL,qBAA4B,IAAI02C,SAAS9hD,OAAWA,OAAWA,GAC/DoL,2BAA6BpL,EAE7BoL,6BAA+BpL,GAsC3B,SACO4vF,yBAET,OAAOxkF,KAAKykF,aAAazvF,IAAI5C,GAAWa,iBAAMb,KAGxBsiD,gBAA8B,CACpD,CACEzhC,GAAI,EACJwkC,KAAM3d,aAA0DA,EAElE,CACE7mB,GAAI,EACJwkC,KAAM3d,cAA4DA,GAelE,QACO4qD,0BAET,OAAO1kF,KAAK2kF,cAAc3vF,IAAI5C,GAAWa,iBAAMb,KAGzBuiD,gBAA+B,CACrD,CACE1hC,GAAI,EACJwkC,KAAM3d,yFAAuIA,EAE/I,CACE7mB,GAAI,EACJwkC,KAAM3d,sEAA+HA,EAEvI,CACE7mB,GAAI,EACJwkC,KAAM3d,uCAA8FA,EAEtG,CACE7mB,GAAI,EACJwkC,KAAM3d,6BAA6EA,EAErF,CACE7mB,GAAI,EACJwkC,KAAM3d,mCAAqFA,EAE7F,CACE7mB,GAAI,EACJwkC,KAAM3d,yFAA8IA,EAEtJ,CACE7mB,GAAI,EACJwkC,KAAM3d,gEAA6HA,EAErI,CACE7mB,GAAI,EACJwkC,KAAM3d,iCAAkFA,EAE1F,CACE7mB,GAAI,EACJwkC,KAAM3d,yDAAqGA,EAE7G,CACE7mB,GAAI,GACJwkC,KAAM3d,4CAAsGA,EAE9G,CACE7mB,GAAI,GACJwkC,KAAM3d,2DAAkHA,EAE1H,CACE7mB,GAAI,GACJwkC,KAAM3d,oEAAwHA,EAEhI,CACE7mB,GAAI,GACJwkC,KAAM3d,OAA+CA,EAEvD,CACE7mB,GAAI,GACJwkC,KAAM3d,iBAAiEA,GAKtE,IAAK+a,EAeX,MAfD,OAAYA,QAAgB,KAC1BA,+BACAA,uDACAA,mDACAA,qCACAA,yCACAA,+CACAA,+DACAA,uCACAA,qDACAA,0DACAA,oDACAA,8CACAA,sBACAA,sCAdUA,EAAZ,IAAYA,GAeX,GAEK,QACO+vC,8BAET,OAAO5kF,KAAK6kF,kBAAkB7vF,IAAI5C,GAAWa,iBAAMb,KAG7BwiD,oBAAwC,CAC9D,CACE3hC,GAAI,EACJwkC,KAAM3d,MAA6CA,EAErD,CACE7mB,GAAI,EACJwkC,KAAM3d,eAA8DA,EAEtE,CACE7mB,GAAI,EACJwkC,KAAM3d,iBAAyDA,EASpE,0ECvLM,IAAM4gB,EAAb,MAAM,SACJ56C,eAEAwyB,WAAQ,gDAHGooB,iCAAetsB,uOCR5Bv1B,4BACAA,eAAoB,cAApBA,CAAoB,UAApBA,CAAoB,UAApBA,CAAoB,WAMVA,qBACFA,QAEAA,iBAA0B,eAEtBA,qBAAgD,YAElDA,kBAOVA,iCApBKA,wCAMcA,yCAKEA,mg4DDNPw8B,OAEDqlB,IAAb,EAAaA,0EE8Bb,QAAqBttB,qBAGjB,OAAIptB,KAAK8kF,YAKT9kF,KAAK8kF,UAAY7xF,OAAOqe,OAAO,GAAIyzE,YALR/kF,KAAK8kF,SAMpBA,EAMWE,EAAgBC,cAGpC,IAAMt2D,EAAb,MAAM,QACJ7uB,cACE,IAAIoxB,EAAW8zD,EAAgBC,cAC/BhyF,OAAOqe,OAAOtR,KAAMkxB,GActBm4B,aACE,OAAOrpD,mDAlBE2uB,gCAAe71B,QAAf61B,EAAe,qBADF,SACbA,GAAb,EAAaA,0EClDN,IAAMwB,EAAb,MAAM,SAIJrwB,YAAoByuB,mBAHZvuB,2BAAuB,EACvBA,6BAAyB,EAG/B,MAAM4uB,EAAoBL,EAASK,kBACnCA,EAAkBm4B,UAAU,GAAI1lD,GAAcrB,KAAK+mD,UAAU1lD,IAC7DutB,EAAkBkF,QAAQ,GAAI,CAACzyB,EAAY0iC,IACzC/jC,KAAK8zB,QAAQzyB,EAAY0iC,IAIrBgjB,UAAU1lD,GACZrB,KAAKklF,uBACPllF,KAAKklF,wBAAyB,GAI3BllF,KAAKmlF,uBAEVzzF,SAASgF,gBAAgB0uF,UAAY,EACrC1zF,SAAS0F,KAAKguF,UAAY,GAGpBtxD,QAAQzyB,EAAwB0iC,YACxB,QAAVwd,IAAMzsD,YAAIgoB,eAAE4W,iBAAehiC,SAAS80E,MAAkB,QAAVxc,IAAMl1D,YAAI+zB,eAAE6K,eAG9D0kD,qBACEp4E,KAAKmlF,sBAAuB,EAG9B7M,oBACEt4E,KAAKmlF,sBAAuB,EAI9BE,qBACErlF,KAAKklF,wBAAyB,iDAtCrB/0D,IAAiBt3B,yCAAjBs3B,GAAiBr3B,QAAjBq3B,GAAiB,qBAFhB,SAEDA,IAAb,EAAaA,mHCYN,IAAMC,EAAb,MAAM,QACJtwB,YACUoxB,EACAC,EACAlB,GAFAjwB,gBACAA,kBACAA,6BAIFA,mBAAgC,GAEhCA,0BAA8C,GAC9CA,2BAAgD,GAKvCA,6BAAkC,IAAU,CAGvD4pD,oBACJ07B,EACAC,GAAiB,uDAGjB,IAAIC,EAAyBF,EAAaxoF,cACtC2oF,EAAWzlF,KAAK0lF,sBAAsBt/E,KACxCu/E,GAAKA,EAAEL,aAAaM,qBAAuBJ,GAM7C,GAAIC,IAAaF,IAGXM,IAFUxxD,MACsBC,UAAYmxD,EAASx5E,KAAKqoB,UAC9Bt0B,KAAK8lF,wBAAyB,OAGhE,IAAIv2D,GAAM,GACRvvB,KAAKkxB,SAASG,wCACQi0D,KACmB,QAAzCn+B,OAAKl3B,sBAAsB2Q,sBAAc9jB,QAAIuoB,iBAErB/T,OACxBtxB,KAAKmxB,WAAW97B,IAAoBk6B,MAGxB38B,QAAQ2uD,GAAKvhD,KAAK+lF,gBAAgBxkC,IAEhD,IAAIykC,GAAgBhmF,KAAK0lF,sBAAsB79B,UAC7C89B,GAAKA,EAAEL,aAAaM,qBAAuBJ,IAExB,GAAjBQ,IACFhmF,KAAK0lF,sBAAsBprF,OAAO0rF,GAAe,GAEnDhmF,KAAK0lF,sBAAsBhyF,KAAK,CAC9B4xF,aAAcA,EACdr5E,KAAM,IAAIooB,SAMN0xD,gBAAgBE,GAGtBjmF,KAAKkmF,mBAAmBD,GACxBjmF,KAAKmmF,cAAczyF,KAAKuyF,GAExB,IAAIG,EAAsBH,EAAaI,UAAUvpF,cAC7CkpF,EAAgBhmF,KAAKsmF,qBAAqBz+B,UAC5C89B,GAAKA,EAAEU,UAAUT,qBAAuBQ,IAErB,GAAjBJ,GACFhmF,KAAKsmF,qBAAqBhsF,OAAO0rF,EAAe,GAElDhmF,KAAKsmF,qBAAqB5yF,KAAK,CAC7B2yF,UAAWJ,EAAaI,UACxBp6E,KAAM,IAAIooB,OAId6xD,mBAAmBK,GACjB,IAAIF,EAEFA,EADkB,iBAATE,EACGA,EAEAA,EAAMF,UAGpB,IAAID,EAAsBC,EAAUvpF,cAChC0pF,EAAaxmF,KAAKmmF,cAAct+B,UAClCtG,IAAKA,GAAE8kC,UAAUvpF,eAAiBspF,IAElB,GAAdI,GACFxmF,KAAKmmF,cAAc7rF,OAAOksF,EAAY,GAGxC,IAAIR,EAAgBhmF,KAAKsmF,qBAAqBz+B,UAC5C89B,IAAKA,GAAEU,UAAUvpF,eAAiBspF,IAEf,GAAjBJ,GACFhmF,KAAKsmF,qBAAqBhsF,OAAO0rF,EAAe,GAIpDn8B,gBAAgBw8B,GACd,IAAID,EAAsBC,EAAUvpF,cAOpC,OANYkD,KAAKmmF,cAAc//E,KAC7Bm7C,GAAKA,EAAE8kC,UAAUvpF,eAAiBspF,iDA7G3Bh2D,GAAYv3B,gEAAZu3B,EAAYt3B,QAAZs3B,EAAY,qBAFX,SAEDA,GAAb,EAAaA,gECbN,IAAMq2D,EAAb,MAAM,QAKJ3mF,YAAoBurB,aAJKrrB,aAAkB,iBAM3CsyB,WACEtyB,KAAK0mF,MAAQ,IAAI9qF,OAAOoE,KAAK2mF,SAI/BC,WAAW7yF,GACJiM,KAAK0mF,MAAMG,KAAK9yF,EAAMkB,MACzBlB,EAAM8pE,iBAKVipB,QAAQ/yF,SAGD,KAFoC,QAAnBotD,IAAM4lC,qBAAajqE,eAAEkqE,QAAQ,UAAW,IAEtCxhC,MAAMyhC,GAAQjnF,KAAK0mF,MAAMG,KAAKI,KACpDlzF,EAAM8pE,+DAvBC4oB,GAAqB5tF,uCAArB4tF,EAAqBr4D,yGAArB9kB,kBAAkB,2BAAlBA,mEAAb,EAAam9E,gECEN,IAAMS,EAAb,MAAM,QACJpnF,eAEAwyB,WAAQ,+CAHG40D,8BAAoB94D,qHCPjCv1B,iBAAoB,WAEhBA,gBAAa,SAAbA,CAAa,SAAbA,CAAa,UAIfA,s9MDCWquF,GAAb,EAAaA,+JEJTruF,gBAAwCA,SAAWA,+BAAXA,4BCErC,IAAMsuF,EAAb,MAAM,QAGJrnF,+DAHWqnF,8BAAyB/4D,6MDLtCv1B,0BACEA,0BACAA,sBACEA,sBACAA,8BACFA,QACAA,0BAEFA,gBAPgBA,+BAEaA,6FCEhBsuF,GAAb,iBCAO,IAAMC,EAAb,MAAM,QACJtnF,YAAoBokC,yBAEpBmjD,YAAY14B,IACV,IAAI24B,GAAetnF,KAAKkkC,aAAaK,KAAK4iD,EAA2B,CACnEI,SAAU,SACVC,UAAU,IAEZF,UAAaluC,kBAAkBuV,QAAUA,GAClC24B,mDATEF,GAAuBvuF,wCAAvBuuF,EAAuBtuF,QAAvBsuF,EAAuB,YAAvBA,GAAb,GCSap1D,EAAb,MAAM,QACJlyB,+DADWkyB,6DAHA,CAACo1D,GAAwB15D,SAD3B,CAAC8C,KAAWnB,KAAco4D,QAIxBz1D,GAAb,EAAaA,gECXN,IAAM5C,EAAb,MAAM,QADNtvB,cAEEE,YAAgB,GAEhB0nF,KAAKx5D,EAAsC3sB,EAAe,IACxDvB,KAAK2nF,OAAOj0F,KAAIT,eAAGi7B,aAAc3sB,IAGnCkiB,OAAOwK,GACLjuB,KAAK2nF,OAAS3nF,KAAK2nF,OAAOv/E,OAAOu9E,GAAKA,IAAM13D,GAG9C25D,UAAUj5B,EAAkBptD,IAC1BA,EAAUA,GAAW,IACbsmF,UAAYtmF,EAAQsmF,WAAa,WACzCtmF,EAAQumF,OAASvmF,EAAQumF,QAAU,QAEnC,IAAIC,EAAyBjuD,+BAA+EA,CAI5G95B,KAAK0nF,KAFL/4B,EAAUA,GAAWo5B,EAEFxmF,GAGrBymF,YAAYr5B,EAAkBptD,IAC5BA,EAAUA,GAAW,IACbsmF,UAAYtmF,EAAQsmF,WAAa,aACzCtmF,EAAQumF,OAASvmF,EAAQumF,QAAU,WAInC9nF,KAAK0nF,KAFL/4B,EAAUA,GAAW,GAEFptD,iDA9BV6tB,gCAAYt2B,QAAZs2B,EAAY,qBADC,SACbA,GAAb,EAAaA,6ECGN,IAAM64D,EAAb,MAAM,wDAAOA,iCAAkB75D,8HCN/Bv1B,iBACEA,SACFA,4BDIaovF,IAAb,EAAaA,8EEAN,IAAMC,EAAb,MAAM,wDAAOA,iCAAoB95D,kICNjCv1B,iBACEA,SACFA,4BDIaqvF,IAAb,EAAaA,iJEHXrvF,oBAIQA,yCAASsvF,EAATt6D,MAASs6D,wBACftvF,kBACEA,qBACFA,kCADWA,gDCDR,IAAMuvF,EAAb,MAAM,QAKJtoF,YAAmByjC,sBAJnBvjC,aAAUo3B,oDADCgxD,GAAoBvvF,sCAApBuvF,EAAoBh6D,wUDRjCv1B,iBACEA,SAEAA,0BASFA,eANWA,+ECEEuvF,GAAb,EAAaA,sHCGN,IAAMC,EAAb,MAAM,QAUJvoF,YAAmByjC,oEAVR8kD,GAAsBxvF,wCAAtBwvF,EAAsBj6D,gFACnBg6D,IAAoB,YAGpBH,IAAkB,YAGlBC,IAAoB,6NClBpCrvF,0BDWawvF,GAAb,EAAaA,+FEcN,IAAMZ,EAAb,MAAM,sDAAOA,+DARA,GAAE/5D,SADJ,CAAC2B,KAAcgB,KAAmBG,SAShCi3D,GAAb,EAAaA,gCCxBP,WAAoBh+D,EAAqB6+D,EAAyB,YACtE,OAAO7+D,EACJO,KAAgCu+D,GAAqB,CAACA,OAAe3zF,IACrEk8B,MAAgC03D,GAAiB,MAAC5zF,EAAW4zF,GAAiBF,IA+B7E,WAA2Br6B,GAI/B,MAAMw6B,EAHa,IAAIh/C,MAAM,8BAK7Bg/C,SAAiBC,MAAQz6B,EACzBw6B,EAAiB1nF,KAAO,aACjB0nF,EAOH,WAAqBr8B,EAAY2E,GAErC,MAAM43B,EAAoB53B,EAE1B,OAAqB,MAAjB43B,OAAiB,EAAjBtqC,EAAmB8S,SAEdv0C,QAAQuxC,OAAOy6B,EAAiBD,EAAkB16B,SAEpD,IAAIrxC,QAAc,CAACC,GAASsxC,MACjC,MAAM06B,GAAgB,KACpBC,aAAaC,GACb56B,GAAOy6B,EAAkC,MAAjBD,OAAiB,EAAjBtqC,EAAmB4P,UAElC,MAAX8C,KAAavqC,iBAAiB,QAASqiE,GAAe,CAAEG,MAAM,IAE9D,MAAMD,EAAY9hC,WAAW,KAChB,MAAX8J,KAAak4B,oBAAoB,QAASJ,KAC3B,MAAX93B,OAAW,EAAXqG,EAAajG,SACfhD,GAAOy6B,EAAkC,MAAjBD,OAAiB,EAAjBtqC,EAAmB4P,SAG7CpxC,MACCuvC,gCAqGE88B,kDC7KH,QAKJppF,YAAY69C,EAAaC,GAAeC,GACtC79C,KAAK29C,IAAMA,EACX39C,KAAK49C,MAAQA,GACb59C,KAAK69C,KAAOA,EAGPsrC,gBACL,GAAKnpF,KAAK29C,KAAQ39C,KAAK49C,OAAU59C,KAAK69C,KAGtC,OAAO,IAAIxpB,KAAKr0B,KAAK69C,KAAM79C,KAAK49C,MAAQ,EAAG59C,KAAK29C,KAG3ChP,UACL,MAAM+O,EAAO19C,KAAKmpF,gBAClB,QAAKzrC,GAIHA,EAAK/G,YAAc32C,KAAK29C,KACxBD,EAAK9G,WAAa,IAAM52C,KAAK49C,OAC7BF,EAAK7G,gBAAkB72C,KAAK69C,IALrB,8DCjBP,QAQJ/9C,cAPQE,0BAAmCpL,EAQzCoL,KAAKopF,qBANHxoD,qBACF,OAA4B,MAAxB5gC,KAAKqpF,iBAAyBrpF,KAAKopF,qBAChCppF,KAAKqpF,gBAOND,qBAIJppF,KAAKqpF,gBADH95D,OAFeyD,SAASphC,WAAWkL,cAE/BA,cAAcmtC,SAASq/C,EAAsBC,GAAGzsF,eAC/BuoC,EAAekkD,GAKjBlkD,EAAemkD,GAIjCC,kBAAkB7oD,GACvB,MAAM8oD,EAASj4F,OAAOuhC,SAASphC,WACzB+3F,EACJ/oD,GAAkByE,EAAemkD,GAC7BE,EAAOxtF,QAAQotF,EAAsBC,GAAID,EAAsBE,IAC/DE,EAAOxtF,QAAQotF,EAAsBE,GAAIF,EAAsBC,IAEjEI,GAAUD,IAAQj4F,OAAOuhC,SAASsV,KAAOqhD,GAG3CzgD,8BAGF,OAF4B,MAAxBlpC,KAAKqpF,iBAAyBrpF,KAAKopF,qBAE/BppF,KAAKqpF,sBACNhkD,EAAemkD,GAClB,OAAOI,EAAwBC,aAE5BxkD,EAAekkD,GAClB,OAAOK,EAAwBE,sBAG/B,OAAOF,EAAwBC,SAIjC35D,eAGF,OAF4B,MAAxBlwB,KAAKqpF,iBAAyBrpF,KAAKopF,qBAE/BppF,KAAKqpF,sBACNhkD,EAAemkD,GAClB,MAAO,aAEJnkD,EAAekkD,GAClB,MAAO,gBAGP,MAAO,SAITvmB,+BAGF,OAF4B,MAAxBhjE,KAAKqpF,iBAAyBrpF,KAAKopF,qBAE/BppF,KAAKqpF,sBACNhkD,EAAemkD,GAClB,OAAOO,GAAyBF,aAE7BxkD,EAAekkD,GAClB,OAAOQ,GAAyBC,eAGhC,OAAOD,GAAyBF,SAIlCI,+BAGF,OAF4B,MAAxBjqF,KAAKqpF,iBAAyBrpF,KAAKopF,qBAE/BppF,KAAKqpF,sBACNhkD,EAAemkD,GAClB,OAAOU,EAAyBL,aAE7BxkD,EAAekkD,GAClB,OAAOW,EAAyBF,eAGhC,OAAOE,EAAyBL,UAKjC,IAAKP,EAGX,MAHD,OAAYA,QAAqB,KAC/BA,UACAA,YAFUA,EAAZ,IAAYA,GAGX,GAEWM,EAGX,MAHD,OAAYA,QAAuB,KACjCA,aACAA,wBAFUA,EAAZ,IAAYA,GAGX,GAEWG,GAGX,MAHD,OAAYA,UAAwB,KAClCA,aACAA,cAFUA,GAAZ,IAAYA,GAGX,GAEWG,EAGX,MAHD,OAAYA,QAAwB,KAClCA,aACAA,cAFUA,EAAZ,IAAYA,GAGX,GAEW7kD,EAGX,MAHD,OAAYA,QAAc,KACxBA,aACAA,eAFUA,EAAZ,IAAYA,GAGX,EAHWA,gCCxHN,WAA8BppC,GAAgCkuF,GAA2B,GAE7F,aADkB,IAAPluF,IAAuBA,MAC9BkuF,GAAoBluF,GAAIoT,mCAI9B,MAAM+6E,EACJ,qMACI,WAAkBnuF,IACtB,OAAIosC,EAAoBpsC,IAAK,IAGtByqF,IADS9qF,OAAOwuF,GACVvD,KAAK5qF,iZCLpB,IAAIouF,EAAgD,SAAUv7D,EAAIh4B,EAAMwzF,GACpE,GAAIA,GAA6B,IAArBC,UAAUx4F,OAAc,QAAiCy4F,GAAxB1vF,EAAI,EAAGkoC,GAAIlsC,EAAK/E,OAAY+I,EAAIkoC,GAAGloC,KACxE0vF,MAAQ1vF,KAAKhE,MACR0zF,KAAIA,GAAK3zF,MAAM4zF,UAAUr+E,MAAMva,KAAKiF,EAAM,EAAGgE,IAClD0vF,GAAG1vF,GAAKhE,EAAKgE,IAGrB,OAAOg0B,EAAGjK,OAAO2lE,IAAM3zF,MAAM4zF,UAAUr+E,MAAMva,KAAKiF,KA2C/C,WAAesZ,GAClB,OAAO,aACH,GAAIm6E,UAAUx4F,QAAUqe,EAAGre,OACvB,OAAOqe,EAAGs6E,MAAM1qF,KAAMuqF,WAE1B,IAAIp2E,EAAOtd,MAAM4zF,UAAUr+E,MAAMva,KAAK04F,WACtC,OAAOI,EAAQ/+B,KAAK8+B,MAAMC,EAASN,EAAc,CAACrqF,MAAOmU,GAAM,KAShE,aACH,IAAIA,EAAOo2E,UACPllE,EAAQlR,EAAKpiB,OAAS,EAC1B,OAAO,WAEH,QADI+I,EAAIuqB,EAAO9tB,EAAS4c,EAAKkR,GAAOqlE,MAAM1qF,KAAMuqF,WACzCzvF,KACHvD,EAAS4c,EAAKrZ,GAAGjJ,KAAKmO,KAAMzI,GAChC,OAAOA,GASR,cAEH,QADIqzF,EAAQ,GACHC,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpCD,EAAMC,GAAMN,UAAUM,GAE1B,OAAOC,EAAQJ,MAAM,KAAM,GAAGt+E,MAAMva,KAAK04F,WAAWQ,WAQjD,IAAI53F,EAAO,SAAU4N,GAAQ,OAAO,SAAUvG,GAAO,OAAOA,GAAOA,EAAIuG,KAQnEiqF,EAASC,EAAM,SAAUlqF,EAAMmqF,EAAM1wF,GAAO,OAAOA,GAAOA,EAAIuG,KAAUmqF,IASxEC,EAAQ,SAAUpqF,GAAQ,OAAOq/B,GAAKsqD,MAAM,KAAM3pF,EAAK1C,MAAM,KAAKrJ,IAAI7B,KAKtEi4F,EAAM,SAAUh7E,GACvB,OAAO,WAEH,QADI+D,EAAO,GACF02E,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpC12E,EAAK02E,GAAMN,UAAUM,GAEzB,OAAQz6E,EAAGs6E,MAAM,KAAMv2E,KAoBxB,WAAYk3E,EAAKC,GACpB,OAAO,WAEH,QADIn3E,EAAO,GACF02E,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpC12E,EAAK02E,GAAMN,UAAUM,GAEzB,OAAOQ,EAAIX,MAAM,KAAMv2E,IAASm3E,EAAIZ,MAAM,KAAMv2E,IASjD,IAAIkiD,EAAM,SAAUg1B,GAAO,OAAO,SAAU7uF,GAAO,OAAOA,EAAIoiE,OAAO,SAAU1nD,EAAGmgC,GAAK,OAAOngC,KAAOm0E,EAAIh0C,KAAO,KAE5Gk0C,EAAM,SAAUF,GAAO,OAAO,SAAU7uF,GAAO,OAAOA,EAAIoiE,OAAO,SAAU1nD,EAAGmgC,GAAK,OAAOngC,KAAOm0E,EAAIh0C,KAAO,KAE5Gm0C,EAAK,SAAUC,GACtB,OAAO,SAAUjxF,GACb,OAAe,MAAPA,GAAeA,EAAIsF,cAAgB2rF,GAASjxF,aAAeixF,IAMhEj+E,GAAM,SAAUnK,GACvB,OAAO,WACH,OAAOA,IA8CR,YAAiBqoF,GACpB,OAAO,SAAUr0C,GACb,QAASv8C,EAAI,EAAGA,EAAI4wF,EAAO35F,OAAQ+I,IAC/B,GAAI4wF,EAAO5wF,GAAG,GAAGu8C,GACb,OAAOq0C,EAAO5wF,GAAG,GAAGu8C,IC3NpC,IAAIs0C,EAAQ14F,OAAOw3F,UAAU74F,SACzBg6F,GAAM,SAAUjG,GAAK,OAAO,SAAUtuC,GAAK,cAAcA,IAAMsuC,IACxDkG,GAAcD,GAAI,aAClBE,EAAYV,EAAIS,IAChBE,EAAS,SAAUtpC,GAAK,OAAa,OAANA,CAAM,EACrCupC,GAAoBC,EAAGF,EAAQF,IAC/BK,GAAaN,GAAI,YACjBO,GAAWP,GAAI,UACfQ,GAAWR,GAAI,UACfhqF,GAAW,SAAUy1C,GAAK,OAAa,OAANA,GAA2B,iBAANA,CAAM,EAC5D57C,GAAU5E,MAAM4E,QAChB4wF,EAAU,SAAUh1C,GAAK,MAAyB,kBAAlBs0C,EAAM95F,KAAKwlD,EAAO,EAClDi1C,EAAY,SAAUj1C,GAAK,MAAyB,oBAAlBs0C,EAAM95F,KAAKwlD,EAAO,EAOxD,WAAsB7pC,GACzB,GAAI/R,GAAQ+R,IAAQA,EAAIzb,OAAQ,CAC5B,IAAIw6F,EAAO/+E,EAAIpB,MAAM,GAAG,GAAKogF,EAAOh/E,EAAIpB,OAAM,GAC9C,QAASmgF,EAAKnkF,OAAOgjF,EAAIgB,KAAWr6F,QAAUy6F,EAAKpkF,OAAOgjF,EAAIc,KAAan6F,QAE/E,OAAOm6F,GAAW1+E,GAOf,IAAIi/E,GDgGJ,WAAapB,EAAKC,GACrB,OAAO,WAEH,QADIn3E,EAAO,GACF02E,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpC12E,EAAK02E,GAAMN,UAAUM,GAEzB,OAAOQ,EAAIX,MAAM,KAAMv2E,IAASm3E,EAAIZ,MAAM,KAAMv2E,ICtGjCu4E,CAAI9qF,GAAUw+B,GAAKjtC,EAAK,QAAS+4F,KCrC7CS,GAAW,SAAUC,EAASjmE,GACrC,OAAOA,EAAQi4C,OAAO,SAAUiuB,EAAK53F,GAAO,OAAS43F,EAAI53F,GAJhD,SAAU63F,GAAU,OAAO,WACpC,MAAM,IAAIrjD,MAAM,yBAAyB5kB,OAAOioE,EAAQ,kEAGQC,CAAO,GAAGloE,OAAO+nE,EAAS,KAAK/nE,OAAOmoE,OAAO/3F,GAAM,OAAS43F,GAAS,KAErII,GAAW,CACXC,QAAIt4F,EACJu4F,eAAWv4F,GCRXy1F,GAAgD,SAAUv7D,EAAIh4B,EAAMwzF,GACpE,GAAIA,GAA6B,IAArBC,UAAUx4F,OAAc,QAAiCy4F,GAAxB1vF,EAAI,EAAGkoC,GAAIlsC,EAAK/E,OAAY+I,EAAIkoC,GAAGloC,KACxE0vF,MAAQ1vF,KAAKhE,MACR0zF,KAAIA,GAAK3zF,MAAM4zF,UAAUr+E,MAAMva,KAAKiF,EAAM,EAAGgE,IAClD0vF,GAAG1vF,GAAKhE,EAAKgE,IAGrB,OAAOg0B,EAAGjK,OAAO2lE,IAAM3zF,MAAM4zF,UAAUr+E,MAAMva,KAAKiF,KAa3ConB,GAAwB,iBAAT21C,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAXu5B,QAAuBA,OAAOA,SAAWA,QAAUA,aAC3D,EACAC,GAAUnvE,GAAKmvE,SAAW,GACnBC,GAAWD,GAAQC,UAAY9lC,KAAK2jC,MAAMv/B,KAAKpE,MAC/C+lC,GAASF,GAAQE,QAAU/lC,KAAKC,UAAUmE,KAAKpE,MAC/C50D,GAAUy6F,GAAQz6F,SAqc7B,YAAkB4H,EAAKgzF,EAAIC,GACvB,GAAIhyF,GAAQjB,GACR,OAAOA,EAAI5H,QAAQ46F,EAAIC,GAC3Bx6F,OAAOC,KAAKsH,GAAK5H,QAAQ,SAAUqC,GAAO,OAAOu4F,EAAGhzF,EAAIvF,GAAMA,MAvcvDy4F,EAASz6F,OAAOqe,QAycpB,YAAiBq8E,GACpB,QAAS7yF,EAAI,EAAGA,EAAIyvF,UAAUx4F,OAAQ+I,IAAK,CACvC,IAAIN,EAAM+vF,UAAUzvF,GACpB,GAAKN,EAGL,QADItH,EAAOD,OAAOC,KAAKsH,GACdqmB,GAAI,EAAGA,GAAI3tB,EAAKnB,OAAQ8uB,KAC7B8sE,EAAMz6F,EAAK2tB,KAAMrmB,EAAItH,EAAK2tB,KAGlC,OAAO8sE,GAldAC,GAASP,GAAQO,QAod5B,YAAiBC,EAAIt6E,GACjB,GAAIs6E,IAAOt6E,EACP,OAAO,EACX,GAAW,OAAPs6E,GAAsB,OAAPt6E,EACf,OAAO,EACX,GAAIs6E,GAAOA,GAAMt6E,GAAOA,EACpB,OAAO,EACX,IAAIu6E,SAAYD,EAChB,GAAIC,WAD4Bv6E,GACR,WAAPu6E,EACb,OAAO,EACX,IAAIC,GAAM,CAACF,EAAIt6E,GACf,GAAI8iD,EAAI56D,GAAJ46D,CAAa03B,IACb,OAuBR,YAAmBhxD,EAAIC,GACnB,OAAID,EAAGhrC,SAAWirC,EAAGjrC,QAEdi8F,GAAYjxD,EAAIC,GAAI4hC,OAAO,SAAU1nD,EAAGyuE,GAAK,OAAOzuE,GAAK+2E,GAAQtI,EAAE,GAAIA,EAAE,MAAQ,GA1B7EuI,CAAUL,EAAIt6E,GACzB,GAAI8iD,EAAIg2B,EAAJh2B,CAAY03B,IACZ,OAAOF,EAAGv5D,YAAc/gB,EAAG+gB,UAC/B,GAAI+hC,EAAIi2B,EAAJj2B,CAAc03B,IACd,OAAOF,EAAGj8F,aAAe2hB,EAAG3hB,WAChC,GAAIykE,EAAI61B,GAAJ71B,CAAgB03B,IAChB,OAAO,EAEX,GADiB,CAAC7B,GAAYzwF,GAAS4wF,EAAQC,GAChCt3F,IAAIu2F,GAAK3sB,OAAO,SAAU1nD,GAAG9G,IAAM,OAAO8G,MAAO9G,GAAG29E,MAAS,GACxE,OAAO,EACX,IAAI76F,GAAO,GAEX,QAAS+B,MAAO44F,EAAI,CAChB,IAAKI,GAAQJ,EAAG54F,IAAMse,EAAGte,KACrB,OAAO,EACX/B,GAAK+B,KAAO,EAEhB,QAASA,MAAOse,EACZ,IAAKrgB,GAAK+B,IACN,OAAO,EAEf,OAAO,GApfJ,YAAkBoiD,GACrB,OAAOA,EAEJ,cAAgB,CAyDhB,YAA8BtS,EAAQp5B,EAAQigD,EAAMuiC,EAASC,SAC/C,IAAbA,KAAuBA,IAAW,GACtC,IAAIC,GAAe,SAAUC,IAAU,OAAOvpD,IAASupD,IAAQ1iC,KAAKA,MAOpEuiC,SAAUA,GAAWl7F,OAAOC,KAAK6xC,MAClB65B,OAAO,SAAUiuB,GAAK9rF,IACjC8rF,UAAI9rF,IAAQqtF,GARO,SAAUE,IAC7B,OAAO,WACH3iF,SAAO2iF,IAAUD,GAAaC,IACvB3iF,EAAO2iF,IAAQ5D,MAAM,KAAMH,YAKfgE,CAAiBxtF,IAAQstF,GAAattF,IACtD8rF,IACRlhF,GAMA,IAAI88B,GAAU,SAAUryC,EAAQo4F,GAAS,OAAOd,EAAOz6F,OAAO8Z,OAAO3W,GAASo4F,IAE1EC,GAAUxD,EACd,YAAkByD,EAAOl0F,GAC5B,OAA8B,IAAvBk0F,EAAMj5F,QAAQ+E,EAAS,GAMvBm0F,GAAa1D,EACjB,YAAqByD,EAAOl0F,GAC/B,IAAIo0F,EAAMF,EAAMj5F,QAAQ+E,GACxB,OAAIo0F,GAAO,GACPF,EAAMp0F,OAAOs0F,EAAK,GACfF,IAGAG,GAAS5D,EACb,YAAiBzuF,EAAKgR,GACzB,OAAOhR,EAAI9I,KAAK8Z,GAAMA,IAcnB,YAAkBshF,GAErB,QADIC,EAAe,GACVlE,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpCkE,EAAalE,EAAK,GAAKN,UAAUM,GAErC,IAAImE,EAActB,EAAOhD,WAAM,EAAQL,GAAc,CAAC,IAAK0E,EAAahE,WAAW,IACnF,OAAO2C,EAAOsB,EAAaC,GAAKH,GAAQ,GAAI77F,OAAOC,KAAK87F,KAGrD,IAAIE,GAAS,SAAUC,EAAMp0F,GAAQ,OAAO2yF,EAAOyB,EAAMp0F,IA6BzD,YAAcP,EAAK40F,GACtB,IAAIC,EAAU,GACd,QAASC,KAAS90F,GACmB,IAA7B40F,EAAU35F,QAAQ65F,KAClBD,EAAQC,GAAS90F,EAAI80F,IAG7B,OAAOD,EAcJ,YAAc70F,EAAK40F,GACtB,OAAOn8F,OAAOC,KAAKsH,GACd4N,OAAOgjF,EAAIqD,GAAQW,KACnBxwB,OAAO,SAAUiuB,EAAK53F,GAAO,OAAS43F,EAAI53F,GAAOuF,EAAIvF,GAAO43F,GAAS,IASvE,YAAgB0C,EAAYv7F,GAC/B,IAAIwI,EAAMf,GAAQ8zF,GAAah4F,EAASiF,EAAM,GAAK,GAC/CihE,GAASjhE,EAAM,SAAU66C,IAAK,OAAO9/C,EAAO7D,KAAK2jD,KAAQ,SAAUA,GAAGpiD,IAAO,OAAQsC,EAAOtC,IAAOoiD,IACvGzkD,UAAQ28F,EAAY,SAAUx0F,GAAMD,IAC5B9G,EAAS+G,GAAMD,KACf2iE,GAAO1iE,GAAMD,MAEdvD,EAGJ,YAAcg4F,EAAYv7F,GAC7B,IAAIuD,EACJ3E,UAAQ28F,EAAY,SAAUx0F,EAAMD,IAC5BvD,GAEAvD,EAAS+G,EAAMD,MACfvD,EAASwD,KAEVxD,EAGJ,IAAIi4F,GAASx6F,GAEb,YAAau6F,EAAYv7F,EAAU2X,GACtCA,SAASA,IAAWlQ,GAAQ8zF,GAAc,GAAK,IAC/C38F,GAAQ28F,EAAY,SAAUx0F,EAAMD,IAAK,OAAQ6Q,EAAO7Q,IAAK9G,EAAS+G,EAAMD,MACrE6Q,EAYJ,IAAIzJ,GAAS,SAAU1H,GAAO,OAAOvH,OAAOC,KAAKsH,GAAKxF,IAAI,SAAUC,GAAO,OAAOuF,EAAIvF,MAclFw6F,GAAW,SAAUN,EAAMn4F,GAAQ,OAAOm4F,GAAQn4F,GAclD04F,GAAW,SAAUP,EAAMn4F,GAAQ,OAAOm4F,GAAQn4F,GAUlD24F,GAAU,SAAUR,EAAMn4F,GAAQ,OAAOm4F,EAAKtqE,OAAO7tB,IAWrD44F,GAAW,SAAUT,EAAMn4F,GAClC,OAAOyE,GAAQzE,GAAQm4F,EAAKtqE,OAAO7tB,EAAK4nE,OAAOgxB,GAAU,KAAOC,GAAMV,EAAMn4F,IAMzE,YAAewF,EAAKhC,GACvBgC,SAAI9I,KAAK8G,GACFgC,EAGJ,IAAIszF,GAAQ,SAAUjD,EAAKxmF,GAAS,OAAQooF,GAAQ5B,EAAKxmF,GAASwmF,EAAMgD,GAAMhD,EAAKxmF,IAW/E0pF,GAAS,SAAUvzF,GAAO,OAAOA,EAAIoiE,OAAO+wB,GAAS,KAyBrDK,GAkBJ,YAAkBC,EAAgBC,GACrC,YAAe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU11F,GACb,IAAIjD,EAAS04F,EAAez1F,GAC5B,IAAKjD,EACD,MAAM,IAAIkyC,MAAMyiD,GAAWgE,GAAUA,EAAO11F,GAAO01F,GAEvD,OAAO34F,IA2BR,cAEH,QADI4c,EAAO,GACF02E,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpC12E,EAAK02E,GAAMN,UAAUM,GAEzB,GAAoB,IAAhB12E,EAAKpiB,OACL,MAAO,GAwBX,QAvBIo+F,EAAch8E,EAAKyqD,OAAO,SAAUwxB,GAAK5zF,IAAO,OAAOsG,KAAKstF,IAAI5zF,GAAIzK,OAAQq+F,KAAS,kBACrF74F,EAAS,GACT84F,GAAU,SAAUv1F,IAGpB,OAAQqZ,EAAKpiB,aACJ,EACDwF,EAAO7D,KAAK,CAACygB,EAAK,GAAGrZ,MACrB,WACC,EACDvD,EAAO7D,KAAK,CAACygB,EAAK,GAAGrZ,IAAIqZ,EAAK,GAAGrZ,MACjC,WACC,EACDvD,EAAO7D,KAAK,CAACygB,EAAK,GAAGrZ,IAAIqZ,EAAK,GAAGrZ,IAAIqZ,EAAK,GAAGrZ,MAC7C,WACC,EACDvD,EAAO7D,KAAK,CAACygB,EAAK,GAAGrZ,IAAIqZ,EAAK,GAAGrZ,IAAIqZ,EAAK,GAAGrZ,IAAIqZ,EAAK,GAAGrZ,MACzD,cAEAvD,EAAO7D,KAAKygB,EAAKnf,IAAI,SAAU05F,IAAS,OAAOA,GAAM5zF,OACrD,EAGHA,GAAI,EAAGA,GAAIq1F,EAAar1F,KAC7Bu1F,GAAQv1F,IAEZ,OAAOvD,EAsBJ,YAAoB43F,EAAMmB,GAC7B,IAAIr7F,EAAKE,EAGT,GAFIsG,GAAQ60F,KACRr7F,EAAMq7F,EAAY,GAAIn7F,EAAQm7F,EAAY,KACzClE,GAASn3F,GACV,MAAM,IAAIw0C,MAAM,oCACpB0lD,SAAKl6F,GAAOE,EACLg6F,EAGJ,YAAc3yF,GACjB,OAAQA,EAAIzK,QAAUyK,EAAIA,EAAIzK,OAAS,SAAO6C,EAK3C,YAAc27F,EAAKC,GACtB,OAAIA,GACAv9F,OAAOC,KAAKs9F,GAAM59F,QAAQ,SAAUqC,GAAO,cAAcu7F,EAAKv7F,KAC7Du7F,IACDA,EAAO,IACJ9C,EAAO8C,EAAMD,GA6DjB,IAAIE,GAA2B,SAAUhnE,GAAW,OAAOA,EAAQqH,MAAM,SAAUz8B,GAAK,OAAO,KAASo1B,GACpGinE,GAAkB,SAAU1/D,GAAS,OAAOy/D,GAAyBxD,aAAmBj8D,KCze/F2/D,GAAsB,WACtB,WAAcl5C,GACVz3C,KAAKy3C,KAAOA,EACZz3C,KAAK4wF,KAAOn5C,EAAKp5C,MAAM,KACvB,IAAIwyF,EAAe7wF,KAAKy3C,KACnBp5C,MAAM,KACNrJ,IAAI,SAAU87F,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,IAEdtvC,KAAK,IACVxhD,KAAK+wF,OAAS,IAAIn1F,OAAO,IAAMi1F,EAAe,KAGlDF,SAAKnF,GAAK,SAAU/zC,GAChB,QAAS,SAAS37C,KAAK27C,IAG3Bk5C,EAAKK,WAAa,SAAUv5C,GACxB,OAAOk5C,EAAKnF,GAAG/zC,GAAQ,IAAIk5C,EAAKl5C,GAAQ,MAE5Ck5C,EAAKlG,UAAUlxF,QAAU,SAAUwH,GAC/B,OAAOf,KAAK+wF,OAAOlK,KAAK,IAAM9lF,IAE3B4vF,EA3Be,GChDtBM,GAAuB,WACvB,WAAeC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCnxF,KAAKkxF,OAASA,EACdlxF,KAAKmxF,OAASA,EACdnxF,KAAKoxF,gBAAkB,GACvBpxF,KAAKqxF,QAAUxC,GAAO7uF,KAAKoxF,iBAE/BH,SAAMxG,UAAU6G,QAAU,SAAUv2F,GAChC,IAAI+uD,EAAQ9pD,KAAKkxF,OACjBpnC,SAAMp2D,KAAKqH,GACPiF,KAAKmxF,QAAUrnC,EAAM/3D,OAASiO,KAAKmxF,QACnCnxF,KAAKuxF,QACFx2F,GAEXk2F,EAAMxG,UAAU8G,MAAQ,WACpB,IAAIx2F,EAAOiF,KAAKkxF,OAAOthC,QACvB,YAAKwhC,gBAAgBx+F,QAAQ,SAAUwd,GAAM,OAAOA,EAAGrV,KAChDA,GAEXk2F,EAAMxG,UAAU+G,QAAU,WACtB,GAAIxxF,KAAKO,OACL,OAAOP,KAAKkxF,OAAO52F,OAAO,EAAG,GAAG,IAExC22F,EAAMxG,UAAUrjF,MAAQ,WACpB,IAAIkgD,EAAUtnD,KAAKkxF,OACnB,YAAKA,OAAS,GACP5pC,GAEX2pC,EAAMxG,UAAUlqF,KAAO,WACnB,OAAOP,KAAKkxF,OAAOn/F,QAEvBk/F,EAAMxG,UAAUhnE,OAAS,SAAU1oB,GAC/B,IAAI6zF,EAAM5uF,KAAKkxF,OAAOz7F,QAAQsF,GAC9B,OAAO6zF,GAAM,GAAM5uF,KAAKkxF,OAAO52F,OAAOs0F,EAAK,GAAG,IAElDqC,EAAMxG,UAAUgH,SAAW,WACvB,OAAOzxF,KAAKkxF,OAAOlxF,KAAKkxF,OAAOn/F,OAAS,IAE5Ck/F,EAAMxG,UAAUiH,SAAW,WACvB,GAAI1xF,KAAKO,OACL,OAAOP,KAAKkxF,OAAO,IAEpBD,EA5CgB,GCIvBU,GAAU,MACb,OAAUA,EAqCRA,KAAeA,GAAa,KA9BhBA,EAAWC,WAAgB,GAAK,aAM3CD,EAAWA,EAAWE,QAAa,GAAK,UAMxCF,EAAWA,EAAWG,QAAa,GAAK,UAWxCH,EAAWA,EAAWI,QAAa,GAAK,UAMxCJ,EAAWA,EAAWK,MAAW,GAAK,QArCtCL,GACH,IAAUA,CADPA,EAAU,GAyCV1+E,GAAK,EACLg/E,GAA2B,WAC3B,WAAmB/0F,EAAMyxD,EAASujC,GAE9BlyF,KAAKmyF,IAAMl/E,KACXjT,KAAK9C,KAAOA,EACZ8C,KAAK2uD,QAAUA,EACf3uD,KAAKkyF,OAASA,EAGlBD,SAAUG,mBAAqB,SAAU53F,GACrC,OAAOA,GAA2B,mBAAbA,EAAIwvB,MAAuBwhE,EAAGyG,EAAHzG,CAAchxF,EAAI63F,uBAGtEJ,EAAUK,WAAa,SAAUJ,EAAQ3wF,GACrC,IACIgxF,GAAY,IAAIN,EAAUN,GAAWC,WAD3B,+DACgDM,GAC9D,OAAI3wF,GAAWA,EAAQixF,aACnBD,GAAUC,YAAa,GAEpBD,IAGXN,EAAUO,WAAa,SAAUN,GAC7B,OAAOD,EAAUK,WAAWJ,EAAQ,CAAEM,YAAY,KAGtDP,EAAUQ,QAAU,SAAUP,GAE1B,OAAO,IAAID,EAAUN,GAAWG,QADlB,6BACoCI,IAGtDD,EAAUS,QAAU,SAAUR,GAE1B,OAAO,IAAID,EAAUN,GAAWI,QADlB,6BACoCG,IAGtDD,EAAU9gC,QAAU,SAAU+gC,GAE1B,OAAO,IAAID,EAAUN,GAAWE,QADlB,kCACoCK,IAGtDD,EAAUU,QAAU,SAAUT,GAE1B,OAAO,IAAID,EAAUN,GAAWK,MADlB,yBACkCE,IAWpDD,EAAUW,UAAY,SAAUV,GAC5B,OAAO1G,EAAGyG,EAAHzG,CAAc0G,GAAUA,EAASD,EAAUU,QAAQT,IAE9DD,EAAUxH,UAAU74F,SAAW,WAC3B,IAA6B+pC,GACzBu2D,GADyBv2D,GACH37B,KAAKkyF,SADgBv2D,GAAE/pC,WAAaqB,OAAOw3F,UAAU74F,SAAW+pC,GAAE/pC,WAAa61D,GAAU9rB,IAE/G7e,EAAK9c,KAAoB9C,GAAO4f,EAAG5f,KAAMyxD,GAAU7xC,EAAG6xC,QAC1D,MAAO,6BAA6B9pC,OADf/H,EAAGq1E,IACwB,WAAWttE,OAAO3nB,GAAM,eAAe2nB,OAAO8pC,GAAS,cAAc9pC,OAAOqtE,EAAQ,MAExID,EAAUxH,UAAUvnB,UAAY,WAC5B,OAAOwqB,EAAOgD,GAAgB1wF,MAAO,CAAEqyF,qBAAsBryF,QAE1DiyF,EAlEoB,GC3BxB,YAAmBlvF,EAAK9G,GAC3B,OAAIA,EAAIlK,QAAUgR,EACP9G,EACJA,EAAItG,OAAO,EAAGoN,EAAM,GAAK,MAqB7B,YAA0BqN,GAC7B,IAAIyiF,EAAQC,GAAW1iF,GACnB2iF,EAAqBF,EAAMr5F,MAAM,8BACjCmyF,EAAQoH,EAAqBA,EAAmB,GAAKF,EACrDvE,GAASl+E,EAAGrP,MAAW,GAC3B,OAAIutF,IAAU3C,EAAMnyF,MAAM,eACf,YAAc80F,GAAS3C,EAAMh2F,OAAO,GAExCg2F,EAEJ,YAAoBv7E,GACvB,IAAI4iF,EAAMv3F,GAAQ2U,GAAMA,EAAGhE,OAAM,GAAI,GAAKgE,EAC1C,OAAQ4iF,GAAOA,EAAIphG,YAAe,YAE/B,YAAmB6wD,GACtB,IAAIwwC,EAAO,GACPC,EAAcjB,sBAIdkB,GAAmBxM,GAAQ,CAC3B,CAACkF,GAAar+E,GAAI,cAClB,CAACu+E,EAAQv+E,GAAI,SACb,CAACi/E,GAAWj/E,GAAI,cAChB,CAAC0lF,EAAa,SAAU77C,IAAK,OAAOA,GAAEg7C,qBAAqBzgG,aAC3D,CARc,SAAU4I,IACxB,OAAOoH,GAASpH,MAASiB,GAAQjB,KAAQA,GAAIsF,cAAgB7M,QAAUi5F,GAAW1xF,GAAI5I,WAOxE,SAAUylD,IAAK,OAAOA,GAAEzlD,aACtC,CAACwhG,EAAcC,IACf,CAAC7lF,IAAI,GAAO8lF,MAEhB,YAAgBn+F,IACZ,GAAIyM,GAASzM,IAAQ,CACjB,IAA4B,IAAxB89F,EAAKx9F,QAAQN,IACb,MAAO,iBACX89F,EAAKv/F,KAAKyB,IAEd,OAAOg+F,GAAiBh+F,IAE5B,OAAI02F,GAAYppC,GAIL8wC,GAAO9wC,GAEX+E,KAAKC,UAAUhF,EAAG,SAAUxtD,GAAKE,IAAS,OAAOo+F,GAAOp+F,MAAW+G,QAAQ,OAAQ,KAGvF,IAAIs3F,GAAoB,SAAUvM,GACrC,OAAO,SAAUhrF,GACb,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI2yF,EAAM3yF,EAAIxG,QAAQwxF,GACtB,OAAY,IAAR2H,EACO,CAAC3yF,EAAK,IACV,CAACA,EAAItG,OAAO,EAAGi5F,GAAM3yF,EAAItG,OAAOi5F,EAAM,MAI1C6E,GAAuB,SAAUx3F,GAAO,OAAOA,EAAIC,QAAQ,WAAY,KACvEw3F,GAAYF,GAAkB,KAC9BG,GAAaH,GAAkB,KAC/BI,GAAaJ,GAAkB,KA4BnC,YAAwB3G,EAAKx1C,GAChC,OAAI+0C,GAASI,GAAKK,KAAST,GAAS/0C,GACzBw1C,EAAIzgF,MAAM,GAAG,GAAIyY,OAAO2nE,GAAKK,GAAOx1C,GACxCw4C,GAAMhD,EAAKx1C,GCjItB,IAAIw8C,GAAkB,CAAExhE,IAAKyhE,GAAM9iE,MAAO8iE,GAAMC,MAAOD,IA4B5CE,GAbX,cAGI,MADgC,oBAAbtiG,UAA4BA,SAASuiG,cAA0C,IAA1BviG,SAASuiG,aAEtExiG,QAAUA,OAAOw9B,QAlBhC,YAAoBA,GAChB,IAAIilE,EAAQ,SAAU9jF,GAAM,OAAO+jF,SAAS1J,UAAU7+B,KAAK/5D,KAAKue,EAAI6e,IACpE,MAAO,CACHoD,IAAK6hE,EAAMjlE,EAAQoD,KACnBrB,MAAOkjE,EAAMjlE,EAAQoD,KACrB0hE,MAAOG,EAAMjlE,EAAQoD,MAaa+hE,CAAW3iG,OAAOw9B,SAAW4kE,GAEzD5kE,QAAQ8kE,OAAU9kE,QAAQ+B,MAIzB/B,QAhBf,YAAyBA,GACrB,IAAIoD,EAAMpD,EAAQoD,IAAIu5B,KAAK38B,GAG3B,MAAO,CAAEoD,IAAKA,EAAKrB,MAFP/B,EAAQ+B,MAAQ/B,EAAQ+B,MAAM46B,KAAK38B,GAAWoD,EAEzB0hE,MADrB9kE,EAAQ8kE,MAAQ9kE,EAAQ8kE,MAAMnoC,KAAK38B,GAAWoD,EAClB0hE,CAS7BM,CAAgBplE,QAGhBA,CAGUqlE,GCIzB,YAAsBC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIxwD,EAAQwwD,EAAOC,gBAAkBD,EAAOC,gBAAgBzzF,MAAQ,SAAW,SAC/E,MAAO,YAAY8jB,OAAO0vE,EAAOthF,GAAI,KAAK4R,OAAO0vE,EAAOE,MAAO,KAAK5vE,OAAO0vE,EAAOG,IAAK,MAAM7vE,OAAO0vE,EAAOxzF,KAAM,KAAK8jB,OAAOkf,EAAO,MAOxI,YAAuBnnC,GACnB,OAAOuvF,GAASvvF,GAAS+3F,GAAS/3F,GAAS+3F,GAASA,GAAS/3F,IAejE,IAAI+3F,GAAQ,MACX,OAAUA,EAMRA,KAAaA,GAAW,KALdA,EAASC,QAAa,GAAK,UACpCD,EAASA,EAASE,WAAgB,GAAK,aACvCF,EAASA,EAASG,KAAU,GAAK,OACjCH,EAASA,EAASI,OAAY,GAAK,SACnCJ,EAASA,EAASK,WAAgB,GAAK,aANvCL,GACH,IAAUA,CADPA,EAAQ,GASRM,GAAO9J,EAAM,OACb+J,GAAO/J,EAAM,cACbgK,GAAW,SAAUphE,GAAS,MAAO,eAAelP,OAAOowE,GAAKlhE,GAAQ,KAAKlP,OAAOqwE,GAAKnhE,KAIzFqhE,GAAuB,WAEvB,aAEIp1F,KAAKq1F,SAAW,GAChBr1F,KAAKs1F,mBAAqB,EAG9BF,SAAM3K,UAAU8K,KAAO,SAAUC,EAASC,GACtC,IAAIhI,EAAQztF,KACPy1F,EAAW1jG,SACZ0jG,EAAaxiG,OAAOC,KAAKyhG,IACpB3/F,IAAI,SAAUq+D,IAAK,OAAOqiC,SAASriC,GAAG,MACtCjrD,OAAO,SAAUirD,IAAK,OAAQsiC,MAAMtiC,MACpCr+D,IAAI,SAAUC,IAAO,OAAO0/F,GAAS1/F,OAE9CwgG,EAAWzgG,IAAI4gG,IAAehjG,QAAQ,SAAUijG,IAAY,OAAQpI,EAAM4H,SAASQ,IAAYL,KAEnGJ,EAAM3K,UAAUqL,OAAS,WAErB,QADIL,EAAa,GACR5K,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpC4K,EAAW5K,GAAMN,UAAUM,GAE/B7qF,KAAKu1F,MAAK,EAAME,IAEpBL,EAAM3K,UAAUhmE,QAAU,WAEtB,QADIgxE,EAAa,GACR5K,EAAK,EAAGA,EAAKN,UAAUx4F,OAAQ84F,IACpC4K,EAAW5K,GAAMN,UAAUM,GAE/B7qF,KAAKu1F,MAAK,EAAOE,IAWrBL,EAAM3K,UAAU+K,QAAU,SAAUK,GAChC,QAAS71F,KAAKq1F,SAASO,GAAcC,KAGzCT,EAAM3K,UAAUsL,qBAAuB,SAAUhiE,IACxC/zB,KAAKw1F,QAAQb,GAASE,aAE3Bb,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,kBAAkBlP,OAAO4iC,GAAU1zB,MAGlFqhE,EAAM3K,UAAUuL,uBAAyB,SAAUjiE,IAC1C/zB,KAAKw1F,QAAQb,GAASE,aAE3Bb,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,kBAAkBlP,OAAO4iC,GAAU1zB,MAGlFqhE,EAAM3K,UAAUwL,oBAAsB,SAAUrzF,EAAMmxB,EAAOxyB,GACzD,GAAKvB,KAAKw1F,QAAQb,GAASG,MAE3B,KAAI/gG,GAAQo3F,EAAM,qBAANA,CAA4B5pF,IAAY,WAAYtE,GAAUkuF,EAAM,+BAANA,CAAsC5pF,IAAY4pF,EAAM,oBAANA,CAA2B5pF,IAAY,UAAWR,GAAOsyF,GAAiBzwF,EAAKszF,eAAeliG,UAC1NggG,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,gBAAgBlP,OAAO9wB,GAAO,cAAc8wB,OAAO5nB,GAAS,MAAM4nB,OAAOsxE,GAAU,IAAKp1F,QAGvIq0F,EAAM3K,UAAU2L,gBAAkB,SAAUC,EAAYtiE,EAAOuiE,IACtDt2F,KAAKw1F,QAAQb,GAASG,OAE3Bd,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,0BAA0BlP,OAAOsxE,GAAU,IAAK1uC,GAAU4uC,OAGzGjB,EAAM3K,UAAU8L,iBAAmB,SAAUt1D,EAAM85B,EAAMhnC,IAChD/zB,KAAKw1F,QAAQb,GAASC,UAE3BZ,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,wBAAwBlP,OAAOoc,EAAM,MAAMpc,OAAOk2C,EAAM,OAGvGq6B,EAAM3K,UAAU+L,wBAA0B,SAAUC,EAAY1iE,IACvD/zB,KAAKw1F,QAAQb,GAASC,UAE3BZ,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,iCAAiClP,OAAO4xE,EAAY,SAAS5xE,OAAOsxE,GAAU,IAAK1uC,GAAUgvC,EAAW3hG,UAGvJsgG,EAAM3K,UAAUiM,WAAa,SAAUzoC,EAAQl6B,IACtC/zB,KAAKw1F,QAAQb,GAASE,aAE3Bb,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,kBAAkBlP,OAAO4iC,GAAU1zB,GAAQ,cAAclP,OAAOopC,KAG/GmnC,EAAM3K,UAAUkM,aAAe,SAAUC,EAAY7iE,IAC5C/zB,KAAKw1F,QAAQb,GAASE,aAE3Bb,OAAgB,GAAGnvE,OAAOswE,GAASphE,GAAQ,kBAAkBlP,OAAO4iC,GAAU1zB,GAAQ,mBAAmBlP,OAAO+xE,EAAW71F,QAG/Hq0F,EAAM3K,UAAUoM,iBAAmB,SAAU9iG,EAAO+iG,EAAUtI,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3BxuF,KAAKw1F,QAAQb,GAASI,SAE3Bf,OAAgB,YAAYnvE,OFhJ7B,YAAmB9yB,EAAQkK,GAC9B,KAAOA,EAAIlK,OAASA,GAChBkK,GAAO,IACX,OAAOA,EE6IgC86F,CAAU,GAAIhjG,GAAQ,KAAK8wB,OAAOmyE,GAAaF,IAAWjyE,OAAO2pE,KAGxG4G,EAAM3K,UAAUwM,yBAA2B,SAAUH,EAAU75F,IACtD+C,KAAKw1F,QAAQb,GAASI,SAE3B/0F,KAAK62F,iBAAiB,WAAYC,EAAU,kCAAkCjyE,OAAO5nB,EAAS,OAGlGm4F,EAAM3K,UAAUyM,gBAAkB,SAAUJ,EAAUK,IAC7Cn3F,KAAKw1F,QAAQb,GAASI,SAE3B/0F,KAAK62F,iBAAiB,OAAQC,EAAU,UAAUjyE,OAAOsxE,GAAU,IAAKgB,MAG5E/B,EAAM3K,UAAU2M,cAAgB,SAAUC,GACtC,GAAKr3F,KAAKw1F,QAAQb,GAASK,YAE3B,KAAIsC,EAAY,uBAEZC,GAAUF,EACTriG,IAAI,SAAU8nB,IACf,IAAI+L,GACA2uE,GAAS16E,GAAG06E,OAAQC,GAAa36E,GAAG26E,WACpCC,GAAMF,IAAUA,GAAO9C,IACvBiD,GAAMF,IAAc,GAAG5yE,OAAO4yE,GAAWG,SAASC,SAAS92F,KAAM,OAAO8jB,OAAO4yE,GAAWG,SAASE,MAAO,KAC9G,OAAOjvE,GAAK,IAAOyuE,GAAaI,GAAK7uE,GAPzB,iCAOyC8uE,GAAK9uE,KAEzD3O,KAAK,SAAUjD,GAAGC,IAAK,OAAQD,GAAEqgF,IAAc,IAAIS,cAAc7gF,GAAEogF,IAAc,MACtFtD,SAAkBuD,MAGtBnC,EAAM3K,UAAUuN,sBAAwB,SAAUjkG,EAAO0jG,IAChDz3F,KAAKw1F,QAAQb,GAASK,aAE3BhB,OAAgB,eAAenvE,OAAO9wB,EAAO,KAAK8wB,OAzKnC,SAAU4yE,GAC7B,IAAIn9D,EAAOm9D,EAAWG,SAClB7zD,EAAQzJ,EAAKu9D,SAAS92F,MAAQ,SAClC,MAAO,SAAS8jB,OAAO4yE,EAAWtF,IAAK,WAAWttE,OAAOkf,EAAO,+BAA+Blf,OAAOyV,EAAK29D,YAAa,KAAKpzE,OAAOyV,EAAK49D,qBAAsB,KAsKlGC,CAAiBV,MAG9ErC,EAAM3K,UAAU2N,4BAA8B,SAAUrkG,EAAO+iG,IACtD92F,KAAKw1F,QAAQb,GAASK,aAE3BhB,OAAgB,eAAenvE,OAAO9wB,EAAO,KAAK8wB,OAAOmyE,GAAaF,MAEnE1B,EA7IgB,GAyJvBiD,GAAQ,IAAIjD,GChNZkD,GAA2B,WAM3B,WAAmBp3F,GAEflB,KAAK2mF,QAAU,KAEf3mF,KAAKyoC,SAAU,EACfilD,EAAO1tF,KAAMkB,GAIjBo3F,SAAU7N,UAAUe,GAAK,SAAUh+E,EAAKvY,GACpC,OAAO,GAGXqjG,EAAU7N,UAAU8N,OAAS,SAAU/qF,EAAKvY,GACxC,OAAOuY,GAGX8qF,EAAU7N,UAAU+N,OAAS,SAAUhrF,EAAKvY,GACxC,OAAOuY,GAGX8qF,EAAU7N,UAAUmD,OAAS,SAAU32E,EAAGC,GAEtC,OAAOD,GAAKC,GAEhBohF,EAAU7N,UAAUgO,YAAc,WAC9B,IAAI12F,EAAM/B,KAAK2mF,QAAQ/0F,WACvB,OAAOmQ,EAAIpM,OAAO,EAAGoM,EAAIhQ,OAAS,IAEtCumG,EAAU7N,UAAU74F,SAAW,WAC3B,MAAO,cAAcizB,OAAO7kB,KAAKe,KAAM,MAG3Cu3F,EAAU7N,UAAUiO,WAAa,SAAUlrF,GACvC,OAAOxN,KAAKwrF,GAAGh+E,GAAOA,EAAMxN,KAAKw4F,OAAOhrF,IAY5C8qF,EAAU7N,UAAUkO,SAAW,SAAUC,EAAMC,GAC3C,IAAKD,EACD,OAAO54F,KACX,GAAa,SAAT44F,IAAoBC,EACpB,MAAM,IAAIpvD,MAAM,kDACpB,OAAO,IAAIqvD,GAAU94F,KAAM44F,IAExBN,EA3DoB,GA+D/B,YAAmBp7F,EAAM07F,GACrB,IAAInL,EAAQztF,KAEZ,WAAmBwN,IACf,OAAO/R,GAAQ+R,IAAOA,GAAMs+E,EAAUt+E,IAAO,CAACA,IAAO,GAczD,YAAsBxZ,GAAU+kG,IAC5B,OAAO,SAAqBvrF,IACxB,GAAI/R,GAAQ+R,KAAuB,IAAfA,GAAIzb,OACpB,OAAOyb,GACX,IACIjW,GAASvC,GADHgkG,EAAUxrF,IACExZ,IACtB,OAAyB,IAAlB+kG,GAAgF,IAAvD3wF,GAAO7Q,GAAQ,SAAU8/C,IAAK,OAAQA,KAAMtlD,OAjBpF,YAAqByb,IACjB,OAAQA,GAAIzb,aACH,EACD,YACC,EACD,MAAgB,SAAT6mG,EAAkBprF,GAAI,GAAKA,WAElC,OAAOA,IAUgFyrF,CAAY1hG,KAI/G,YAA4BvD,IACxB,OAAO,SAAqBklG,GAAMC,IAC9B,IAAIC,GAAOJ,EAAUE,IAAOG,GAAQL,EAAUG,IAC9C,GAAIC,GAAKrnG,SAAWsnG,GAAMtnG,OACtB,OAAO,EACX,QAAS+I,GAAI,EAAGA,GAAIs+F,GAAKrnG,OAAQ+I,KAC7B,IAAK9G,GAASolG,GAAKt+F,IAAIu+F,GAAMv+F,KACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAAclI,QAAQ,SAAUmO,IAC3D,IAAIu4F,GAAcp8F,EAAK6D,IAAM6qD,KAAK1uD,GAElCuwF,EAAM1sF,KADmB,WAATA,GAAoBw4F,GAAqBC,IACjCF,MAE5B5L,EAAO1tF,KAAM,CACTsD,QAASpG,EAAKoG,QACdvC,KAAM7D,EAAK6D,KACX4lF,QAASzpF,EAAKypF,QACdl+C,QAASvrC,EAAKurC,QACd4rB,IAAKn3D,EAAKm3D,IACVm3B,GAAIgO,GAAat8F,EAAKsuF,GAAG5/B,KAAK1uD,IAAO,GACrCu8F,WAAYb,ICvIpB,IAAIc,GAASzmG,OAAOw3F,UAAU3wF,eAI1B6/F,GAAO,MACV,OAAUA,EAIRA,KAAYA,GAAU,KAHbA,EAAQC,KAAU,GAAK,OAC/BD,EAAQA,EAAQE,OAAY,GAAK,SACjCF,EAAQA,EAAQG,OAAY,GAAK,SAJjCH,GACH,IAAUA,CADPA,EAAO,GAgEX,IAAII,GAAuB,WACvB,WAAe9mF,EAAI/V,EAAM81B,EAAUgnE,GAAWj2D,IAC1C,IAAI1W,GA3DZ,YAA6B4sE,EAAWjnE,EAAU+Q,GAC9C,IACIzgC,GAAU8C,GAAK,CAAC29B,EAAMzgC,SADuB,IAAzBygC,EAAMm2D,gBAA4BlnE,IAAa2mE,GAAQE,aAAWjlG,GACpCk3F,GAClDqO,GAAgBrO,EAAUxoF,IAAW,CAAEA,QAASA,IAAY,GAC5D82F,GAGR,YAAyBzC,GAGrB,aACI,OAAOA,EAAIxiG,MAHfwiG,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWvvF,OAAOsxF,GAAO9tC,KAAK+rC,GAAO,KAAK5lG,MAAW,CAiB3FsoG,CAAY1C,GAAO,CAAExiG,MAAOwiG,GAAQA,EAC1C2C,EAAsBC,aAAiB,EAIvC,IAAIC,EAAOpH,EAAauE,EAAIxiG,OAASwiG,EAAIxiG,MAAQmlG,EACjD,OAAO5M,EAAOiK,EAAK,CAAE6C,KAAMA,IAVTC,CAAgB12D,GAASA,EAAMloC,QAAUkoC,EAAMloC,OAAOo+F,IACxE,OAAOvM,EAAOyM,GAAeC,IAsDZM,CAAoBznF,EAAI+f,EAAU+Q,IAC/C7mC,EA5CR,YAAiBy6F,EAAKgD,EAAS3nE,EAAU/f,EAAI2nF,IACzC,GAAIjD,EAAIz6F,MAAQy9F,GAA4B,WAAjBA,EAAQ55F,KAC/B,MAAM,IAAI0oC,MAAM,UAAU5kB,OAAO5R,EAAI,mCACzC,OAAI0kF,EAAIz6F,MAAQy9F,GAA4B,WAAjBA,EAAQ55F,MAAqB65F,GAAW19F,KAAKy6F,EAAIz6F,MACjE09F,GAAW19F,KAAKy6F,EAAIz6F,MAC3By9F,IAEChD,EAAIz6F,KAUFy6F,EAAIz6F,gBAAgBo7F,GAAYX,EAAIz6F,KAAO09F,GAAW19F,KAAKy6F,EAAIz6F,MAF3D09F,GAAW19F,KAPP81B,IAAa2mE,GAAQG,OAC1B,MACA9mE,IAAa2mE,GAAQC,KACjB,OACA5mE,IAAa2mE,GAAQE,OACjB,QACA,UAGoD38F,CA2B3D29F,CAAQxtE,GAAQnwB,EAAM81B,EAAU/f,EAAI+mF,GAAUY,YACrD,IAAIE,GASJ,cACI,IAAIC,GAAgB,CAAErM,MAAO17D,IAAa2mE,GAAQE,QAAS,QACvDmB,GAAyB/nF,EAAGzZ,MAAM,SAAW,CAAEk1F,OAAO,GAAS,GACnE,OAAOhB,EAAOqN,GAAeC,GAAwB3tE,IAAQqhE,MAZjDuM,GAChB/9F,EAAO49F,GAAY59F,EAAKy7F,SAASmC,GAAW9nE,IAAa2mE,GAAQE,QAAU38F,EAC3E,IAAIg+F,QAA8BtmG,IAAjBy4B,GAAOl4B,OAAuB69B,IAAa2mE,GAAQE,OAChEv2F,GAAUwoF,EAAUz+D,GAAO/pB,WAAa+pB,GAAO/pB,UAAYpG,EAAKoG,QAChE+wD,GAAMy3B,EAAUz+D,GAAOgnC,OAAShnC,GAAOgnC,MAAQn3D,EAAKm3D,IACpD7sB,GA9BZ,YAAyBna,EAAQ6tE,EAAYC,GACzC,IAAI3zD,EAASna,EAAOma,OACpB,IAAK0zD,IAAyB,IAAX1zD,EACf,OAAO,EACX,IAAKskD,EAAUtkD,IAAqB,MAAVA,EACtB,OAAO2zD,EACX,IAAe,IAAX3zD,GAAmB4kD,GAAS5kD,GAC5B,OAAOA,EACX,MAAM,IAAIiC,MAAM,2BAA2B5kB,OAAO2iB,EAAQ,wDAsBzC4zD,CAAgB/tE,GAAQ6tE,GAAYlB,GAAUqB,uBACvDn/F,GArBZ,YAAoBmxB,EAAQytE,EAAWI,EAAY1zD,GAC/C,IAAI2zD,GAAgB,CAChB,CAAErkG,KAAM,GAAIg4B,GAAIosE,GAAcJ,OAAYlmG,EAAY,IACtD,CAAEkC,KAAM,KAAMg4B,GAAIosE,GAAcJ,OAAYlmG,EAAY,KAExDsH,GAAUT,GAAQ4xB,EAAOnxB,SAAWmxB,EAAOnxB,QAAU,GACrDkwF,GAAS5kD,IACTtrC,GAAQxI,KAAK,CAAEoD,KAAM0wC,EAAQ1Y,QAAIl6B,IACrC,IAAI0mG,GAAiBtmG,GAAIkH,GAAS/I,EAAK,SACvC,OAAOiV,GAAO+yF,GAAe,SAAUpgG,IAAQ,OAA6C,IAAtCugG,GAAe7lG,QAAQsF,GAAKjE,KAAU,GAAO+tB,OAAO3oB,IAYxFq/F,CAAWluE,GAAQytE,GAAWI,GAAY1zD,IACpDiB,GAAUqjD,EAAUz+D,GAAOob,WAAapb,GAAOob,UAAYvrC,EAAKurC,QAOpEilD,EAAO1tF,KAAM,CAAEiT,GAAIA,EAAI/V,KAAMA,EAAM81B,SAAUA,EAAUkoE,WAAYA,GAAY53F,QAASA,GAAS+wD,IAAKA,GAAK7sB,OAAQA,GAAQtrC,QAASA,GAASusC,QAASA,GAASimD,MAAOoM,GAAWztE,OAAQA,KAE7L0sE,SAAM73F,OAAS,SAAUrG,EAAQqG,QACd,IAAXA,IAAqBA,EAAS,IAElC,QADIs5F,EAAc,GACT3Q,GAAK,EAAG4Q,GAAW5/F,EAAQgvF,GAAK4Q,GAAS1pG,OAAQ84F,KAAM,CAC5D,IAAI6Q,GAAQD,GAAS5Q,IACrB2Q,EAAYE,GAAMzoF,IAAMyoF,GAAMvmG,MAAM+M,EAAOw5F,GAAMzoF,KAErD,OAAOuoF,GAaXzB,EAAM4B,QAAU,SAAU9/F,EAAQ+/F,EAASC,GACvC,YAAgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BhgG,EAAOuM,OAAO,SAAUszF,IAAS,OAAQA,GAAMx+F,KAAK0wF,OAAOgO,EAAQF,GAAMzoF,IAAK4oF,EAAQH,GAAMzoF,QAWvG8mF,EAAMnM,OAAS,SAAU/xF,EAAQ+/F,EAASC,GACtC,YAAgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnD9B,EAAM4B,QAAQ9/F,EAAQ+/F,EAASC,GAAS9pG,MAAW,EAG9DgoG,EAAM+B,UAAY,SAAUjgG,EAAQqG,GAChC,YAAe,IAAXA,IAAqBA,EAAS,IAC3BrG,EAAO7G,IAAI,SAAU0mG,GAAS,OAAOA,EAAMI,UAAU55F,EAAOw5F,EAAMzoF,OAAS2rD,OAAO6wB,IAAU,IAEvGsK,EAAMtP,UAAUsR,eAAiB,SAAU5mG,GACvC,OAAO6K,KAAKk7F,YAAcl7F,KAAK9C,KAAK0wF,OAAO5tF,KAAK7K,QAASA,IAM7D4kG,EAAMtP,UAAUt1F,MAAQ,SAAUA,GAC9B,IAAIs4F,EAAQztF,KAyBZ7K,SAR2B,SAAUqY,IACjC,QAASq9E,GAAK,EAAG/tE,GAAK2wE,EAAMvxF,QAAS2uF,GAAK/tE,GAAG/qB,OAAQ84F,KAAM,CACvD,IAAIrmF,GAAQsY,GAAG+tE,IACf,GAAIrmF,GAAM1N,OAAS0W,GACf,OAAOhJ,GAAMsqB,GAErB,OAAOthB,GAEHwuF,CAAqB7mG,GACtB02F,GAAY12F,GAtBG,WAClB,GAAIs4F,EAAMwO,mBACN,OAAOxO,EAAMwO,mBAAmB/mG,aACpC,IAAK+3F,aACD,MAAM,IAAIxjD,MAAM,+DACpB,IAAIv0C,GAAe+3F,oBAA0BQ,EAAMpgE,OAAOmtE,MAC1D,GAAqB,MAAjBtlG,KAAwDu4F,EAAMvwF,KAAKsuF,GAAGt2F,IACtE,MAAM,IAAIu0C,MAAM,kBAAkB5kB,OAAO3vB,GAAc,qBAAqB2vB,OAAO4oE,EAAMx6E,GAAI,uCAAuC4R,OAAO4oE,EAAMvwF,KAAK6D,KAAM,MAChK,OAAI0sF,EAAMpgE,OAAOmtE,KAAKD,cAClB9M,EAAMwO,mBAAqB,CAAE/mG,aAAcA,KAExCA,GAWiBgnG,GAAoBl8F,KAAK9C,KAAKw7F,WAAWvjG,IAEzE4kG,EAAMtP,UAAUoO,SAAW,WACvB,OAAO74F,KAAKgzB,WAAa2mE,GAAQE,QAErCE,EAAMtP,UAAUqR,UAAY,SAAU3mG,GAElC,IAAK02F,GAAY12F,IAAoB,OAAVA,IAAmB6K,KAAKk7F,WAC/C,OAAO,EAEX,IAAIiB,EAAan8F,KAAK9C,KAAKw7F,WAAWvjG,GACtC,IAAK6K,KAAK9C,KAAKsuF,GAAG2Q,GACd,OAAO,EAEX,IAAIC,EAAUp8F,KAAK9C,KAAKq7F,OAAO4D,GAC/B,QAAS/P,GAASgQ,KAAap8F,KAAK9C,KAAKypF,QAAQ7qF,KAAKsgG,KAE1DrC,EAAMtP,UAAU74F,SAAW,WACvB,MAAO,UAAUizB,OAAO7kB,KAAKiT,GAAI,KAAK4R,OAAO7kB,KAAK9C,KAAM,cAAc2nB,OAAO7kB,KAAKwnC,OAAQ,gBAAgB3iB,OAAO7kB,KAAKk7F,WAAY,MAE/HnB,EAtHgB,GC7CvBsC,GAA4B,WAC5B,aACIr8F,KAAKsxF,SAAU,EACftxF,KAAKs8F,UAAY,GACjBt8F,KAAKu8F,aAAetN,GAAKoN,EAAW5R,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJzqF,KAAKw8F,MAAQ/zD,GAAQzzC,GAAIgL,KAAKu8F,aADf,SAAUE,EAAY17F,GAAQ,OAAO,IAAIu3F,GAAU5K,EAAO,CAAE3sF,KAAMA,GAAQ07F,MAClC,IAE3DJ,SAAW5R,UAAUhlC,QAAU,WAC3BzlD,KAAKw8F,MAAQ,IAOjBH,EAAW5R,UAAUvtF,KAAO,SAAU6D,EAAM07F,EAAYC,GACpD,IAAK5Q,EAAU2Q,GACX,OAAOz8F,KAAKw8F,MAAMz7F,GACtB,GAAIf,KAAKw8F,MAAM1iG,eAAeiH,GAC1B,MAAM,IAAI0oC,MAAM,iBAAiB5kB,OAAO9jB,EAAM,gCAClD,YAAKy7F,MAAMz7F,GAAQ,IAAIu3F,GAAU5K,EAAO,CAAE3sF,KAAMA,GAAQ07F,IACpDC,IACA18F,KAAKs8F,UAAU5oG,KAAK,CAAEqN,KAAMA,EAAMG,IAAKw7F,IAClC18F,KAAKsxF,SACNtxF,KAAK28F,mBAEN38F,MAEXq8F,EAAW5R,UAAUkS,gBAAkB,WACnC,KAAO38F,KAAKs8F,UAAUvqG,QAAQ,CAC1B,IAAImL,EAAO8C,KAAKs8F,UAAU1sC,QAC1B,GAAI1yD,EAAKypF,QACL,MAAM,IAAIl9C,MAAM,qDACpBikD,EAAO1tF,KAAKw8F,MAAMt/F,EAAK6D,MAAOksF,oBAA0B/vF,EAAKgE,QAG9Dm7F,EAhDqB,IAmDhC,cACI,IAAIO,EAAkB,SAAU17F,GAC5B,IAAI27F,EAAc,SAAUrvF,IAAO,OAAe,MAAPA,GAAcA,GAAI5b,WAAa4b,IACtEsvF,EAAkB,CAClBvE,OAAQsE,EACRrE,OAAQqE,EACRrR,GAAIA,EAAGwB,QACPrG,QAAS,KAETiH,OAAQ,SAAU32E,GAAGC,IAAK,OAAOD,IAAKC,KAE1C,OAAOw2E,EAAO,GAAIoP,EAAiB57F,IAGvCwsF,EAAO2O,GAAW5R,UAAW,CACzBsS,OAAQH,EAAgB,IACxB37D,KAAM27D,EAAgB,CAClBjW,QAAS,UAEbxuF,MAAOykG,EAAgB,IACvBI,KAAMJ,EAAgB,CAClBn0D,SAAS,IAEbw0D,IAAKL,EAAgB,CACjBpE,OAAQ,SAAUhrF,GAAO,OAAOkoF,SAASloF,EAAK,KAC9Cg+E,GAAI,SAAUh+E,GACV,OAAQw+E,GAAkBx+E,IAAQxN,KAAKw4F,OAAOhrF,EAAI5b,cAAgB4b,GAEtEm5E,QAAS,UAEbuW,KAAMN,EAAgB,CAClBrE,OAAQ,SAAU/qF,GAAO,OAAQA,EAAO,EAAM,GAC9CgrF,OAAQ,SAAUhrF,GAAO,OAA6B,IAAtBkoF,SAASloF,EAAK,GAAQ,EACtDg+E,GAAIA,EAAG2R,SACPxW,QAAS,QAEbjpC,KAAMk/C,EAAgB,CAClBrE,OAAQ,SAAU/qF,GACd,OAAOxN,KAAMwrF,GAAGh+E,GAEV,CAACA,EAAIqpC,eAAgB,KAAOrpC,EAAIopC,WAAa,IAAIxqC,OAAM,IAAM,IAAMoB,EAAImpC,WAAWvqC,OAAM,IAAKo1C,KAAK,UADlG5sD,GAGV4jG,OAAQ,SAAUhrF,GACd,GAAIxN,KAAKwrF,GAAGh+E,GACR,OAAOA,EACX,IAAIhU,EAAQwG,KAAKizD,QAAQn3D,KAAK0R,GAC9B,OAAOhU,EAAQ,IAAI66B,KAAK76B,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM5E,GAEhE42F,GAAI,SAAUh+E,GAAO,OAAOA,aAAe6mB,OAASshE,MAAMnoF,EAAI4vF,YAC9DxP,OAAQ,SAAU5qD,EAAGuiB,GACjB,MAAO,CAAC,cAAe,WAAY,WAAWqZ,OAAO,SAAUiuB,EAAKz8E,IAAM,OAAOy8E,GAAO7pD,EAAE5yB,QAAUm1C,EAAEn1C,QAAU,IAEpHu2E,QAAS,0DACT1zB,QAAS,0DAEboqC,KAAMT,EAAgB,CAClBrE,OAAQhL,GACRiL,OAAQlL,GACR9B,GAAIA,EAAGv4F,QACP26F,OAAQA,GACRjH,QAAS,UAGb4E,IAAKqR,EAAgB,CACjBrE,OAAQjF,GACRkF,OAAQlF,GACR9H,GAAI,WAAc,OAAO,GACzBoC,OAAQA,OAIpB0P,GCrJA,IAAIC,GAA6B,WAC7B,WAAqB1hG,QACF,IAAXA,IAAqBA,EAAS,IAClC6xF,EAAO1tF,KAAMnE,GAUjB0hG,SAAY9S,UAAU+S,SAAW,SAAUlyF,EAAWmyF,EAAUC,GAC5D,IAAIv8D,GVgJL,YAAmBd,EAAOs9D,GAC7B,IAAI18D,EAAO,GAEX,QAAS7/B,KAAKi/B,EAAMY,KAAM,CACtB,GAAIZ,EAAMY,KAAK7/B,KAAOu8F,EAAO18D,KAAK7/B,GAC9B,MACJ6/B,EAAKvtC,KAAK2sC,EAAMY,KAAK7/B,IAEzB,OAAO6/B,EUxJW28D,CAAUH,EAAUC,GAAMG,GAAY,GAAIC,GAAc,GACtE,QAAShjG,MAAKqmC,GACV,GAAKA,GAAQrmC,KAAOqmC,GAAQrmC,IAAGe,OAE/B,KAAIkiG,GAAe58D,GAAQrmC,IAAGe,OAC1BmiG,GAAmB/qG,OAAOC,KAAK6qG,IACnC,GAAKC,GAAiBjsG,OAEtB,QAAS8uB,MAAKm9E,IACLA,GAAiBlkG,eAAe+mB,KACY,GAA7Ck9E,GAAaC,GAAiBn9E,KAAI4nB,SAClCq1D,GAAYroG,QAAQuoG,GAAiBn9E,MAAO,IAEhDi9E,GAAYpqG,KAAKsqG,GAAiBn9E,KAClCg9E,GAAUG,GAAiBn9E,KAAM7gB,KAAKg+F,GAAiBn9E,MAG/D,OAAO6sE,EAAO,GAAImQ,GAAWvyF,IAE1BiyF,EAjCsB,GCS7BU,GAA0B,WAC1B,WAAkBC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAIjhG,EAAOkhG,EACXl+F,KAAK+jC,MAAQ/mC,EAAK+mC,MAClB/jC,KAAKm+F,YAAcnhG,EAAKmhG,YAAY/xF,QACpCpM,KAAKw7F,YAAc9N,EAAO,GAAI1wF,EAAKw+F,aACnCx7F,KAAKo+F,YAAcphG,EAAKohG,YAAYhyF,QACpCpM,KAAKq+F,MAAQrhG,EAAKqhG,OAASrhG,EAAKqhG,MAAMjyF,YAErC,CACD,IAAI23B,EAAQm6D,EACZl+F,KAAK+jC,MAAQA,EACb/jC,KAAKm+F,YAAcp6D,EAAMu6D,WAAW,CAAE71D,SAAS,IAC/CzoC,KAAKw7F,YAAc,GACnBx7F,KAAKo+F,YAAcr6D,EAAMq6D,YAAYppG,IAAI,SAAUupG,IAAO,OAAOA,GAAIC,WAG7EP,SAASxT,UAAU+T,MAAQ,WACvB,OAAO,IAAIP,EAASj+F,OAGxBi+F,EAASxT,UAAUgU,eAAiB,SAAU5iG,GAE1C,YAAK2/F,YAAcx7F,KAAKm+F,YAAYv/B,OAAO,SAAUuwB,EAAMuP,IAAQ,OAAOC,GAAWxP,EADnE,SAAUyP,GAAY,MAAO,CAACA,EAAS3rF,GAAI2rF,EAASzpG,MAAM0G,EAAO+iG,EAAS3rF,MACD4rF,CAAYH,MAAW,IAC3G1+F,MAGXi+F,EAASxT,UAAUqU,UAAY,SAAU/9F,GACrC,OAAOqF,GAAKpG,KAAKm+F,YAAanT,EAAO,KAAMjqF,KAM/Ck9F,EAASxT,UAAUmD,OAAS,SAAU5wF,EAAM+hG,GACxC,IAAI5qC,EAAOn0D,KAAKm0D,KAAKn3D,EAAM+hG,GAC3B,OAAO5qC,GAAwB,IAAhBA,EAAKpiE,MAAW,EAcnCksG,EAASxT,UAAUt2B,KAAO,SAAUn3D,EAAM+hG,GACtC,GAAI/+F,KAAK+jC,QAAU/mC,EAAK+mC,MACpB,OAAO,EACX,IAAIloC,EAASkjG,EAAWA,EAAS/+F,MAAQA,KAAKm+F,YAC9C,OAAOpE,WAAcl+F,EAAQmE,KAAKw7F,YAAax+F,EAAKw+F,cAMxDyC,EAASO,MAAQ,SAAUxhG,GAAQ,OAAOA,EAAKwhG,SACxCP,EA9DmB,GCsB1Be,GAA6B,WAe7B,WAAqBC,EAAgBC,EAAaC,EAASC,IACvDp/F,KAAKi/F,eAAiBA,EACtBj/F,KAAKk/F,YAAcA,EACnBl/F,KAAKk/F,YAAcA,EACnBl/F,KAAKm/F,QAAUzR,EAAO,GAAIyR,GAAW,IACrCn/F,KAAKo/F,SAAW1R,EAAO,GAAI0R,IAAY,IACvCp/F,KAAKq/F,YAAcJ,EAAeK,QAAQl5F,KAAK84F,EAAal/F,KAAKo/F,SAASG,UAG9EP,SAAYvU,UAAU1pF,KAAO,WACzB,OAAQf,KAAKq/F,aAAer/F,KAAKq/F,YAAYt+F,MAASf,KAAKk/F,aAG/DF,EAAYvU,UAAU+U,WAAa,WAC/B,OAAOx/F,KAAKk/F,aAGhBF,EAAYvU,UAAU5uF,OAAS,WAC3B,OAAOmE,KAAKm/F,SAGhBH,EAAYvU,UAAUgV,OAAS,WAC3B,OAAOz/F,KAAKq/F,aAGhBL,EAAYvU,UAAU1mD,MAAQ,WAC1B,OAAO/jC,KAAKq/F,aAAer/F,KAAKq/F,YAAYxrC,MAGhDmrC,EAAYvU,UAAUlpF,QAAU,WAC5B,OAAOvB,KAAKo/F,UAGhBJ,EAAYvU,UAAUiV,OAAS,WAC3B,SAAU1/F,KAAKq/F,cAAer/F,KAAKq/F,YAAYxrC,OAGnDmrC,EAAYvU,UAAUkV,MAAQ,WAC1B,OAAQ3/F,KAAKgxB,SAGjBguE,EAAYvU,UAAUz5D,MAAQ,WAC1B,IAAI4uE,EAAO5/F,KAAKuB,UAAUg+F,SAC1B,IAAKv/F,KAAKq/F,aAAiBO,EAAM,CAC7B,IAAIrvF,EAAYqvF,EAAK7+F,KAAO6+F,EAAK7+F,KAAO6+F,EACxC,MAAO,sBAAsB/6E,OAAO7kB,KAAKe,OAAQ,kBAAkB8jB,OAAOtU,EAAW,KAEzF,OAAKvQ,KAAKq/F,YAELr/F,KAAKq/F,YAAYxrC,UAAtB,EACW,UAAUhvC,OAAO7kB,KAAKe,OAAQ,+BAF9B,kBAAkB8jB,OAAO7kB,KAAKe,OAAQ,IAER,EAE7Ci+F,EAAYvU,UAAU74F,SAAW,WAC7B,MAAO,IAAIizB,OAAO7kB,KAAKe,OAAQ,KAAK8jB,OAAO4iC,GAAUznD,KAAKnE,YAQ9DmjG,EAAYvU,UAAUoV,UAAY,SAAU97D,GACxC,OAAO,IAAIi7D,EAAYh/F,KAAKi/F,eAAgBl7D,EAAO/jC,KAAKm/F,QAASn/F,KAAKo/F,WAS1EJ,EAAYvU,UAAUqV,WAAa,SAAUjkG,EAAQK,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAIoP,EAAYpP,EAAUL,EAAS6xF,EAAO,GAAI1tF,KAAKm/F,QAAStjG,GAC5D,OAAO,IAAImjG,EAAYh/F,KAAKi/F,eAAgBj/F,KAAKk/F,YAAa5zF,EAAWtL,KAAKo/F,WASlFJ,EAAYvU,UAAUsV,YAAc,SAAUx+F,EAASrF,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8jG,EAAU9jG,EAAUqF,EAAUmsF,EAAO,GAAI1tF,KAAKo/F,SAAU79F,GAC5D,OAAO,IAAIy9F,EAAYh/F,KAAKi/F,eAAgBj/F,KAAKk/F,YAAal/F,KAAKm/F,QAASa,IAGhFhB,EAAYiB,MAAQ,SAAUzlG,GAC1B,OAAOA,GAAOA,EAAIupC,QAAUqoD,GAAS5xF,EAAIupC,QAAWniC,GAASpH,EAAIupC,QAAUqoD,GAAS5xF,EAAIupC,MAAMhjC,QAE3Fi+F,EA3GsB,GCzB7BkB,GAA2B,WAC3B,aAAqB,CAGrBA,SAAUC,gBAAkB,SAAUC,EAAUn/D,GAC5C,IAAI8C,EAAQyoD,GAAKvrD,GAAM8C,MACvB,OAAO,IAAIi7D,GAAYoB,EAAUr8D,EAAO9C,EAAKjsC,IAAI7B,EAAK,gBAAgByrE,OAAOswB,GAAQ,IAAK,KAE9FgR,EAAUG,UAAY,SAAUj4D,GAC5B,IAAIyC,EAAWzC,EAAYvsC,SAC3B,OAAOusC,EAAYq3D,SAASx+D,KAAKjsC,IAAI,SAAU+uC,GAAS,OAAO,IAAIk6D,GAASl6D,GAAO06D,eAAe5zD,MAGtGq1D,EAAUI,YAAc,SAAUC,EAAUn4D,GACxC,IAAIo4D,EAASN,EAAUG,UAAUj4D,GACjC,OAAIA,EAAY7mC,UAAUknC,QACfy3D,EAAUO,cAAcF,EAAUC,EAAQvtG,OAAOC,KAAKk1C,EAAYvsC,WAEtE2kG,GAOXN,EAAUQ,iBAAmB,SAAUC,EAAO1/D,EAAMpgC,GAEhDogC,EACK74B,OAAO,SAAUpL,IAAQ,OAAOyxF,GAAQ5tF,EAAQ7D,GAAK+mC,SACrDnxC,QAAQ,SAAUoK,IACnB,IAAI4jG,GAAY1+F,GAAOlF,GAAK+mC,MAAMs6D,OAAS,IACvCwC,GAAUX,EAAUW,QAAQ5/D,EAAM,SAAU7/B,IAAK,OAAOA,KAAMpE,KAC9D8jG,GAAcF,GAAU5rG,IAAI,SAAUslC,IAAQ,OAAOqmE,EAAMI,iBAAiBF,GAASvmE,MACzFt9B,GAAKqhG,MAAQyC,GAAYliC,OAAO+wB,GAAS,OAcjDuQ,EAAUO,cAAgB,SAAUF,EAAUC,EAAQQ,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,GAAYV,EACXvrG,IAAI,SAAUgI,IAAQ,OAAOA,GAAKmhG,cAClCv/B,OAAO+wB,GAAS,IAChBvnF,OAAO,SAAUszF,IAAS,OAAQA,GAAMjzD,UACxCzzC,IAAI7B,EAAK,OAiBd,OAAOqtG,EAAOxrG,IAZd,YAAiCksG,IAE7B,IAAIC,GAAczT,EAAO,GAAIwT,IAAUA,GAAO1F,aAE1C4F,GAAoBnS,GAAKkS,GAAaH,GAC1CG,GAAcE,GAAKF,GAAaH,GAChC,IAAIM,GAAgBD,GAnBxB,YAAuBpgE,GAAM8C,IACzB,IAAI/mC,GAAOoJ,GAAK66B,GAAM+pD,EAAO,QAASjnD,KACtC,OAAO2pD,EAAO,GAAI1wF,IAAQA,GAAKw+F,aAiBN+F,CAAchB,EAAUW,GAAOn9D,QAAU,GAAIk9D,IAElEO,GAAe9T,EAAOyT,GAAaG,GAAeF,IACtD,OAAO,IAAInD,GAASiD,GAAOn9D,OAAO06D,eAAe+C,KAGnCC,EAKtBvB,EAAUwB,YAAc,SAAUnB,EAAUC,EAAQmB,GAIhD,QAHI5+F,GAAMD,KAAKstF,IAAImQ,EAASxuG,OAAQyuG,EAAOzuG,QACvC6vG,GAAO,EAEJA,GAAO7+F,IAAOw9F,EAASqB,IAAM79D,QAAU49D,GAA0BpB,EAASqB,IADzBhU,OACgC4S,EAAOoB,IADzB1B,EAAU2B,mBAE5ED,KAFa,IAUb9qG,GAAMgrG,GAAUC,GAASC,GAE7BF,IADAhrG,GAAOypG,GACSn0F,MAAM,EAAGw1F,IACzBG,GAAUjrG,GAAKsV,MAAMw1F,IAErB,IAAIK,GAAuBH,GAAS9sG,IAVpC,YAAuBktG,GAActT,IACjC,IAAIuT,GAASD,GAAa1D,QAC1B2D,UAAO3G,YAAcgF,EAAO5R,IAAK4M,YAC1B2G,KAQXH,UAAWxB,EAAOp0F,MAAMw1F,IAEjB,CAAE9qG,KAAMA,GAAMg4B,GADhBmzE,GAAqBp9E,OAAOm9E,IACJF,SAAUA,GAAUG,qBAAsBA,GAAsBF,QAASA,GAASC,SAAUA,KAiB7H9B,EAAUkC,SAAW,SAAUC,EAAOC,EAAOvD,GACzC,IAAIriG,IAAO,EAEX,OADasxF,GAAYqU,EAAOC,GAClB1jC,OAAO,SAAUwjC,GAAUtlF,IACrC,IAAIylF,GAAQzlF,GAAG,GACfpgB,UAAOA,KAAS6lG,GAAM3U,OADK9wE,GAAG,GACMiiF,IACtBqD,GAAWA,GAASv9E,OAAO09E,KAC1C,KAUPrC,EAAUtS,OAAS,SAAUyU,EAAOC,EAAOvD,GACvC,OAAOsD,EAAMtwG,SAAWuwG,EAAMvwG,QAAUmuG,EAAUkC,SAASC,EAAOC,EAAOvD,GAAUhtG,SAAWswG,EAAMtwG,QAYxGmuG,EAAUW,QAAU,SAAU5/D,EAAM65B,GAChC,IAAI99D,EAAOoJ,GAAK66B,EAAM65B,GAClB0nC,GAAavhE,EAAKxrC,QAAQuH,GAC9B,OAAsB,IAAfwlG,QAAoB5tG,EAAYqsC,EAAK70B,MAAM,EAAGo2F,GAAa,IAEtEtC,EAAU2B,iBAAmB,SAAU7kG,GACnC,OAAOA,EAAK+mC,MAAMu6D,WAAW,CAAE71D,SAAS,IAASrgC,OAAO,SAAUszF,GAAS,OAAQA,EAAMp4F,WAG7F48F,EAAU1E,YAAc,SAAUv6D,GAAQ,OAAOA,EAAK29B,OAAO,SAAUiuB,EAAK7vF,GAAQ,OAAO0wF,EAAOb,EAAK7vF,EAAKw+F,cAAiB,KACtH0E,EA7JoB,GCPpBuC,aAEG,OAFHA,cAGI,QCoBXC,GAA4B,WAC5B,WAAoBC,EAAMC,EAAWj2E,EAAMk2E,GAAQ/tG,IAG/C,GAFAkL,KAAK8iG,UAAW,EAChB9iG,KAAKypB,aAAU70B,EACX+tG,aAAgBD,EAChBhV,EAAO1tF,KAAM2iG,WAERzW,GAAW0W,GAAY,CAC5B,GAAI5W,GAAkB2W,GAClB,MAAM,IAAIl5D,MAAM,gDACpB,IAAKyiD,GAAW0W,GACZ,MAAM,IAAIn5D,MAAM,2DACpBzpC,KAAKqG,MAAQs8F,EACb3iG,KAAK6iG,OAASA,GACd7iG,KAAK4iG,UAAYA,EACjB5iG,KAAK2sB,KAAOA,GAAQ,GACpB3sB,KAAKlL,KAAOA,GACZkL,KAAK8iG,cAAoBluG,IAATE,GAChBkL,KAAKypB,QAAUzpB,KAAK8iG,SAAW7V,WAAiBjtF,KAAKlL,WAAQF,UAExDgN,GAAS+gG,IAASA,EAAKt8F,QAAUs8F,EAAK7oG,eAAe,cAAgB6oG,EAAK7oG,eAAe,SAE9F,OAAO,IAAI4oG,EADGC,EACgBt8F,MADhBs8F,EAC+BC,UAD/BD,EACkDh2E,KADlDg2E,EACgEE,OADhEF,EACgF7tG,MAGtG4tG,SAAWjY,UAAUsY,UAAY,SAAUh/D,GACvC,IAAIi/D,EAAahjG,KAAK6iG,QAAU,GAC5BI,EAAel/D,GAASA,EAAMm/D,eAAkB,GACpD,MAAO,CACHnoC,KAAMioC,EAAWjoC,MAAQkoC,EAAYloC,MA5CvC,OA6CEooC,MAAOH,EAAWG,OAASF,EAAYE,OA5CxC,OA4CsEA,EAU7ET,EAAWjY,UAAU5tE,QAAU,SAAUumF,EAAgBrvE,GACrD,IAAI05D,EAAQztF,KACRktF,GAAKD,MAOLjwF,GAAOomG,EAAeC,SAASrjG,MAE/BsjG,GAActjG,KAAK+iG,UADX/lG,IAAQA,GAAK+mC,OACeo/D,MACpCI,GAAoBrX,GAAWoX,IAAeA,GAAchQ,GAUhE,OAAQtzF,KAAKypB,QAAUyjE,GAClBnyB,OACA/wC,KApB2B,WAC5B,OAAOkjE,GAAG72B,IAAI+sC,EAAeI,gBAAgB/V,GAAOz4F,IAAI,SAAUyhG,IAAc,OAAOA,GAAWphG,IAAI+tG,EAAgBrvE,QAoBrH/J,KAjBiB,SAAUy5E,IAAgB,OAAOhW,EAAMmV,UAAUlY,MAAM,KAAM+Y,MAkB9Ez5E,KAAKu5E,IACLv5E,KAboB,SAAUu+D,IAC/BkF,SAAM34F,KAAOyzF,GACbkF,EAAMqV,UAAW,EACjBrV,EAAMmV,UAAY,KAClBvK,2BAA8B5K,EAAO15D,GAC9B05D,EAAM34F,MAQP4uG,EAQdhB,EAAWjY,UAAUp1F,IAAM,SAAU+tG,EAAgBrvE,GACjD,OAAO/zB,KAAKypB,SAAWzpB,KAAK6c,QAAQumF,EAAgBrvE,IAExD2uE,EAAWjY,UAAU74F,SAAW,WAC5B,MAAO,qBAAqBizB,OAAO4iC,GAAUznD,KAAKqG,OAAQ,iBAAiBwe,OAAO7kB,KAAK2sB,KAAK33B,IAAIyyD,IAAY,OAEhHi7C,EAAWjY,UAAU+T,MAAQ,WACzB,OAAO,IAAIkE,EAAW1iG,OAE1B0iG,EAAWiB,SAAW,SAAUt9F,EAAOvR,GAAQ,OAAO,IAAI4tG,EAAWr8F,EAAO,WAAc,OAAOvR,GAAS,KAAM,KAAMA,IAC/G4tG,EArFqB,GCb5BkB,GAAY,CAACC,cAAaA,cAC1BC,GAAc,CAACD,eAERE,GAAwB,kBAW/BC,GAAgC,WAChC,WAAwBC,GACpBjkG,KAAKikG,MAAQA,EAGjBD,SAAevZ,UAAUyZ,UAAY,WACjC,OAAOlkG,KAAKikG,MAAMrlC,OAAO,SAAUiuB,EAAK7vF,GAAQ,OAAO6vF,EAAIhoE,OAAO7nB,EAAKohG,YAAYppG,IAAI,SAAUuwD,GAAK,OAAOA,EAAEl/C,UAAe,IAAIu4D,OAAOkxB,GAAO,KAQpJkU,EAAevZ,UAAU0Z,cAAgB,SAAU99F,GAK/C,OAAOmmF,GAJQxsF,KAAKikG,MACfjvG,IAAI,SAAUgI,GAAQ,OAAOA,EAAKohG,cAClCx/B,OAAO+wB,GAAS,IAChBvnF,OAAO,SAAUm9C,GAAK,OAAOA,EAAEl/C,QAAUA,IAClC+7F,EAGhB4B,EAAevZ,UAAUsY,UAAY,SAAUtM,GAC3C,IAAIz5F,EAAOgD,KAAKqjG,SAAS5M,GACzB,OAAOA,EAAWsM,UAAU/lG,EAAK+mC,QAyBrCigE,EAAevZ,UAAU2Z,WAAa,SAAUrgE,GAC5C,OAAO,IAAIigE,EAAe9D,WAAkBlgG,KAAKikG,MAAO,SAAUjnG,GAAQ,OAAOA,EAAK+mC,QAAUA,MAiBpGigE,EAAevZ,UAAU4Z,eAAiB,SAAUC,EAAgBvgE,GAChE,IAAI/mC,EAAOoJ,GAAKpG,KAAKikG,MAAOjZ,EAAO,QAASjnD,IACxC7wC,GAAOoxG,EAAetvG,IAAI,SAAUuwD,IAAK,OAAOA,GAAEl/C,QACtDrJ,EAAKohG,YAAcphG,EAAKohG,YAAYh2F,OAAO,SAAUm9C,IAAK,OAAiC,IAA1BryD,GAAKuC,QAAQ8vD,GAAEl/C,MAAW,GAAOwe,OAAOy/E,IAS7GN,EAAevZ,UAAU8Z,YAAc,SAAUxpC,EAAMhnC,GACnD,IAAI05D,EAAQztF,UACC,IAAT+6D,IAAmBA,EAAO,QAE9B,IAGIypC,IAHa/V,GAAQmV,GAAW7oC,GAAQA,EAAO,UAGjB0nC,cAA6BqB,GAAcF,GAE7EvL,oBAAuBr4F,KAAKikG,MAAOlpC,EAAMhnC,GACzC,IAAI0wE,GAAgB,SAAUC,GAAcC,IAAe,OAAO,SAAUlO,IACxE,OAAOhI,GAAQiW,GAAcjX,EAAMsV,UAAUtM,IAAYkO,OAIzDC,GAAW5kG,KAAKikG,MAAMrlC,OAAO,SAAUiuB,GAAK7vF,IAC5C,IAAI6nG,GAAkB7nG,GAAKohG,YAAYh2F,OAAOq8F,GAAcD,GAAc,SACtEM,GAASD,GAAgBz8F,OAAOq8F,GAAc,CAAC,UAAW,UAC1DM,GAAOF,GAAgBz8F,OAAOgjF,EAAIqZ,GAAc,CAAC,UAAW,WAE5DL,GAAa3W,EAAM2W,WAAWpnG,GAAK+mC,OACnCihE,GAAY,SAAUz/C,IACtB,OAAOA,GACFlwD,IAAI+uG,GAAYrwE,GAEhB/J,KAAK,SAAU70B,IAAS,MAAQ,CAAEkR,MAAOk/C,GAAEl/C,MAAOlR,MAAOA,OAElE2vG,UAAOlyG,QAAQoyG,IACRnY,GAAIhoE,OAAOkgF,GAAK/vG,IAAIgwG,MAC5B,IAEH,OAAO/X,UAAgB2X,KAE3BZ,EAAevZ,UAAUj8D,SAAW,WAChC,OAAOxuB,KAAKilG,YAAcjlG,KAAKilG,UAAY,IAAIC,GAAellG,QAElEgkG,EAAevZ,UAAU4Y,SAAW,SAAU5M,GAC1C,OAAOrwF,GAAKpG,KAAKikG,MAAO,SAAUjnG,GAAQ,OAAOyxF,GAAQzxF,EAAKohG,YAAa3H,MAO/EuN,EAAevZ,UAAU+Y,gBAAkB,SAAU/M,GACjD,IAAIhJ,EAAQztF,KACRhD,EAAOgD,KAAKqjG,SAAS5M,GAIrB0O,IADUjF,WAAkBlgG,KAAKikG,MAAO,SAAU5sD,IAAK,OAAOA,KAAMr6C,KAAYgD,KAAKikG,OAEpFrlC,OAAO,SAAUiuB,GAAKuY,IAAS,OAAOvY,GAAIhoE,OAAOugF,GAAMhH,cAAiB,IACxEh2F,OAAO,SAAUm2F,IAAO,OAAOA,KAAQ9H,IAW5C,OAAOA,EAAW9pE,KAAK33B,IAVH,SAAUqR,IAC1B,IAAI+7F,GAAW+C,GAAqB/8F,OAAO,SAAUm9C,IAAK,OAAOA,GAAEl/C,QAAUA,KAC7E,GAAI+7F,GAASrwG,OACT,OAAOy6F,GAAK4V,IAChB,IAAIiD,GAAe5X,EAAMj/D,WAAW82E,UAAUj/F,IAC9C,GAAIwlF,GAAYwZ,IACZ,MAAM,IAAI57D,MAAM,8CAAgDge,GAAUphD,KAE9E,OAAO,IAAIq8F,GAAWr8F,GAAO,WAAc,OAAOg/F,IAAiB,GAAIA,KAEhDE,EAExBvB,EAhJyB,GAoJhCkB,GAAgC,WAChC,WAAwBjoG,GACpB+C,KAAK/C,QAAUA,EACf+C,KAAKwlG,OAASxlG,KAAK3K,IAAI0uG,KAA0B9W,aAErDiY,SAAeza,UAAUp1F,IAAM,SAAUgR,GACrC,IAAIowF,EAAaz2F,KAAK/C,QAAQknG,cAAc99F,GAC5C,GAAIowF,EAAY,CACZ,GAAiD,WAA7Cz2F,KAAK/C,QAAQ8lG,UAAUtM,GAAY0M,MACnC,OAAO1M,EAAWphG,IAAI2K,KAAK/C,SAE/B,IAAKw5F,EAAWqM,SACZ,MAAM,IAAIr5D,MAAM,wCAA0Cge,GAAUgvC,EAAWpwF,QAEnF,OAAOowF,EAAW3hG,KAEtB,OAAOkL,KAAKslG,UAAUj/F,IAE1B6+F,EAAeza,UAAUgb,SAAW,SAAUp/F,GAC1C,IAAIowF,EAAaz2F,KAAK/C,QAAQknG,cAAc99F,GAC5C,OAAIowF,EACOA,EAAWphG,IAAI2K,KAAK/C,SACxBgwF,WAAiBjtF,KAAKwlG,OAAOnwG,IAAIgR,KAE5C6+F,EAAeza,UAAU6a,UAAY,SAAUj/F,GAC3C,OAAOrG,KAAKwlG,QAAUxlG,KAAKwlG,OAAOnwG,IAAIgR,IAEnC6+F,EA3ByB,GChKpC,YAAqBnhE,GACjB,OAAOA,EAAMhjC,KAEjB,YAAqBgjC,GACjBA,SAAM8vB,KAAK6xC,QAAU,WAAc,OAAO3hE,GACnCA,EAAM8vB,KAEjB,YAAqB9vB,GACjB,OAAIA,EAAM3tC,QAAU2tC,EAAM3tC,OAAOtB,OAC7BivC,EAAMjvC,KAAOivC,EAAM8vB,KAAK/+D,KAAO2zC,GAAQ1E,EAAM3tC,OAAOtB,KAAMivC,EAAMjvC,OAE7DivC,EAAMjvC,KAEjB,IAAI6wG,GAAgB,SAAUC,EAA4B1nF,GACtD,OAAO,SAAoB2nF,GACvB,IAAIC,GAAWD,EAAYhyC,KAG3B,GAAIiyC,IAAYA,GAASv2E,KAAOu2E,GAAS/kG,MAAQ+kG,GAAS/kG,KAAKvH,MAAM,WAAY,CAC7E,IAAIusG,GAAc,GAClBC,GAAKF,GAAUC,IACfA,GAAYx2E,KAAO,kBACnBu2E,GAAWC,GAEf,IAAI3vG,GAASyvG,EAAYzvG,OACrB6vG,GA/BG,SAAU12E,GACrB,IAAK68D,GAAS78D,GACV,OAAO,EACX,IAAIrR,EAAyB,MAAlBqR,EAAI73B,OAAO,GACtB,MAAO,CAAE8V,IAAK0Q,EAAOqR,EAAI75B,UAAU,GAAK65B,EAAKrR,KAAMA,GA2BlCgoF,CAASJ,GAASv2E,KAC3BA,GAAM42E,GAAyBP,EAA2BQ,QAAQH,GAAOz4F,IAAK,CAAEu2B,MAAO+hE,KAAvEA,GAASv2E,IAC7B,IAAKA,GACD,OAAO,KACX,IAAKq2E,EAA2BS,UAAU92E,IACtC,MAAM,IAAIka,MAAM,gBAAgB5kB,OAAO0K,GAAK,gBAAgB1K,OAAOghF,EAAa,MACpF,OAAOI,IAAUA,GAAO/nF,KAAOqR,IAAQn5B,IAAUA,GAAOkwG,WAAcpoF,KAAQqR,IAAItoB,OAAOsoB,MAG7Fg3E,GAAsB,SAAUC,GAChC,OAAO,SAA0BziE,GAC7B,OAAQyiE,EAAOziE,IAAUA,EAAMxU,IAAMwU,EAAQA,EAAM3tC,OAAS2tC,EAAM3tC,OAAOkwG,UAAY,OAGzFG,GAAmB,SAAUC,GAC7B,OAAO,SAAuB3iE,GAC1B,IACI4iE,GAAa5iE,EAAMxU,KAAOwU,EAAMxU,IAAI+uE,WAAW,CAAE71D,SAAS,KAAa,GACvEm+D,GAAe1kG,GAAOstF,GAAO6R,GAAKt9D,EAAMloC,QAAU,GAAI8qG,GAAU3xG,IAAI7B,EAAK,QAFvD,SAAUk6B,GAAQpa,IAAM,OAAOyzF,EAAaG,WAAW5zF,GAAI,KAAM8wB,EAAM8vB,SAG7F,OAAO8yC,GACF9hF,OAAO+hF,IACP5xG,IAAI,SAAUqlB,IAAK,MAAO,CAACA,GAAEpH,GAAIoH,MACjCukD,OAAO+/B,GAAY,MAGhC,YAAqB56D,GACjB,OAAOA,EAAM3tC,OAAS2tC,EAAM3tC,OAAO6qC,KAAKpc,OAAOkf,GAAkB,CAACA,GAEtE,YAAyBA,GACrB,IAAIkG,EAAWlG,EAAM3tC,OAASs3F,EAAO,GAAI3pD,EAAM3tC,OAAO6zC,UAAY,GAClEA,SAASlG,EAAMhjC,OAAQ,EAChBkpC,EA2CJ,YAA4BlG,GAE/B,IAA+B+iE,GAAYrE,GA2BvCsE,GAAW,SAAU1sF,IAAK,OAAOA,GAAE+R,SAAW/R,GAAEhU,OAEhD2gG,GAAqBrgB,GAAQ,CAC7B,CAACxzF,EAAK,aAAc,SAAUknB,IAAK,OAAO,IAAIqoF,GAAWqE,GAAS1sF,IAAIA,GAAEuoF,UAAWvoF,GAAEsS,KAAMtS,GAAEwoF,UAC7F,CAAC1vG,EAAK,cAAe,SAAUknB,IAAK,OAAO,IAAIqoF,GAAWqE,GAAS1sF,IAAIA,GAAEkS,WAAYlS,GAAEsS,MAAQtS,GAAE4sF,aAAc5sF,GAAEwoF,UACjH,CAAC1vG,EAAK,YAAa,SAAUknB,IAAK,OAAO,IAAIqoF,GAAWqE,GAAS1sF,IAAI,WAAc,OAAO,IAAIA,GAAEgS,UAAe,GAAIhS,GAAEwoF,UACrH,CAAC1vG,EAAK,YAAa,SAAUknB,IAAK,OAAO,IAAIqoF,GAAWqE,GAAS1sF,IAAI,WAAc,OAAOA,GAAE2S,UAAa,GAAI3S,GAAEwoF,OAAQxoF,GAAE2S,YACzH,CAAC75B,EAAK,eAAgB,SAAUknB,IAAK,OAAO,IAAIqoF,GAAWqE,GAAS1sF,IAAIi5E,GAAU,CAACj5E,GAAE6sF,aAAc7sF,GAAEwoF,YAGrGsE,GAAmBxgB,GAAQ,CAC3B,CAACvmD,GAAKjtC,EAAK,OAAQi5F,IAAW,SAAU5nF,IAAS,OAAO,IAAIk+F,GAAWl+F,GAAM6B,MAAOitF,GAAU,CAAC9uF,GAAMgJ,KAAMhJ,GAAMq+F,UACjH,CAACziE,GAAKjtC,EAAK,OAAQsI,IAAU,SAAU+I,IAAS,OAAO,IAAIk+F,GAAWl+F,GAAM6B,MAAOmmF,GAAKhoF,GAAMgJ,KAAMhJ,GAAMgJ,IAAIpB,MAAM,GAAG,GAAK5H,GAAMq+F,UAClI,CAACziE,GAAKjtC,EAAK,OAAQ+4F,IAAa,SAAU1nF,IAAS,OAAO,IAAIk+F,GAAWl+F,GAAM6B,MAAO7B,GAAMgJ,IA/BjF,SAAU4C,IACrB,IAAI+8E,GAAYF,aAIhB,OAAO78E,GAAGg3F,SAAeja,IAAaA,GAAUka,SAASj3F,GAAI+8E,GAAUma,WAAc,WA0BYD,CAAS7iG,GAAMgJ,KAAMhJ,GAAMq+F,YAG5H0E,GAAkB5gB,GAAQ,CAC1B,CAAC6E,EAAGkX,IAAa,SAAUn9C,IAAK,OAAOA,KACvC,CA5BmB,SAAU/qD,IAAO,SAAUA,GAAI6L,QAAS7L,GAAIooG,YA4B5CoE,IACnB,CA3BoB,SAAUxsG,IAC9B,SAAWA,GAAI4xB,UAAW5xB,GAAI6L,SAAW7L,GAAIwyB,UAAYxyB,GAAI+xB,YAAc/xB,GAAI0sG,aAAe1sG,GAAI6xB,YA0B9E26E,IACpB,CAxBiB,SAAUxsG,IAC3B,SAAUA,IAAOA,GAAIgT,MAAQ4+E,GAAS5xF,GAAIgT,MAAQ/R,GAAQjB,GAAIgT,MAAQ0+E,GAAW1xF,GAAIgT,QAuBpE25F,IACjB,CAAC35F,IAAI,GAAO,SAAUhT,IAAO,MAAM,IAAIivC,MAAM,0BAA4Bge,GAAUjtD,SAInFgtG,GAAOzjE,EAAMlnB,QAEjB,OADYphB,GAAQ+rG,IAAQA,IArDGV,GAqDmBU,GArDP/E,GAqDa1+D,EAAMm/D,eAAiB,GApDpEjwG,OAAOC,KAAK4zG,IAAc,IAAI9xG,IAAI,SAAUqR,IAAS,MAAQ,CAChEA,MAAOA,GACPmH,IAAKs5F,GAAWzgG,IAChBsmB,UAAM/3B,EACNiuG,OAAQJ,GAAgBp8F,SAiDnBrR,IAAIuyG,IAcrB,IAAIE,GAA8B,WAC9B,WAAsBnI,EAASoI,GAC3B1nG,KAAKs/F,QAAUA,EACf,IAAIzrC,EAAO7zD,KACPke,GAAO,WAAc,OAAOohF,EAAQl5F,KAAK,KACzCogG,GAAS,SAAUziE,IAAS,MAAsB,KAAfA,GAAMhjC,IAAS,EAMtDf,KAAK2nG,SAAW,CACZ5mG,KAAM,CAAC6mG,IACP/zC,KAAM,CAACg0C,IACPzxG,OAAQ,CARZ,YAAuB2tC,IACnB,OAAIyiE,GAAOziE,IACA,KACJu7D,EAAQl5F,KAAKytD,EAAKi0C,WAAW/jE,MAAW7lB,OAM/CppB,KAAM,CAACizG,IAEPx4E,IAAK,CAACo2E,GAAc+B,EAAmBxpF,KAEvCooF,UAAW,CAACC,GAAoBC,KAChC3qG,OAAQ,CAAC4qG,GAAiBiB,EAAkBhB,eAG5CrI,MAAO,GAEPp9D,KAAM,CAAC+mE,IAEP/9D,SAAU,CAACg+D,IACX7J,YAAa,CAAC8J,KAGtBT,SAAahd,UAAU3+E,QAAU,SAAU/K,EAAMqP,GAC7C,IAAIu3F,EAAW3nG,KAAK2nG,SAChBjZ,GAAQiZ,EAAS5mG,IAAS,GAE9B,OAAIqrF,GAASrrF,KAAU+qF,EAAU17E,GACtBs+E,GAAM38F,OAAS,EAAI28F,GAAQA,GAAM,GACvCtC,GAASrrF,IAAUmrF,GAAW97E,IAEnCu3F,EAAS5mG,GAAQ2tF,GACjBiZ,EAAS5mG,GAAMrN,KAAK0c,GACb,WAAc,OAAOu3F,EAAS5mG,GAAMzG,OAAOqtG,EAAS5mG,GAAMtL,QAAQ2a,EAAI,KAAO,YAJpF,CAIoF,EASxFq3F,EAAahd,UAAU5qF,MAAQ,SAAUkkC,GACrC,IAAeu7D,EAANt/F,KAAmBs/F,QAASqI,GAA5B3nG,KAA0C2nG,SAC/CvxG,GAAS4J,KAAK8nG,WAAW/jE,GAC7B,GAAI3tC,KAAWkpG,EAAQl5F,KAAKhQ,QAAQxB,GAAW,GAC3C,OAAO,KAEX,QAASK,MAAO0yG,GACZ,GAAKA,GAAS7tG,eAAe7E,IAE7B,KAAIkzG,GAAQR,GAAS1yG,IAAK2pE,OAAO,SAAUwpC,GAAUxlG,IAAQ,OAAO,SAAUqiB,IAAU,OAAOriB,GAAKqiB,GAAQmjF,MAAiBtU,IAC7H/vD,EAAM9uC,IAAOkzG,GAAMpkE,GAEvB,OAAOA,GAEX0jE,EAAahd,UAAUqd,WAAa,SAAU/jE,GAE1C,IAAIhjC,EAAOgjC,EAAMhjC,MAAQ,GAErBsnG,EAAWtnG,EAAK1C,MAAM,KAM1B,GAFoB,OAFFgqG,EAAS7zC,OAGvB6zC,EAAS7zC,MACT6zC,EAASt2G,OAAQ,CACjB,GAAIgyC,EAAM3tC,OACN,MAAM,IAAIqzC,MAAM,mFAAmF5kB,OAAO9jB,EAAM,MAGpH,OAAOsnG,EAAS7mD,KAAK,KAEzB,OAAKzd,EAAM3tC,OAEJg2F,GAASroD,EAAM3tC,QAAU2tC,EAAM3tC,OAAS2tC,EAAM3tC,OAAO2K,KADjD,IAGf0mG,EAAahd,UAAU1pF,KAAO,SAAUgjC,GACpC,IAAIhjC,EAAOgjC,EAAMhjC,KACjB,IAA0B,IAAtBA,EAAKtL,QAAQ,OAAgBsuC,EAAM3tC,OACnC,OAAO2K,EACX,IAAI+mG,EAAa1b,GAASroD,EAAM3tC,QAAU2tC,EAAM3tC,OAAS2tC,EAAM3tC,OAAO2K,KACtE,OAAO+mG,EAAaA,EAAa,IAAM/mG,EAAOA,GAE3C0mG,EA5FuB,GCvK9Ba,GAA6B,WAE7B,WAAqBj7E,GACjB,OAAOi7E,EAAYv7F,OAAOsgB,GAAU,IAUxCi7E,SAAYv7F,OAAS,SAAUw7F,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAIxkE,EAAQ0E,GAAQA,GAAQ8/D,EAAWD,EAAY7d,YACnD8d,SAAU7C,QAAU,WAAc,OAAO3hE,GACzCA,EAAM8vB,KAAO00C,EACbxkE,EAAM0kE,mBAAqB,CACvBC,SAAU/X,cAAgB5sD,EAAMhjC,OAE7BgjC,GAaXukE,EAAY7d,UAAUe,GAAK,SAAUmd,GACjC,OAAO3oG,OAAS2oG,GAAO3oG,KAAK6zD,OAAS80C,GAAO3oG,KAAK00F,QAAUiU,GAM/DL,EAAY7d,UAAUiK,IAAM,WACxB,KAAK10F,KAAK5J,QAAY4J,KAAK5J,kBAAkB4J,KAAKF,aAC9C,OAAOE,KAAKe,KAChB,IAAIA,EAAOf,KAAK5J,OAAOs+F,MACvB,OAAO3zF,EAAOA,EAAO,IAAMf,KAAKe,KAAOf,KAAKe,MAOhDunG,EAAY7d,UAAUvsE,KAAO,WACzB,OAAQle,KAAK5J,QAAU4J,KAAK5J,OAAO8nB,QAAWle,MAWlDsoG,EAAY7d,UAAU6T,WAAa,SAAUxP,GAGzC,QAFAA,EAAO8Z,GAAS9Z,EAAM,CAAErmD,SAAS,EAAMogE,aAAc,QAC/BpgE,SAAWzoC,KAAK5J,QAAU4J,KAAK5J,OAAOkoG,cAAiB,IAExEz5E,OAAO3iB,GAAOlC,KAAKnE,SACnBuM,OAAO,SAAUszF,GAAS,OAAQ5M,EAAK+Z,cAAgB/Z,EAAK+Z,aAAa/uG,eAAe4hG,EAAMzoF,OASvGq1F,EAAY7d,UAAUqU,UAAY,SAAU7rF,EAAI67E,GAC5C,YAAa,IAATA,IAAmBA,EAAO,IACrB9uF,KAAKuvB,KAAOvvB,KAAKuvB,IAAIuvE,UAAU7rF,EAAI67E,IACxC1oF,GAAKlE,GAAOlC,KAAKnE,QAASmvF,EAAO,KAAM/3E,KACtC67E,EAAKrmD,SAAWzoC,KAAK5J,QAAU4J,KAAK5J,OAAO0oG,UAAU7rF,IAE9Dq1F,EAAY7d,UAAU74F,SAAW,WAC7B,OAAOoO,KAAK00F,OAGhB4T,EAAYE,aAAe,SAAUD,GACjC,OAAOrc,GAAWqc,KAA+C,IAAjCA,EAAUO,eAAuB,EAGrER,EAAYS,mBAAqB,SAAUvuG,GAAO,OAAO0xF,GAAW1xF,EAAIkrG,UAExE4C,EAAYU,QAAU,SAAUxuG,GAAO,OAAOoH,GAASpH,EAAIiuG,qBACpDH,EA/FsB,GCX7BW,GAA8B,WAC9B,WAAsBC,GAClBlpG,KAAKkpG,QAAUA,EAEnBD,SAAaxe,UAAU0e,WAAa,SAAU54F,GAC1CA,OACkC,KADlCA,EAAYA,GAAa,IACR9a,QAAQ,MAAyC,IAA3B8a,EAAU9a,QAAQ,IAAS,EAEtEwzG,EAAaxe,UAAUrkF,KAAO,SAAUgjG,EAAaxJ,EAAMyJ,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCD,GAA+B,KAAhBA,EAEpB,KAAIE,GAAQld,GAASgd,GACjBroG,GAAOuoG,GAAQF,EAAcA,EAAYroG,KACzCf,KAAKmpG,WAAWpoG,MAChBA,GAAOf,KAAKukG,YAAYxjG,GAAM6+F,IAClC,IAAI77D,GAAQ/jC,KAAKkpG,QAAQnoG,IACzB,GAAIgjC,KAAUulE,KAAWA,KAAUvlE,KAAUqlE,GAAerlE,GAAM8vB,OAASu1C,IACvE,OAAOrlE,GAEN,GAAIulE,IAASD,EAAW,CACzB,IACI9vG,GADU2I,GAAOlC,KAAKkpG,SACJ9gG,OAAO,SAAU6c,IAAU,OAAOA,GAAOwjF,mBAAmBC,UAAYzjF,GAAOwjF,mBAAmBC,SAASnvG,QAAQwH,MACzI,OAAIxH,GAAQxH,OAAS,GACjBiiG,SAAkB,iDAAiDnvE,OAAO9jB,GAAM,iBAAkBxH,GAAQvE,IAAI,SAAUwE,IAAS,OAAOA,GAAMuH,QAE3IxH,GAAQ,MAIvB0vG,EAAaxe,UAAU8Z,YAAc,SAAUxjG,EAAM6+F,GACjD,IAAKA,EACD,MAAM,IAAIn2D,MAAM,sCAAsC5kB,OAAO9jB,EAAM,MAKvE,QAJIwoG,EAAYvpG,KAAKoG,KAAKw5F,GACtB4J,GAAYzoG,EAAK1C,MAAM,KACvBorG,GAAaD,GAAUz3G,OACvB+I,GAAI,EAAGwsD,GAAUiiD,EACdzuG,GAAI2uG,GAAY3uG,KACnB,GAAqB,KAAjB0uG,GAAU1uG,KAAmB,IAANA,GAA3B,CAIA,GAAqB,MAAjB0uG,GAAU1uG,IAMd,MALI,IAAKwsD,GAAQlxD,OACT,MAAM,IAAIqzC,MAAM,SAAS5kB,OAAO9jB,EAAM,2BAA2B8jB,OAAO0kF,EAAUxoG,KAAM,MAC5FumD,GAAUA,GAAQlxD,MALlB,MADAkxD,GAAUiiD,EAWlB,IAAIG,GAAUF,GAAUp9F,MAAMtR,IAAG0mD,KAAK,KACtC,OAAO8F,GAAQvmD,MAAQumD,GAAQvmD,MAAQ2oG,GAAU,IAAM,IAAMA,IAE1DT,EArDuB,GCD9BU,GAAmC,WACnC,WAA2Bx1E,EAAQtzB,EAAQiL,EAAS0K,IAChDxW,KAAKm0B,OAASA,EACdn0B,KAAKa,OAASA,EACdb,KAAK8L,QAAUA,EACf9L,KAAKwW,UAAYA,GACjBxW,KAAK4pG,MAAQ,GAEjBD,SAAkBlf,UAAUhlC,QAAU,WAClCzlD,KAAK4pG,MAAQ,IAEjBD,EAAkBlf,UAAUz3E,SAAW,SAAUu1F,GAC7C,IAAIqB,EAAQ5pG,KAAK4pG,MACb7lE,EAAQukE,UAAmBC,GAC3BxnG,GAAOgjC,EAAMhjC,KACjB,IAAKqrF,GAASrrF,IACV,MAAM,IAAI0oC,MAAM,gCACpB,GAAIzpC,KAAKa,OAAO/G,eAAeiH,KAAS0tF,GAAQmb,EAAM50G,IAAI7B,EAAK,SAAU4N,IACrE,MAAM,IAAI0oC,MAAM,UAAU5kB,OAAO9jB,GAAM,yBAC3C6oG,SAAMl2G,KAAKqwC,GACX/jC,KAAKgd,QACE+mB,GAEX4lE,EAAkBlf,UAAUztE,MAAQ,WAchC,QAbIywE,EAAQztF,KACR8c,EAAK9c,KAAM4pG,EAAQ9sF,EAAG8sF,MAAO/oG,GAASic,EAAGjc,OAAQiL,GAAUgR,EAAGhR,QAC9D+9F,GAAa,GACjBC,GAAU,GACVC,GAAsB,GAClBC,GAAW,SAAUjpG,IAAQ,OAAO0sF,EAAM5sF,OAAO/G,eAAeiH,KAAS0sF,EAAM5sF,OAAOE,KACtFkpG,GAAkB,WACdJ,GAAW93G,QACX07F,EAAMj3E,UAAU5jB,QAAQ,SAAUqmB,IAC9B,OAAOA,GAAS,aAAc4wF,GAAW70G,IAAI,SAAU0N,IAAK,OAAOA,GAAEmxD,WAI1E+1C,EAAM73G,OAAS,GAAG,CACrB,IAAIgyC,GAAQ6lE,EAAMh6C,QACds6C,GAASnmE,GAAMhjC,KACfxJ,GAASuU,GAAQjM,MAAMkkC,IACvBomE,GAAYL,GAAQr0G,QAAQsuC,IAChC,GAAIxsC,GAAJ,CACI,IAAI6yG,GAAgBJ,GAASE,IAC7B,GAAIE,IAAiBA,GAAcrpG,OAASmpG,GACxC,MAAM,IAAIzgE,MAAM,UAAU5kB,OAAOqlF,GAAQ,yBAE7C,IAAIG,GAAsBL,GAASE,GAAS,OACxCG,IAEArqG,KAAKm0B,OAAOm2E,cAAcxyF,WAAWuyF,IAEzCxpG,GAAOqpG,IAAUnmE,GACjB/jC,KAAKuqG,YAAYxmE,IACbomE,IAAa,GACbL,GAAQxvG,OAAO6vG,GAAW,GAC9BN,GAAWn2G,KAAKqwC,GAChB,KAfJ,CAiBA,IAAIymE,GAAOT,GAAoBG,IAE/B,GADAH,GAAoBG,IAAUN,EAAM73G,OAChCo4G,IAAa,GAAKK,KAASZ,EAAM73G,OAGjC63G,SAAMl2G,KAAKqwC,IACXkmE,KACOppG,GAEFspG,GAAY,GACjBL,GAAQp2G,KAAKqwC,IAEjB6lE,EAAMl2G,KAAKqwC,GAdP,CAcOA,CAEfkmE,YACOppG,IAEX8oG,EAAkBlf,UAAU8f,YAAc,SAAUxmE,GAChD,IAAIA,EAAMvQ,UAAauQ,EAAMxU,IAE7B,KAAIk7E,EAAWzqG,KAAKm0B,OAAO1F,WAAWoqC,MACtC4xC,EAAS17D,KAAK07D,EAASC,eAAe39F,OAAOg3B,MAE1C4lE,EAlF4B,GCQnCgB,GAA+B,WAE/B,WAAuBx2E,GACnBn0B,KAAKm0B,OAASA,EACdn0B,KAAKa,OAAS,GAEdb,KAAKwW,UAAY,GACjBxW,KAAKs/F,QAAU,IAAI2J,GAAajpG,KAAKa,QACrCb,KAAK8L,QAAU,IAAI27F,GAAaznG,KAAKs/F,QAASnrE,EAAOuzE,mBACrD1nG,KAAK4qG,WAAa,IAAIjB,GAAkBx1E,EAAQn0B,KAAKa,OAAQb,KAAK8L,QAAS9L,KAAKwW,WAChFxW,KAAK6qG,gBAGTF,SAAclgB,UAAUogB,cAAgB,YAUvB7qG,KAAK8qG,MAAQ9qG,KAAK4qG,WAAW53F,SATvB,CACfjS,KAAM,GACNwuB,IAAK,IACL8uE,MAAO,KACPxiG,OAAQ,CACJ,IAAK,CAAE1G,MAAO,KAAM+H,KAAM,OAAQoG,SAAS,IAE/CkwB,UAAU,KAGR8yE,UAAY,MAGtBqE,EAAclgB,UAAUhlC,QAAU,WAC9B,IAAIgoC,EAAQztF,KACZA,KAAK4qG,WAAWnlD,UAChBzlD,KAAKwW,UAAY,GACjBxW,KAAK3K,MAAMzC,QAAQ,SAAUmxC,GAAS,OAAO0pD,EAAMp4F,IAAI0uC,IAAU0pD,EAAM31E,WAAWisB,MAgCtF4mE,EAAclgB,UAAUsgB,gBAAkB,SAAU9xF,GAChD,YAAKzC,UAAU9iB,KAAKulB,GACb,WACH01E,GAAW3uF,KAAKwW,UAAhBm4E,CAA2B11E,IAC7B2yC,KAAK5rD,OAWX2qG,EAAclgB,UAAUvsE,KAAO,WAC3B,OAAOle,KAAK8qG,OAchBH,EAAclgB,UAAUz3E,SAAW,SAAUg4F,GACzC,OAAOhrG,KAAK4qG,WAAW53F,SAASg4F,IAGpCL,EAAclgB,UAAUwgB,gBAAkB,SAAUlnE,GAChD,IAAI0pD,EAAQztF,KACRq2D,EAAMr2D,KAAK3K,MAAML,IAAI,SAAU0N,IAAK,OAAOA,GAAEgjG,YAC7CwF,GAAc,SAAUrqG,IACxB,IAAIsqG,GAAY90C,EAAIjuD,OAAO,SAAU1F,IAAK,OAAoC,IAA7B7B,GAAOpL,QAAQiN,GAAEtM,OAAY,GAC9E,OAA4B,IAArB+0G,GAAUp5G,OAAeo5G,GAAYA,GAAUtmF,OAAOqmF,GAAYC,MAEzEv0C,GAAWs0C,GAAY,CAACnnE,IACxBqnE,GAAe,CAACrnE,GAAOlf,OAAO+xC,IAAUm0B,UAC5CqgB,UAAax4G,QAAQ,SAAUqyB,IAC3B,IAAIwlF,GAAWhd,EAAMt5D,OAAO1F,WAAWoqC,MAEvC4xC,GACK5xC,QACAzwD,OAAO4iF,EAAO,QAAS/lE,KACvBryB,QAAQ,SAAUm8C,IAAQ,OAAO07D,GAASY,WAAWt8D,aAEnD0+C,EAAM5sF,OAAOokB,GAAOlkB,QAExBqqG,IAWXT,EAAclgB,UAAU3yE,WAAa,SAAUsxF,GAC3C,IAAInkF,EAASjlB,KAAK3K,IAAI+zG,GACtB,IAAKnkF,EACD,MAAM,IAAIwkB,MAAM,sCAAwC2/D,GAC5D,IAAIkC,EAAqBtrG,KAAKirG,gBAAgBhmF,EAAOygF,WACrD,YAAKlvF,UAAU5jB,QAAQ,SAAUqmB,IAC7B,OAAOA,GAAS,eAAgBqyF,EAAmBt2G,IAAI,SAAU0N,IAAK,OAAOA,GAAEmxD,UAE5Ey3C,GAEXX,EAAclgB,UAAUp1F,IAAM,SAAU+zG,EAAaxJ,GACjD,IAAInS,EAAQztF,KACZ,GAAyB,IAArBuqF,UAAUx4F,OACV,OAAOkB,OAAOC,KAAK8M,KAAKa,QAAQ7L,IAAI,SAAU+L,IAAQ,OAAO0sF,EAAM5sF,OAAOE,IAAM8yD,OACpF,IAAIr4C,GAAQxb,KAAKs/F,QAAQl5F,KAAKgjG,EAAaxJ,GAC3C,OAAQpkF,IAASA,GAAMq4C,MAAS,MAYpC82C,EAAclgB,UAAU8gB,UAAY,SAAU7mF,EAAU8mF,GACpD,OAAOxrG,KAAK8L,QAAQA,QAAQ4Y,EAAU8mF,IAEnCb,EA7JwB,GCV/Bc,GAAmB,MACtB,OAAUA,EAMRA,KAAwBA,GAAsB,KALzBA,EAAoBC,OAAY,GAAK,SACzDD,EAAoBA,EAAoBE,OAAY,GAAK,SACzDF,EAAoBA,EAAoBG,IAAS,GAAK,MACtDH,EAAoBA,EAAoBI,QAAa,GAAK,UAC1DJ,EAAoBA,EAAoBzZ,MAAW,GAAK,QANxDyZ,GACH,IAAUA,CADPA,EAAmB,GAQnBK,GAAmB,MACtB,OAAUA,EAGRA,KAAwBA,GAAsB,KAFzBA,EAAoBjX,WAAgB,GAAK,aAC7DiX,EAAoBA,EAAoBC,MAAW,GAAK,QAHxDD,GACH,IAAUA,CADPA,EAAmB,GCCnBr/C,GAAiB,CACjBnF,QAASwsC,GACTzyF,WAAY,KACZ2qG,UAAW,GACXpgD,KAAM,MAENqgD,GAAgC,WAChC,WAAwB5qG,EAAY6qG,EAAchW,EAAgB30F,IAC9D,IAAIksF,GAAQztF,KACZA,KAAKqB,WAAaA,EAClBrB,KAAKksG,aAAeA,EACpBlsG,KAAKk2F,eAAiBA,EACtBl2F,KAAKuB,QAAUA,GACfvB,KAAKmsG,aAAe,WAAc,OAAO1e,GAAMvwF,KAAKkvG,YAAcX,SAA4Bhe,GAAMlsF,QAAQF,WAAWgrG,YACvHrsG,KAAKuB,QAAUqnG,GAASrnG,GAASkrD,IACjCzsD,KAAK9C,KAAOg5F,EAAeoW,UAoB/BL,SAAe9D,MAAQ,SAAUoE,EAAOC,GAGpC,OAAOD,EAAM3tC,OADU,SAAU4rC,GAAMiC,IAAY,OAAOjC,GAAKxgF,KAAK,WAAc,OAAOyiF,GAASC,gBAC5DF,GAAWvf,eAarDgf,EAAeU,YAAc,SAAUJ,EAAOK,GAC1C,QAAShe,EAAM,EAAGA,EAAM2d,EAAMx6G,OAAQ68F,IAAO,CACzC,IAAIyH,GAAakW,EAAM3d,GAAK8d,aAC5B,GAAIjgB,GAAU4J,IAAa,CACvB,IAAIwW,GAAiBN,EAAMngG,MAAMwiF,EAAM,GACvC,OAAOqd,EAAe9D,MAAM0E,GAAgBxW,IAAYrsE,KAAK4iF,IAGrE,OAAOA,KAKXX,EAAea,YAAc,SAAUP,GACnCA,EAAM35G,QAAQ,SAAUm6G,GAAQ,OAAOA,EAAKL,gBAEhDT,EAAexhB,UAAUuiB,SAAW,SAAUj8E,GAC1C/wB,KAAKqB,WAAW8yB,OAAOY,aAAak4E,qBAApCjtG,CAA0D+wB,IAE9Dk7E,EAAexhB,UAAUiiB,WAAa,WAClC,IAAIjf,EAAQztF,KACR+sG,EAAO/sG,KAAKk2F,eAChB,IAAI6W,EAAKG,cAET,KAAIC,EAAantG,KAAKotG,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI5rG,GAAUvB,KAAKuB,QACnB82F,uBAA0Br4F,KAAMA,KAAKqB,WAAYE,IACjD,IAEI8rG,GAAc,SAAUt8E,IAAO,OAAOg8E,EAAKT,UAAUgB,gBAAgB7f,EAA/Bsf,CAAsCh8E,KAC5Ew8E,GAAe,SAAUh2G,IAAU,OAAOw1G,EAAKT,UAAUkB,iBAAiB/f,EAAhCsf,CAAuCx1G,KACrF,IACI,IAAIA,GALkCw1G,EAAK/4G,SAASnC,KAAK0P,GAAQqqD,KAAM6hC,EAAMpsF,WAAYosF,EAAMye,cAM/F,OAAKlsG,KAAK9C,KAAKuwG,aAAehhB,GAAUl1F,IAC7BA,GAAOu5B,MANH,SAAUC,IAAO,OAAOkhE,aAAoBlhE,IAAKmyC,cAM1Bl5C,KAAKujF,GAAcF,IAG9CE,GAAah2G,GASfugB,CATevgB,MAGrBw5B,IAEH,OAAOs8E,GAAYpb,aAAoBlhE,aAGnCg8E,EAAKW,eAAiBX,EAAKY,aAAeZ,EAAKW,aAC/CX,EAAKj1F,gBAajBm0F,EAAexhB,UAAUmjB,iBAAmB,SAAUr2G,GAClD,IAAIk2F,EAAQztF,KAEZ,OADiBA,KAAKotG,2BAIlB3gB,GAAUl1F,GAEHA,EAAOyyB,KAAK,SAAUxc,IAAO,OAAOigF,EAAMmgB,iBAAiBpgG,OAEtE6qF,mBAAsB9gG,EAAQyI,KAAKqB,WAAYrB,KAAKuB,UAErC,IAAXhK,EAEO06F,WAAkB,2BAA2B/uB,YAEpCsoB,EAAGwT,GAEnB6O,CAAct2G,GAEP06F,cAAqB16F,GAAQ2rE,iBAFxC,GAEwCA,EAO5C+oC,EAAexhB,UAAU2iB,uBAAyB,WAC9C,IAAIj5E,EAASn0B,KAAKqB,WAAW8yB,OAE7B,OAAIA,EAAO25E,UACA7b,WAAkB,sBAAsBptE,OAAOsP,EAAOg+D,IAAK,iCAAiCjvB,YAEnGljE,KAAKqB,WAAW0sG,SACT9b,aAAoB/uB,YAI3BljE,KAAKmsG,eAEEla,cAAqBjyF,KAAKuB,QAAQ+lD,WAAW4b,iBAFxD,CAEwDA,EAG5D+oC,EAAexhB,UAAU74F,SAAW,WAChC,IAAe2P,EAANvB,KAAmBuB,QAAS20F,EAA5Bl2F,KAAgDk2F,eACrDniG,GAAQo3F,EAAM,qBAANA,CAA4B5pF,IAAY,WAAYtE,GAAUkuF,EAAM,+BAANA,CAAsC5pF,IAAY4pF,EAAM,oBAANA,CAA2B5pF,IAAY,UAAWR,GAAO+xF,GAAWoD,EAAeliG,UAC/M,MAAO,GAAG6wB,OAAO9wB,GAAO,cAAc8wB,OAAO5nB,GAAS,MAAM4nB,OAAOsxE,GAAU,IAAKp1F,MAMtFkrG,EAAe+B,cAAgB,SAAUjB,GAAQ,OAAO,SAAUx1G,GAC9D,OAAOw1G,EAAKa,iBAAiBr2G,KAMjC00G,EAAegC,oBAAsB,SAAUlB,GAAQ,OAAO,SAAUx1G,GACpEk1F,GAAUl1F,IAAWA,EAAOu5B,MAAM,SAAUC,GAAO,OAAOg8E,EAAKC,SAAS/a,aAAoBlhE,QAOhGk7E,EAAeiC,UAAY,SAAUnB,GAAQ,OAAO,SAAU/7E,GAAS,OAAO+7E,EAAKC,SAASh8E,KAC5Fi7E,EAAekC,aAAe,SAAUpB,GAAQ,OAAO,SAAU/7E,GAAS,OAAO0/D,GAAgB1/D,KACjGi7E,EAAemC,YAAc,SAAUrB,GAAQ,OAAO,SAAU/7E,GAC5D,MAAMA,IAEHi7E,EAlLyB,GCC7B,YAAoBloE,EAAOsqE,EAAWhtG,GACzC,IAAIitG,EAAUliB,GAASiiB,GAAa,CAACA,GAAaA,EAYlD,SADeniB,GAAWoiB,GAAWA,EAVrC,YAAoBrpF,IAEhB,QADIspF,GAAcD,EACTxzG,GAAI,EAAGA,GAAIyzG,GAAYx8G,OAAQ+I,KAAK,CACzC,IAAI81F,GAAO,IAAID,GAAK4d,GAAYzzG,KAChC,GAAK81F,IAAQA,GAAKr3F,QAAQ0rB,GAAOlkB,QAAY6vF,IAAQ2d,GAAYzzG,MAAOmqB,GAAOlkB,KAC3E,OAAO,EAGf,OAAO,IAGMgjC,EAAO1iC,GAK5B,IAAImtG,GAAgC,WAChC,WAAwBC,EAASnC,EAAWt4G,EAAU06G,GAAeC,GAAwBptG,SACzE,IAAZA,KAAsBA,GAAU,IACpCvB,KAAKyuG,QAAUA,EACfzuG,KAAKssG,UAAYA,EACjBtsG,KAAKhM,SAAWA,EAChBgM,KAAK0uG,cAAgBA,GACrB1uG,KAAK2uG,uBAAyBA,GAC9B3uG,KAAK2tG,YAAc,EACnB3tG,KAAKktG,eAAgB,EACrBltG,KAAK4uG,SAAWrtG,GAAQqtG,UAAY,EACpC5uG,KAAK4rD,KAAOrqD,GAAQqqD,MAAQ,KAC5B5rD,KAAK0tG,YAAcnsG,GAAQmsG,YAiB/Bc,SAAe/jB,UAAUokB,eAAiB,SAAU5wF,EAAOowF,EAAWhtG,GAClE,IAAkB,IAAdgtG,EACA,OAAOpwF,EACX,IAAImkF,GAAWnkF,EAAM7V,OAAO,SAAUpL,IAAQ,OAAO8xG,GAAW9xG,GAAK+mC,MAAOsqE,EAAWhtG,KACvF,OAAO+gG,GAASrwG,OAASqwG,GAAW,MAgBxCoM,EAAe/jB,UAAUskB,yBAA2B,WAChD,OAAOvf,GAAOxvF,KAAKyuG,QAAQO,WAAWC,gBAAiB,WAAc,OAAO,KAiBhFT,EAAe/jB,UAAUykB,kBAAoB,SAAUxN,EAAargG,GAChE,IAAIosF,EAAQztF,KACRu1D,GAAWm4B,EAAO1tF,KAAK+uG,2BAA4B/uG,KAAK0uG,eAE5D,OADYxsG,GAAOlC,KAAKyuG,QAAQO,WAAWC,iBAC9BrwC,OAAO,SAAUuwC,GAAIC,IAG9B,IACInuE,GAAOygE,EAAY0N,GAASruG,OAAS,GACrCkd,GAFcmxF,GAASC,QAAUvD,SAEX7qE,GAAO,CAACurD,GAAKvrD,KACvCkuE,UAAGC,GAASruG,MAAQ0sF,EAAMohB,eAAe5wF,GAAOs3C,GAAS65C,GAASruG,MAAOM,GAClE8tG,IACR,KAQPX,EAAe/jB,UAAUlxF,QAAU,SAAUmoG,EAAargG,GACtD,IAAI9H,EAAUyG,KAAKkvG,kBAAkBxN,EAAargG,GAGlD,OADiBa,GAAO3I,GAASisD,MAAM8tC,IACnB/5F,EAAU,MAElCi1G,EAAe/jB,UAAU3yE,WAAa,WAClC9X,KAAK2uG,uBAAuB3uG,MAC5BA,KAAKktG,eAAgB,GAElBsB,EAjGyB,GAqG7B,YAAmBpO,EAAUxxE,EAAmB09E,GAEnD,IACIC,IADoBnM,EAASkP,iBAAmBlP,EAASkP,kBAAoB,IACnDhD,EAAUvrG,MAAQ,GAC5CwuG,GAAe5gB,GAAW4d,IAG9B,YAA4BiD,GAAax7G,GAAUuN,SAC/B,IAAZA,KAAsBA,GAAU,IACpC,IAAI20F,GAAiB,IAAIsY,GAAe5/E,EAAmB09E,EAAWt4G,GAAUw7G,GAAaD,GAAchuG,IAC3GgrG,UAAM74G,KAAKwiG,IACJA,GAAep+E,WAAW8zC,KAAKsqC,IAE1C,OAPAkK,EAASkM,EAAUvrG,MAAQ0uG,GAOpBA,GCnIX,IAAIC,GAA6B,WAC7B,WAAqBruG,GACjBrB,KAAKqB,WAAaA,EAEtBquG,SAAYjlB,UAAUklB,mBAAqB,SAAUx5F,GACjD,IAAIs3E,EAAQztF,KAEZ,OADmBA,KAAKqB,WAAW8yB,OAAOvF,kBACtBogF,WACfY,WAAWz5F,GACXnhB,IAAI,SAAUkI,IAAQ,OAAOuwF,EAAMoiB,WAAW3yG,MAC9C0hE,OAAO+wB,GAAS,IAChBvnF,OAAOkrF,KAWhBoc,EAAYjlB,UAAUolB,WAAa,SAAUC,GACzC,IAAIzuG,EAAarB,KAAKqB,WAClBqgG,EAAcrgG,EAAWqgG,cAEzBqO,GAAgB/vG,KAAKgwG,iBAAiBF,EAAUpO,EAAargG,GACjE,IAAK0uG,GACD,MAAO,GACX,IAAIE,GAAkB,CAClB5uG,WAAYA,EACZimD,QAASjmD,EAAWE,UAAU+lD,SAkBlC,OAAOyoD,GACF/6G,IAjBqB,SAAU+3G,IAMhC,OAJcA,GAAKxzG,QAAQmoG,EAAargG,GAEZyuG,EAASI,kBAAkBnvG,MAElC/L,IAAI,SAAUgI,IAC/B,IAAIoiG,GAAW1R,EAAO,CAClB9hC,KAAMmhD,GAAKnhD,KACXogD,UAAW,CAAE8D,SAAUA,EAAS/uG,KAAM9D,QAASD,KAChDizG,IAECE,GAAiB,IAAIlE,GAAe5qG,EAD5ByuG,EAASI,kBAAkBb,QAAUvD,SAA4B9uG,GAAK+mC,MAAM8vB,KAAO,KACpCk5C,GAAM3N,IACjE,MAAO,CAAE2N,KAAMA,GAAM/vG,KAAMA,GAAMmzG,eAAgBA,QAKpDvxC,OAAO+wB,GAAS,IAChBz1E,KAqCb,YAAmBk2F,GACf,YAAyB,IAArBA,IAA+BA,GAAmB,GAC/C,SAA+BptE,EAAGuiB,GACrC,IACI8qD,IAAcrtE,EAAEhmC,KAAK+mC,MAAM9C,KAAKlvC,OAASwzD,EAAEvoD,KAAK+mC,MAAM9C,KAAKlvC,SADlDq+G,GAAmB,EAAK,GAErC,OAAsB,IAAfC,GAAmBA,GAAa9qD,EAAEwnD,KAAK6B,SAAW5rE,EAAE+pE,KAAK6B,UA1CtD0B,CAAUR,EAASS,cACxBv7G,IAAI,SAAUwP,IAAS,OAAOA,GAAM2rG,kBAa7CT,EAAYjlB,UAAUulB,iBAAmB,SAAUF,EAAUpO,EAAargG,GACtE,IAEImvG,GAAexwG,KAAKqB,WAAW8yB,OAAOvF,kBAE1C,OAJekhF,EAAS1D,YAAcX,UAGV,CAAC+E,IAAgB,CAACxwG,KAAKqB,WAAYmvG,KAE1Dx7G,IAAI,SAAUy7G,IAAO,OAAOA,GAAIC,SAASZ,EAAS/uG,QAClDqH,OAAO4nF,GAAgBv0F,GAAS,uBAAuBopB,OAAOirF,EAAS/uG,QACvE69D,OAAO+wB,GAAS,IAChBvnF,OAAO,SAAU2kG,IAAQ,OAAOA,GAAKxzG,QAAQmoG,EAAargG,MAE5DquG,EA7EsB,GCA7BiB,GAAYx9G,EAAK,QASjBy9G,GAA4B,WAc5B,WAAoBrQ,EAAUn4D,EAAajU,GACvC,IAAIs5D,GAAQztF,KAkBZ,GAhBAA,KAAK6wG,UAAY5jB,cAOjBjtF,KAAKypB,QAAUzpB,KAAK6wG,UAAUpnF,QAE9BzpB,KAAKsvG,iBAAmB,GAExBtvG,KAAK8wG,aAAe,IAAIpB,GAAY1vG,MAEpCA,KAAKqsG,SAAW,WAAc,OAAO5e,GAAMt5D,OAAOxB,QAAQtxB,aAAeosF,IACzEztF,KAAKm0B,OAASA,EACdn0B,KAAK+wG,aAAe3oE,GACfA,EAAYu3D,QACb,MAAM,IAAIl2D,MAAMrB,EAAYpX,SAGhChxB,KAAKo/F,SAAW1R,EAAO,CAAEpmC,QAAS95C,GAAIxN,OAASooC,EAAY7mC,WAC3DvB,KAAKmyF,IAAMh+D,EAAOvF,kBAAkBoiF,mBACpC,IAAIxQ,GAASN,eAAsBK,EAAUn4D,GAC7CpoC,KAAKixG,aAAe/Q,eAAsBK,EAAUC,GAAQxgG,KAAKo/F,SAASuC,aAC1E3hG,KAAKkxG,6BACL,IAAIC,GAAgBnxG,KAAK8wG,aAAanB,mBAAmBlE,WACzDQ,eAA2BkF,GAAe,WAAc,OAAO,OAC/DnxG,KAAK0gG,iBAAiBvsE,GAG1By8E,SAAWnmB,UAAU2mB,SAAW,SAAU77C,EAAUvhE,EAAUuN,GAAS,EAIvEqvG,EAAWnmB,UAAUx2F,QAAU,SAAUshE,EAAUvhE,EAAUuN,GAAS,EAItEqvG,EAAWnmB,UAAU4mB,OAAS,SAAU97C,EAAUvhE,EAAUuN,GAAS,EAIrEqvG,EAAWnmB,UAAU6mB,SAAW,SAAU/7C,EAAUvhE,EAAUuN,GAAS,EAIvEqvG,EAAWnmB,UAAU32D,QAAU,SAAUyhC,EAAUvhE,EAAUuN,GAAS,EAItEqvG,EAAWnmB,UAAU57D,SAAW,SAAU0mC,EAAUvhE,EAAUuN,GAAS,EAIvEqvG,EAAWnmB,UAAU1jC,UAAY,SAAUwO,EAAUvhE,EAAUuN,GAAS,EAIxEqvG,EAAWnmB,UAAU18B,QAAU,SAAUwH,EAAUvhE,EAAUuN,GAAS,EAOtEqvG,EAAWnmB,UAAUymB,2BAA6B,WAC9C,IAAIzjB,EAAQztF,KACZA,KAAKm0B,OAAOvF,kBAAkBogF,WACzBY,aACAxnG,OAAO,SAAUlL,GAAQ,OAAOA,EAAKkvG,YAAcX,YACnD74G,QAAQ,SAAUsK,GAAQ,OAAOq0G,GAAU9jB,EAAOA,EAAMt5D,OAAOvF,kBAAmB1xB,MAG3F0zG,EAAWnmB,UAAUimB,SAAW,SAAUc,GACtC,OAAOxxG,KAAKsvG,iBAAiBkC,IAEjCZ,EAAWnmB,UAAUiW,iBAAmB,SAAUvsE,GAC9C,IAAIs9E,EAAiBzxG,KAAKixG,aAAajP,SAAShtG,IAAI,SAAUgI,GAAQ,OAAOA,EAAK+mC,QAClFm8D,oBAA2B/rE,EAAOvF,kBAAkB+xE,MAAO3gG,KAAKixG,aAAaniF,GAAI2iF,IAMrFb,EAAWnmB,UAAUinB,MAAQ,WACzB,OAAOllB,GAAKxsF,KAAKixG,aAAan6G,MAAMitC,OAMxC6sE,EAAWnmB,UAAUiT,IAAM,WACvB,OAAOlR,GAAKxsF,KAAKixG,aAAaniF,IAAIiV,OAStC6sE,EAAWnmB,UAAU3zF,KAAO,WACxB,OAAOkJ,KAAK0xG,QAAQ79C,MASxB+8C,EAAWnmB,UAAU37D,GAAK,WACtB,OAAO9uB,KAAK09F,MAAM7pC,MAStB+8C,EAAWnmB,UAAUriD,YAAc,WAC/B,OAAOpoC,KAAK+wG,cAMhBH,EAAWnmB,UAAUe,GAAK,SAAUmmB,GAChC,OAAIA,aAAmBf,EAEZ5wG,KAAKwrF,GAAG,CAAE18D,GAAI6iF,EAAQjU,MAAM38F,KAAMjK,KAAM66G,EAAQD,QAAQ3wG,SAEzD4wG,EAAQ7iF,KAAOggF,GAAW9uG,KAAK09F,MAAOiU,EAAQ7iF,GAAI9uB,OACvD2xG,EAAQ76G,OAASg4G,GAAW9uG,KAAK0xG,QAASC,EAAQ76G,KAAMkJ,QAEjE4wG,EAAWnmB,UAAU5uF,OAAS,SAAU+1G,GACpC,YAAiB,IAAbA,IAAuBA,EAAW,MAC/B3+G,OAAO4+G,OAAO7xG,KAAKixG,aAAaW,GAAU58G,IAAI7B,EAAK,gBAAgByrE,OAAOswB,GAAQ,MAE7F0hB,EAAWnmB,UAAUqnB,cAAgB,WACjC,IAAIC,EAAa/xG,KAAKnE,OAAO,QACzBgvC,EAAW7qC,KAAKnE,OAAO,MAEvBm2G,EAAsB,GACrBntF,OAAO7kB,KAAKixG,aAAaniF,IACzBjK,OAAO7kB,KAAKixG,aAAan6G,MACzB9B,IAAI,SAAUi9G,IAAY,OAAOA,GAAS9T,cAC1Cv/B,OAAOgxB,GAAU,IACjBhxB,OAAOkxB,GAAO,IAEnB,OAD8BiK,WAAciY,EAAqBD,EAAYlnE,GAC9C+zB,OAAO,SAAUszC,GAAeC,IAC3DD,UAAcC,GAAWl/F,IAAM43B,EAASsnE,GAAWl/F,IAC5Ci/F,IACR,KAyDPtB,EAAWnmB,UAAUj8D,SAAW,SAAUuV,EAAOquE,QAC5B,IAAbA,IAAuBA,EAAW,MACtC,IAAInxE,EAAOjhC,KAAKixG,aAAamB,GAC7B,OAAIruE,IACA9C,EAAOi/D,WAAkBj/D,EAAM,SAAUjkC,IAAQ,OAAOA,GAAK+mC,QAAUA,GAAS/mC,GAAK+mC,MAAMhjC,OAASgjC,KACjG,IAAIigE,GAAe/iE,GAAMzS,YAkCpCoiF,EAAWnmB,UAAU4nB,iBAAmB,SAAUT,GAC9C,YAAiB,IAAbA,IAAuBA,EAAW,MAC/B,IAAI5N,GAAehkG,KAAKixG,aAAaW,IAAW1N,aA+B3D0M,EAAWnmB,UAAU6nB,cAAgB,SAAU7b,EAAY1yD,QACzC,IAAVA,IAAoBA,EAAQ,IAChC0yD,EAAajL,EAAGkX,GAAHlX,CAAeiL,GAAcA,EAAa,IAAIiM,GAAWjM,GACtE,IAAIlmF,EAA6B,iBAAVwzB,EAAqBA,EAAQA,EAAMhjC,KACtDwxG,GAASvyG,KAAKixG,aAAaniF,GAC3B0jF,GAAapsG,GAAKmsG,GAAQ,SAAUv1G,IAAQ,OAAOA,GAAK+mC,MAAMhjC,OAASwP,IACtD,IAAIyzF,GAAeuO,IACzBlO,eAAe,CAAC5N,GAAa+b,GAAWzuE,QAmB3D6sE,EAAWnmB,UAAUgoB,eAAiB,WAClC,OAAOzyG,KAAKo/F,SAASqT,gBAAkB,MA4B3C7B,EAAWnmB,UAAUioB,mBAAqB,WACtC,IAAIC,EAAK3yG,KAAKyyG,iBACd,OAAQE,GAAMA,EAAGD,sBAAyB1yG,MAO9C4wG,EAAWnmB,UAAUlpF,QAAU,WAC3B,OAAOvB,KAAKo/F,UAOhBwR,EAAWnmB,UAAUuX,SAAW,WAC5B,OAAOhtG,GAAIgL,KAAKixG,aAAajP,SAAU7uG,EAAK,UAAU6B,IAAI27G,KAO9DC,EAAWnmB,UAAUsX,QAAU,WAC3B,OAAO/sG,GAAIgL,KAAKixG,aAAalP,QAAS5uG,EAAK,UAAU6B,IAAI27G,IAAW5lB,WAQxE6lB,EAAWnmB,UAAUqX,SAAW,WAC5B,OAAO9sG,GAAIgL,KAAKixG,aAAanP,SAAU3uG,EAAK,UAAU6B,IAAI27G,KAc9DC,EAAWnmB,UAAU4T,MAAQ,SAAUuT,EAAU7tE,QAC5B,IAAb6tE,IAAuBA,EAAW,YACtC,IAAI3wE,EAAOjhC,KAAKixG,aAAaW,GAC7B3wE,SAAO/pB,EAAgB+pB,EAAK74B,OAAO4iF,EAAO,QAASjnD,IAAnC9C,GACJjsC,IAAI7B,EAAK,UAAUiV,OAAOkrF,IAAU10B,OAAO+wB,GAAS,KAEpEihB,EAAWnmB,UAAUiX,YAAc,SAAUkQ,GACzC,OAAOA,EAAW5xG,KAAKixG,aAAaW,GAAY5xG,KAAKixG,cAYzDL,EAAWnmB,UAAUmoB,SAAW,SAAUxqE,GAGtC,QAFIyqE,EAAY,EAAG9+E,EAAQ/zB,KAEgB,OAAnC+zB,EAAQA,EAAM0+E,mBAClB,KAAMI,EAAY,GACd,MAAM,IAAIppE,MAAM,mDAExB,IAAIqpE,GAAe,CAAEL,eAAgBzyG,KAAM+kC,OAAQ,YAKrB,QAA1B/kC,KAAKuB,UAAUwjC,SAAuD,IAAnCqD,EAAY7mC,UAAUyxB,WACzD8/E,GAAa9/E,SAAW,WAE5B,IAAI5nB,GAAasiF,EAAO,GAAI1tF,KAAKuB,UAAW6mC,EAAY7mC,UAAWuxG,IACnE1qE,EAAcA,EAAY23D,YAAY30F,IAAY,GAClD,IAYgCu2F,GAZ5BxpD,GAAgBn4C,KAAKm0B,OAAOvF,kBAAkB7hB,OAAO/M,KAAKixG,aAAan6G,KAAMsxC,GAC7E2qE,GAAwB/yG,KAAKixG,aAAajP,SAiB9CgR,OAF4B9S,YAdA/nD,GAAc84D,aAAajP,SAce+Q,GAAuB7S,qBAA4B93F,OAAOgjF,GAJhGuW,GAIoHv5D,EAAY7mC,UAAUogG,YAJpH,SAAU3kG,IAC5D,OAAO2kG,IAAe3kG,GAAK+mC,MAAMkG,SAAS03D,GAAY5gG,UAKpCnO,QAAQ,SAAUoK,GAAM4xF,IAC1C5xF,GAAKohG,YAAc2U,GAAsBnkB,IAAKwP,cAE3CjmD,IAGXy4D,EAAWnmB,UAAUwoB,eAAiB,WAClC,IAAIC,EAAKlzG,KAAKixG,aAGd,KAAIjxG,KAAKo/F,SAASzlB,QAGdu5B,EAAGnR,QAAQhwG,QAAUmhH,EAAGlR,SAASjwG,QAGjCmhH,EAAGpkF,GAAG/8B,SAAWmhH,EAAGp8G,KAAK/E,QAGXi8F,GAAYklB,EAAGpkF,GAAIokF,EAAGp8G,MACnC9B,IAAI,SAAUwP,IAAS,OAAOA,GAAM,GAAGu/B,QAAUv/B,GAAM,GAAGu/B,QAC1D66B,OAAO8wB,IAAU,IAItB,KAAIyjB,EAAcD,EAAGpkF,GAAG95B,IAAI,SAAUgI,IAAQ,OAAOA,GAAKmhG,cACtDrhF,GAAK,CAACo2F,EAAGpkF,GAAIokF,EAAGp8G,MAAM9B,IAAI,SAAUisC,IAAQ,OAAOA,GAAKjsC,IAAI,SAAUqiD,IAAK,OAAOA,GAAEmkD,gBAExF,OADaxN,GAAYmlB,EAD+Fr2F,GAAG,GAAiBA,GAAG,IAEjI9nB,IAAI,SAAU8nB,IAExB,OAAOi9E,WADMj9E,GAAG,GAAaA,GAAG,GAAeA,GAAG,GACbs2F,GACtCx0C,OAAO+wB,GAAS,MASvBihB,EAAWnmB,UAAUnnF,QAAU,WAC3B,IAAI67D,EAAUn/D,KAAKizG,iBACnB,QAAO54F,GAAmB8kD,EAAQnqE,IAAI,SAAUqiD,GAAK,OAAOA,EAAE/zC,UAAYs7D,OAAO8wB,IAAU,EAAzE,EAStBkhB,EAAWnmB,UAAUiI,QAAU,WAC3B,QAAS1yF,KAAKqzG,kBAGlBzC,EAAWnmB,UAAU4oB,eAAiB,WAClC,IAAIC,EAAUtzG,KAAKm0B,OAAOxB,QAAQtxB,WAC9BsgG,EAAc3hG,KAAKo/F,SAASuC,YAC5B4R,EAAO,SAAUlR,GAAOC,IACxB,GAAID,GAAMtwG,SAAWuwG,GAAMvwG,OACvB,OAAO,EACX,IAAIqwG,GAAWlC,YAAmBmC,GAAOC,IACzC,OAAOD,GAAMtwG,SAAWqwG,GAASh6F,OAAO,SAAUpL,IAAQ,OAAQ2kG,IAAgB3kG,GAAK+mC,MAAMkG,SAAS03D,EAAY5gG,QAAUhP,QAE5HyhH,GAAQxzG,KAAK0hG,cACb+R,GAASH,GAAWA,EAAQ5R,cAChC,OAAI+R,IAAUF,EAAKE,GAAO3kF,GAAI0kF,GAAM1kF,KAAOykF,EAAKE,GAAO1R,QAASyR,GAAMzR,SAC3D,gBACkB,IAAzByR,GAAMzR,QAAQhwG,QAA0C,IAA1ByhH,GAAMxR,SAASjwG,QAAgBwhH,EAAKC,GAAM18G,KAAM08G,GAAM1kF,IAC7E,qBADX,CACW,EAWf8hF,EAAWnmB,UAAUtgE,IAAM,WACvB,IAAIsjE,EAAQztF,KACR8sG,EAAcb,eAEdyH,EAAc,SAAUv9F,IAAS,OAAOs3E,EAAMqjB,aAAanB,mBAAmBx5F,KA8B9Ew9F,GAAiBD,EAAYjI,WACjCQ,sBAA2B0H,GATL,WAClB,IAAIhhF,GAAU86D,EAAMt5D,OAAOxB,QAC3BA,UAAQihF,wBAA0BnmB,EAAM0E,IACxCx/D,GAAQtxB,WAAaosF,EACrB96D,GAAQkhF,kBAAkBviB,QAAQ7D,GAClC4K,wBAA2B5K,GACpBR,gBAAiBr4F,KAIvBo1B,KAjBe,WAGhB,IAAI8pF,GAAcJ,EAAYjI,QAE9B,OAAOQ,eAA2B6H,GADvB,WAAc,OAAO7mB,gBAAiBr4F,IACF8H,GAa9CstB,KA/BmB,WACpBquE,gBAAmB5K,EAAMiQ,MAAOjQ,GAChCA,EAAMsmB,SAAU,EAChBtmB,EAAMojB,UAAUh0F,QAAQ4wE,EAAM3+D,MAC9Bg+E,EAAY4G,EAAYjI,cAEN,SAAUx9C,IAC5BoqC,cAAiBpqC,GAAQw/B,GACzBA,EAAMsmB,SAAU,EAChBtmB,EAAMojB,UAAU1iD,OAAOF,IACvBw/B,EAAMumB,OAAS/lD,GACf6+C,EAAY4G,EAAYjI,aAqBrBzrG,KAAKypB,SAOhBmnF,EAAWnmB,UAAUkV,MAAQ,WACzB,OAAQ3/F,KAAKgxB,cAA4Bp8B,IAAjBoL,KAAK+zG,OAAYn/G,EAQ7Cg8G,EAAWnmB,UAAUx2D,MAAQ,WAErB43D,GAAY7rF,KAAK+zG,WACjB/zG,KAAK+tG,UAAW,IAWxB6C,EAAWnmB,UAAUz5D,MAAQ,WACzB,IAAI+S,EAAQ/jC,KAAK09F,MACjB,GAAI35D,EAAM8vB,KAAKrgC,SACX,OAAOy+D,WAAkB,wCAAwCptE,OAAOkf,EAAMhjC,KAAM,MAExF,IAAIkzG,EAAYlwE,EAAMu6D,aAClBp8F,EAASlC,KAAKnE,SACdq4G,GAAgBD,EAAU7rG,OAAO,SAAUszF,IAAS,OAAQA,GAAMI,UAAU55F,EAAOw5F,GAAMzoF,OAC7F,GAAIihG,GAAcniH,OAAQ,CACtB,IAAIoiH,GAAgBD,GAAcl/G,IAAI,SAAU0mG,IAAS,MAAO,IAAI72E,OAAO62E,GAAMzoF,GAAI,KAAK4R,OAAO4iC,GAAUvlD,EAAOw5F,GAAMzoF,KAAM,OAASuuC,KAAK,MACxI0wC,GAAS,2DAA2DrtE,OAAOkf,EAAMhjC,KAAM,OAAO8jB,OAAOsvF,IACzG,OAAOliB,WAAkBC,IAE7B,OAAqB,IAAjBlyF,KAAK+zG,QACE/zG,KAAKg0G,YADhB,CACgBA,EAOpBpD,EAAWnmB,UAAU74F,SAAW,WAC5B,IAAIwiH,EAAkBp0G,KAAKlJ,OACvBu9G,EAAgBr0G,KAAK8uB,KACrBwlF,EAAiB,SAAUz4G,IAC3B,OAAOA,SAAO,KAA6CA,GAASwlG,GAAKxlG,GAAQ,CAAC,OAGlFoX,GAAKjT,KAAKmyF,IAAKr7F,GAAO8K,GAASwyG,GAAmBA,EAAgBrzG,KAAOqzG,EAAiBrC,GAAatqD,GAAU6sD,EAAet0G,KAAKixG,aAAan6G,KAAK9B,IAAI7B,EAAK,gBAAgByrE,OAAOswB,GAAQ,MAAOqlB,GAAUv0G,KAAK2/F,QAAU,GAAK,OAAQ7wE,GAAKltB,GAASyyG,GAAiBA,EAActzG,KAAOszG,EAAexpE,GAAW4c,GAAU6sD,EAAet0G,KAAKnE,WAC5V,MAAO,cAAcgpB,OAAO5R,GAAI,OAAO4R,OAAO/tB,GAAM,KAAK+tB,OAAOktF,GAAY,QAAQltF,OAAO0vF,GAAS,KAAK1vF,OAAOiK,GAAI,KAAKjK,OAAOgmB,GAAU,OAG9I+lE,EAAW4D,QAAU5D,EACdA,EA/nBqB,GCpBhC,YAAqB30G,EAAKy/F,GACtB,IAAI+Y,EAAkB,CAAC,GAAI,IAAKl9G,EAAS0E,EAAIC,QAAQ,wBAAyB,QAC9E,IAAKw/F,EACD,OAAOnkG,EACX,OAAQmkG,EAAMl0D,aACL,EACDitE,EAAkB,CAAC,IAAK,KAAO/Y,EAAMR,WAAa,IAAM,KACxD,WACC,EACD3jG,EAASA,EAAO2E,QAAQ,MAAO,IAC/Bu4G,EAAkB,CAAC,QAAS,SAC5B,cAEAA,EAAkB,CAAC,IAAI5vF,OAAO62E,EAAMl0D,OAAQ,KAAM,MAG1D,OAAOjwC,EAASk9G,EAAgB,GAAK/Y,EAAMx+F,KAAKypF,QAAQ5hD,OAAS0vE,EAAgB,GAErF,ICMIC,GDLAC,GvB2FG,YAAsBC,GACzB,IAAIC,EAAK,IAAIj5G,OAAO,IAAMg5G,EAAQ,IAAK,KACvC,OAAO,SAAU34G,GAAO,OAAOA,EAAIoC,MAAMw2G,GAAIzsG,OAAOkrF,KuB7FrCwhB,CAAa,KAC5B3a,GAAgB,CAChBp2D,MAAO,CAAEloC,OAAQ,IACjBk5G,QAAQ,EACRC,iBAAiB,EACjBC,cAAc,GAqDdC,GAA4B,WAO5B,WAAoBvuB,EAASiU,EAAY8L,EAAcr5E,IACnD,IAAIogE,GAAQztF,KAEZA,KAAKm1G,OAAS,CAAEl0E,KAAM,CAACjhC,OAEvBA,KAAKmrG,UAAY,GAEjBnrG,KAAKm/F,QAAU,GAEfn/F,KAAKo1G,UAAY,GAEjBp1G,KAAKq1G,UAAY,GACjBr1G,KAAKqtB,OAASA,GAASu7E,GAASv7E,GAAQ8sE,IACxCn6F,KAAK2mF,QAAUA,EA8Cf,QA5BI2uB,GAyBAr5F,GACAs5F,GA9BAC,GAAc,wFACdC,GAAoB,4FACpBC,GAAW,GACXC,GAAO,EAEPC,GAAmB,SAAU3iG,IAC7B,IAAKiiG,EAAWW,cAAchvB,KAAK5zE,IAC/B,MAAM,IAAIw2B,MAAM,2BAA2B5kB,OAAO5R,GAAI,kBAAkB4R,OAAO8hE,EAAS,MAC5F,GAAIvgF,GAAKqnF,GAAM0R,QAASnU,EAAO,KAAM/3E,KACjC,MAAM,IAAIw2B,MAAM,6BAA6B5kB,OAAO5R,GAAI,kBAAkB4R,OAAO8hE,EAAS,OAI9FmvB,GAAe,SAAUj5G,GAAGg8F,IAE5B,IAE+B58F,GAD3B80F,GAAS8H,GAAWh8F,GAAE,GAAKA,GAAE,KAAgB,MAATA,GAAE,GAAa,YAAc,MAMrE,MAAO,CACHoW,GARKpW,GAAE,IAAMA,GAAE,GASfk0F,OAAQA,GACRwkB,QAAS5uB,EAAQjxF,UAAUigH,GAAM94G,GAAEiX,OACnC5W,KAAM64G,GAAiBnb,EAAW19F,KAAK6zF,MATZ90F,GASsC80F,GAR1DtoD,GAAQmyD,EAAW19F,KAAK27F,GAAW,QAAU,QAAS,CACzDlS,QAAS,IAAI/qF,OAAOK,GAAKwxF,GAAMpgE,OAAO2nF,gBAAkB,SAAMpgH,MAOlD,QAMhB0gH,GAAaE,GAAY15G,KAAK6qF,QAClC1qE,GAAU65F,GAAaR,IAAY,IACvBC,QAAQ9/G,QAAQ,MAAQ,IAEpCmgH,GAAiB35F,GAAQhJ,IACzBjT,KAAKm/F,QAAQzrG,KAAKgzG,EAAanG,SAAStkF,GAAQhJ,GAAIgJ,GAAQ/e,KAAMmwB,GAAO0W,QACzE/jC,KAAKo1G,UAAU1hH,KAAKuoB,GAAQs5F,SAC5BG,GAAShiH,KAAK,CAACuoB,GAAQs5F,QAAS/oB,GAAKxsF,KAAKm/F,WAC1CwW,GAAOH,GAAYz5G,UAIvB,IAAIjB,IAFJy6G,GAAU5uB,EAAQjxF,UAAUigH,KAEZlgH,QAAQ,KACxB,GAAIqF,IAAK,EAAG,CACR,IAAIk7G,GAAST,GAAQ7/G,UAAUoF,IAE/B,GADAy6G,GAAUA,GAAQ7/G,UAAU,EAAGoF,IAC3Bk7G,GAAOjkH,OAAS,EAGhB,IAFA4jH,GAAO,EAECL,GAAaG,GAAkB35G,KAAKk6G,KAExCJ,IADA35F,GAAU65F,GAAaR,IAAY,IACVriG,IACzBjT,KAAKm/F,QAAQzrG,KAAKgzG,EAAauP,WAAWh6F,GAAQhJ,GAAIgJ,GAAQ/e,KAAMmwB,GAAO0W,QAC3E4xE,GAAOH,GAAYz5G,UAK/BiE,KAAKo1G,UAAU1hH,KAAK6hH,IACpBv1G,KAAKq1G,UAAYK,GAAS1gH,IAAI,SAAUkhH,IAAY,OAAOC,GAAYzrB,MAAM,KAAMwrB,MAAcrxF,OAAOsxF,GAAYZ,KAGxHL,SAAWkB,aAAe,SAAUn6G,GAEhC,OAAOo6G,mBAAmBp6G,GAAKC,QAAQ,KAAM,SAAUiuD,GAAK,MAAO,OAAOtlC,OAAOslC,EAAEmsD,WAAW,GAAG1kH,SAAS,IAAI+F,kBAGlHu9G,EAAWqB,sBAAwB,SAAUjX,GAGzC,OAAOtR,GAFcsR,EAAQ8V,UACZ9V,EAAQH,QAAQ/2F,OAAO,SAAUiS,IAAK,OAAOA,GAAE2Y,WAAa2mE,UAC/B90E,YAAOjwB,IAChDgqE,OAAO+wB,GAAS,IAChBvnF,OAAO,SAAUivC,IAAK,MAAa,KAANA,IAAYy0C,EAAUz0C,OAG5D69D,EAAWsB,YAAc,SAAUlX,GAC/B,OAAOA,EAAQH,QAAQ/2F,OAAO,SAAUiS,GAAK,OAAOA,EAAE2Y,WAAa2mE,aAWvEub,EAAWvD,QAAU,SAAU16F,EAAGC,GAW9B,IAeIu/F,GAAU,SAAUnX,IACpB,OAAQA,GAAQ6V,OAAOsB,QACnBnX,GAAQ6V,OAAOsB,SAjBR,SAAUnX,IACrB,OAAQA,GAAQ6V,OAAO9M,SACnB/I,GAAQ6V,OAAO9M,UACX/I,GAAQ6V,OAAOl0E,KACVjsC,IAAIkgH,EAAWqB,uBACf33C,OAAO+wB,GAAS,IAChB/wB,OAAO83C,GAAgB,IACvB1hH,IAAI,SAAUqiD,IAAK,OAAQ+0C,GAAS/0C,IAAKs9D,GAAat9D,IAAKA,KAC3DunB,OAAO+wB,GAAS,IAUrB0Y,CAAS/I,IAAStqG,IAAI,SAAUugH,IAE5B,MAAgB,MAAZA,GACO,EACPnpB,GAASmpB,IACF,EACPA,cAAmBxb,GACZ,OADX,CACW,IAavB4c,GAAWF,GAAQx/F,GAAI2/F,GAAWH,GAAQv/F,IAP9B,SAAU8rB,GAAGuiB,GAAGsxD,IAE5B,QADIC,GAAMh0G,KAAKC,IAAIigC,GAAEjxC,OAAQwzD,GAAExzD,QACxBixC,GAAEjxC,OAAS+kH,IACd9zE,GAAEtvC,KAKoB,GAJ1B,KAAO6xD,GAAExzD,OAAS+kH,IACdvxD,GAAE7xD,KAGoB,EAHfmjH,CAGfE,CAAUJ,GAAUC,IACpB,IACII,GAAKl8G,GADLm8G,GAASjpB,GAAY2oB,GAAUC,IAEnC,IAAK97G,GAAI,EAAGA,GAAIm8G,GAAOllH,OAAQ+I,KAE3B,GAAY,IADZk8G,GAAMC,GAAOn8G,IAAG,GAAKm8G,GAAOn8G,IAAG,IAE3B,OAAOk8G,GAEf,OAAO,GASX9B,EAAWzqB,UAAUxjF,OAAS,SAAUsoB,GACpC,YAAK47E,UAAUz3G,KAAK67B,GACpBA,EAAI4lF,OAAS,CACTl0E,KAAMjhC,KAAKm1G,OAAOl0E,KAAKpc,OAAO0K,GAC9Bn5B,OAAQ4J,KACR2mF,QAAS,MAENp3D,GAGX2lF,EAAWzqB,UAAU+b,OAAS,WAC1B,OAAOxmG,KAAKm1G,OAAOl0E,KAAK,KAAOjhC,MAGnCk1G,EAAWzqB,UAAU74F,SAAW,WAC5B,OAAOoO,KAAK2mF,SAEhBuuB,EAAWzqB,UAAUysB,sBAAwB,SAAU/hH,EAAOumG,GAC1D,OAAI5P,EAAU32F,KACN6K,KAAKqtB,OAAO4nF,eAAiBvZ,EAAMx+F,KAAKm3D,MAEpCl/D,EADAsG,GAAQtG,GACAA,EAAMH,IAAI,SAAUmiH,GAAc,OAAOC,mBAAmBD,KAG5DC,mBAAmBjiH,IAGnCA,EAAQumG,EAAMx+F,KAAKs7F,OAAOrjG,IAEvBumG,EAAMvmG,MAAMA,IA4BvB+/G,EAAWzqB,UAAU3uF,KAAO,SAAUmlC,EAAM+0E,EAAQhZ,EAAMz7F,IACtD,IAAIksF,GAAQztF,UACG,IAAXg2G,IAAqBA,EAAS,SAClB,IAAZz0G,KAAsBA,GAAU,IACpC,IAAI/H,GAtTI,SAAUgB,EAAK80F,EAAOl/E,GAAM,OAAQ5V,EAAI80F,GAAS90F,EAAI80F,IAuTlD,IAAI1zF,OAAO,CACd,IACAm0F,GAAOtC,GAAM0nB,OAAOl0E,KAAKjsC,IAAI7B,EAAK,eAAequD,KAAK,KAC9B,IAAxBisC,GAAMpgE,OAAO0nF,OAAmB,KAAO,GACvC,KACFvzD,KAAK,IAAKisC,GAAMpgE,OAAO2nF,gBAAkB,SAAMpgH,EA5TkBwb,CAsT3DinG,CAAUr3G,KAAKm1G,OAAQ,WAOhCr5G,KAAKmlC,GACR,IAAKznC,GACD,OAAO,KAEX,IAIQ89G,GAGAC,GAPJC,GAAYx3G,KAAKs+F,aAAcmZ,GAAaD,GAAUpvG,OAAO,SAAUszF,IAAS,OAAQA,GAAM7C,aAAgB6e,GAAeF,GAAUpvG,OAAO,SAAUszF,IAAS,OAAOA,GAAM7C,aAAgB8e,GAAgB33G,KAAKm1G,OAAOl0E,KAAKjsC,IAAI,SAAU4iH,IAAQ,OAAOA,GAAKxC,UAAUrjH,OAAS,IAAM6sE,OAAO,SAAU3nD,GAAGogC,IAAK,OAAOpgC,GAAIogC,KAAOn1C,GAAS,GAClV,GAAIy1G,KAAkBn+G,GAAMzH,OAAS,EACjC,MAAM,IAAI03C,MAAM,sCAAsC5kB,OAAO7kB,KAAK2mF,QAAS,MAQ/E,QAAS7rF,GAAI,EAAGA,GAAI68G,GAAe78G,KAAK,CAIpC,QAHI4gG,GAAQ+b,GAAW38G,IACnB3F,GAAQqE,GAAMsB,GAAI,GAEb+lB,GAAI,EAAGA,GAAI66E,GAAMx/F,QAAQnK,OAAQ8uB,KAClC66E,GAAMx/F,QAAQ2kB,IAAG/pB,OAAS3B,KAC1BA,GAAQumG,GAAMx/F,QAAQ2kB,IAAGiO,IAE7B35B,KAAyB,IAAhBumG,GAAMhN,aAdf4oB,OAGAC,KAAcviH,IAHdsiH,GAAgB,SAAUr7G,IAAO,OAAOA,GAAIoC,MAAM,IAAI0sF,UAAUvpC,KAAK,MAe7CrsD,IAbQkJ,MAAM,WACbi5G,IAYzBniH,GAXGH,GAAIuiH,GAHS,SAAUt7G,IAAO,OAAOA,GAAIC,QAAQ,OAAQ,OAGzB6uF,WAYvC7oF,GAAOw5F,GAAMzoF,IAAMjT,KAAKk3G,sBAAsB/hH,GAAOumG,IAEzDgc,UAAa9kH,QAAQ,SAAU8oG,IAE3B,QADIvmG,GAAQ6gH,EAAOta,GAAMzoF,IAChB4N,GAAI,EAAGA,GAAI66E,GAAMx/F,QAAQnK,OAAQ8uB,KAClC66E,GAAMx/F,QAAQ2kB,IAAG/pB,OAAS3B,KAC1BA,GAAQumG,GAAMx/F,QAAQ2kB,IAAGiO,IAEjC5sB,GAAOw5F,GAAMzoF,IAAMw6E,GAAMypB,sBAAsB/hH,GAAOumG,MAEtDsB,IACA96F,GAAO,KAAO86F,GACX96F,IASXgzG,EAAWzqB,UAAU6T,WAAa,SAAUxP,GAExC,YADa,IAATA,IAAmBA,EAAO,KACT,IAAjBA,EAAKrmD,QACEzoC,KAAKm/F,QACTpP,GAAO/vF,KAAKm1G,OAAOl0E,KAAKjsC,IAAI,SAAUsqG,GAAW,OAAOA,EAAQH,YAU3E+V,EAAWzqB,UAAUqU,UAAY,SAAU7rF,EAAI67E,GAC3C,IAAIrB,EAAQztF,UACC,IAAT8uF,IAAmBA,EAAO,IAC9B,IAOI14F,GAAS4J,KAAKm1G,OAAO/+G,OACzB,OARgB,WACZ,QAASy0F,GAAK,EAAG/tE,GAAK2wE,EAAM0R,QAAStU,GAAK/tE,GAAG/qB,OAAQ84F,KAAM,CACvD,IAAI6Q,GAAQ5+E,GAAG+tE,IACf,GAAI6Q,GAAMzoF,KAAOA,EACb,OAAOyoF,IAIZmc,KAAiC,IAAjB/oB,EAAKrmD,SAAqBryC,IAAUA,GAAO0oG,UAAU7rF,EAAI67E,IAAU,MAW9FomB,EAAWzqB,UAAUqR,UAAY,SAAUjgG,GAKvC,OAHAA,EAASA,GAAU,GAEDmE,KAAKs+F,aAAal2F,OAAO,SAAUw2F,IAAY,OAAO/iG,EAAO/B,eAAe8kG,GAAS3rF,MACpFje,IAAI,SAAU4pG,IAAY,OAJzB,SAAUlD,GAAOluF,IAAO,OAAQkuF,IAASA,GAAMI,UAAUtuF,IAIzBsqG,CAAclZ,GAAU/iG,EAAO+iG,GAAS3rF,OAAS2rD,OAAO6wB,IAAU,IAiB1HylB,EAAWzqB,UAAU8I,OAAS,SAAUrxF,QACrB,IAAXA,IAAqBA,EAAS,IAElC,IAAI61G,EAAc/3G,KAAKm1G,OAAOl0E,KAG1Bs1E,EAAwBwB,EACvB/iH,IAAIkgH,EAAWqB,uBACf33C,OAAO+wB,GAAS,IAChB36F,IAAI,SAAUqiD,IAAK,OAAQ+0C,GAAS/0C,IAAKA,GAAI2gE,GAAW3gE,MAEzDm/D,GAAcuB,EACb/iH,IAAIkgH,EAAWsB,aACf53C,OAAO+wB,GAAS,IAChB36F,IAAIgjH,IAET,GAAIzB,EAAsB1xF,OAAO2xF,IAAapuG,OAD9B,SAAUszF,IAAS,OAAyB,IAAlBA,GAAM/sD,OAAY,GACI58C,OAC5D,OAAO,KAKX,YAAoB2pG,IAEhB,IAAIvmG,GAAQumG,GAAMvmG,MAAM+M,EAAOw5F,GAAMzoF,KACjC07B,GAAU+sD,GAAMI,UAAU3mG,IAC1B4mG,GAAiBL,GAAMK,eAAe5mG,IAEtCqyC,KAASu0D,IAAiBL,GAAMl0D,OAEhC40D,GAAUV,GAAMx+F,KAAKq7F,OAAOpjG,IAChC,MAAO,CAAEumG,MAAOA,GAAOvmG,MAAOA,GAAOw5C,QAASA,GAASotD,eAAgBA,GAAgBv0D,OAAQA,GAAQ40D,QAASA,IAGpH,IAAI6b,GAAa1B,EAAsB33C,OAAO,SAAUiuB,GAAKx1C,IAEzD,GAAI+0C,GAAS/0C,IACT,OAAOw1C,GAAMx1C,GAEjB,IAAI7P,GAAS6P,GAAE7P,OAAQ40D,GAAU/kD,GAAE+kD,QAASV,GAAQrkD,GAAEqkD,MAEtD,OAAe,IAAXl0D,GACOqlD,GAAIrzF,MAAM,OAASqzF,GAAIzgF,MAAM,GAAG,GAAMygF,GAE7CT,GAAS5kD,IACFqlD,GAAMrlD,IACF,IAAXA,IAEW,MAAX40D,GACOvP,GAEPpxF,GAAQ2gG,IACDvP,GAAM73F,GAAIonG,GAAS8Y,EAAWkB,cAAc50D,KAAK,KAExDk6C,GAAMrnC,IACCw4B,GAAMuP,GAEVvP,GAAMwpB,mBAAmBja,KACjC,IAGCl4B,GAAcsyC,GACbxhH,IAAI,SAAUkjH,IACf,IAAIxc,GAAQwc,GAAaxc,MAAqCU,GAAU8b,GAAa9b,QACrF,KAAe,MAAXA,IAD2G8b,GAAanc,iBACvE,IADZmc,GAAa1wE,UAGjD/rC,GAAQ2gG,MACTA,GAAU,CAACA,KACQ,IAAnBA,GAAQrqG,QAEZ,OAAK2pG,GAAMrnC,MACP+nC,GAAUpnG,GAAIonG,GAASia,qBACpBja,GAAQpnG,IAAI,SAAUwY,IAAO,MAAO,GAAGqX,OAAO62E,GAAMzoF,GAAI,KAAK4R,OAAOrX,QAE1EpF,OAAOkrF,IACP10B,OAAO+wB,GAAS,IAChBnuC,KAAK,KAEV,OAAOy2D,IAAc/zC,GAAc,IAAIr/C,OAAOq/C,IAAe,KAAOhiE,EAAO,KAAO,IAAMA,EAAO,KAAO,KAG1GgzG,EAAWW,cAAgB,4BACpBX,EA3bqB,GEnF5BiD,GAAsC,WACtCA,UAAWllH,OAAOqe,QAAU,SAASq0E,GACjC,QAASjjF,EAAG5H,EAAI,EAAGsG,EAAImpF,UAAUx4F,OAAQ+I,EAAIsG,EAAGtG,IAE5C,QAASuf,MADT3X,EAAI6nF,UAAUzvF,GACO7H,OAAOw3F,UAAU3wF,eAAejI,KAAK6Q,EAAG2X,MACzDsrE,EAAEtrE,IAAK3X,EAAE2X,KAEjB,OAAOsrE,GAEJwyB,GAASztB,MAAM1qF,KAAMuqF,YAK5B6tB,GAA8B,WAC9B,WAAsBjkF,GAClBn0B,KAAKm0B,OAASA,EAElBikF,SAAa3tB,UAAUoc,WAAa,SAAU5zF,EAAI/V,EAAM6mC,GACpD,OAAO,IAAIg2D,GAAM9mF,EAAI/V,EAAMy8F,UAAgB35F,KAAKm0B,OAAO1F,WAAWpB,OAAQ0W,IAE9Eq0E,EAAa3tB,UAAU8V,SAAW,SAAUttF,EAAI/V,EAAM6mC,GAClD,OAAO,IAAIg2D,GAAM9mF,EAAI/V,EAAMy8F,QAAc35F,KAAKm0B,OAAO1F,WAAWpB,OAAQ0W,IAE5Eq0E,EAAa3tB,UAAUwrB,WAAa,SAAUhjG,EAAI/V,EAAM6mC,GACpD,OAAO,IAAIg2D,GAAM9mF,EAAI/V,EAAMy8F,UAAgB35F,KAAKm0B,OAAO1F,WAAWpB,OAAQ0W,IAEvEq0E,EAbuB,GAsB9BC,GAAmC,WAEnC,WAA4ClkF,GACxC,IAAIs5D,EAAQztF,KACZA,KAAKm0B,OAASA,EAEdn0B,KAAK0mG,aAAe,IAAI0R,GAAap4G,KAAKm0B,QAE1Cn0B,KAAKk1G,WAAaA,GAClBl1G,KAAK+5F,MAAQA,GAEb/5F,KAAKg1G,gBAAkB,SAAU7/G,GAAS,OAAOs4F,EAAMt5D,OAAO1F,WAAWpB,OAAO2nF,gBAAgB7/G,IAEhG6K,KAAKq7F,oBAAsB,SAAUlmG,GAAS,OAAOs4F,EAAMt5D,OAAO1F,WAAWpB,OAAOguE,oBAAoBlmG,IAExG6K,KAAK0uB,WAAa,SAAUv5B,GAAS,OAAOs4F,EAAMt5D,OAAO1F,WAAWpB,OAAOqB,WAAWv5B,IAEtF6K,KAAK9C,KAAO,SAAU6D,EAAM07F,GAAYC,IACpC,OAAOjP,EAAMt5D,OAAO1F,WAAWpB,OAAOnwB,KAAK6D,EAAM07F,GAAYC,KAAiBjP,GAUtF4qB,SAAkB5tB,UAAU2b,QAAU,SAAUzf,EAASt5D,GACrD,IAAI2sE,EAAYh6F,KAAKm0B,OAAO1F,WAAWpB,OAEnCxxB,GAASwxB,IAAWA,EAAO0W,OAAS1W,EAAOxxB,OAO/C,OANAwxB,EAASxxB,GAASs8G,GAAS,CAAEp0E,MAAO,CAAEloC,OAAQA,KAAYwxB,GAAUA,EAM7D,IAAI6nF,GAAWvuB,EAASqT,EAAUY,WAAY56F,KAAK0mG,aAAchZ,EALrD,CACfqnB,OAAQ/a,EAAUse,cAClBtD,gBAAiBhb,EAAUue,mBAC3BtD,aAAcjb,EAAUwe,eAEiEnrF,KASjGgrF,EAAkB5tB,UAAU4b,UAAY,SAAUoS,GAE9C,IAAK72G,GAAS62G,GACV,OAAO,EACX,IAAIlhH,GAAS,EACb3E,UAAQsiH,aAAsB,SAAU1nG,EAAKzM,IACrCmrF,GAAW1+E,KACXjW,EAASA,GAAUu0F,EAAU2sB,EAAO13G,MAAUmrF,GAAWusB,EAAO13G,QAEjExJ,GAGX8gH,EAAkB5tB,UAAUiuB,KAAO,WAC/B,IAAI1e,EAAYh6F,KAAKm0B,OAAO1F,WAAWpB,OACvC2sE,SAAUY,WAAWtJ,SAAU,EAC/B0I,EAAUY,WAAW+B,kBACd38F,MAEJq4G,EAjE4B,GCrBnCM,GAAgC,WAChC,WAAwBxkF,GACpBn0B,KAAKm0B,OAASA,EAElBwkF,SAAeluB,UAAU2b,QAAU,SAAUnqG,GACzC,OAAO+D,KAAKm0B,OAAOuzE,kBAAkBtB,QAAQnqG,IAEjD08G,EAAeluB,UAAU19E,OAAS,SAAU6rG,EAAMC,GAC9C,IAAIprB,EAAQztF,KACRgpG,GAAUV,WAAqBS,GAAqBT,sBACpDwQ,GAAWnyB,GAAQ,CACnB,CAACyF,GAAU,SAAU2sB,IAAS,OAAOD,GAASrrB,EAAM2Y,QAAQ2S,OAC5D,CAACvtB,EAAG0pB,IAAa,SAAU6D,IAAS,OAAOtrB,EAAMurB,eAAeD,GAAOF,KACvE,CAAC5sB,EAAG+c,GAASD,IAAqB,SAAUgQ,IAAS,OAAOtrB,EAAM/4F,UAAUqkH,GAAOtrB,EAAMt5D,UACzF,CAACq3D,EAAG5vF,QAAS,SAAUm9G,IAAS,OAAOtrB,EAAMwrB,WAAWF,GAAOF,KAC/D,CAAC3sB,GAAY,SAAU6sB,IAAS,OAAO,IAAIG,GAAYH,GAAOF,OAE9D9pE,GAAO+pE,GAASF,GACpB,IAAK7pE,GACD,MAAM,IAAItF,MAAM,4BACpB,OAAOsF,IAsCX4pE,EAAeluB,UAAUuuB,eAAiB,SAAUG,EAAYN,GAC5D,IAAIO,EAAWP,EACXzsB,GAASysB,KACTA,EAAU74G,KAAKm0B,OAAOuzE,kBAAkBtB,QAAQyS,IAChDrtB,EAAG0pB,GAAH1pB,CAAeqtB,KACfO,EAAW,SAAU5/G,IAAS,OAAOq/G,EAAQtlB,OAAO/5F,MAiBxD,IAAIyiB,GAAU,CAAEk9F,WAAYA,EAAYE,cAPxC,YAAuBx9G,IACnB,IAAI2K,GAAW2yG,EAAW7a,aAAal2F,OAAO,SAAUszF,IAAS,OAAOA,GAAMR,aAC9E,OAAK10F,GAASzU,OAEAyU,GAAS4B,OAAO,SAAUszF,IAAS,OAAO7/F,GAAO6/F,GAAMzoF,MACtDlhB,OAASyU,GAASzU,OAFtB,IAEsBA,EAEiCmL,KAAM,cAC5E,OAAOwwF,EAAO,IAAIwrB,GAjBlB,YAA2B3pF,IACvB,IAAI1zB,GAASs9G,EAAWr9G,KAAKyzB,GAAI0R,KAAM1R,GAAIymF,OAAQzmF,GAAIytE,MACvD,OAAOmc,EAAWrd,UAAUjgG,KAAWA,IAeMu9G,GAAWn9F,KAahE08F,EAAeluB,UAAU/1F,UAAY,SAAU4kH,EAAanlF,GACxD,IAAI4P,EAAQukE,sBAA+BgR,GAAeA,EAAY5T,UAAY4T,EAe9Er9F,GAAU,CAAE8nB,MAAOA,EAAO7mC,KAAM,SACpC,OAAOwwF,EAAO1tF,KAAKg5G,eAAej1E,EAAMxU,IAR1B,SAAU/1B,IACpB,IAAIimG,GAAStrE,EAAOY,aAChBpC,GAAUwB,EAAOxB,QACjB8sE,GAAOn3D,KAAKvE,EAAOvqC,MAAWimG,GAAOn3D,KAAK3V,GAAQ20B,QAAS30B,GAAQ92B,SACnE4jG,GAAO8Z,aAAax1E,EAAOvqC,GAAO,CAAEivC,SAAS,EAAM1D,OAAQ,UAIZ9oB,KAkC3D08F,EAAeluB,UAAUwuB,WAAa,SAAUloB,EAAQ8nB,GACpD,GAAI9nB,EAAO3D,QAAU2D,EAAOyoB,OACxB,MAAM,IAAI/vE,MAAM,4CAMpB,IAII2vE,GAAWhtB,GAASysB,GAJJ,SAAUr/G,IAE1B,OAAOq/G,EAAQ38G,QAAQ,iBAAkB,SAAUW,GAAG+7G,IAAQ,OAAOp/G,GAAe,MAATo/G,GAAe,EAAIpkF,OAAOokF,QAEtDC,EAE/C58F,GAAU,CAAE80E,OAAQA,EAAQ7zF,KAAM,UACtC,OAAOwwF,EAAO,IAAIwrB,GAFU,SAAU3pF,IAAO,OAAOwhE,EAAOj1F,KAAKyzB,GAAI0R,OAEfm4E,IAAWn9F,KAEpE08F,EAAec,UAAY,SAAUj/G,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWgrD,MAAM,SAAUvwD,GAAO,OAAO62F,EAAUtxF,EAAIvF,OAC5H0jH,EAnKyB,GA4KhCO,GACA,WAAqB1/G,EAAOq/G,GACxB,IAAIprB,EAAQztF,KACZA,KAAKxG,MAAQA,EACbwG,KAAK9C,KAAO,MACZ8C,KAAKq5G,cAAgB,SAAU7/G,IAAS,OAAO,EAAIi0F,EAAM0E,KACzDnyF,KAAK64G,QAAUA,GAAWvlB,IC9K9BomB,GAA2B,WAE3B,WAAoCvlF,GAChC,IAAIs5D,EAAQztF,KACZA,KAAKm0B,OAASA,EAGdn0B,KAAKgnC,KAAO,SAAU2yE,GAAO,OAAOlsB,EAAMt5D,OAAO1F,WAAWuY,KAAK2yE,IAEjE35G,KAAKgU,OAAS,SAAUwhF,GAAW,OAAO/H,EAAMt5D,OAAO1F,WAAWza,OAAOwhF,IAEzEx1F,KAAK45G,eAAiB,SAAUC,GAAS,OAAOpsB,EAAMt5D,OAAO1F,WAAWmrF,eAAeC,IAEvF75G,KAAKxG,MAAQ,SAAUsgH,GAAY,OAAOrsB,EAAMt5D,OAAO1F,WAAWj1B,MAAMsgH,IAGxE95G,KAAK+5G,QAAU,SAAUlB,GACrB,OAAOprB,EAAMt5D,OAAO1F,WAAWoqC,MAAMkhD,QAAQlB,IAGjD74G,KAAKg6G,UAAY,SAAUnB,GACvB,OAAOprB,EAAMt5D,OAAO1F,WAAWoqC,MAAMmhD,UAAUnB,IAGnD74G,KAAKqrG,WAAa,SAAUt8D,GAAQ,OAAO0+C,EAAMt5D,OAAO1F,WAAWoqC,MAAMwyC,WAAWt8D,IAEpF/uC,KAAK+uC,KAAO,SAAUA,GAAQ,OAAO0+C,EAAMt5D,OAAO1F,WAAWoqC,MAAM9pB,KAAKA,IAExE/uC,KAAK64D,MAAQ,WAAc,OAAO40B,EAAMt5D,OAAO1F,WAAWoqC,MAAMA,SAEhE74D,KAAKka,KAAO,SAAU+/F,GAAa,OAAOxsB,EAAMt5D,OAAO1F,WAAWoqC,MAAM3+C,KAAK+/F,IAE7Ej6G,KAAK+6D,KAAO,SAAUukC,EAASuZ,GAASt3G,IAAW,OAAOksF,EAAMt5D,OAAO1F,WAAWoqC,MAAMkC,KAAKukC,EAASuZ,GAASt3G,KAC/GvB,KAAK0qG,eAAiB,IAAIiO,GAAexkF,GAG7CulF,SAAUjvB,UAAUv2B,OAAS,SAAUgmD,GACnC,IAAIC,EAAOn6G,KAAKm0B,OAAOf,gBACnB8mF,EACAl6G,KAAKgzB,SAAWmnF,EAAK5qF,MAGrB4qF,EAAK5qF,QAAUvvB,KAAKgzB,UAExBmnF,EAAK5qF,IAAIvvB,KAAKgzB,UAAU,IAY5B0mF,EAAUjvB,UAAU/2F,KAAO,SAAUylH,EAAYt9G,EAAQ0F,GACrD,IAAIrF,GAAUqF,KAAaA,EAAQrF,QACnC8D,KAAKm0B,OAAO1F,WAAWc,IAAI4pF,EAAW5lB,OAAO13F,GAAU,IAAKK,KAqBhEw9G,EAAUjvB,UAAUniD,KAAO,SAAU6wE,EAAYt9G,EAAQ0F,GACrD,IAAIguB,GAAM4pF,EAAW5lB,OAAO13F,GAC5B,GAAW,MAAP0zB,GACA,OAAO,KACXhuB,EAAUA,GAAW,CAAEinC,UAAU,GACjC,IAAImvD,GAAM33F,KAAKm0B,OAAO1F,WAAWpB,OAC7B+sF,GAAUziB,GAAI0iB,YAKlB,IAJKD,IAAmB,OAAR7qF,KACZA,GAAM,IAAMooE,GAAI2iB,aAAe/qF,IAEnCA,GA1GR,YAAwBA,EAAK6qF,EAAS5xE,EAAUtV,GAC5C,MAAiB,MAAbA,EACO3D,EACP6qF,EACO3mB,GAAqBvgE,GAAY3D,EACxCiZ,EACOtV,EAAS9mB,MAAM,GAAKmjB,EACxBA,EAmGGgrF,CAAehrF,GAAK6qF,GAAS74G,EAAQinC,SAAUmvD,GAAIzkE,aACpD3xB,EAAQinC,WAAajZ,GACtB,OAAOA,GAEX,IAAIirF,IAASJ,IAAW7qF,GAAM,IAAM,GAChCkrF,GAAU9iB,GAAI+iB,OACdA,GAAoB,KAAZD,IAA8B,MAAZA,GAAkB,GAAK,IAAMA,GAC3D,MAAO,CAAC9iB,GAAI1kE,WAAY,MAAO0kE,GAAIrhG,OAAQokH,GAAMF,GAAOjrF,IAAKiyB,KAAK,KAEtEvuD,OAAO0nH,eAAejB,EAAUjvB,UAAW,oBAAqB,CAE5Dp1F,IAAK,WACD,OAAO2K,KAAKm0B,OAAO1F,WAAWmsF,mBAElCC,YAAY,EACZC,cAAc,IAEXpB,EA1GoB,GCC3BqB,GAA6B,WAE7B,WAAsC5mF,GAClC,IAAIs5D,EAAQztF,KACZA,KAAKm0B,OAASA,EACGn0B,KAAKg7G,SAAW,GAChBh7G,KAAKi7G,aAAe,GACpBj7G,KAAKk7G,qBAAuB,GAC5Bl7G,KAAKm7G,WAAa,GAEnCn7G,KAAKgvG,WAAa,CACdoM,iBAAkBp7G,KAAKo7G,iBAAiBxvD,KAAK5rD,MAC7Cq7G,mBAAoBr7G,KAAKq7G,mBAAmBzvD,KAAK5rD,MACjDs7G,kBAAmB,SAAUroG,GAAM,OAAO7M,GAAKqnF,EAAMutB,SAAU,SAAU1gF,IAAQ,MAAO,GAAGzV,OAAO4oE,EAAMt5D,OAAOg+D,IAAK,KAAKttE,OAAOyV,GAAKrnB,MAAQA,KAC7IsoG,mBAAoB,WAAc,OAAO9tB,EAAMutB,UAC/CQ,mBAAoB,WAAc,OAAO/tB,EAAMwtB,cAC/CQ,QAAS,SAAUxiG,GACfw0E,SAAM0tB,WAAWznH,KAAKulB,GACf,WAAc,OAAO01E,GAAWlB,EAAM0tB,WAAYliG,MAerE8hG,SAAYW,sBAAwB,SAAUz+G,EAAS0+G,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAYt9G,MAAM,KAClCw9G,GAAaD,EAAc,IAAM,WACjCE,GAAsB1vB,GAASwvB,EAAc,IAAMA,EAAc,GAAK,IAGtEG,GAAwB,wBAAwBjgH,KAAK+/G,IAYzD,GAXIE,KAEAD,GAAsBC,GAAsB,GAC5CF,GAAaE,GAAsB,IAEV,MAAzBF,GAAWnkH,OAAO,KAClBmkH,GAAaA,GAAWlmH,OAAO,GAC/BmmH,GAAsB,IAGN,kBACFhgH,KAAKggH,IAAsB,CACzC,IAAIE,GAAcF,GAAoBz9G,MAAM,KAAKugE,OAAO,SAAUq9C,GAAQ5kE,IAAK,OAAO4kE,GAAO7lH,QAAW6G,GACxG6+G,GAAsBE,GAAYj7G,SAEL,MAAxB+6G,KACLA,GAAsB7+G,EAAQ8D,MAElC,MAAO,CAAE86G,WAAYA,GAAYC,oBAAqBA,KAG1Df,EAAYtwB,UAAU2wB,iBAAmB,SAAUn+G,GAC/C,OAAQ+C,KAAKk8G,aAAej/G,GAAW+C,KAAKk8G,cAGhDnB,EAAYtwB,UAAU4wB,mBAAqB,SAAUc,EAAUrjH,GAC3DkH,KAAKk7G,qBAAqBiB,GAAYrjH,GAE1CiiH,EAAYtwB,UAAUsW,iBAAmB,SAAU9/D,EAAMumE,GACrD,IAAI4U,EAAap8G,KAAKk7G,qBAAqB1T,EAAK/S,OAChD,IAAK2nB,EACD,MAAM,IAAI3yE,MAAM,2DAA6D+9D,EAAK/S,OACtF,IAAI4nB,GAAOD,EAAWn7E,EAAMumE,GAC5B,OAAO/rG,GAAQ4gH,IAAQA,GAAO,CAACA,KAUnCtB,EAAYtwB,UAAU6xB,qBAAuB,SAAU7kB,GACnDY,yBAA4B,cAAeZ,GAC3C9I,GAAW3uF,KAAKi7G,aAAcxjB,IAElCsjB,EAAYtwB,UAAU8xB,mBAAqB,SAAU9kB,GACjDY,yBAA4B,iBAAkBZ,GAC9Cz3F,KAAKi7G,aAAavnH,KAAK+jG,IAE3BsjB,EAAYtwB,UAAUzjD,KAAO,WACzB,IAAIymD,EAAQztF,KACRw8G,EAAex8G,KAAKg7G,SAAShmH,IAAI,SAAU0iG,IAAO,MAAO,CAACA,GAAIhD,IAAKgD,MAAS94B,OAAO+/B,GAAY,IASnG,YAAyBtxE,IAErB,QADIpwB,GAAUowB,GAAOuqE,SAASC,SAAU3tE,GAAQ,IACvCA,IAASjtB,GAAQ7G,QACtB6G,GAAUA,GAAQ7G,OACtB,OAAO8zB,GAGX,IAAIuyF,GAAexxB,EAAM,SAAUyxB,GAASC,GAAQvjB,GAAMC,IAAS,OAAOsjB,IAAUD,GAAQtjB,IAAQsjB,GAAQrjB,OAkBxGujB,GAAe58G,KAAKg7G,SAAS9gG,KAAKuiG,GA9BtC,WAAqBjlB,IACjB,IAAIqlB,GAAa,SAAU5/G,IAAW,OAAQA,IAAWA,GAAQ7G,OAASymH,GAAW5/G,GAAQ7G,QAAU,EAAI,GAC3G,OAAsC,IAA/BohG,GAAO9C,IAAIr2F,MAAM,KAAKtM,OAAiB8qH,GAAWrlB,GAAOhD,kBA4BJ,IAAIx/F,IAjB3C,SAAUwiG,IAC/B,IAAIslB,GAAkBrvB,EAAMwtB,aAAa7yG,OAAO2yG,EAAYxhH,QAAQijH,EAAchlB,KAClF,OAAIslB,GAAgB/qH,OAAS,GAIzB+qH,GAAgB5iG,KAAKuiG,GAAaM,IAAiB,IAEhD,CAAEvlB,OAAQA,GAAQC,WAAYqlB,GAAgB,MAUrDE,GAAqBJ,GAAa5nH,IAAI,SAAUwP,IAAS,OAAOA,GAAMizF,aACtEwlB,GAAwBj9G,KAAKi7G,aAC5B7yG,OAAO,SAAUilB,IAAU,OAAQohE,GAAQuuB,GAAoB3vF,MAC/Dr4B,IAAI,SAAUyiG,IAAc,MAAQ,CAAED,YAAQ5iG,EAAW6iG,WAAYA,MAC1EmlB,GAAahqH,QAZS,SAAU4R,KAGiB,IAAzCipF,EAAMutB,SAASvlH,QAAQ+O,GAAMgzF,SAC7BhzF,GAAMgzF,OAAO0lB,cAAc14G,GAAMizF,cASzC,IAAI0lB,GAAYP,GAAa/3F,OAAOo4F,IACpCj9G,KAAKm7G,WAAWvoH,QAAQ,SAAU46F,IAAM,OAAOA,GAAG2vB,MAClD9kB,iBAAoB8kB,KAiBxBpC,EAAYtwB,UAAU2yB,eAAiB,SAAU5lB,GAC7Ca,+BAAkC,iBAAkBb,GACpD,IAAI6lB,EAAUr9G,KAAKg7G,SAEnB,OAAIqC,EAAQj1G,OADY,SAAUsvF,IAAO,OAAOA,GAAIhD,MAAQ8C,EAAO9C,KAAOgD,GAAIjD,QAAU+C,EAAO/C,QACzD1iG,QAClCsmG,+BAAkC,+BAAgCb,GACtE6lB,EAAQ3pH,KAAK8jG,GACbx3F,KAAKgnC,OACE,YAES,IADFq2E,EAAQ5nH,QAAQ+hG,IAK1Ba,+BAAkC,mBAAoBb,GACtD7I,GAAW0uB,EAAX1uB,CAAoB6I,IAJhBa,+BAAkC,uCAAwCb,EAI1DA,GAQ5BujB,EAAYtwB,UAAU6yB,UAAY,WAC9B,OAAOt9G,KAAKg7G,SAAShmH,IAAI7B,EAAK,SAOlC4nH,EAAYtwB,UAAU8yB,OAAS,WAC3B,OAAOv9G,KAAKg7G,SAAS5yG,OAAOjV,EAAK,YAAY6B,IAAI7B,EAAK,UA2D1D4nH,EAAYxhH,QAAU,SAAUijH,EAAchlB,GAAU,OAAO,SAAUC,GAErE,GAAID,EAAO/C,QAAUgD,EAAWG,SAASnD,MACrC,OAAO,EAEX,IAAI+oB,GAAK/lB,EAAWG,SAChB6lB,GAAaD,GAAGvlB,YAAY55F,MAAM,KAClCq/G,GAAclmB,EAAO9C,IAAIr2F,MAAM,KAGnC,IAAKuvF,GAAO6vB,GAAYC,GAAYtxG,MAAM,EAAIqxG,GAAW1rH,SACrD,OAAO,EAGX,IACI4rH,GAAoBD,GAAYtxG,MAAM,EAD1B,EAAIqxG,GAAW1rH,aAAU6C,GACe4sD,KAAK,KACzDo8D,GAAgBpB,EAAamB,IAAmBnpB,gBACpD,OAAOgpB,GAAGtlB,wBAA0B0lB,IAAiBA,GAAc78G,QAEhEg6G,EA1QsB,GCZ7B8C,GAAiC,WACjC,aAMI79G,KAAKnE,OAAS,IAAI0hG,GAElBv9F,KAAK4zG,yBAA0B,EAE/B5zG,KAAK6zG,kBAAoB,IAAI5iB,GAAM,GAAI,GAEvCjxF,KAAK89G,sBAAwB,IAAI7sB,GAAM,GAAI,GAE/C4sB,SAAgBpzB,UAAUhlC,QAAU,WAChCzlD,KAAK6zG,kBAAkBzsG,QACvBpH,KAAK89G,sBAAsB12G,QAC3BpH,KAAKqB,WAAa,MAEfw8G,EApB0B,GLmCrC,YAAsBhF,GAClB,KAAK3sB,GAAW2sB,IAAazsB,GAASysB,IAAartB,EAAGwT,GAAHxT,CAAgBqtB,IAAa7Z,SAAkB6Z,IAC9F,MAAM,IAAIpvE,MAAM,4FAEpB,OAAOyiD,GAAW2sB,GAAWA,EAAUrrG,GAAIqrG,GAhB/CnE,GAAoB,SAAUz9F,EAAGC,GAC7B,IAAI8/F,EA5BW,SAAU//F,EAAGC,GAAK,OAAQA,EAAE03F,UAAY,IAAM33F,EAAE23F,UAAY,GA4BjEmP,CAAa9mG,EAAGC,GAO1B,OANY,IAAR8/F,IAEJA,EA9BW,SAAU//F,EAAGC,GACxB,IAAIu/F,EAAU,CAAE1K,MAAO,EAAGiS,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQ1H,EAAQx/F,EAAE/Z,OAAS,IAAMu5G,EAAQv/F,EAAEha,OAAS,GA4B9CkhH,CAASnnG,EAAGC,GACN,IAAR8/F,KAEJA,EA7BiB,SAAU//F,EAAGC,GAC9B,OAAQD,EAAEkiG,YAAejiG,EAAEiiG,WAAiBjE,WAAmBj+F,EAAEkiG,WAAYjiG,EAAEiiG,YAAvC,CAAuCA,CA4BzEkF,CAAepnG,EAAGC,GACZ,IAAR8/F,GACOA,EA5BF,SAAU//F,EAAGC,GAEtB,IAAIonG,EAAmB,CAAEvS,OAAO,EAAMiS,YAAY,GAElD,OADYM,EAAiBrnG,EAAE/Z,OAASohH,EAAiBpnG,EAAEha,MAC5C,GAAK+Z,EAAEk7E,KAAO,IAAMj7E,EAAEi7E,KAAO,GAyBrCosB,CAAOtnG,EAAGC,IAkBrB,IAAIsnG,GAA0B,WAE1B,WAAmCrqF,GAC/Bn0B,KAAKm0B,OAASA,EACGn0B,KAAKy+G,QAAU/J,GACf10G,KAAK0+G,OAAS,GACd1+G,KAAKyoB,IAAM,EAC5BzoB,KAAK0qG,eAAiB,IAAIiO,GAAexkF,GAG7CqqF,SAAS/zB,UAAUhlC,QAAU,SAAUtxB,GACnCn0B,KAAK0+G,OAAS,UACP1+G,KAAK2+G,cAqChBH,EAAS/zB,UAAUsvB,QAAU,SAAUlB,GACnC,IAAI+F,EAAYC,GAAahG,GAI7B74G,KAAK+uC,KAAK/uC,KAAK0qG,eAAe39F,OAHhB,SAAU+sG,GAAU3lF,IAC9B,OAAmD,IAA5CA,GAAOxB,QAAQkhF,kBAAkBtzG,UAAkB,QAAQzE,KAAKg+G,GAAS74E,OAEtC29E,KA6ClDJ,EAAS/zB,UAAUuvB,UAAY,SAAUnB,GACrC,IAAI+F,EAAYC,GAAahG,GAC7B74G,KAAK2+G,aAAe3+G,KAAK0qG,eAAe39F,OAAOS,IAAI,GAAOoxG,GAC1D5+G,KAAK8+G,SAAU,GAOnBN,EAAS/zB,UAAU4gB,WAAa,SAAUt8D,GACtC4/C,GAAW3uF,KAAK0+G,OAAQ3vE,IAc5ByvE,EAAS/zB,UAAU17C,KAAO,SAAUA,GAChC,IAAI0+C,EAAQztF,KACZ,IAAK24G,aAAyB5pE,GAC1B,MAAM,IAAItF,MAAM,gBACpBsF,SAAKojD,IAAMnyF,KAAKyoB,MAChBsmB,EAAK6/D,SAAW7/D,EAAK6/D,UAAY,EACjC5uG,KAAK0+G,OAAOhrH,KAAKq7C,GACjB/uC,KAAK8+G,SAAU,EACR,WAAc,OAAOrxB,EAAM4d,WAAWt8D,KAOjDyvE,EAAS/zB,UAAU5xB,MAAQ,WACvB,YAAKkmD,eACE/+G,KAAK0+G,OAAO75F,OAAO7kB,KAAK2+G,aAAe,CAAC3+G,KAAK2+G,cAAgB,KA4CxEH,EAAS/zB,UAAUvwE,KAAO,SAAU+/F,GAIhC,QAHI+E,EAASh/G,KAAKi/G,WAAWj/G,KAAK0+G,OAAS1+G,KAAKy+G,QAAUxE,GAAaj6G,KAAKy+G,SAExEl4B,EAAQ,EACHzrF,GAAI,EAAGA,GAAIkkH,EAAOjtH,OAAQ+I,KAC/BkkH,EAAOlkH,IAAGokH,OAAS34B,EACfzrF,GAAIkkH,EAAOjtH,OAAS,GAAgD,IAA3CiO,KAAKy+G,QAAQO,EAAOlkH,IAAIkkH,EAAOlkH,GAAI,KAC5DyrF,IAGRvmF,KAAK0+G,OAASM,EACdh/G,KAAK8+G,SAAU,GAGnBN,EAAS/zB,UAAUs0B,aAAe,WAC9B/+G,KAAK8+G,SAAW9+G,KAAKka,QAGzBskG,EAAS/zB,UAAUw0B,WAAa,SAAUziH,EAAKy9G,GAC3C,IAAIkF,EAAe3iH,EAAIxH,IAAI,SAAUgC,GAAM43F,IAAO,MAAQ,CAAE53F,KAAMA,GAAM43F,IAAKA,MAC7EuwB,SAAajlG,KAAK,SAAUklG,GAAUC,IAClC,IAAIC,GAAUrF,EAAUmF,GAASpoH,KAAMqoH,GAASroH,MAChD,OAAmB,IAAZsoH,GAAgBF,GAASxwB,IAAMywB,GAASzwB,IAAM0wB,KAElDH,EAAanqH,IAAI,SAAUuqH,IAAW,OAAOA,GAAQvoH,QA6DhEwnH,EAAS/zB,UAAU1vB,KAAO,SAAUukC,EAASuZ,EAASt3G,GAClD,IAAIwtC,GAAO/uC,KAAK0qG,eAAe39F,OAAOuyF,EAASuZ,GAC/C,OAAI/sB,EAAUvqF,GAAWA,EAAQqtG,YAC7B7/D,GAAK6/D,SAAWrtG,EAAQqtG,UAC5B5uG,KAAK+uC,KAAKA,IACHA,IAEJyvE,EArRmB,GM5C1BgB,GAA2B,WACV,WAAoCrrF,GACjD,IAAIs5D,EAAQztF,KACZA,KAAKm0B,OAASA,EACGn0B,KAAK46F,WAAa,IAAIyB,GACtBr8F,KAAKw4G,eAAgB,EACrBx4G,KAAKu4G,oBAAqB,EAC1Bv4G,KAAKs4G,eAAgB,EACrBt4G,KAAKy/G,sBAAuB,EAC5Bz/G,KAAKylD,QAAU,WAAc,OAAOgoC,EAAMmN,WAAWn1C,WAOtEzlD,KAAKkzB,SAAW,WAAc,OAAOu6D,EAAMt5D,OAAOhB,eAAeD,YAUjElzB,KAAKs6G,WAAa,SAAUoF,GAAa,OAAOjyB,EAAMt5D,OAAOhB,eAAemnF,WAAWoF,IAMvF1/G,KAAK1J,KAAO,WAAc,OAAOm3F,EAAMt5D,OAAOhB,eAAe78B,QAM7D0J,KAAKq6G,UAAY,WAAc,OAAO5sB,EAAMt5D,OAAOhB,eAAeknF,aAMlEr6G,KAAK06G,KAAO,WAAc,OAAOjtB,EAAMt5D,OAAOhB,eAAeunF,QAM7D16G,KAAKizB,SAAW,WAAc,OAAOw6D,EAAMt5D,OAAOhB,eAAeF,YAcrEusF,SAAU/0B,UAAUuqB,gBAAkB,SAAU7/G,GAC5C,OAAQ6K,KAAKu4G,mBAAqBzsB,EAAU32F,GAASA,EAAQ6K,KAAKu4G,oBAmBtEiH,EAAU/0B,UAAU4Q,oBAAsB,SAAUlmG,GAChD,GAAI22F,EAAU32F,KAAoB,IAAVA,IAA4B,IAAVA,IAAoBi3F,GAASj3F,GACnE,MAAM,IAAIs0C,MAAM,0BAA0B5kB,OAAO1vB,EAAO,oDAC5D,OAAQ6K,KAAKy/G,qBAAuB3zB,EAAU32F,GAASA,EAAQ6K,KAAKy/G,sBAcxED,EAAU/0B,UAAU/7D,WAAa,SAAUv5B,GACvC,OAAQ6K,KAAKs4G,cAAgBxsB,EAAU32F,GAASA,EAAQ6K,KAAKs4G,eAgCjEkH,EAAU/0B,UAAUvtF,KAAO,SAAU6D,EAAM07F,EAAYC,GACnD,IAAIx/F,GAAO8C,KAAK46F,WAAW19F,KAAK6D,EAAM07F,EAAYC,GAClD,OAAO77E,EAAW47E,GAAqBz8F,KAAP9C,IAE7BsiH,EA1IoB,GCR3BG,GAA4B,WAE5B,WAAqCxrF,GACjC,IAAIs5D,EAAQztF,KACZA,KAAKm0B,OAASA,EACGn0B,KAAK46G,mBAAoB,EAM1C56G,KAAK64D,MAAQ,IAAI2lD,GAASx+G,KAAKm0B,QAM/Bn0B,KAAKqtB,OAAS,IAAImyF,GAAUx/G,KAAKm0B,QAsDjCn0B,KAAKuvB,IAAM,SAAUqwF,EAAQ1jH,GAAS6nC,IAClC,OAAO0pD,EAAMt5D,OAAOf,gBAAgB7D,IAAIqwF,EAAQ1jH,GAAS6nC,KAS7D/jC,KAAKihC,KAAO,WAAc,OAAOwsD,EAAMt5D,OAAOf,gBAAgB6N,QAQ9DjhC,KAAKg2G,OAAS,WAAc,OAAOvoB,EAAMt5D,OAAOf,gBAAgB4iF,UAQhEh2G,KAAKg9F,KAAO,WAAc,OAAOvP,EAAMt5D,OAAOf,gBAAgB4pE,QAgB9Dh9F,KAAK6/G,SAAW,SAAU7rH,GAAY,OAAOy5F,EAAMt5D,OAAOf,gBAAgBysF,SAAS7rH,IAGvF2rH,SAAWl1B,UAAUhlC,QAAU,WAC3BzlD,KAAKgU,QAAO,GACZhU,KAAK64D,MAAMpT,WAOfk6D,EAAWl1B,UAAUtL,MAAQ,WACzB,MAAO,CAAEl+C,KAAMjhC,KAAKihC,OAAQ+0E,OAAQh2G,KAAKg2G,SAAUhZ,KAAMh9F,KAAKg9F,SAsBlE2iB,EAAWl1B,UAAUzjD,KAAO,SAAU2yE,GAClC,IAAIA,IAAOA,EAAImG,iBAEf,KAAIhjG,EAAK9c,KAAKm0B,OAAQ1F,EAAa3R,EAAG2R,WAAYsG,GAAejY,EAAGiY,aAChExF,GAAM,CAAE0R,KAAMxS,EAAWwS,OAAQ+0E,OAAQvnF,EAAWunF,SAAUhZ,KAAMvuE,EAAWuuE,QAC/E+iB,GAAO//G,KAAKxG,MAAM+1B,IACJo3D,GAAQ,CACtB,CAACyF,GAAU,SAAUwzB,IAAU,OAAOnxF,EAAWc,IAAIqwF,IAAQ,KAC7D,CAAC5gB,SAAmB,SAAU99F,IAAO,OAAO6zB,GAAaC,GAAG9zB,GAAI6iC,MAAO7iC,GAAIrF,OAAQqF,GAAIK,WACvF,CAACiqF,EAAGwT,IAAc,SAAUrzF,IAAU,OAAOopB,GAAaC,GAAGrpB,GAAOo4B,QAASp4B,GAAO9P,SAAU8P,GAAOpK,cAEzGy+G,CAAYD,IAAQA,GAAKhxE,KAAK8pE,QAAQkH,GAAKvmH,MAAO+1B,GAAKvvB,KAAKm0B,WAwBhEwrF,EAAWl1B,UAAUz2E,OAAS,SAAUwhF,GACpC,IAAI/H,EAAQztF,KACZ,IAAgB,IAAZw1F,EAKA,OAAQx1F,KAAKigH,iBACTjgH,KAAKigH,kBAAoBjgH,KAAKm0B,OAAO1F,WAAWoxF,SAAS,SAAUlG,GAAO,OAAOlsB,EAAMzmD,KAAK2yE,KALhG35G,KAAKigH,kBAAoBjgH,KAAKigH,0BACvBjgH,KAAKigH,gBAIoFtG,EA2BxGgG,EAAWl1B,UAAUmvB,eAAiB,SAAUC,QAC9BjlH,IAAVilH,IACAA,GAAQ,GACZ75G,KAAK46G,kBAAoBf,GAQ7B8F,EAAWl1B,UAAUjxF,MAAQ,SAAU+1B,GACnC,IAI0Bwf,GAClBv1C,GAJR+1B,EAAMm+D,EAAO,CAAEzsD,KAAM,GAAI+0E,OAAQ,GAAIhZ,KAAM,IAAMztE,GAYjD,QADIwwF,GAVAlnD,EAAQ74D,KAAK64D,MAAMA,QAWd/9D,GAAI,EAAGA,GAAI+9D,EAAM9mE,UAElBguH,IAAQA,GAAKhxE,KAAKmwE,SAAWrmD,EAAM/9D,IAAGokH,QAFZpkH,KAAK,CAInC,IAAIwsD,SAZA9tD,OADkBu1C,GAaE8pB,EAAM/9D,KAZbtB,MAAM+1B,EALfvvB,KAK0Bm0B,UAClB,CAAE36B,MAAOA,GAAOu1C,KAAMA,GAAMmxE,OAAQnxE,GAAKsqE,cAAc7/G,MAavEumH,IAAQA,IAASz4D,IAAWA,GAAQ44D,OAASH,GAAKG,OAAU54D,GAAUy4D,GAE1E,OAAOA,IAEJJ,EA7PqB,GCM5BQ,GAAkB,EAMlBC,GAAsBzzB,GAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9C0zB,GAAqB1zB,GAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlE2zB,GAA0B,WAQ1B,WAAkBltF,EAAiBD,QACP,IAApBC,IAA8BA,EAAkBgtF,SAC7B,IAAnBjtF,IAA6BA,EAAiBktF,IAClDrgH,KAAKozB,gBAAkBA,EACvBpzB,KAAKmzB,eAAiBA,EACLnzB,KAAKmyF,IAAMguB,KACXngH,KAAK8tG,WAAY,EACjB9tG,KAAKugH,aAAe,GAErCvgH,KAAKq4F,MAAQA,GAEbr4F,KAAKwgH,YAAc,IAAIzF,GAAY/6G,MAEnCA,KAAK2yB,QAAU,IAAIkrF,GAEnB79G,KAAK4uB,kBAAoB,IAAIuB,GAAkBnwB,MAK/CA,KAAK0nG,kBAAoB,IAAI2Q,GAAkBr4G,MAK/CA,KAAKygH,UAAY,IAAI/G,GAAU15G,MAE/BA,KAAKyuB,WAAa,IAAIkxF,GAAW3/G,MAEjCA,KAAKsqG,cAAgB,IAAIK,GAAc3qG,MAEvCA,KAAK+0B,aAAe,IAAI2rF,GAAa1gH,MAErCA,KAAK2gH,SAAW,GAChB3gH,KAAKwgH,YAAYxR,WAAWoM,iBAAiBp7G,KAAKsqG,cAAcpsF,QAChEle,KAAK2yB,QAAQ8qE,SAAWz9F,KAAKsqG,cAAcpsF,OAC3Cle,KAAK2yB,QAAQ20B,QAAUtnD,KAAK2yB,QAAQ8qE,SAAS5pC,KAC7C7zD,KAAK4gH,WAAW5gH,KAAK2yB,SACrB3yB,KAAK4gH,WAAW5gH,KAAK+0B,cACrB/0B,KAAK4gH,WAAW5gH,KAAKsqG,eACrBtqG,KAAK4gH,WAAW5gH,KAAK4uB,mBACrB5uB,KAAK4gH,WAAW5gH,KAAKyuB,YACrBzuB,KAAK4gH,WAAWxtF,GAChBpzB,KAAK4gH,WAAWztF,GAGpBmtF,SAAS71B,UAAUm2B,WAAa,SAAUA,GACtC5gH,KAAKugH,aAAa7sH,KAAKktH,IAa3BN,EAAS71B,UAAUhlC,QAAU,SAAUm7D,GACnC,IAAInzB,EAAQztF,KACR4gH,GAAc10B,GAAW00B,EAAWn7D,SACpCm7D,EAAWn7D,QAAQzlD,OAGvBA,KAAK8tG,WAAY,EACjB9tG,KAAKugH,aAAan0G,QAAQxZ,QAAQ,SAAU+oC,GACxC,IACyB,mBAAdA,EAAE8pB,SAA0B9pB,EAAE8pB,QAAQgoC,GAC7CkB,GAAWlB,EAAM8yB,aAAc5kF,EAEnC,CAFmCA,MAE5B+2D,IAAP,MAwDR4tB,EAAS71B,UAAUo2B,OAAS,SAAUA,EAAQt/G,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIu/G,EAAiB,IAAID,EAAO7gH,KAAMuB,GACtC,IAAKu/G,EAAe//G,KAChB,MAAM,IAAI0oC,MAAM,+CAAiDq3E,GACrE,YAAKP,aAAa7sH,KAAKotH,GACf9gH,KAAK2gH,SAASG,EAAe//G,MAAQ+/G,GAEjDR,EAAS71B,UAAUs2B,UAAY,SAAUC,GACrC,OAAOA,EAAahhH,KAAK2gH,SAASK,GAAc9+G,GAAOlC,KAAK2gH,WAEzDL,EAnJmB,GCvB9B,YAA4BvsF,GACxBA,EAAMu+E,cAAc5P,YAAoB4d,GAAUvsF,EAAMI,QAAS,IACjEJ,EAAMu+E,cAAc5P,YAAoBkO,GAAY78E,GAAQ,IAC5DA,EAAMu+E,cAAc5P,YAAoB,eAAgB3uE,GAAQ,IAChEA,EAAMu+E,cAAc5P,YAAoB,eAAgB3uE,EAAMl4B,UAAW,IACzEk4B,EAAMiuE,WAAWpvG,QAAQ,SAAUmxC,GAC/BhQ,EAAMu+E,cAAc5P,YAAoB,UAAW3+D,GAAQA,KAG5D,IAIHk9E,GAAexyB,GADK,CAAC,eAAgBmiB,KAM9BsQ,GAAqB,SAAUntF,GACtC,IAAI9V,EAAQ/b,GAAO6xB,EAAM2tE,eAAe9iC,OAAO+wB,GAAS,IAAI/wB,OAAOkxB,GAAO,IAEtEqxB,EAA4B,SAAU57D,GACtC,OAAO07D,GAAa17D,EAAEl/C,OAASq8F,YAAoBn9C,EAAEl/C,MAAO,MAAQk/C,GAExEtnC,EAAMrrB,QAAQ,SAAUoK,GACpBA,EAAKohG,YAAcphG,EAAKohG,YAAYppG,IAAImsH,MCnB5CC,GAAiB,SAAUrtF,GAC3B,IAAI6+E,EAAW7+E,EAAMjF,KAAK4Y,WAC1B,GAAKkrE,EAAL,CAEA,IAAInT,EAAS1rE,EAAMI,OAAOY,aAW1B,OAAIm3D,GAAW0mB,GACJ3lB,WAAiB2lB,EAAS7+E,IAAQ/J,KAAKujF,GAE3CA,EAAaqF,EAfhB,CAEJ,WAAsBr7G,IAClB,GAAKA,GAEL,IAAIA,cAAkBynG,GAClB,OAAOznG,GACX,GAAI60F,GAAS70F,IACT,OAAOkoG,EAAO9zF,OAAOpU,GAAQw8B,EAAMl4B,SAAUk4B,EAAMxyB,WACvD,GAAIhK,GAAOwsC,OAAYxsC,GAAOsE,OAC1B,OAAO4jG,EAAO9zF,OAAOpU,GAAOwsC,OAAYhQ,EAAMjF,KAAMv3B,GAAOsE,QAAak4B,EAAMl4B,SAAUk4B,EAAMxyB,YAKlFqxG,ECtBxB,YAAiCpB,GAC7B,OAAO,SAAUnwG,EAAY0iC,GAGzB,OAAOs9E,EAFMt9E,EAAM2hE,UACC8L,IACNnwG,EAAY0iC,IAYlC,IAAIu9E,GAAaC,GAAwB,UAarCC,GAAeD,GAAwB,YAavCE,GAAcF,GAAwB,WCnCtCG,GAAmB,SAAU3tF,GAC7B,OAAO,IAAIiwE,GAAejwE,EAAM2tE,cAAc5yE,IAAIy1E,YAAY,QAASxwE,GAAO/J,KAAK8pE,KAcnF6tB,GAAmB,SAAU5tF,EAAOgQ,GACpC,OAAO,IAAIigE,GAAejwE,EAAM2tE,cAAc5yE,IAAIs1E,WAAWrgE,EAAM2hE,WAAWnB,YAAY,OAAQxwE,GAAO/J,KAAK8pE,KAe9G8tB,GAAmB,SAAU7tF,GAC7B,OAAO,IAAIiwE,GAAejwE,EAAM2tE,cAAc5yE,IAAIy1E,YAAY,OAAQxwE,GAAO/J,KAAK8pE,KCnClF+tB,GAAoB,SAAUxgH,GAC9B,IAAI6rF,EAAKD,MACL60B,EAAgBzgH,EAAWg9F,MAAM,YACrC,GAAKyjB,EAAc/vH,OAEnB,OAAOm7F,EAAG72B,IAAIyrD,EAAc9sH,IAAI,SAAUslC,GAAQ,OAAO4yD,EAAGnyB,KAAKzgC,EAAKkH,WAAaxX,KAAK8pE,KAexFiuB,GAAgB,SAAU1gH,GAC1B,IAAIygH,EAAgBzgH,EAAWg9F,MAAM,YACjC2jB,EAAe3gH,EAAWg9F,MAAM,WACpC,GAAKyjB,EAAc/vH,QAAWiwH,EAAajwH,OAE3C,KAAI4uG,EAAQt/F,EAAW8yB,OAAOqsF,YAC9BwB,EAAapvH,QAAQ,SAAU4qH,IAAM,OAAO7c,EAAM2b,qBAAqBkB,MACvEsE,EAAclvH,QAAQ,SAAU4qH,IAAM,OAAO7c,EAAM4b,mBAAmBiB,MACtE7c,EAAM35D,SCzBNi7E,GAAoB,SAAUluF,GAC9B,IAAIpB,EAAUoB,EAAMI,OAAOxB,QAOvBuvF,EAAyB,WAErBvvF,EAAQtxB,aAAe0yB,IACvBpB,EAAQtxB,WAAa,OAE7B0yB,EAAMgzB,UAAU,GAXW,WACvBp0B,EAAQmrF,sBAAsBxsB,QAAQv9D,GACtCpB,EAAQ8qE,SAAW1pE,EAAM2pE,MACzB/qE,EAAQ20B,QAAU30B,EAAQ8qE,SAAS5pC,KACnCmyC,GAAKjyE,EAAMl4B,SAAU82B,EAAQ92B,SAOS,CAAE+yG,SAAU,MACtD76E,EAAMtK,QAAQO,KAAKk4F,EAAwBA,ICtB3CC,GAAY,SAAU9gH,GACtB,IAAIE,EAAUF,EAAWE,UACrBk+F,EAASp+F,EAAW8yB,OAAOY,aAC3BqtF,EAAa/gH,EAAW8yB,OAAOssF,UAKZ,QAAnBl/G,EAAQwjC,QAAoBxjC,EAAQyxB,UAAYysE,EAAOhC,SAAS6I,WAEhE8b,EAAW1uH,KAAK+rG,EAAOhC,SAAS6I,UAAU/2E,IAAKkwE,EAAO5jG,OADrC,CAAEK,QAA8B,YAArBqF,EAAQyxB,WAGxCovF,EAAWluD,QAAO,ICQlBmuD,GAAe,SAAUhhH,GACzB,IAAI8yB,EAAS9yB,EAAW8yB,OAuBpBywE,EAAWvjG,EACV2gG,WACA55F,OAAO,SAAU27B,IAAS,QAASA,GAAM2hE,UAAU4c,WACnDttH,IAAI,SAAU+uC,IAAS,OAAOw+E,GAAclhH,EAAY0iC,MAC7D,OAAOkpD,UAAgB2X,GAAU56E,KA1BjC,aACI,GAAyD,QAArD3oB,EAAWqxG,qBAAqBnxG,UAAUwjC,OAAkB,CAG5D,IAAIy9E,GAAOnhH,EAAW+mC,cACtB,OAAOjU,EAAOY,aAAappB,OAAO62G,GAAKhjB,aAAcgjB,GAAK3mH,SAAU2mH,GAAKjhH,WAI7E,IAAI44G,GAAOhmF,EAAO1F,WACdl3B,GAAS4iH,GAAK3gH,MAAM2gH,GAAKh7B,SACzBpwC,GAAOx3C,IAAUA,GAAOw3C,KAG5B,GAAIA,IAAsB,UAAdA,GAAK7xC,KAGb,OAAOi3B,EAAOY,aAAappB,OAFfojC,GAAKhL,MACJxsC,GAAOiC,MAC6B6H,EAAWE,WAGhE4yB,EAAO1F,WAAWuY,QAMgBy7E,EAYnC,YAAuBphH,EAAY0iC,GACtC,IAAI2+E,EAAa3+E,EAAM2hE,UAAU4c,SAE7B74F,EAAUi5F,EAAWC,SAwBzB,OAvBKl5F,IAWDA,EAAUi5F,EAAWC,SAAc11B,WACzBy1B,EAAWrhH,EAAY0iC,IAC5B/Z,KAIT,YAA6BzyB,IACzB,OAAIA,IAAUV,MAAM4E,QAAQlE,GAAOsJ,SAC/BtJ,GAAOsJ,OAAOjO,QAAQ,SAAUqyB,IAAU,OAAO5jB,EAAW8yB,OAAOm2E,cAAct3F,SAASiS,MAEvF1tB,KAPFyyB,KAbS,SAAUzyB,IACpB,cAAOwsC,EAAMu+E,gBACNv+E,EAAM2hE,UAAU4c,gBAChBI,EAAWC,SACXprH,IAEC,SAAUw5B,IAClB,cAAO2xF,EAAWC,SACX11B,aAAmBl8D,OAc3BtH,ECvFX,IAAIm5F,GAEA,WAA6B7hH,EAAMqrG,EAAWyW,EAAW3S,GAAmBK,GAAa/C,GAAkBF,GAAiBG,SACpG,IAAhB8C,KAA0BA,IAAc,QACnB,IAArB/C,KAA+BA,GAAmBvB,uBAC9B,IAApBqB,KAA8BA,GAAkBrB,sBAChC,IAAhBwB,KAA0BA,IAAc,GAC5CztG,KAAKe,KAAOA,EACZf,KAAKosG,UAAYA,EACjBpsG,KAAK6iH,UAAYA,EACjB7iH,KAAKkwG,kBAAoBA,GACzBlwG,KAAKuwG,YAAcA,GACnBvwG,KAAKwtG,iBAAmBA,GACxBxtG,KAAKstG,gBAAkBA,GACvBttG,KAAKytG,YAAcA,ICT3B,YAAqB15E,GACjB,IAAI+uF,EAAgB/uF,EAAMs/E,iBAC1B,GAAKyP,EAELzqB,2BAA6BtkE,GAC7B,IAAIu/E,EAAUv/E,EAAMI,OAAOxB,QAAQtxB,WAInC,MAAsB,kBAAlByhH,GAAqCxP,GACrCA,EAAQr/E,QAELg+D,aAAoB/uB,aCf/B,YAA+BnvC,GAC3B,IAAKA,EAAM4rE,QACP,MAAM,IAAIl2D,MAAM1V,EAAM/C,QAAQp/B,YAG/B,ICaImxH,GAAmB,CAC1B/vF,UAAU,EACVusE,SAAU,KACV92D,SAAS,EACTojB,QAAQ,EACR8tB,QAAQ,EACRqpC,WAAW,EACXC,OAAQ,GACR37D,QAAS,WAAc,OAAO,MAC9BviB,OAAQ,WAaR5U,GAAmC,WAEnC,WAA2B+yF,GAEvBljH,KAAKgxG,iBAAmB,EAExBhxG,KAAKmjH,YAAc,GAEnBnjH,KAAKsvG,iBAAmB,GAExBtvG,KAAKojH,eAAiB,GACtBpjH,KAAKkjH,QAAUA,EACfljH,KAAK2gG,MAAQuiB,EAAQ1C,YACrBxgH,KAAKqjH,mBAAqB,GAC1BrjH,KAAKgvG,WAAcsU,GAAqB91G,GAAIxN,MAAO,GAAIwN,GAAIxN,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAKujH,mBACLvjH,KAAKwjH,oBACLxjH,KAAKyjH,+BACLP,EAAQvwF,QAAQmrF,sBAAsBzsB,QAAQ6vB,IAyBlD/wF,SAAkBs6D,UAAUi5B,SAAW,SAAUnuD,EAAUvhE,EAAUuN,GAAS,EAI9E4uB,EAAkBs6D,UAAU2mB,SAAW,SAAU77C,EAAUvhE,EAAUuN,GAAS,EAI9E4uB,EAAkBs6D,UAAUx2F,QAAU,SAAUshE,EAAUvhE,EAAUuN,GAAS,EAI7E4uB,EAAkBs6D,UAAU4mB,OAAS,SAAU97C,EAAUvhE,EAAUuN,GAAS,EAI5E4uB,EAAkBs6D,UAAU6mB,SAAW,SAAU/7C,EAAUvhE,EAAUuN,GAAS,EAI9E4uB,EAAkBs6D,UAAU32D,QAAU,SAAUyhC,EAAUvhE,EAAUuN,GAAS,EAI7E4uB,EAAkBs6D,UAAU57D,SAAW,SAAU0mC,EAAUvhE,EAAUuN,GAAS,EAI9E4uB,EAAkBs6D,UAAU1jC,UAAY,SAAUwO,EAAUvhE,EAAUuN,GAAS,EAI/E4uB,EAAkBs6D,UAAU18B,QAAU,SAAUwH,EAAUvhE,EAAUuN,GAAS,EAO7E4uB,EAAkBs6D,UAAUhlC,QAAU,SAAUtxB,GAC5CjyB,GAAOlC,KAAKsvG,kBAAkB18G,QAAQ,SAAU+wH,GAC5C,OAAOA,EAAW/wH,QAAQ,SAAUm6G,GAChCA,EAAKG,eAAgB,EACrBve,GAAWg1B,EAAY5W,QAenC58E,EAAkBs6D,UAAU19E,OAAS,SAAUwzF,EAAUn4D,GACrD,OAAO,IAAIwoE,GAAWrQ,EAAUn4D,EAAapoC,KAAKkjH,UAGtD/yF,EAAkBs6D,UAAU+4B,kBAAoB,WAC5C,IAAII,EAAQnY,GACRoY,EAAK5X,GACL6X,EAAQ9jH,KAAKojH,eAGjBpjH,KAAK+jH,aAAa,WAAYH,EAAMlY,OAAQ,EAAGoY,EAAMh1F,IAFnC,EAEoD+0F,EAAG5V,oBAAqB4V,EAAGzV,aAD/E,GAElBpuG,KAAK+jH,aAAa,WAAYH,EAAMjY,OAAQ,EAAGmY,EAAMh1F,IACrD9uB,KAAK+jH,aAAa,UAAWH,EAAMhY,IAAK,EAAGkY,EAAMh1F,IACjD9uB,KAAK+jH,aAAa,SAAUH,EAAMhY,IAAK,IAAKkY,EAAM/hB,SALV,GAMxC/hG,KAAK+jH,aAAa,WAAYH,EAAMhY,IAAK,IAAKkY,EAAMhiB,UACpD9hG,KAAK+jH,aAAa,UAAWH,EAAMhY,IAAK,IAAKkY,EAAM9hB,UACnDhiG,KAAK+jH,aAAa,WAAYH,EAAMhY,IAAK,IAAKkY,EAAMh1F,IACpD9uB,KAAK+jH,aAAa,YAAaH,EAAM/X,QAAS,EAAGiY,EAAMh1F,IATrC,EASsD+0F,EAAG5V,oBAAqB4V,EAAG3V,WARjF,GASlBluG,KAAK+jH,aAAa,UAAWH,EAAM5xB,MAAO,EAAG8xB,EAAMh1F,IAVjC,EAUkD+0F,EAAG5V,oBAAqB4V,EAAG3V,WAT7E,EASwF8V,EAG9G7zF,EAAkBs6D,UAAU84B,iBAAmB,WAC3C,IAAIxX,EAAQD,SAA2BjX,EAAaiX,cACpD9rG,KAAKikH,gBAAgB,KAAMpvB,GAC3B70F,KAAKikH,gBAAgB,OAAQpvB,GAC7B70F,KAAKikH,gBAAgB,UAAWlY,GAChC/rG,KAAKikH,gBAAgB,WAAYlY,GACjC/rG,KAAKikH,gBAAgB,WAAYlY,IAGrC57E,EAAkBs6D,UAAUs5B,aAAe,SAAUhjH,EAAMqrG,EAAWyW,EAAW3S,GAAmBK,GAAa/C,GAAkBF,GAAiBG,SAC5H,IAAhB8C,KAA0BA,IAAc,QACnB,IAArB/C,KAA+BA,GAAmBvB,uBAC9B,IAApBqB,KAA8BA,GAAkBrB,sBAChC,IAAhBwB,KAA0BA,IAAc,GAC5C,IAAInB,GAAY,IAAIsW,GAAoB7hH,EAAMqrG,EAAWyW,EAAW3S,GAAmBK,GAAa/C,GAAkBF,GAAiBG,IACvIztG,KAAKmjH,YAAYzvH,KAAK44G,IACtBiF,GAAUvxG,KAAMA,KAAMssG,KAG1Bn8E,EAAkBs6D,UAAUmlB,WAAa,SAAUz5F,GAI/C,OAH0B21E,EAAU31E,GAC9BnW,KAAKmjH,YAAY/6G,OAAO,SAAUlL,GAAQ,OAAOA,EAAKkvG,YAAcj2F,IACpEnW,KAAKmjH,YAAY/2G,SACI8N,KAAK,SAAU8oB,EAAGuiB,IACzC,IAAI2+D,GAAalhF,EAAEopE,UAAY7mD,GAAE6mD,UACjC,OAAsB,IAAf8X,GAAmBlhF,EAAE6/E,UAAYt9D,GAAEs9D,UAAYqB,MAgB9D/zF,EAAkBs6D,UAAUw5B,gBAAkB,SAAUljH,EAAMojH,GAC1DnkH,KAAKojH,eAAeriH,GAAQ,CAAEA,KAAMA,EAAMsuG,MAAO8U,IAIrDh0F,EAAkBs6D,UAAUwkB,cAAgB,WACxC,OAAOjvG,KAAKojH,gBAGhBjzF,EAAkBs6D,UAAUimB,SAAW,SAAUc,GAC7C,OAAOxxG,KAAKsvG,iBAAiBkC,IAGjCrhF,EAAkBs6D,UAAUg5B,6BAA+B,WACvD,IAAIW,EAAMpkH,KAAKqjH,mBACfe,EAAIC,gBX1N4B,SAAUz1F,GAC9C,OAAOA,EAAkB80F,SAAS,GAAIY,IWyNZC,CAA2BvkH,MACjDokH,EAAI1xB,QFhN+B,SAAU9jE,GACjD,OAAOA,EAAkBwiF,SAAS,GAAIoT,GAAa,CAAE5V,UAAU,OE+M7C6V,CAA8BzkH,MAC5CokH,EAAI3xB,QD7N+B,SAAU7jE,GACjD,OAAOA,EAAkBwiF,SAAS,GAAIsT,GAAuB,CAAE9V,UAAU,MC4NvD+V,CAA8B3kH,MAE5CokH,EAAI18E,WV7MwB,SAAU9Y,GAC1C,OAAOA,EAAkB36B,QAAQ,CAAE66B,GAAI,SAAUiV,GAAS,QAASA,EAAM2D,aAAiB05E,IU4MrEwD,CAAuB5kH,MAExCokH,EAAI/S,OTtNoB,SAAUziF,GACtC,OAAOA,EAAkByiF,OAAO,CAAEtP,QAAS,SAAUh+D,GAAS,QAASA,EAAMstE,SAAaiQ,ISqNzEuD,CAAmB7kH,MAChCokH,EAAI9S,ST1MsB,SAAU1iF,GACxC,OAAOA,EAAkB0iF,SAAS,CAAExP,SAAU,SAAU/9D,GAAS,QAASA,EAAMutE,WAAekQ,ISyM5EsD,CAAqB9kH,MACpCokH,EAAItwF,QT9LqB,SAAUlF,GACvC,OAAOA,EAAkBkF,QAAQ,CAAEkuE,SAAU,SAAUj+D,GAAS,QAASA,EAAMjQ,UAAc2tF,IS6L3EsD,CAAoB/kH,MAElCokH,EAAIY,aRjO0B,SAAUp2F,GAC5C,OAAOA,EAAkB36B,QAAQ,GAAIytH,GAAkB,CAAE9S,SAd1B,KAcoCqW,CQgO5CC,CAAyBllH,MAC5CokH,EAAIe,YRnN0B,SAAUv2F,GAC5C,OAAOA,EAAkBkF,QAAQ,CAAEkuE,SAAUx0F,IAAI,IAASm0G,GAAkB,CAAE/S,SA7B/C,KA6ByDqW,CQkNlEG,CAAyBplH,MAC3CokH,EAAIiB,WRpM0B,SAAUz2F,GAC5C,OAAOA,EAAkBC,SAAS,GAAI+yF,GAAkB,CAAEhT,SA7C3B,KA6CqCqW,CQmM/CK,CAAyBtlH,MAE1CokH,EAAImB,UPpO2B,SAAU32F,GAC7C,OAAOA,EAAkBC,SAAS,GAAIgzF,IOmOlB2D,CAA0BxlH,MAC1CokH,EAAIrC,cP9MuB,SAAUnzF,GACzC,OAAOA,EAAkBm4B,UAAU,GAAIg7D,IO6Mf0D,CAAsBzlH,MAE1CokH,EAAIsB,cN3N2B,SAAU92F,GAC7C,OAAOA,EAAkB80F,SAAS,GAAIzB,IM0Nd0D,CAA0B3lH,MAE9CokH,EAAIjC,ULvOmB,SAAUvzF,GACrC,OAAOA,EAAkBm4B,UAAU,GAAIo7D,GAAW,CAAEvT,SAAU,OKsO1CgX,CAAkB5lH,MAElCokH,EAAI9B,SJrMsB,SAAU1zF,GACxC,OAAOA,EAAkBwiF,SAAS,CAAEpP,SAAU,SAAUj+D,GAAS,QAASA,EAAMu+E,WAAeD,IIoM5EwD,CAAqB7lH,OAEjCmwB,EA/M4B,GC5BnCuwF,GAA8B,WAE9B,WAAuCvsF,GACnCn0B,KAAKm0B,OAASA,EAEdn0B,KAAK8lH,iBAAmB,GAExB9lH,KAAK+lH,qBAAuB,SAA8BC,IAClDA,cAAmBv8E,OAASu8E,GAAQC,OACpCh3F,QAAQ+B,MAAMg1F,IACd/2F,QAAQ+B,MAAMg1F,GAAQC,QAErBC,cAAuBj0B,IACxBhjE,QAAQ+B,MAAMg1F,GAAQp0H,YAClBo0H,GAAQ9zB,QAAU8zB,GAAQ9zB,OAAO+zB,OACjCh3F,QAAQ+B,MAAMg1F,GAAQ9zB,OAAO+zB,QAGjCh3F,QAAQ+B,MAAMg1F,KAGtB,IACIG,EAAWlzH,OAAOC,KAAKwtH,EAAaj2B,WAAWriF,OAAOgjF,EAAIqD,GADhD,CAAC,UAAW,WAAY,SAAU,iBAEhD60B,GAAqB91G,GAAIkzG,EAAaj2B,WAAYzqF,KAAMwN,GAAIxN,MAAOmmH,GAEvElzH,cAAO0nH,eAAe+F,EAAaj2B,UAAW,aAAc,CAMxDp1F,IAAK,WACD,OAAO2K,KAAKm0B,OAAOxB,QAAQtxB,YAE/Bw5G,YAAY,EACZC,cAAc,IAElB7nH,OAAO0nH,eAAe+F,EAAaj2B,UAAW,SAAU,CAMpDp1F,IAAK,WACD,OAAO2K,KAAKm0B,OAAOxB,QAAQ92B,QAE/Bg/G,YAAY,EACZC,cAAc,IAElB7nH,OAAO0nH,eAAe+F,EAAaj2B,UAAW,UAAW,CAMrDp1F,IAAK,WACD,OAAO2K,KAAKm0B,OAAOxB,QAAQ20B,SAE/BuzD,YAAY,EACZC,cAAc,IAElB7nH,OAAO0nH,eAAe+F,EAAaj2B,UAAW,WAAY,CAMtDp1F,IAAK,WACD,OAAO2K,KAAKm0B,OAAOxB,QAAQ8qE,UAE/Bod,YAAY,EACZC,cAAc,IAGlB4F,EAAaj2B,UAAUhlC,QAAU,WAC7BzlD,KAAKitG,oBAAoBnZ,IACzB9zF,KAAK8lH,iBAAmB,IAa5BpF,EAAaj2B,UAAU27B,0BAA4B,SAAU7lB,EAAU5rG,GACnE,IAAI84F,EAAQztF,KACRtL,GAAYwrG,mBAA0BlgG,KAAKm0B,OAAOm2E,cAAe/J,GACjE5tE,GAAU3yB,KAAKm0B,OAAOxB,QACtB0zF,GAAc,WAAc,OAAO1zF,GAAQkhF,kBAAkBpiB,YAC7D60B,GAASD,KACTE,GAAgB,IAAIt1B,GAAMjxF,KAAK8lH,iBAAiB15G,SAChDoiB,GAAW,IAAIw1E,GAAezD,GAAU/xE,WACxCg4F,GAAmB,SAAUjvH,IAC7B,GAAMA,cAAkBynG,GAGxB,KAAIrzF,GAASpU,GAGb,OADAoU,GAAS8hF,EAAM9hF,OAAOA,GAAO6zF,aAAc7zF,GAAO9P,SAAU8P,GAAOpK,YACvDo+F,QAGR0mB,OAAkBC,GACXr0B,gBAAuB/uB,YAE3BuqB,EAAM8rB,aAAa5tG,GAAO6zF,aAAc7zF,GAAO9P,SAAU8P,GAAOpK,WAL5D0wF,WAAkBtmF,GAAOqlB,SAASkyC,cAcjD,OAPA,cACI,IAAIujD,GAAeF,GAAc/0B,UACjC,YAAqB58F,IAAjB6xH,GACOx0B,WAAkBt9F,EAAQq8B,SAASkyC,YACzB+pB,WAAiBw5B,GAAa9xH,EAASD,GAAW85B,KACjDxE,KAAKw8F,IAAkBx8F,KAAK,SAAUzyB,IAAU,OAAOA,IAAUmvH,OAEpFA,IA0BXhG,EAAaj2B,UAAUk8B,UAAY,SAAU3yH,GACzC,YAAK8xH,iBAAiBpyH,KAAKM,GACpB,WACH26F,GAAW3uF,KAAK8lH,iBAAhBn3B,CAAkC36F,IACpC43D,KAAK5rD,OA8CX0gH,EAAaj2B,UAAU9Q,OAAS,SAAUgoB,GACtC,OAAO3hG,KAAKu5G,aAAav5G,KAAKsnD,QAAStnD,KAAKnE,OAAQ,CAChD89E,QAAQmS,EAAU6V,IAAeA,EACjCl5D,SAAS,EACTojB,QAAQ,KA2ChB60D,EAAaj2B,UAAUz1D,GAAK,SAAUlG,EAAIjzB,EAAQ0F,GAC9C,IACIqlH,GAAYhe,GAASrnG,EADN,CAAEg+F,SAAUv/F,KAAKy9F,SAAUh1D,SAAS,GACPs6E,IAChD,OAAO/iH,KAAKu5G,aAAazqF,EAAIjzB,EAAQ+qH,KASzClG,EAAaj2B,UAAU9+E,OAAS,SAAU6zF,EAAY3jG,EAAQ0F,GAG1D,QAFgB,IAAZA,IAAsBA,EAAU,IAEhCK,GAASL,EAAQo4E,UAAYp4E,EAAQo4E,OAAO54E,KAC5C,MAAM,IAAI0oC,MAAM,+BACpB,IAAIgnE,GAAMzwG,KAAKm0B,OAAOm2E,cAGtB,GAFA/oG,EAAQogG,aACe,IAAnBpgG,EAAQo4E,OAAkB82B,GAAIvyF,OAASuyF,GAAInR,QAAQl5F,KAAK7E,EAAQo4E,OAAQp4E,EAAQg+F,UAChFh+F,EAAQo4E,SAAWp4E,EAAQogG,YAC3B,MAAM,IAAIl4D,MAAM,yBAAyB5kB,OAAOunE,GAAS7qF,EAAQo4E,QAAUp4E,EAAQo4E,OAASp4E,EAAQo4E,OAAO54E,KAAM,MACrH,OAAO,IAAIi+F,GAAYh/F,KAAKm0B,OAAOm2E,cAAe9K,EAAY3jG,EAAQ0F,IAG1Em/G,EAAaj2B,UAAUo8B,eAAiB,WACpC,IAEIC,EADU9mH,KAAKm0B,OAAOxB,QACEmrF,sBAAsBrsB,WAElD,OAAOq1B,EAAgBA,EAAcplB,cAAc5yE,GADf,CAAC,IAAImvE,GAH7Bj+F,KAG4Cm0B,OAAOm2E,cAAcpsF,QACrB6oG,EAyB5DrG,EAAaj2B,UAAU8uB,aAAe,SAAUzqF,EAAI+b,EAAUtpC,GAC1D,IAAIksF,GAAQztF,UACK,IAAb6qC,IAAuBA,EAAW,SACtB,IAAZtpC,IAAsBA,EAAU,IACpC,IAAI4yB,GAASn0B,KAAKm0B,OACdxB,GAAUwB,GAAOxB,QACrBpxB,EAAUqnG,GAASrnG,EAASwhH,IAC5B,IAAIiE,GAAa,WAAc,OAAOr0F,GAAQtxB,YAC9CE,EAAUmsF,EAAOnsF,EAAS,CAAE+lD,QAAS0/D,KACrC,IAAIre,GAAM3oG,KAAK2L,OAAOmjB,EAAI+b,EAAUtpC,GAChCg1D,GAAcv2D,KAAK6mH,iBACvB,IAAKle,GAAIjJ,SACL,OAAO1/F,KAAKomH,0BAA0B7vD,GAAaoyC,IACvD,IAAKA,GAAIhJ,QACL,OAAOjP,GAAgBiY,GAAI33E,SAC/B,IAA0B,IAAtBzvB,EAAQyhH,WAAuBgE,KAC/B,OAAQ/0B,WAAkB,2LAA2L/uB,YAWzN,IAAI+jD,GAA4B,SAAUlzF,IAAS,OAAO,SAAU/C,IAChE,GAAIA,cAAiBihE,GAAW,CAC5B,IAAIi1B,GAAW/yF,GAAOxB,QAAQihF,yBAA2B7/E,GAAMo+D,IAC/D,GAAInhE,GAAM9zB,OAASy0F,WACfu1B,WAAY/yF,GAAOssF,UAAUvsD,SAEtB+4B,WAAiBt6D,GAAQ20B,SAEpC,IAAI4qC,GAASlhE,GAAMkhE,OACnB,GAAIlhE,GAAM9zB,OAASy0F,eAAyB3gE,GAAMwhE,YAAcN,cAAkB8M,GAAa,CAG3F,IAAI4T,GAAW7+E,GAAM6+E,SAAS1gB,IAC9B,OAAO0gB,GAASzoF,MAAM2G,MAAMm2F,GAA0BrU,KAE1D,GAAI5hF,GAAM9zB,OAASy0F,WACfu1B,WAAY/yF,GAAOssF,UAAUvsD,SACtB+4B,aAAmBj8D,IAIlCm2F,OADmB15B,GAAMwf,qBACzBka,CAAan2F,IACNi8D,aAAmBj8D,MAE1B3vB,GAAarB,KAAKm0B,OAAOvF,kBAAkB7hB,OAAOwpD,GAAaoyC,IAC/Dye,GAAsB/lH,GAAW8oB,MAAM2G,MAAMm2F,GAA0B5lH,KAC3EovF,UAAyB22B,IAElB15B,EAAO05B,GAAqB,CAAE/lH,WAAYA,MAiCrDq/G,EAAaj2B,UAAUe,GAAK,SAAU4d,EAAavtG,EAAQ0F,GACvDA,EAAUqnG,GAASrnG,EAAS,CAAEg+F,SAAUv/F,KAAKy9F,WAC7C,IAAI15D,GAAQ/jC,KAAKm0B,OAAOm2E,cAAchL,QAAQl5F,KAAKgjG,EAAa7nG,EAAQg+F,UACxE,GAAKzT,EAAU/nD,IAEf,IAAI/jC,KAAKy9F,WAAa15D,GAClB,OAAO,EACX,IAAKloC,EACD,OAAO,EACX,IAAIwrH,GAAStjF,GAAMu6D,WAAW,CAAE71D,SAAS,EAAMogE,aAAchtG,IAC7D,OAAOk+F,UAAastB,GAAQttB,UAAastB,GAAQxrH,GAASmE,KAAKnE,UAwCnE6kH,EAAaj2B,UAAUxgD,SAAW,SAAUm/D,EAAavtG,EAAQ0F,GAC7DA,EAAUqnG,GAASrnG,EAAS,CAAEg+F,SAAUv/F,KAAKy9F,WAC7C,IAAI7M,GAAOxE,GAASgd,IAAgBzY,cAAgByY,GACpD,GAAIxY,GAAM,CACN,IAAKA,GAAKr3F,QAAQyG,KAAKy9F,SAAS18F,MAC5B,OAAO,EACXqoG,EAAcppG,KAAKy9F,SAAS18F,KAEhC,IAAIgjC,GAAQ/jC,KAAKm0B,OAAOm2E,cAAchL,QAAQl5F,KAAKgjG,EAAa7nG,EAAQg+F,UAAW7+D,GAAU1gC,KAAKy9F,SAASxzD,SAC3G,GAAK6hD,EAAU/nD,IAEf,KAAK+nD,EAAUprD,GAAQqD,GAAMhjC,OACzB,OAAO,EACX,IAAKlF,EACD,OAAO,EACX,IAAIwrH,GAAStjF,GAAMu6D,WAAW,CAAE71D,SAAS,EAAMogE,aAAchtG,IAC7D,OAAOk+F,UAAastB,GAAQttB,UAAastB,GAAQxrH,GAASmE,KAAKnE,UAkBnE6kH,EAAaj2B,UAAUniD,KAAO,SAAU8gE,EAAavtG,EAAQ0F,GAOzDA,EAAUqnG,GAASrnG,EANG,CAClB+lH,OAAO,EACP7+E,SAAS,EACTD,UAAU,EACV+2D,SAAUv/F,KAAKy9F,WAGnB5hG,EAASA,GAAU,GACnB,IAAIkoC,GAAQ/jC,KAAKm0B,OAAOm2E,cAAchL,QAAQl5F,KAAKgjG,EAAa7nG,EAAQg+F,UACxE,IAAKzT,EAAU/nD,IACX,OAAO,KACPxiC,EAAQknC,UACR5sC,EAASmE,KAAKnE,OAAO2hG,SAAS3hG,EAAQmE,KAAKy9F,SAAU15D,KACzD,IAAIwjF,GAAMxjF,IAASxiC,EAAQ+lH,MAAQvjF,GAAMuiE,UAAYviE,GACrD,OAAKwjF,IAAD,MAAQA,GAAIh4F,IAGTvvB,KAAKm0B,OAAOssF,UAAUn4E,KAAKi/E,GAAIh4F,IAAK1zB,EAAQ,CAAE2sC,SAAUjnC,EAAQinC,WAF5D,IAE4DA,EA0B3Ek4E,EAAaj2B,UAAUwiB,oBAAsB,SAAU4L,GACnD,OAAQ74G,KAAK+lH,qBAAuBlN,GAAW74G,KAAK+lH,sBAExDrF,EAAaj2B,UAAUp1F,IAAM,SAAU+zG,EAAaxJ,GAChD,IAAI6Q,EAAMzwG,KAAKm0B,OAAOm2E,cACtB,OAAyB,IAArB/f,UAAUx4F,OACH0+G,EAAIp7G,MACRo7G,EAAIp7G,IAAI+zG,EAAaxJ,GAAQ5/F,KAAKy9F,WAc7CijB,EAAaj2B,UAAU63B,SAAW,SAAUlZ,EAAa/nG,GACrD,IAAI0iC,EAAQ/jC,KAAK3K,IAAI+zG,GACrB,IAAKrlE,IAAUA,EAAMu+E,SACjB,MAAM,IAAI74E,MAAM,qBAAuB2/D,GAC3C,IAAI7yC,GAAcv2D,KAAK6mH,iBACnBl7G,GAASu0F,mBAA0BlgG,KAAKm0B,OAAOm2E,cAAe/zC,IAClEl1D,OACOkhH,GADPlhH,EAAaA,GAAcrB,KAAKm0B,OAAOvF,kBAAkB7hB,OAAOwpD,GAAa5qD,IAC5Co4B,IAE9B28E,EA/hBuB,GCHvBxzB,GAAK,CAEZnyB,KAAM,SAAUvtD,GAAO,OAAO,IAAIoP,QAAQ,SAAUC,EAASsxC,GAAU,OAAOtxC,EAAQrP,MAEtF2gD,OAAQ,SAAU3gD,GACd,OAAO,IAAIoP,QAAQ,SAAUC,EAASsxC,GAClCA,EAAO3gD,MAIfqsG,MAAO,WACH,IAAI2N,EAAW,GACfA,SAAS/9F,QAAU,IAAI7M,QAAQ,SAAUC,EAASsxC,GAC9Cq5D,EAAS3qG,QAAUA,EACnB2qG,EAASr5D,OAASA,IAEfq5D,GAGXnxD,IAAK,SAAUuuC,GACX,GAAInpG,GAAQmpG,GACR,OAAOhoF,QAAQy5C,IAAIuuC,GAEvB,GAAIhjG,GAASgjG,GAAW,CAGpB,IAAIuD,EAAQl1G,OAAOC,KAAK0xG,GAAU5vG,IAAI,SAAUC,GAAO,OAAO2vG,EAAS3vG,GAAK+0B,KAAK,SAAUxc,GAAO,MAAQ,CAAEvY,IAAKA,EAAKuY,IAAKA,OAE3H,OAAO0/E,GAAG72B,IAAI8xC,GAAOn+E,KAAK,SAAU9nB,GAChC,OAAOA,EAAO08D,OAAO,SAAUiuB,EAAKroF,IAChCqoF,SAAIroF,GAAMvP,KAAOuP,GAAMgJ,IAChBq/E,GACR,SC9Cfl6D,GAAU,GACV80F,GAAiB,mCACjBC,GAAiB,aAgDVv6B,EAAY,CAEnB93F,IAAK,SAAU0L,GAAQ,OAAO4xB,GAAQ5xB,IAEtC1B,IAAK,SAAU0B,GAAQ,OAA8B,MAAvBosF,EAAU93F,IAAI0L,EAAS,EAQrD4mH,OAAQ,SAAUv3G,EAAInT,EAAS2qH,GAC3B,IAAIvxD,EAAMq3B,EAAO,GAAI/6D,GAASi1F,GAAU,IACpC/rH,GAASsxF,EAAUka,SAASj3F,GAC5By3G,GAAc73B,GAAgB,SAAU/6F,IAAO,OAAOohE,EAAIv8D,eAAe7E,KAAS,SAAUA,IAAO,MAAO,8BAA8B4vB,OAAO5vB,GAAK,OACpJkf,GAAOtY,GAAOuM,OAAOy/G,IAAa7yH,IAAI,SAAUqiD,IAAK,OAAOgf,EAAIhf,MACpE,OAAI60C,GAAW97E,GACJA,EAAGs6E,MAAMztF,EAASkX,IAElB/D,EAAGhE,OAAM,GAAI,GAAGs+E,MAAMztF,EAASkX,KAQ9CkzF,SAAU,SAAUj3F,GAChB,IAAKgjF,EAAahjF,GACd,MAAM,IAAIq5B,MAAM,+BAA+B5kB,OAAOzU,IAC1D,GAAIA,GAAMA,EAAGg3F,QACT,OAAOh3F,EAAGg3F,QACd,GAAI3rG,GAAQ2U,GACR,OAAOA,EAAGhE,MAAM,GAAG,GACvB,IAAIymF,EAAQziF,EAAGxe,WAAWsK,QAAQurH,GAAgB,IAElD,OADa50B,EAAMzmF,MAAMymF,EAAMp9F,QAAQ,KAAO,EAAGo9F,EAAMp9F,QAAQ,MAAM+D,MAAMkuH,KAC1D,KCxFdI,EAAmB,SAAUC,EAAOjrG,GAC3C,IAAI7nB,EAAM6nB,EAAG,GAAItP,EAAMsP,EAAG,GAC1B,OAAKirG,EAAMjuH,eAAe7E,GAGrB+yH,GAAYD,EAAM9yH,IACnB8yH,EAAM9yH,GAAKvB,KAAK8Z,GAGhBu6G,EAAM9yH,GAAO,CAAC8yH,EAAM9yH,GAAMuY,GAN1Bu6G,EAAM9yH,GAAOuY,EAQVu6G,GAKJ,YAAkBx4F,GACrB,IAAI04F,EAAgB,SAAU5wE,IAAK,OAAOA,IAAK,IAC3Cv6B,EAAK42E,GAAUnkE,GAAKv6B,IAAIizH,GAAoCjrB,GAAOlgF,EAAG,GACtE+L,GAAK8qE,GADgD72E,EAAG,IAC5B9nB,IAAIizH,GACpC,MAAO,CAAEhnF,KADkDpY,GAAG,GACzCmtF,OADsDntF,GAAG,GACzCm0E,KAAMA,GAAMztE,IAAKA,GAgBnD,WAA+BxuB,EAAMq5G,EAAS8N,EAAcC,GAC/D,OAAO,SAAU55F,IACb,IAAIq+D,GAAWr+D,GAAS6E,gBAAkB,IAAI80F,EAAa35F,IACvD65F,GAAiB75F,GAAS4E,eAAiB,IAAIg1F,EAAmB55F,GAAU6rF,GAKhF,MAAO,CAAEr5G,KAAMA,EAAM6rF,QAASA,GAASw7B,cAAeA,GAAe3iE,QAJrE,YAAiBtxB,IACbA,GAAOsxB,QAAQmnC,IACfz4D,GAAOsxB,QAAQ2iE,KAE2D3iE,EC1CtF,ICFQ4iE,EDEJC,EAAsC,WACtC,WAA8Bn0F,EAAQo0F,GAClC,IAAI96B,EAAQztF,KACZA,KAAKuoH,gBAAkBA,EACvBvoH,KAAKm7G,WAAa,GAClBn7G,KAAKwoH,UAAY,SAAU7O,IAAO,OAAOlsB,EAAM0tB,WAAWvoH,QAAQ,SAAU46F,IAAM,OAAOA,GAAGmsB,OAC5F35G,KAAKg9F,KAAO,WAAc,OAAOkJ,GAASzY,EAAMg7B,QAAQzrB,MACxDh9F,KAAKihC,KAAO,WAAc,OAAOilE,GAASzY,EAAMg7B,QAAQxnF,MACxDjhC,KAAKg2G,OAAS,WAAc,ODGb,SAAU9xC,GAC7B,OAAOA,EAAY7lE,MAAM,KAAK+J,OAAOkrF,IAAUt+F,IAAI4+F,IAAYh1B,OAAOkpD,EAAkB,ICJjDY,CAAUxiB,GAASzY,EAAMg7B,QAAQzS,SACpEh2G,KAAK2oH,UAAYzqG,YACjBle,KAAK4oH,SAAW1qG,WAEpBoqG,SAAqB79B,UAAUl7D,IAAM,SAAUA,EAAKrzB,GAChD,YAAgB,IAAZA,IAAsBA,GAAU,GAChC4vF,EAAUv8D,IAAQA,IAAQvvB,KAAKyoH,SAC/BzoH,KAAKu1F,KAAK,KAAM,KAAMhmE,EAAKrzB,GACvB8D,KAAKuoH,iBACLvoH,KAAKm7G,WAAWvoH,QAAQ,SAAU46F,GAAM,OAAOA,EAAG,CAAEj+D,IAAKA,ODGnD,SAAUs5F,GAC5B,IAAI5nF,EAAO4nF,EAAI5nF,OACX6nF,EAAeD,EAAI7S,SACnBhZ,EAAO6rB,EAAI7rB,OACXgZ,GAAS/iH,OAAOC,KAAK41H,GACpB9zH,IAAI,SAAUC,IACf,IAAIymG,GAAQotB,EAAa7zH,IAEzB,OADWwG,GAAQigG,IAASA,GAAQ,CAACA,KACzB1mG,IAAI,SAAUwY,IAAO,OAAOvY,GAAM,IAAMuY,OAEnDoxD,OAAO+wB,GAAS,IAChBnuC,KAAK,KACV,OAAOvgB,GAAQ+0E,GAAS,IAAMA,GAAS,KAAOhZ,EAAO,IAAMA,EAAO,ICZvD+rB,CAAS/oH,OAEpBsoH,EAAqB79B,UAAUo1B,SAAW,SAAUryB,GAChD,IAAIC,EAAQztF,KACZ,YAAKm7G,WAAWznH,KAAK85F,GACd,WAAc,OAAOmB,GAAWlB,EAAM0tB,WAAY3tB,KAE7D86B,EAAqB79B,UAAUhlC,QAAU,SAAUtxB,IrDqGjC,SAAU60F,GACrBA,EAAU58G,QAAQxZ,QAAQ,SAAUwd,GACzB,mBAAPA,GAAqBA,IAC5Bu+E,GAAWq6B,EAAW54G,KqDvGtB64G,CAASjpH,KAAKm7G,aAEXmN,EA9B+B,GCHtCY,GACIb,EAAgB,SAAU1sF,EAAGzkB,GAC7BmxG,SAAgBp1H,OAAOk2H,gBAClB,CAAEC,UAAW,cAAgBvyH,OAAS,SAAU8kC,EAAGzkB,IAAKykB,EAAEytF,UAAYlyG,KACvE,SAAUykB,EAAGzkB,IAAK,QAASmD,MAAKnD,GAAOjkB,OAAOw3F,UAAU3wF,eAAejI,KAAKqlB,GAAGmD,MAAIshB,EAAEthB,IAAKnD,GAAEmD,OAC3EshB,EAAGzkB,IAErB,SAAUykB,EAAGzkB,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImyG,UAAU,uBAAyBr8B,OAAO91E,GAAK,iCAE7D,aAAgBlX,KAAKF,YAAc67B,EADnC0sF,EAAc1sF,EAAGzkB,GAEjBykB,EAAE8uD,UAAkB,OAANvzE,EAAajkB,OAAO8Z,OAAOmK,IAAMoyG,EAAG7+B,UAAYvzE,EAAEuzE,UAAW,IAAI6+B,KAMnFC,GAAqC,SAAUC,GAE/C,WAA6Br1F,GACzB,IAAIs5D,EAAQ+7B,EAAO33H,KAAKmO,KAAMm0B,GAAQ,IAAUn0B,KAChDke,2BAAsB,aAAcuvE,EAAM+6B,WAAW,GAC9C/6B,EAEX87B,OANAL,EAAUK,EAAqBC,GAM/BD,EAAoB9+B,UAAUg+B,KAAO,WACjC,OlD+EiB,SAAUxsH,GAAO,OAAQA,EAAMA,EAAIC,QAAQ,KAAM,IAAM,GkD/EjEutH,CAAYzpH,KAAK2oH,UAAU3rB,OAEtCusB,EAAoB9+B,UAAU8K,KAAO,SAAUxxD,EAAOyiC,EAAOj3C,GAAKrzB,IAC9D8D,KAAK2oH,UAAU3rB,KAAOztE,IAE1Bg6F,EAAoB9+B,UAAUhlC,QAAU,SAAUtxB,GAC9Cq1F,EAAO/+B,UAAUhlC,QAAQ5zD,KAAKmO,KAAMm0B,GACpCjW,uBAAyB,aAAcle,KAAKwoH,YAEzCe,EAjB8B,CAkBvCjB,GCpCEY,GAAyC,WACzC,IAAIb,EAAgB,SAAU1sF,EAAGzkB,GAC7BmxG,SAAgBp1H,OAAOk2H,gBAClB,CAAEC,UAAW,cAAgBvyH,OAAS,SAAU8kC,EAAGzkB,IAAKykB,EAAEytF,UAAYlyG,KACvE,SAAUykB,EAAGzkB,IAAK,QAASmD,MAAKnD,GAAOjkB,OAAOw3F,UAAU3wF,eAAejI,KAAKqlB,GAAGmD,MAAIshB,EAAEthB,IAAKnD,GAAEmD,OAC3EshB,EAAGzkB,IAE5B,OAAO,SAAUykB,EAAGzkB,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImyG,UAAU,uBAAyBr8B,OAAO91E,GAAK,iCAE7D,aAAgBlX,KAAKF,YAAc67B,EADnC0sF,EAAc1sF,EAAGzkB,GAEjBykB,EAAE8uD,UAAkB,OAANvzE,EAAajkB,OAAO8Z,OAAOmK,IAAMoyG,EAAG7+B,UAAYvzE,EAAEuzE,UAAW,IAAI6+B,IAZ1C,GAiBzCI,EAAuC,SAAUF,GAEjD,WAA+Br1F,GAC3B,OAAOq1F,EAAO33H,KAAKmO,KAAMm0B,GAAQ,IAASn0B,KAE9C0pH,OAJAR,GAAUQ,EAAuBF,GAIjCE,EAAsBj/B,UAAUg+B,KAAO,WACnC,OAAOzoH,KAAK2pH,MAEhBD,EAAsBj/B,UAAU8K,KAAO,SAAUxxD,EAAOyiC,EAAOj3C,GAAKrzB,IAChE8D,KAAK2pH,KAAOp6F,IAETm6F,EAXgC,CAYzCpB,GC7BEY,GAAyC,WACzC,IAAIb,EAAgB,SAAU1sF,EAAGzkB,GAC7BmxG,SAAgBp1H,OAAOk2H,gBAClB,CAAEC,UAAW,cAAgBvyH,OAAS,SAAU8kC,EAAGzkB,IAAKykB,EAAEytF,UAAYlyG,KACvE,SAAUykB,EAAGzkB,IAAK,QAASmD,MAAKnD,GAAOjkB,OAAOw3F,UAAU3wF,eAAejI,KAAKqlB,GAAGmD,MAAIshB,EAAEthB,IAAKnD,GAAEmD,OAC3EshB,EAAGzkB,IAE5B,OAAO,SAAUykB,EAAGzkB,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImyG,UAAU,uBAAyBr8B,OAAO91E,GAAK,iCAE7D,aAAgBlX,KAAKF,YAAc67B,EADnC0sF,EAAc1sF,EAAGzkB,GAEjBykB,EAAE8uD,UAAkB,OAANvzE,EAAajkB,OAAO8Z,OAAOmK,IAAMoyG,EAAG7+B,UAAYvzE,EAAEuzE,UAAW,IAAI6+B,IAZ1C,GAsBzCM,GAA0C,SAAUJ,GAEpD,WAAkCr1F,GAC9B,IAAIs5D,EAAQ+7B,EAAO33H,KAAKmO,KAAMm0B,GAAQ,IAASn0B,KAC/CytF,SAAMo8B,QAAU11F,EAAO1F,WAAWpB,OAClCnP,oBAAsB,WAAYuvE,EAAM+6B,WAAW,GAC5C/6B,EAkBXm8B,OAvBAV,GAAUU,EAA0BJ,GAuBpCI,EAAyBn/B,UAAUq/B,eAAiB,WAChD,OAAOr2B,GAAqBzzF,KAAK6pH,QAAQ32F,aAE7C02F,EAAyBn/B,UAAUg+B,KAAO,WACtC,IAAI3rG,EAAK9c,KAAK2oH,UAAW/W,EAAW90F,EAAG80F,SAAU5U,GAAOlgF,EAAGkgF,KAAMgZ,GAASl5F,EAAGk5F,OAC7EA,GAASriB,GAAWqiB,IAAQ,GAC5BhZ,GAAOtJ,GAAUsJ,IAAM,GACvB,IAAI+sB,GAAa/pH,KAAK8pH,iBAClBE,GAAqBpY,IAAa5xG,KAAK6pH,QAAQ32F,WAC/C+2F,GAAiBrY,EAASj8G,OAAO,EAAGo0H,GAAWh4H,UAAYg4H,GAC/DnY,SAAWoY,GAAqB,IAAMC,GAAiBrY,EAASl8G,UAAUq0H,GAAWh4H,QAAU6/G,IAC5EoE,GAAS,IAAMA,GAAS,KAAOhZ,GAAO,IAAMA,GAAO,KAE1E4sB,EAAyBn/B,UAAU8K,KAAO,SAAUxxD,EAAOyiC,EAAOj3C,GAAKrzB,IACnE,IAAI6tH,GAAa/pH,KAAK8pH,iBAClBtP,GAAQjrF,IAAkB,MAAXA,GAAI,GAAa,IAAM,GACtC26F,GAAkB,KAAR36F,IAAsB,MAARA,GAAcvvB,KAAK6pH,QAAQ32F,WAAa62F,GAAavP,GAAQjrF,GACrFrzB,GACA8D,KAAK4oH,SAASuB,aAAapmF,EAAOyiC,EAAO0jD,IAGzClqH,KAAK4oH,SAASlgF,UAAU3E,EAAOyiC,EAAO0jD,KAG9CN,EAAyBn/B,UAAUhlC,QAAU,SAAUtxB,GACnDq1F,EAAO/+B,UAAUhlC,QAAQ5zD,KAAKmO,KAAMm0B,GACpCjW,uBAAyB,WAAYle,KAAKwoH,YAEvCoB,EApDmC,CAqD5CtB,GCzEE8B,GAAuC,WACvC,WAA+Bj2F,EAAQk2F,QAClB,IAAbA,IAAuBA,GAAW,GACtCrqH,KAAKqqH,SAAWA,EAChBrqH,KAAKsqH,eAAY11H,EACjBoL,KAAKuqH,YAAc,GAEvBH,SAAsB3/B,UAAUiwB,KAAO,WACnC,OAAI1nF,SAAS0nF,KACFlmF,OAAOxB,SAAS0nF,MAEA,UAApB16G,KAAKizB,WAAyB,IAAM,IAE/Cm3F,EAAsB3/B,UAAUx3D,SAAW,WACvC,OAAOD,SAASC,SAAS/2B,QAAQ,KAAM,KAE3CkuH,EAAsB3/B,UAAUn0F,KAAO,WACnC,OAAO08B,SAASw3F,UAEpBJ,EAAsB3/B,UAAU4vB,UAAY,WACxC,OAAOr6G,KAAKqqH,UAEhBD,EAAsB3/B,UAAU6vB,WAAa,SAAUoF,GACnD,OAAO5zB,EAAU4zB,GAAc1/G,KAAKuqH,YAAc7K,EAAa1/G,KAAKuqH,aAExEH,EAAsB3/B,UAAUv3D,SAAW,SAAUoV,GACjD,OAAIwjD,EAAUxjD,KACVtoC,KAAKsqH,UAAYhiF,GACjBujD,GAAY7rF,KAAKsqH,aACjBtqH,KAAKsqH,UAAYtqH,KAAKyqH,eACnBzqH,KAAKsqH,WAEhBF,EAAsB3/B,UAAUggC,YAAc,WAC1C,IAAIC,EAAUh5H,SAASi5H,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQpiF,KACZoiF,EAAQpiF,KAAKpsC,QAAQ,uBAAwB,IAEjD8D,KAAKqqH,SAAW,IAAMr3F,SAAS4+E,UAAY,KAEtDwY,EAAsB3/B,UAAUhlC,QAAU,WAAY,EAC/C2kE,EAxCgC,GCOpC,YAAwBj2F,GAC3B84D,oBAAqBE,EACrBF,MAAcC,GACP,CAAEnsF,KAAM,mBAAoBmsF,GAAIA,GAAIC,UAAWA,EAAW1nC,QAAS,WAAc,OAAO,OAGnEmlE,EAAsB,4BAA4B,EAAOrB,GAAqBa,IAEzEQ,EAAsB,6BAA6B,EAAMhB,GAA0BQ,IAEtFQ,EAAsB,0BAA0B,EAAOlB,ECfrF,aACI,IAAIj8B,EAAQztF,KACZA,KAAKylD,QAAUquC,GACf9zF,KAAKsqH,UAAY,GACjBtqH,KAAK6qH,MAAQ,GACb7qH,KAAK8qH,UAAY,OACjB9qH,KAAK+qH,MAAQ,YACb/qH,KAAKuqH,YAAc,GACnBvqH,KAAK06G,KAAO,WAAc,OAAOjtB,EAAMo9B,OACvC7qH,KAAKizB,SAAW,WAAc,OAAOw6D,EAAMq9B,WAC3C9qH,KAAK1J,KAAO,WAAc,OAAOm3F,EAAMs9B,OACvC/qH,KAAKkzB,SAAW,WAAc,OAAOu6D,EAAM68B,WAC3CtqH,KAAKq6G,UAAY,WAAc,OAAO,GACtCr6G,KAAKs6G,WAAa,SAAU0Q,GAAU,OAAQl/B,EAAUk/B,GAAWv9B,EAAM88B,YAAcS,EAAUv9B,EAAM88B,cCbpGU,oBCJyDC,GAAOC,QAA0F,WAAW,aAAa,IAAI92H,GAAEyO,KAAKsoH,KAAKzlC,EAAE7iF,KAAKuoH,MAAM,WAAWh3H,IAA6B,OAAOyG,EAAE,mBAAmBwwH,QAAQ,iBAAiBA,OAAO/uH,SAAS,SAASlI,IAAG,cAAcA,IAAG,SAASA,IAAG,OAAOA,IAAG,mBAAmBi3H,QAAQj3H,GAAEyL,cAAcwrH,QAAQj3H,KAAIi3H,OAAO7gC,UAAU,gBAAgBp2F,KAAKA,IAAiG,WAAWA,GAAEsxF,IAAG,QAAQxpF,GAAEiF,GAAE,EAAEA,GAAEukF,GAAE5zF,OAAOqP,MAAIjF,GAAEwpF,GAAEvkF,KAAKy5G,WAAW1+G,GAAE0+G,aAAY,EAAG1+G,GAAE2+G,cAAa,EAAG,UAAU3+G,KAAIA,GAAEovH,UAAS,GAAIt4H,OAAO0nH,eAAetmH,GAAE8H,GAAElH,IAAIkH,IAAsY,WAAW9H,IAAG,OAAO4iB,EAAEhkB,OAAOk2H,eAAel2H,OAAOu4H,eAAe,SAASn3H,IAAG,OAAOA,GAAE+0H,WAAWn2H,OAAOu4H,eAAen3H,MAAMA,IAAG,WAAWA,GAAEsxF,IAAG,OAAOj2D,EAAEz8B,OAAOk2H,gBAAgB,SAAS90H,GAAEsxF,IAAG,OAAOtxF,GAAE+0H,UAAUzjC,GAAEtxF,KAAKA,GAAEsxF,IAAG,aAAyE,GAAzD,oBAAoB8lC,UAAUA,QAAQC,WAAsBD,QAAQC,UAAUC,KAAK,OAAM,EAAG,GAAG,mBAAmBC,MAAM,OAAM,EAAG,IAAI,OAAOzuB,QAAQ1S,UAAU2S,QAAQvrG,KAAK45H,QAAQC,UAAUvuB,QAAQ,GAAG,WAAU,KAAK,CAAkB,CAAlB,MAASxX,IAAG,OAAM,GAAI,aAAa,OAAOpgC,EAAE7iD,IAAI+oH,QAAQC,UAAU,SAASr3H,GAAEsxF,GAAE7qF,IAAG,IAAIqB,GAAE,CAAC,MAAMA,GAAEzI,KAAKg3F,MAAMvuF,GAAEwpF,IAAG,IAA+B3iD,GAAE,IAA3BmxD,SAASvoC,KAAK8+B,MAAMr2F,GAAE8H,KAAW,OAAOrB,IAAG40B,EAAEsT,GAAEloC,GAAE2vF,WAAWznD,KAAK0nD,MAAM,KAAKH,WAAuF,WAAWl2F,IAAG,IAAIsxF,GAAE,mBAAmBvwF,IAAI,IAAIA,SAAI,EAAO,OAAOy2H,EAAE,SAASx3H,IAAG,cAAa,OAAOkxD,EAAElxD,GAAEk2F,UAAUtzE,EAAEjX,MAAMF,aAAa,GAAG,YAArN,WAAWzL,IAAG,OAAM,aAAczC,SAASC,KAAKwC,IAAGoB,QAAQ,gBAAvC,CAA4MkmC,CAAEtnC,IAAG,OAAOA,GAAE,GAAG,mBAAmBA,GAAE,MAAM,IAAIg1H,UAAU,sDAAsD,QAAG,IAAoB1jC,GAAE,CAAC,GAAGA,GAAEtmF,IAAIhL,IAAG,OAAOsxF,GAAEtwF,IAAIhB,IAAGsxF,GAAErwF,IAAIjB,GAAEyG,IAAG,OAAOA,GAAE2vF,UAAUx3F,OAAO8Z,OAAO1Y,GAAEo2F,UAAU,CAAC3qF,YAAY,CAAC3K,MAAM2F,GAAE+/G,YAAW,EAAG0Q,UAAS,EAAGzQ,cAAa,KAAMprF,EAAE50B,GAAEzG,KAAIw3H,EAAEx3H,IAAG,WAAWA,IAAG,QAAG,OAAW,MAAM,IAAIy3H,eAAe,6DAA6D,OAAOz3H,GAAE,WAAWA,GAAEsxF,IAAG,GAAGA,KAAI,iBAAiBA,IAAG,mBAAmBA,IAAG,OAAOA,GAAE,QAAG,OAAW,MAAM,IAAI0jC,UAAU,4DAA4D,OAAOnyG,EAAE7iB,IAA8K,YAAWA,GAAEsxF,IAAG,OAAiC,YAAWtxF,IAAG,GAAGwC,MAAM4E,QAAQpH,IAAG,OAAOA,GAAnE4P,CAAE5P,KAAmE,YAAWA,GAAEsxF,IAAG,IAAI7qF,GAAE,SAAQ,KAAK,oBAAoBwwH,QAAQj3H,GAAEi3H,OAAO/uH,WAAWlI,GAAE,cAAc,GAAG,SAAQ,CAAC,IAAI8H,GAAEiF,GAAE4hC,GAAE,GAAGue,GAAE,EAAGkB,GAAE,EAAG,IAAI,IAAI3nD,GAAEA,GAAEjJ,KAAKwC,MAAKktD,GAAGplD,GAAErB,GAAE2B,QAAQC,QAAQsmC,GAAEtvC,KAAKyI,GAAEhH,QAASwwF,IAAG3iD,GAAEjxC,SAAS4zF,IAAIpkC,GAAE,GAA0FngD,CAAvF,MAAQ/M,GAAGouD,GAAE,EAAGrhD,GAAE/M,UAAU,IAAIktD,GAAG,SAAQwqE,QAAWjxH,GAAEixH,QAA+B3qH,CAA/B,QAAoB,GAAGqhD,EAAE,MAAMrhD,IAAG,OAAO4hC,IAA5XxwB,CAAEne,GAAEsxF,KAAIvkC,EAAE/sD,GAAEsxF,KAAuvB,cAAa,MAAM,IAAI0jC,UAAU,6IAApxBh2D,GAA+W,WAAWh/D,GAAEsxF,IAAG,GAAGtxF,GAAE,CAAC,GAAG,iBAAiBA,GAAE,OAAOgmB,GAAEhmB,GAAEsxF,IAAG,IAAI7qF,GAAE7H,OAAOw3F,UAAU74F,SAASC,KAAKwC,IAAG+X,MAAM,GAAE,GAAI,MAAM,eAAc/X,GAAEyL,cAAchF,GAAEzG,GAAEyL,YAAYiB,MAAM,YAAW,WAAUlK,MAAMC,KAAKzC,IAAG,kBAAiB,2CAA2CwyF,KAAK/rF,IAAGuf,GAAEhmB,GAAEsxF,SAAG,GAAQ,YAAWtxF,GAAEsxF,KAAI,MAAMA,IAAGA,GAAEtxF,GAAEtC,UAAU4zF,GAAEtxF,GAAEtC,QAAQ,QAAQoK,GAAE,EAAEiF,GAAEvK,MAAM8uF,IAAGxpF,GAAEwpF,GAAExpF,KAAIiF,GAAEjF,IAAG9H,GAAE8H,IAAG,OAAOiF,GAAkzB,IAAIgc,EAAE,SAAS/oB,IAAG,IAAIsxF,GAAE7iF,KAAK6H,IAAIvJ,GAAE0B,KAAKC,IAAI0/C,GAAE3/C,KAAKkpH,MAAM,YAAW33H,EAAEsxF,GAAG,IAAI7qF,EAAE,GAA95H,WAAWzG,GAAEsxF,IAAG,KAAKtxF,cAAasxF,IAAG,MAAM,IAAI0jC,UAAU,qCAAw2HltH,CAAE6D,KAAKiX,KAAGnc,EAAE40B,GAAE79B,KAAKmO,KAAK3L,IAAK43H,KAAKtmC,EAAE1yF,OAAOk2H,eAAejyG,EAAEpc,GAAGmc,GAAEwzE,WAAWp2F,EAAE4iB,GAAEi1G,aAAa,MAAM,IAAIC,WAAW,gCAAgC,OAAOrxH,GAA9sH,WAAWzG,GAAEsxF,IAAG,GAAG,mBAAmBA,IAAG,UAAS,MAAM,IAAI0jC,UAAU,sDAAsDh1H,GAAEo2F,UAAUx3F,OAAO8Z,OAAO44E,IAAGA,GAAE8E,UAAU,CAAC3qF,YAAY,CAAC3K,MAAMd,GAAEk3H,UAAS,EAAGzQ,cAAa,KAAM7nH,OAAO0nH,eAAetmH,GAAE,YAAY,CAACk3H,UAAS,IAAK5lC,IAAGj2D,EAAEr7B,GAAEsxF,IAA47GpkC,CAAEtqC,GAAE5iB,IAAG,IAAIq7B,GAAn/D,WAAWr7B,IAAG,IAAIsxF,GAAEjjF,IAAI,OAAO,WAAW,IAAI5H,GAAEqB,GAAE8a,EAAE5iB,IAAG,GAAGsxF,GAAE,CAAC,IAAIvkF,GAAE6V,EAAEjX,MAAMF,YAAYhF,GAAE2wH,QAAQC,UAAUvvH,GAAEouF,UAAUnpF,SAAQtG,GAAEqB,GAAEuuF,MAAM1qF,KAAKuqF,WAAW,OAAO1tF,EAAEmD,KAAKlF,KAA80DqvD,CAAElzC,IAAG,OAA90H,YAAW5iB,GAAEsxF,GAAE7qF,IAAG,OAAO6qF,IAAGvkF,EAAE/M,GAAEo2F,UAAU9E,IAAG7qF,IAAGsG,EAAE/M,GAAEyG,IAAG7H,OAAO0nH,eAAetmH,GAAE,YAAY,CAACk3H,UAAS,IAAKl3H,GAA2uH2uC,CAAE/rB,GAAE,CAAC,CAAChiB,IAAI,gBAAgBE,MAAM,WAAW,IAAId,EAAEsxF,EAAE,CAAC,WAAW7qF,EAAv8B,WAAWzG,GAAEsxF,IAAG,IAAIxpF,GAAE,oBAAoBmvH,QAAQj3H,GAAEi3H,OAAO/uH,WAAWlI,GAAE,cAAc,IAAI8H,GAAE,CAAC,GAAGtF,MAAM4E,QAAQpH,MAAK8H,GAAEilD,EAAE/sD,MAAKsxF,IAAGtxF,IAAG,iBAAiBA,GAAEtC,OAAO,CAACoK,KAAI9H,GAAE8H,IAAG,IAAIiF,GAAE,EAAE4hC,GAAE,WAAU,EAAG,MAAM,CAACtgC,EAAEsgC,GAAE5hC,EAAE,WAAW,OAAOA,IAAG/M,GAAEtC,OAAO,CAAC2K,MAAK,GAAI,CAACA,MAAK,EAAGvH,MAAMd,GAAE+M,QAAO/M,EAAE,SAASsxF,GAAG,MAAMA,GAAGnzE,EAAEwwB,IAAG,MAAM,IAAIqmF,UAAU,yIAAyI,IAAI9nE,GAAEtqC,GAAE,EAAGyY,GAAE,EAAG,MAAM,CAAChtB,EAAE,WAAWvG,GAAEA,GAAEtK,KAAKwC,KAAI+M,EAAE,WAAW,IAAI/M,EAAE8H,GAAEM,OAAO,OAAOwa,EAAE5iB,EAAEqI,KAAKrI,GAAGA,EAAE,SAASsxF,GAAGj2D,GAAE,EAAG6xB,GAAEokC,GAAGnzE,EAAE,WAAW,IAAIyE,GAAG,SAAQ80G,QAAQ5vH,GAAE4vH,QAA4BxqE,CAA5BwqE,QAAiB,GAAGr8F,EAAE,MAAM6xB,MAA4UnX,CAAEpqC,MAAM,IAAI,IAAIlF,EAAE4H,MAAMrO,EAAEyG,EAAEsG,KAAK1E,MAAM,CAAC,IAAIP,GAAE9H,EAAEc,MAAMwwF,EAAEjyF,MAAMyI,KAAGA,KAAI,GAAGvK,SAAS,KAAO,MAAiC4gB,CAAjC,MAAane,IAAGyG,EAAEzG,EAAEA,YAAWyG,EAAE0X,IAAI,OAAOmzE,EAAEjyF,KAAK,KAAKiyF,EAAEnkC,KAAK,MAAM,CAACvsD,IAAI,WAAWE,MAAM,WAAW,IAAId,EAAE,EAAEk2F,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,GAAG,GAAG,EAAEl2F,GAAG,GAAGA,EAAE,MAAM,IAAI83H,WAAW,sDAAsD,OAAO,SAASp6H,OAAO,IAAI,IAAIsC,EAAEA,EAAE,GAAG4iB,GAAEm1G,yBAAyBpsH,KAAK3L,GAAG4iB,GAAEo1G,kBAAkBrsH,KAAK3L,GAAE,KAAM,CAACY,IAAI,UAAUE,MAAM,WAAW,MAAM,IAAIs0C,MAAM,gEAAgE,CAACx0C,IAAI,SAASE,MAAM,WAAW,QAAQd,EAAE,IAAI4iB,GAAEjX,KAAKjO,OAAOiO,KAAKisH,MAAMtmC,EAAE,EAAEA,EAAE3lF,KAAKjO,OAAO4zF,IAAItxF,EAAEsxF,GAAG3lF,KAAK2lF,GAAG,OAAOtxF,IAAI,CAACY,IAAI,SAASE,MAAM,WAAW,QAAQd,EAAE2L,KAAKjO,OAAO4zF,EAAE3lF,KAAK3L,EAAE,GAAG,OAAWsxF,EAAE3lF,OAAN3L,EAAa,GAAG2L,KAAKw0D,MAAM,OAAO,QAAQx0D,KAAKisH,MAAK,GAAIjsH,OAAO,CAAC/K,IAAI,qBAAqBE,MAAM,WAAW,QAAQd,EAAE,EAAEA,EAAE2L,KAAKjO,OAAOsC,IAAI2L,KAAK3L,GAAG,IAAI,CAACY,IAAI,WAAWE,MAAM,WAAW,OAAO8hB,GAAEq1G,QAAQtsH,KAAKusH,QAAQvsH,KAAKjO,OAAO,MAAM,CAACkD,IAAI,uBAAuBE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAGA,EAAE6D,KAAKjO,SAASoK,EAAE6D,KAAKjO,QAAQ,QAAQqP,GAAE,MAAM/M,EAAE2uC,GAAE3uC,IAAI,GAAGktD,GAAE,EAAEkB,GAAEkjC,EAAEj2D,GAAE,EAAEA,GAAEvzB,EAAEuzB,KAAI,CAAC,IAAIhtB,GAAE1C,KAAKusH,QAAQ78F,IAAG61B,GAAE,MAAM7iD,GAAEi5B,GAAEj5B,KAAI,GAAGmpH,GAAE50G,GAAEu1G,OAAOjnE,GAAEnkD,IAAG8V,GAAED,GAAEu1G,OAAOjnE,GAAEviB,IAAGnmC,EAAEoa,GAAEu1G,OAAO7wF,GAAEv6B,IAAmBiC,GAAEo/C,GAAEopE,GAAEtqE,GAAEA,GAAEl+C,KAAI,GAAGA,IAAG,WAA8Ck+C,KAAnCl+C,MAAK,MAAM6T,KAAI,MAAM,MAAMra,IAAI,OAAW,GAAG4lD,GAA1FxrC,GAAEu1G,OAAO7wF,GAAEqH,KAAoF9rB,KAAI,KAAKra,IAAI,IAAImD,KAAKysH,WAAW/8F,GAAE,WAAWrsB,IAAG,GAAG,QAAO,OAAM,MAAM,IAAIomC,MAAM,wBAAwB,CAACx0C,IAAI,eAAeE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,QAAQiF,GAAE4hC,GAAE,EAAEue,GAAE,EAAEA,GAAEplD,EAAEolD,KAA+Cve,IAA3C5hC,GAAEpB,KAAK0sH,YAAY/mC,EAAEpkC,IAAGltD,EAAEq4H,YAAYnrE,IAAGve,MAAQ,GAAGhjC,KAAK2sH,eAAehnC,EAAEpkC,GAAE,MAAMngD,IAAG,OAAO4hC,KAAI,CAAC/tC,IAAI,eAAeE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,IAAIiF,GAAE,EAAE,GAAG,EAAEukF,EAAE,CAAO,QAAQ3iD,GAAEhjC,KAAKusH,QAArB5mC,IAAI,GAA4BpkC,GAAE,MAAMve,GAAEyf,GAAE,EAAEA,GAAEtmD,EAAE,IAAI,EAAEsmD,KAAI,CAAC,IAAIxrC,GAAE5iB,EAAEk4H,QAAQ9pE,IAAG/yB,IAAGsT,KAAI,KAAK,MAAM/rB,IAAG7V,GAAEA,GAAE,EAAEsuB,KAAI,GAAG1vB,KAAKysH,WAAW9mC,EAAEljC,IAAG,MAAM/yB,KAAI,GAAG,MAAM6xB,IAAgDngD,GAAE,GAAzBmgD,IAAG,OAAzBve,GAAEhjC,KAAKusH,QAAQ5mC,EAAEljC,GAAE,MAAgBxrC,KAAI,IAAI7V,MAAU,GAAG,IAAIsB,GAAErO,EAAEk4H,QAAQ9pE,IAAG8C,IAAGviB,KAAI,KAAK,MAAMtgC,IAAGtB,GAAwD,GAAtDA,GAAE,EAAEmkD,KAAI,GAAGvlD,KAAKysH,WAAW9mC,EAAEljC,IAAG,MAAM8C,KAAI,GAAG,MAAMhE,IAAMokC,EAAEljC,GAAE,GAAGziD,KAAKjO,OAAO,MAAM,IAAIo6H,WAAW,iBAAiB,IAAI,EAAEhwH,KAAkDiF,GAAE,GAAzBmgD,IAAG,OAAzBve,GAAEhjC,KAAKusH,QAAQ5mC,EAAEljC,GAAE,MAAgB//C,KAAI,IAAItB,MAAU,GAAGpB,KAAKysH,WAAW9mC,EAAEtxF,EAAEtC,OAAO,WAAWixC,GAAE,MAAMue,SAAQ,CAACokC,IAAI,EAAE,QAAQhqD,GAAE,EAAEA,GAAEtnC,EAAEtC,OAAO,EAAE4pC,KAAI,CAAC,IAAIkwF,GAAE7rH,KAAKusH,QAAQ5mC,EAAEhqD,IAAGzkB,EAAE7iB,EAAEk4H,QAAQ5wF,IAAG9+B,IAAG,MAAMgvH,KAAI,MAAM30G,GAAG9V,GAAiB+oD,IAAG0hE,KAAI,KAAK30G,IAAI,KAA/B9V,GAAE,EAAEvE,KAAI,IAA6BuE,GAAE,EAAE+oD,KAAI,GAAGnqD,KAAKysH,WAAW9mC,EAAEhqD,IAAG,MAAMwuB,KAAI,GAAG,MAAMttD,IAAG,IAAIwG,GAAErD,KAAKusH,QAAQ5mC,EAAEhqD,IAAG13B,GAAE5P,EAAEk4H,QAAQ5wF,IAAGnpB,IAAG,MAAMnP,KAAI,MAAMY,IAAG7C,GAAEA,GAAE,EAAEoR,KAAI,GAAG,IAAI4uC,GAAE,EAAE,IAAI,EAAEjlD,KAA2BiF,GAAE,GAAxBggD,IAAG/9C,KAAI,KAAKY,KAAI,IAAI7C,MAAU,IAAIpB,KAAKysH,WAAW9mC,EAAEhqD,IAAG,MAAMylB,KAAI,GAAG,MAAM5uC,IAAG,OAAOpR,KAAI,CAACnM,IAAI,sBAAsBE,MAAM,SAASd,GAAG,GAAG,MAAM,CAAC,QAAQsxF,EAAExpF,EAAE6D,KAAKusH,QAAQ,KAAKl4H,EAAE+M,GAAEpB,KAAKjO,OAAO,EAAEixC,GAAE,EAAEA,GAAE5hC,GAAE4hC,KAAI2iD,EAAE3lF,KAAKusH,QAAQvpF,GAAE,GAAGhjC,KAAKysH,WAAWzpF,GAAE,WAAW2iD,GAAG,GAAGtxF,EAAE8H,GAAGA,EAAEwpF,IAAItxF,EAAE2L,KAAKysH,WAAWrrH,GAAEjF,MAAM,CAAClH,IAAI,UAAUE,MAAM,SAASd,GAAG,OAAO2L,KAAK3L,KAAK,CAACY,IAAI,kBAAkBE,MAAM,SAASd,GAAG,OAAO2L,KAAK3L,KAAK,IAAI,CAACY,IAAI,aAAaE,MAAM,SAASd,EAAEsxF,GAAG3lF,KAAK3L,GAAG,EAAEsxF,IAAI,CAAC1wF,IAAI,iBAAiBE,MAAM,SAASd,EAAEsxF,GAAG3lF,KAAK3L,GAAG,EAAEsxF,IAAI,CAAC1wF,IAAI,oBAAoBE,MAAM,WAAW,IAAId,EAAE2L,KAAKjO,OAAO,OAAO,OAAOiO,KAAK4sH,gBAAgBv4H,EAAE,GAAG,EAAEA,EAAE,EAAE,EAAEA,IAAI,CAACY,IAAI,cAAcE,MAAM,SAASd,GAAG,OAAO,MAAM2L,KAAK3L,IAAI,KAAK,IAAI,EAAEA,KAAK,CAACY,IAAI,iBAAiBE,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAEzG,IAAI,EAAE8H,GAAE6D,KAAKusH,QAAQzxH,GAA4CkF,KAAKysH,WAAW3xH,EAAvD,EAAEzG,EAAE,MAAM8H,GAAEwpF,GAAG,GAAG,WAAWxpF,GAAE,MAAMwpF,EAAoBvkF,IAAM,CAAC,CAACnM,IAAI,SAASE,MAAM,SAASd,GAAG,IAAIsxF,EAAEnxD,OAAOq4F,SAAS,GAAG,iBAAiBx4H,EAAE,CAAC,GAAG,MAAM,OAAO4iB,GAAE61G,SAAS,GAAG71G,GAAE81G,gBAAgB14H,GAAG,OAAO,EAAEA,EAAE4iB,GAAE+1G,YAAY34H,GAAE,GAAI4iB,GAAE+1G,WAAW34H,GAAE,GAAI,IAAIsxF,EAAEtxF,IAAIouD,GAAEpuD,KAAKA,EAAE,MAAM,IAAI83H,WAAW,cAAc93H,EAAE,+DAA+D,OAAO4iB,GAAEg2G,aAAa54H,GAAG,GAAG,iBAAiBA,EAAE,CAAC,IAAI8H,EAAE8a,GAAEi2G,aAAa74H,GAAG,GAAG,SAAS,MAAM,IAAI84H,YAAY,kBAAkB94H,EAAE,gBAAgB,OAAO8H,EAAE,GAAG,kBAAkB9H,EAAE,OAAM,MAAO4iB,GAAE+1G,WAAW,GAAE,GAAI/1G,GAAE61G,SAAS,GAAG,aAAaz4H,GAAG,CAAC,GAAGA,EAAEyL,cAAcmX,GAAE,OAAO5iB,EAAE,IAAI+M,GAAE6V,GAAEm2G,cAAc/4H,GAAG,OAAO4iB,GAAEo2G,OAAOjsH,IAAG,MAAM,IAAIioH,UAAU,kBAAkBh1H,EAAE,kBAAkB,CAACY,IAAI,WAAWE,MAAM,SAASd,GAAG,IAAIsxF,EAAEtxF,EAAEtC,OAAO,GAAG,MAAM,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI+I,EAAEzG,EAAEu4H,gBAAgB,GAAG,OAAOv4H,EAAE43H,MAAMnxH,EAAEA,EAAE,IAAIqB,GAAE9H,EAAEk4H,QAAQ5mC,EAAE,GAAGvkF,GAAE6V,GAAEq1G,QAAQnwH,IAAG6mC,GAAE,GAAG2iD,EAAEvkF,GAAE,GAAG,KAAK4hC,GAAE,OAAO3uC,EAAE43H,MAAK,IAAU,IAAI,IAAI1qE,GAAEve,GAAE,EAAEyf,GAAEtmD,GAAEuzB,GAAEi2D,EAAE,EAAEjjF,GAAEtB,GAAE,EAAEmkD,GAAE,QAAO,EAAE9C,IAAG//C,GAAE6iD,MAAK,GAAG,IAAI5pB,GAAEj5B,GAAE,GAAGmpH,GAAE,IAAInpH,GAAE,EAAE+/C,IAAG,GAAG//C,GAAEwU,EAAE,GAAGxU,GAAE,IAAI,EAAEi5B,IAAG,EAAEjM,KAAIA,KAAmB61B,KAAf9C,GAAEpuD,EAAEk4H,QAAQ78F,OAAU,GAAGiM,GAAEkwF,GAAEppE,IAAG9mB,GAAE,EAAEzkB,EAAEykB,GAAE,GAAG,EAAEzkB,GAAG,EAAEwY,IAAGA,KAAI+yB,GAAEpuD,EAAEk4H,QAAQ78F,IAAGm8F,IAAG,IAAI30G,EAAEurC,IAAGvrC,EAAE,GAAGurC,KAAI,GAAGvrC,EAAEA,GAAG,GAAG,IAAIra,GAAEoa,GAAEq2G,iBAAiBj5H,EAAE6iB,EAAEwY,GAAE+yB,IAAG,OAAI,IAAI5lD,IAAG,QAAO,IAAI,EAAEgvH,MAAgB,IAAVA,GAAEA,GAAE,IAAI,MAAUtmE,KAAW,IAAP,IAAYA,GAAE,EAAM,OAAJhE,IAAqBltD,EAAE43H,MAAK,IAAU,KAAmDh1G,GAAEs2G,qBAAqB,IAAhEl5H,EAAE43H,MAAK,WAAY,IAAS1qE,GAAEA,GAAE,MAAM,IAAiCgE,GAAEtuC,GAAEs2G,qBAAqB,GAAG1B,GAAE50G,GAAEu2G,uBAAuB,MAAK,CAACv4H,IAAI,aAAaE,MAAM,SAASd,GAAG,GAAG,MAAMtC,OAAO,OAAOsC,EAAE,IAAIsxF,EAAEtxF,EAAEo5H,SAAS,OAAO9nC,EAAEsmC,MAAM53H,EAAE43H,KAAKtmC,IAAI,CAAC1wF,IAAI,aAAaE,MAAM,SAASd,GAAG,OAAOA,EAAE43H,KAAKh1G,GAAEy2G,iBAAiBr5H,GAAGs5H,SAAS12G,GAAE22G,iBAAiBv5H,GAAE,KAAM,CAACY,IAAI,eAAeE,MAAM,SAASd,EAAEsxF,GAAG,GAAGA,EAAEsmC,KAAK,MAAM,IAAIE,WAAW,6BAA6B,GAAG,MAAMp6H,OAAO,OAAOklB,GAAE+1G,WAAW,GAAE,GAAI,GAAG,MAAMj7H,OAAO,OAAOsC,EAAE,GAAG,MAAMtC,QAAQ,MAAMw6H,QAAQ,GAAG,OAAOl4H,EAAE43H,MAAM,IAAI,EAAEtmC,EAAE4mC,QAAQ,IAAIt1G,GAAE42G,WAAWx5H,GAAGA,EAAE,GAAG,EAAEsxF,EAAE5zF,OAAO,MAAM,IAAIo6H,WAAW,kBAAkB,IAAIrxH,EAAE6qF,EAAEinC,gBAAgB,GAAG,GAAG,MAAM,OAAOv4H,EAAE,GAAGyG,GAAGmc,GAAE62G,iBAAiB,MAAM,IAAI3B,WAAW,kBAAkB,GAAG,MAAMp6H,QAAQ,MAAMw6H,QAAQ,GAAG,CAAC,IAAIpwH,GAAE,GAAG,EAAErB,EAAE,IAAuBkoC,GAAE,IAAI/rB,GAAE9a,GAAzB9H,EAAE43H,MAAM,IAAI,EAAEnxH,IAAqD,OAArCkoC,GAAE+qF,qBAA0C/qF,GAAEypF,WAAWtwH,GAAE,EAA9B,GAAGrB,EAAE,IAA8BkoC,GAAE,IAAIyf,GAAE,KAAK/yB,GAAEr7B,EAAE,IAAI,IAAI,EAAEyG,KAAK2nD,GAAEpuD,GAAGyG,IAAI,EAAE,MAAMA,IAAI,EAAE40B,GAAEzY,GAAE+2G,SAASt+F,GAAEA,IAAG,IAAI,EAAE50B,KAAc2nD,GAAT,OAAOA,GAAI/yB,GAAIzY,GAAE+2G,SAASvrE,GAAE/yB,KAAI,OAAO+yB,KAAI,CAACxtD,IAAI,WAAWE,MAAM,SAASd,EAAEsxF,GAAG,GAAG,MAAM5zF,OAAO,OAAOsC,EAAE,GAAG,MAAMtC,OAAO,OAAO4zF,EAAE,IAAIxpF,EAAE9H,EAAEtC,OAAO4zF,EAAE5zF,OAAO,IAAIsC,EAAE45H,WAAWtoC,EAAEsoC,YAAY9xH,IAAI,IAAIiF,GAAE,IAAI6V,GAAE9a,EAAE9H,EAAE43H,OAAOtmC,EAAEsmC,MAAM7qH,GAAE2sH,qBAAqB,QAAQ/qF,GAAE,EAAEA,GAAE3uC,EAAEtC,OAAOixC,KAAI/rB,GAAEi3G,qBAAqBvoC,EAAEtxF,EAAEk4H,QAAQvpF,IAAG5hC,GAAE4hC,IAAG,OAAO5hC,GAAEusH,WAAW,CAAC14H,IAAI,SAASE,MAAM,SAASd,EAAEsxF,GAAG,GAAG,MAAM5zF,OAAO,MAAM,IAAIo6H,WAAW,oBAAoB,GAAG,EAAEl1G,GAAEk3G,kBAAkB95H,EAAEsxF,GAAG,OAAO1uE,GAAE61G,SAAS,IAAIhyH,EAAEqB,GAAE9H,EAAE43H,OAAOtmC,EAAEsmC,KAAK7qH,GAAEukF,EAAEinC,gBAAgB,GAAG,GAAG,MAAM76H,QAAQ,OAAOqP,GAAE,CAAC,GAAG,OAAM,OAAOjF,KAAI9H,EAAE43H,KAAK53H,EAAE4iB,GAAE42G,WAAWx5H,GAAGyG,EAAEmc,GAAEm3G,mBAAmB/5H,EAAE+M,GAAE,WAAWtG,EAAEmc,GAAEo3G,mBAAmBh6H,EAAEsxF,GAAE,GAAG,GAAI,OAAO7qF,EAAEmxH,KAAK9vH,GAAErB,EAAE6yH,WAAW,CAAC14H,IAAI,YAAYE,MAAM,SAAWd,EAAEsxF,GAAG,GAAG,MAAM5zF,OAAO,MAAM,IAAIo6H,WAAW,oBAAoB,GAAG,EAAEl1G,GAAEk3G,kBAAkB95H,EAAEsxF,GAAG,OAAOtxF,EAAE,IAAI8H,GAAEwpF,EAAEinC,gBAAgB,GAAG,GAAG,MAAM76H,QAAQ,OAAOoK,GAAE,CAAC,GAAG,OAAM,OAAO8a,GAAE61G,SAAS,IAAI1rH,GAAE6V,GAAEq3G,mBAAmBj6H,EAAE8H,IAAG,OAAO,OAAM8a,GAAE61G,SAAS71G,GAAE+1G,WAAW5rH,GAAE/M,EAAE43H,MAAM,IAAInxH,GAAEmc,GAAEo3G,mBAAmBh6H,EAAEsxF,GAAE,GAAG,GAAI,OAAO7qF,GAAEmxH,KAAK53H,EAAE43H,KAAKnxH,GAAE6yH,WAAW,CAAC14H,IAAI,MAAME,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAEzG,EAAE43H,KAAK,OAAOnxH,IAAI6qF,EAAEsmC,KAAKh1G,GAAEs3G,cAAcl6H,EAAEsxF,EAAE7qF,GAAG,GAAGmc,GAAEk3G,kBAAkB95H,EAAEsxF,GAAG1uE,GAAEu3G,cAAcn6H,EAAEsxF,EAAE7qF,GAAGmc,GAAEu3G,cAAc7oC,EAAEtxF,GAAGyG,KAAK,CAAC7F,IAAI,WAAWE,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAEzG,EAAE43H,KAAK,OAAOnxH,IAAI6qF,EAAEsmC,KAAK,GAAGh1G,GAAEk3G,kBAAkB95H,EAAEsxF,GAAG1uE,GAAEu3G,cAAcn6H,EAAEsxF,EAAE7qF,GAAGmc,GAAEu3G,cAAc7oC,EAAEtxF,GAAGyG,GAAGmc,GAAEs3G,cAAcl6H,EAAEsxF,EAAE7qF,KAAK,CAAC7F,IAAI,YAAYE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,MAAM5zF,QAAQ,MAAMA,OAAOsC,EAAEsxF,EAAEsmC,KAAKh1G,GAAEw3G,uBAAuBp6H,EAAEsxF,GAAG1uE,GAAEy3G,sBAAsBr6H,EAAEsxF,KAAK,CAAC1wF,IAAI,mBAAmBE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,MAAM5zF,QAAQ,MAAMA,OAAOsC,EAAEsxF,EAAEsmC,KAAKh1G,GAAEy3G,sBAAsBr6H,EAAEsxF,GAAG1uE,GAAEw3G,uBAAuBp6H,EAAEsxF,KAAK,CAAC1wF,IAAI,qBAAqBE,MAAM,WAAW,MAAM,IAAIk0H,UAAU,0DAA0D,CAACp0H,IAAI,WAAWE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,EAAE1uE,GAAE03G,kBAAkBt6H,EAAEsxF,KAAK,CAAC1wF,IAAI,kBAAkBE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,GAAG1uE,GAAE03G,kBAAkBt6H,EAAEsxF,KAAK,CAAC1wF,IAAI,cAAcE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,EAAE1uE,GAAE03G,kBAAkBt6H,EAAEsxF,KAAK,CAAC1wF,IAAI,qBAAqBE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,GAAG1uE,GAAE03G,kBAAkBt6H,EAAEsxF,KAAK,CAAC1wF,IAAI,QAAQE,MAAM,SAASd,EAAEsxF,GAA+B,GAAzBtxF,EAAE43H,OAAOtmC,EAAEsmC,MAAiB53H,EAAEtC,SAAS4zF,EAAE5zF,OAAO,OAAM,EAAG,QAAQoK,EAAE,EAAEA,EAAE9H,EAAEtC,OAAOoK,IAAI,GAAG9H,EAAEk4H,QAAQpwH,KAAKwpF,EAAE4mC,QAAQpwH,GAAG,OAAM,EAAG,OAAM,IAAK,CAAClH,IAAI,WAAWE,MAAM,SAASd,EAAEsxF,GAAG,OAAO1uE,GAAE23G,MAAMv6H,EAAEsxF,KAAK,CAAC1wF,IAAI,aAAaE,MAAM,SAASd,EAAEsxF,GAAG,IAAItxF,EAAE43H,OAAOtmC,EAAEsmC,KAAK,OAAOh1G,GAAE43G,cAAcx6H,EAAEsxF,GAAGgoC,SAAS,GAAGt5H,EAAE43H,MAAMtmC,EAAEsmC,KAAK,CAAC,IAAInxH,EAAEsG,GAAE/M,EAAEtC,OAAO4zF,EAAE5zF,QAAQ,EAAEoK,GAAE8a,GAAEy2G,iBAAiBr5H,EAAEyG,GAAGkoC,GAAE/rB,GAAEy2G,iBAAiB/nC,GAAG,OAAOxpF,GAAE8a,GAAE63G,aAAa3yH,GAAE6mC,GAAE7mC,IAAG8a,GAAE22G,iBAAiBzxH,IAAE,EAAGA,IAAGwxH,SAAS,GAAGt5H,EAAE43H,KAAK,CAAC,IAAI1qE,GAAE,CAACokC,EAAEtxF,GAAGA,EAAEktD,GAAE,GAAGokC,EAAEpkC,GAAE,GAAG,OAAOtqC,GAAE83G,iBAAiB16H,EAAE4iB,GAAEy2G,iBAAiB/nC,IAAIgoC,WAAW,CAAC14H,IAAI,aAAaE,MAAM,SAASd,EAAEsxF,GAAG,IAAItxF,EAAE43H,OAAOtmC,EAAEsmC,KAAK,OAAOh1G,GAAE+3G,cAAc36H,EAAEsxF,GAAGgoC,SAAS,GAAGt5H,EAAE43H,MAAMtmC,EAAEsmC,KAAK,CAAC,IAAInxH,EAAEsG,GAAE/M,EAAEtC,OAAO4zF,EAAE5zF,QAAQoK,GAAE8a,GAAEy2G,iBAAiBr5H,EAAEyG,GAAGkoC,GAAE/rB,GAAEy2G,iBAAiB/nC,GAAG,OAAO1uE,GAAE+3G,cAAc7yH,GAAE6mC,GAAE7mC,IAAGwxH,SAAS,IAAIpsE,GAAEngD,GAAE/M,EAAEtC,OAAO4zF,EAAE5zF,QAAQ,EAAE,GAAGsC,EAAE43H,KAAK,CAAC,IAAIxpE,GAAE,CAACkjC,EAAEtxF,GAAGA,EAAEouD,GAAE,GAAGkjC,EAAEljC,GAAE,GAAG,IAAI/yB,GAAEzY,GAAEy2G,iBAAiB/nC,EAAEpkC,IAAG,OAAO7xB,GAAEzY,GAAE+3G,cAAct/F,GAAEr7B,EAAEq7B,IAAGzY,GAAE22G,iBAAiBl+F,IAAE,EAAGA,IAAGi+F,WAAW,CAAC14H,IAAI,YAAYE,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAEsG,GAAE/M,EAAEtC,OAAO4zF,EAAE5zF,QAAQ,IAAIsC,EAAE43H,OAAOtmC,EAAEsmC,KAAK,OAAOh1G,GAAE63G,aAAaz6H,EAAEsxF,GAAGgoC,SAAS,GAAGt5H,EAAE43H,MAAMtmC,EAAEsmC,KAAK,CAAC,IAAI9vH,GAAE8a,GAAEy2G,iBAAiBr5H,EAAEyG,GAAGkoC,GAAE/rB,GAAEy2G,iBAAiB/nC,GAAG,OAAOxpF,GAAE8a,GAAE43G,cAAc1yH,GAAE6mC,GAAE7mC,IAAG8a,GAAE22G,iBAAiBzxH,IAAE,EAAGA,IAAGwxH,SAAS,GAAGt5H,EAAE43H,KAAK,CAAC,IAAI1qE,GAAE,CAACokC,EAAEtxF,GAAGA,EAAEktD,GAAE,GAAGokC,EAAEpkC,GAAE,GAAG,IAAIkB,GAAExrC,GAAEy2G,iBAAiB/nC,EAAE7qF,GAAG,OAAO2nD,GAAExrC,GAAE83G,iBAAiBtsE,GAAEpuD,EAAEouD,IAAGxrC,GAAE22G,iBAAiBnrE,IAAE,EAAGA,IAAGkrE,WAAW,CAAC14H,IAAI,SAASE,MAAM,SAASd,EAAEsxF,GAAG,GAAG,MAAM5zF,OAAO,OAAO4zF,EAAE,GAAU,GAAPtxF,EAAEouD,GAAEpuD,IAAO,MAAM,IAAI83H,WAAW,sDAAsD,GAAG,MAAM,OAAOl1G,GAAE61G,SAAS,GAAGz4H,GAAG4iB,GAAE62G,iBAAiB,OAAOnoC,EAAE,IAAIxpF,EAAE,GAAG9H,EAAE,IAAI,GAAG,GAAGsxF,EAAE5zF,OAAOoK,EAAE,OAAOwpF,EAAE,IAAI3iD,GAAE2iD,EAAEinC,gBAAgBzwH,EAAE,GAAGolD,GAAE,IAAIltD,EAAE,GAAG,GAAG,GAAGsxF,EAAE5zF,SAASoK,GAAG6mC,GAAEue,GAAE,OAAOokC,EAAE,IAAM3iD,GAAEue,MAAKA,GAAG,OAAOtqC,GAAEg4G,kBAAkB56H,EAAEsxF,GAAG,IAAIA,EAAEsmC,KAAK,OAAOh1G,GAAEi4G,+BAA+B76H,EAAEsxF,GAAE,GAAI,GAAG,IAAI3iD,GAAEue,GAAE,GAAG,CAAC,QAAQ7xB,GAAEvzB,EAAE,EAAE,GAAGuzB,GAAEA,KAAI,GAAG,MAAM68F,QAAQ78F,IAAG,OAAOzY,GAAEi4G,+BAA+B76H,EAAEsxF,GAAE,GAAI,OAAOA,EAAE5zF,SAASoK,GAAG6mC,KAAIue,GAAEokC,EAAE1uE,GAAEg4G,kBAAkB56H,EAAEsxF,GAAG,OAAO1uE,GAAEi4G,+BAA+B76H,EAAEsxF,GAAE,KAAM,CAAC1wF,IAAI,UAAUE,MAAM,SAASd,EAAEsxF,GAAG,GAAG,MAAM5zF,OAAO,OAAO4zF,EAAE,GAAU,GAAPtxF,EAAEouD,GAAEpuD,IAAO,MAAM,IAAI83H,WAAW,sDAAsD,GAAG,MAAM,OAAOl1G,GAAE61G,SAAS,GAAGnnC,EAAEsmC,KAAK,CAAC,GAAG53H,EAAE4iB,GAAE62G,iBAAiB,MAAM,IAAI3B,WAAW,kBAAkB,OAAOl1G,GAAEi4G,+BAA+B76H,EAAEsxF,GAAE,GAAI,GAAGtxF,GAAG4iB,GAAE62G,iBAAiB,OAAOnoC,EAAE,IAAI7qF,EAAE,GAAGzG,EAAE,IAAI,GAAG,GAAGsxF,EAAE5zF,OAAO+I,EAAE,OAAO6qF,EAAE,IAAIxpF,GAAE9H,EAAE,GAAG,GAAGsxF,EAAE5zF,QAAQ+I,EAAE,CAAC,GAAG,OAAM,OAAO6qF,EAAuB,GAAfA,EAAE4mC,QAAQzxH,EAAE,KAAaqB,IAAP,EAAS,OAAOwpF,EAAE,OAAO1uE,GAAEg4G,kBAAkB56H,EAAEsxF,KAAK,CAAC1wF,IAAI,MAAME,MAAM,SAASd,EAAEsxF,GAAG,GAAGtxF,EAAE4iB,GAAEm2G,cAAc/4H,GAAGsxF,EAAE1uE,GAAEm2G,cAAcznC,GAAG,iBAAiBtxF,EAAE,MAAM,iBAAiBsxF,IAAIA,EAAEA,EAAE/zF,YAAYyC,EAAEsxF,EAAE,GAAG,iBAAiBA,EAAE,OAAOtxF,EAAEzC,WAAW+zF,EAAE,GAAGtxF,EAAE4iB,GAAEk4G,YAAY96H,GAAGsxF,EAAE1uE,GAAEk4G,YAAYxpC,GAAG1uE,GAAEm4G,WAAW/6H,IAAI4iB,GAAEm4G,WAAWzpC,GAAG,OAAO1uE,GAAEjV,IAAI3N,EAAEsxF,GAAG,GAAG,iBAAiBtxF,GAAG,iBAAiBsxF,EAAE,OAAOtxF,EAAEsxF,EAAE,MAAM,IAAI0jC,UAAU,iEAAiE,CAACp0H,IAAI,KAAKE,MAAM,SAASd,EAAEsxF,GAAG,OAAO1uE,GAAEo4G,UAAUh7H,EAAEsxF,EAAE,KAAK,CAAC1wF,IAAI,KAAKE,MAAM,SAASd,EAAEsxF,GAAG,OAAO1uE,GAAEo4G,UAAUh7H,EAAEsxF,EAAE,KAAK,CAAC1wF,IAAI,KAAKE,MAAM,SAASd,EAAEsxF,GAAG,OAAO1uE,GAAEo4G,UAAUh7H,EAAEsxF,EAAE,KAAK,CAAC1wF,IAAI,KAAKE,MAAM,SAASd,EAAEsxF,GAAG,OAAO1uE,GAAEo4G,UAAUh7H,EAAEsxF,EAAE,KAAK,CAAC1wF,IAAI,KAAKE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,CAAC,GAAG1uE,GAAEm4G,WAAW/6H,GAAG,OAAO4iB,GAAEm4G,WAAWzpC,GAAG1uE,GAAE23G,MAAMv6H,EAAEsxF,GAAG1uE,GAAEq4G,GAAG3pC,EAAEtxF,GAAG,GAAG,iBAAiBA,EAAE,CAAC,GAAG4iB,GAAEm4G,WAAWzpC,GAAG,OAAO1uE,GAAEs4G,gBAAgB5pC,EAAEtxF,GAAG,GAAG,aAAasxF,GAAG,OAAOtxF,GAAGsxF,EAAEA,EAAE1uE,GAAEm2G,cAAcznC,WAAW,iBAAiBtxF,EAAE,CAAC,GAAG4iB,GAAEm4G,WAAWzpC,GAAG,OAA2B,QAApBtxF,EAAE4iB,GAAEi2G,aAAa74H,KAAa4iB,GAAE23G,MAAMv6H,EAAEsxF,GAAG,GAAG,aAAaA,GAAG,OAAOtxF,GAAGsxF,EAAEA,EAAE1uE,GAAEm2G,cAAcznC,WAAW,kBAAkBtxF,EAAE,CAAC,GAAG4iB,GAAEm4G,WAAWzpC,GAAG,OAAO1uE,GAAEs4G,gBAAgB5pC,GAAGtxF,GAAG,GAAG,aAAasxF,GAAG,OAAOtxF,GAAGsxF,EAAEA,EAAE1uE,GAAEm2G,cAAcznC,WAAW,aAAatxF,GAAG,CAAC,GAAG4iB,GAAEm4G,WAAWzpC,GAAG,OAAM,EAAG,GAAG,aAAaA,GAAG,OAAOtxF,GAAGsxF,EAAEA,EAAE1uE,GAAEm2G,cAAcznC,WAAW,aAAatxF,GAAgF,OAAOA,GAAGsxF,EAAtF,GAAG,aAAaA,IAAIA,EAAE7lF,cAAcmX,GAAE,OAAO5iB,GAAGsxF,EAAEtxF,EAAE4iB,GAAEm2G,cAAc/4H,EAAkBsxF,KAAK,CAAC1wF,IAAI,KAAKE,MAAM,SAASd,EAAEsxF,GAAG,OAAO1uE,GAAEq4G,GAAGj7H,EAAEsxF,KAAK,CAAC1wF,IAAI,sBAAsBE,MAAM,SAASd,EAAEsxF,GAAqE,OAAO1uE,GAAEu4G,OAAO,GAAGv4G,GAAEw4G,qBAAqBp7H,EAAEsxF,EAAxG,EAAK4E,UAAUx4F,aAAQ,cAAmB,IAAKw4F,UAAU,IAAiDzvF,GAAM,CAAC7F,IAAI,uBAAuBE,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAE,EAAKyvF,UAAUx4F,aAAQ,cAAmB,IAAKw4F,UAAU,GAAmBnpF,GAAEiC,GAAhBvI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAS,GAAU2nD,GAAErhD,GAAE,GAAG4hC,GAAE3uC,EAAEq7H,UAAU/pC,EAA1BvkF,GAAE,GAA4BtG,GAAG40B,GAAEr7B,EAAEq7H,UAAU/pC,EAAEljC,GAAE3nD,GAAG4H,GAAE,IAAIuU,GAAE,GAAE,GAAI,OAAOvU,GAAE+pH,WAAW,EAAE,WAAW/8F,IAAGhtB,GAAE+pH,WAAW,GAAG,UAAUzpF,KAAI,EAAEtT,KAAI,IAAIhtB,GAAE+pH,WAAW,EAAEzpF,KAAI,IAAItgC,GAAEirH,WAAW,CAAC14H,IAAI,sBAAsBE,MAAM,SAASd,EAAEsxF,EAAE7qF,GAAqEmc,GAAE04G,qBAAqBt7H,EAAEsxF,EAAE7qF,EAAvF,EAAKyvF,UAAUx4F,aAAQ,cAAmB,IAAKw4F,UAAU,GAAgCpuF,GAAK,CAAClH,IAAI,uBAAuBE,MAAM,SAASd,EAAEsxF,EAAE7qF,GAAG,IAAIqB,GAAE,EAAKouF,UAAUx4F,aAAQ,cAAmB,IAAKw4F,UAAU,GAAyBnpF,GAAE,EAAEmgD,GAAE,EAAE,GAAG,GAAjCzmD,EAAEmc,GAAE24G,QAAQ,GAAG90H,IAAsB/I,SAASwvD,GAAEzmD,EAAEyxH,QAAQ,GAAG,EAAEzxH,EAAE/I,QAAQ,CAAC,IAAI0wD,GAAE3nD,EAAEyxH,QAAQ,GAAGhrE,IAAGkB,IAAG,GAAGrhD,GAAEqhD,KAAI,EAAE,EAAE3nD,EAAE/I,SAASqP,IAAGtG,EAAEyxH,QAAQ,IAAI,IAAI,IAAoB7pH,GAAEW,GAAhBlH,GAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAS,GAAUw/B,GAAEj5B,GAAE,GAAGrO,EAAEw7H,UAAUlqC,EAAxBjjF,GAAE,GAA0BtB,GAAEjF,IAAG9H,EAAEw7H,UAAUlqC,EAAEhqD,GAAE4lB,GAAEplD,MAAK,CAAClH,IAAI,SAASE,MAAM,WAAW,OAAO,IAAI8hB,GAAE,GAAE,KAAM,CAAChiB,IAAI,aAAaE,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAE,IAAImc,GAAE,EAAE0uE,GAAG,OAAO7qF,EAAE2xH,WAAW,EAAEp4H,GAAGyG,IAAI,CAAC7F,IAAI,mBAAmBE,MAAM,SAASd,EAAEsxF,EAAE7qF,EAAEqB,IAAG,GAAG,EAAEwpF,EAAE,OAAM,EAAG,IAAIvkF,GAAE,GAAG,EAAEukF,EAAEvkF,IAAGukF,EAAE,MAAM,CAAC,GAAG,MAAM,OAAM,EAAG7qF,IAAIqB,GAAE9H,EAAEk4H,QAAQzxH,GAAGsG,GAAE,GAAG,IAAI4hC,GAAE,GAAG5hC,GAAE,GAAG,IAAIjF,GAAE6mC,IAAG,OAAM,EAAG,GAAQ,IAAI7mC,IAAT6mC,IAAG,IAAW,OAAO,EAAE,KAAK,EAAEloC,GAAG,GAAGA,IAAI,MAAMyxH,QAAQzxH,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC7F,IAAI,eAAeE,MAAM,SAASd,GAAG4iB,GAAEu2G,uBAAuB,GAAGn5H,EAAE,IAAIsxF,EAAwCxpF,IAApC,KAAK8a,GAAEs2G,qBAAqB,KAAK,IAAO,KAAKnsH,GAAW,GAAR,EAAEjF,GAAE,IAAM6mC,GAAE,IAAI/rB,GAAE7V,GAAE,EAAE/M,GAAGktD,GAAE,QAAQtqC,GAAEs2G,qBAAqB,GAAG,QAAQ9qE,GAAExrC,GAAEs2G,qBAAqB,GAAQ7qH,GAAEvG,GAAE,GAAGopD,GAAE,EAAE,GAAG7iD,GAAjB,GAAqB,CAAC,IAAIi5B,GAA1B,GAA8Bj5B,GAAE6iD,GAAE5pB,GAAE,GAAGgqD,EAAEpkC,KAAI5lB,GAAE4lB,GAAEA,IAAG,GAAG5lB,GAAE8mB,KAAI9mB,GAAE8mB,KAAI,GAAG9mB,WAAtE,KAAgFj5B,GAAM6iD,GAAE,GAAGogC,EAAEpkC,GAAEA,GAAEkB,GAAEA,GAAE,MAAM,CAAC,IAAIopE,GAAEnpH,GAAlH,GAAsH6iD,GAAE,GAAGsmE,GAAElmC,EAAEpkC,IAAGsqE,GAAEppE,KAAI,GAAGopE,GAAEtqE,GAAEkB,IAAGopE,GAAEppE,GAAE,EAAEzf,GAAEypF,WAAWrrH,GAAE,EAAEukF,GAAG,QAAQzuE,EAAE9V,GAAE,EAAE,GAAG8V,EAAEA,IAAI,EAAEquC,IAAGA,IAAG,GAAGogC,EAAEpkC,KAAI,EAAEA,GAAEA,IAAG,GAAGkB,KAAI,EAAEA,KAAI,IAAIkjC,EAAE,EAAE3iD,GAAEypF,WAAWv1G,EAAEyuE,GAAG,OAAO3iD,GAAE2qF,WAAW,CAAC14H,IAAI,iBAAiBE,MAAM,SAASd,GAAG,OAAM,IAAOA,GAAG,GAAGA,IAAK,KAAKA,EAAE,MAAM,QAAQA,EAAE,QAAQ,QAAQ,QAAQA,EAAa,KAAVA,GAAG,SAAc,OAAO,OAAO,OAAO,OAAO,QAAS,YAAY,CAACY,IAAI,eAAeE,MAAM,SAASd,GAAG,IAAIsxF,EAAE,EAAE4E,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,EAAEzvF,EAAE,EAAEqB,GAAE9H,EAAEtC,OAAOqP,GAAE,EAAE,GAAGA,KAAIjF,GAAE,OAAO8a,GAAE61G,SAAS,QAAQ9pF,GAAE3uC,EAAEiiH,WAAWl1G,IAAG6V,GAAE64G,eAAe9sF,KAAI,CAAC,KAAK5hC,KAAIjF,GAAE,OAAO8a,GAAE61G,SAAS9pF,GAAE3uC,EAAEiiH,WAAWl1G,IAAG,GAAG,QAAO,CAAC,KAAKA,KAAIjF,GAAE,OAAO,KAAK6mC,GAAE3uC,EAAEiiH,WAAWl1G,IAAGtG,EAAE,UAAU,QAAO,CAAC,KAAKsG,KAAIjF,GAAE,OAAO,KAAK6mC,GAAE3uC,EAAEiiH,WAAWl1G,IAAGtG,GAAE,EAAG,GAAG,OAAO,GAAG6qF,EAAE,GAAG,QAAO,CAAC,KAAKvkF,KAAIjF,GAAE,OAAO8a,GAAE61G,SAAS,GAAqB,MAAlB9pF,GAAE3uC,EAAEiiH,WAAWl1G,MAAW,SAAQ,CAAC,GAAGukF,EAAE,KAAKvkF,KAAIjF,GAAE,OAAO,KAAK6mC,GAAE3uC,EAAEiiH,WAAWl1G,YAAW,SAAQ,SAAQ,CAAC,GAAGukF,EAAE,IAAIvkF,KAAIjF,GAAE,OAAO,KAAK6mC,GAAE3uC,EAAEiiH,WAAWl1G,YAAW,SAAQ,QAAO,CAAC,GAAGukF,EAAE,IAAIvkF,KAAIjF,GAAE,OAAO,KAAK6mC,GAAE3uC,EAAEiiH,WAAWl1G,cAAa,QAAQ,QAAO,CAAC,KAAKA,KAAIjF,GAAE,OAAO8a,GAAE61G,SAAS,GAAqB,MAAlB9pF,GAAE3uC,EAAEiiH,WAAWl1G,MAAW,SAAQ,CAAC,KAAKA,KAAIjF,GAAE,OAAO,KAAK6mC,GAAE3uC,EAAEiiH,WAAWl1G,KAAI,GAAG,OAAO,OAAO,OAAO,KAAK,KAAK,SAAQ,CAAC,KAAKA,KAAIjF,GAAE,OAAO8a,GAAE61G,SAAS9pF,GAAE3uC,EAAEiiH,WAAWl1G,IAAG,IAAImgD,GAAEplD,GAAEiF,GAAEqhD,GAAExrC,GAAE84G,kBAAkBpqC,GAAGj2D,GAAEzY,GAAE+4G,8BAA8B,EAAE,GAAGzuE,GAAE,WAAWkB,GAAE,OAAO,KAAK,IAAyC8C,GAAE,IAAItuC,GAAE,GAAK,IAAhDwrC,GAAElB,GAAE7xB,KAAIzY,GAAEg5G,2BAA0C,IAAG,GAAIpE,GAAE,GAAGlmC,EAAEA,EAAE,GAAGzuE,GAAE,GAAGyuE,EAAEA,EAAE,GAAG,EAAE,GAAG,IAAIA,EAAEA,EAAE,GAAG,CAACljC,KAAIxrC,GAAEg5G,yBAAyB,IAAI9lE,EAAE,GAAG9mD,GAAE,GAAGY,IAAE,EAAG,EAAE,CAAC,QAAQuO,GAAE4uC,GAAE,EAAE/mC,GAAE,IAAI,CAAC,GAAG7H,QAAE,EAAOwwB,GAAE,KAAK,EAAE6oF,GAAEr5G,GAAEwwB,GAAE,cAAY,GAAGA,IAAG,KAAK,EAAE9rB,IAAkB,CAACjT,IAAE,EAAG,MAAtBuO,IAAG,GAAGwwB,IAAG,EAAa,CAAM,GAAG3oB,IAAGooC,GAAErB,GAAEA,IAAGqB,GAAEjwC,KAAIpR,KAAIjF,GAAE,CAAC8H,IAAE,EAAG,MAAM,GAAG++B,GAAE3uC,EAAEiiH,WAAWl1G,IAAG,GAAGiZ,GAAEooC,GAAE,MAAM0H,EAAEz2D,KAAK0tD,IAAG/9C,GAAE3P,KAAK2mB,WAAUpW,IAAGgT,GAAEi5G,gBAAgB3qE,GAAE4E,EAAE9mD,QAAO,CAACkiD,GAAEwoE,qBAAqB,IAAI16D,IAAE,EAAGjpB,GAAE,EAAE,EAAE,CAAC,QAAQhtB,GAAE+yG,GAAE,EAAEC,GAAE,IAAI,CAAC,GAAGhzG,QAAE,EAAO4lB,GAAE,KAAK,EAAE6oF,GAAEzuG,GAAE4lB,GAAE,cAAY,GAAGA,IAAG,KAAK,EAAE9rB,IAAkB,CAACm8C,IAAE,EAAG,MAAtBj2C,IAAG,GAAG4lB,IAAG,EAAa,CAAM,IAAIme,GAAEivE,GAAEzqC,EAAE,GAAG,WAAWxkC,GAAE,MAAM,GAAGivE,GAAEjvE,GAAEgvE,GAAEA,GAAExqC,EAAEvoE,GAAEgtB,OAAMhpC,KAAIjF,GAAE,CAACk3D,IAAE,EAAG,MAAMrwB,GAAE3uC,EAAEiiH,WAAWl1G,IAA0FmkD,GAAE8qE,qBAAqBD,GAAED,GAAnE,GAAG1tE,GAAErY,IAAlD1a,GAAE,GAAGzY,GAAE+4G,8BAA8B,KAAmB/4G,GAAEg5G,0BAA0B,GAA8BpzH,QAAUw2D,IAAG,GAAGjyD,KAAIjF,GAAE,CAAC,IAAI8a,GAAE64G,eAAe9sF,IAAG,OAAO,KAAK,IAAI5hC,KAAIA,GAAEjF,GAAEiF,KAAI,GAAG4hC,GAAE3uC,EAAEiiH,WAAWl1G,KAAI6V,GAAE64G,eAAe9sF,IAAG,OAAO,KAAK,OAAOuiB,GAAE0mE,MAAK,MAAO1mE,GAAEooE,WAAW,CAAC14H,IAAI,kBAAkBE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,QAAQiF,GAAE,EAAE4hC,GAAE,EAAEue,GAAE,EAAEkB,GAAEkjC,EAAE5zF,OAAO,EAAE,GAAG0wD,GAAEA,KAAI,CAAC,IAAIxrC,GAAE0uE,EAAEljC,IAAG/yB,GAAEvzB,EAAEsmD,IAAGzf,IAAG/rB,IAAGsqC,GAAO,MAALA,IAAG7xB,KAAUr7B,EAAEo4H,WAAWrrH,KAAI4hC,IAAGue,GAAE,EAAEve,GAAE,GAAG,GAAGue,KAAIltD,EAAEo4H,WAAWrrH,KAAI,WAAW4hC,IAASA,GAAE/rB,KAAIyY,IAAZ6xB,IAAG,IAAWA,CAAG,GAAG,OAAM,CAAC,GAAGngD,IAAG/M,EAAEtC,OAAO,MAAM,IAAI03C,MAAM,sBAAsBp1C,EAAEo4H,WAAWrrH,KAAI4hC,IAAG,KAAK5hC,GAAE/M,EAAEtC,OAAOqP,KAAI/M,EAAEo4H,WAAWrrH,GAAE,KAAK,CAACnM,IAAI,2BAA2BE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE9H,EAAEtC,OAAOqP,GAAEukF,EAAE,EAAkE3iD,GAAxB5hC,IAAG,IAAvBA,IAAG,IAAvBA,IAAG,GAAGA,KAAI,IAAI,GAAGA,OAAa,IAAI,GAAGA,OAAa,IAAI,GAAGA,IAAWmgD,GAAEokC,EAAE,EAAEljC,GAAEpuD,EAAEk4H,QAAQpwH,EAAE,GAAkBuG,GAAE,GAAG,GAAGvG,EAArB8a,GAAEq1G,QAAQ7pE,IAAezf,GAAE,GAAGA,GAAE,GAAG3uC,EAAE43H,MAAMvpH,KAAI,UAAUA,GAAE,MAAM,IAAI+mC,MAAM,mBAAmB,QAAQ8b,GAAE1uD,MAAM6L,IAAGi5B,GAAEj5B,GAAE,EAAEmpH,GAAE,EAAE30G,GAAE,EAAEra,EAAE,EAAEA,EAAEV,EAAE,EAAEU,IAAI,CAAC,IAAIstD,GAAE91D,EAAEk4H,QAAQ1vH,GAAgB0oD,GAAE5pB,MAAK1kB,GAAEq5G,oBAAnBzE,GAAE1hE,IAAGjzC,IAAGqqC,IAAiC,IAAIt9C,GAAE++B,GAAE9rB,GAAE,IAAI20G,GAAE1hE,KAAIlmD,GAAEiT,GAAE,GAAGjT,GAAEiT,IAAG8rB,IAAGuiB,GAAE5pB,MAAK1kB,GAAEq5G,mBAAmBzE,GAAEtqE,IAAGsqE,MAAK7oF,GAAE9rB,IAAG8rB,GAAmB,IAAIuiB,GAAE5pB,MAAK1kB,GAAEq5G,oBAAvBzE,GAAEppE,IAAGvrC,IAAGqqC,IAAqCsqE,GAAEppE,KAAIzf,GAAE9rB,GAAE,QAAOquC,GAAE5pB,MAAK1kB,GAAEq5G,mBAAmBzE,GAAEtqE,IAAGsqE,MAAK7oF,GAAE,GAAG3uC,EAAE43H,OAAO1mE,GAAE5pB,MAAK,MAAK,OAAO,MAAM,IAAI8N,MAAM,sBAAsB,OAAO8b,GAAE/D,KAAK,MAAM,CAACvsD,IAAI,oBAAoBE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,IAAIiF,GAAE/M,EAAEtC,OAAO,GAAG,OAAM,MAAM,GAAG,GAAG,OAAM,CAAC,IAAIixC,GAAE3uC,EAAEu4H,gBAAgB,GAAGh7H,SAAS+zF,GAAG,OAAM,OAAQtxF,EAAE43H,OAAOjpF,GAAE,IAAIA,IAAGA,GAAE,IAA2HuiB,GAAE5pB,GAAzH4lB,GAAE,GAAGngD,GAAE6V,GAAEq1G,QAAQj4H,EAAEk4H,QAAQnrH,GAAE,IAA6BsuB,GAAvBzY,GAAE84G,kBAAkBpqC,GAAO,EAAEjjF,GAAE6+C,GAAEtqC,GAAE+4G,8BAAqDnE,GAAI,GAApBnpH,GAAE,GAATA,IAAGgtB,GAAE,GAAQA,KAAiB,EAAExY,GAAED,GAAEs5G,aAAat5G,GAAE+1G,WAAWrnC,GAAE,GAAI1uE,GAAE+1G,WAAWnB,IAAE,IAAKhvH,EAAEqa,GAAE01G,gBAAgB,GAAG,GAAG,OAAM76H,QAAQ,OAAO8K,EAAE,EAAC0oD,GAAE,IAAItuC,GAAE5iB,EAAEtC,QAAO,IAAMg8H,qBAAqB,QAAQ5jE,GAAE9mD,GAAE,EAAEY,GAAE,EAAE5P,EAAEtC,OAAO,EAAE,GAAGkS,GAAEA,KAAIkmD,GAAE9mD,IAAG,GAAGhP,EAAEq4H,YAAYzoH,IAAGshD,GAAEonE,eAAe1oH,GAAE,EAAEkmD,GAAEttD,GAAGwG,GAAE,EAAE8mD,GAAEttD,EAAE8+B,GAAEt4B,GAAEzR,SAAS+zF,OAAO,CAAC,IAAInzE,GAAEyE,GAAEo3G,mBAAmBh6H,EAAE6iB,IAAE,GAAG,GAAIquC,GAAE/yC,GAAEg+G,SAAS,IAAIpvE,GAAE5uC,GAAEi+G,UAAU9C,SAAShyF,GAAE1kB,GAAEo1G,kBAAkBjrE,GAAEukC,GAAE,GAAIpgC,GAAEooE,SAAS,QAAQtzG,GAAEpD,GAAEo1G,kBAAkB9mE,GAAEogC,GAAE,GAAIhqD,GAAE5pC,OAAO85H,IAAGlwF,GAAE,IAAIA,GAAE,OAAM,OAAQtnC,EAAE43H,OAAO5xG,GAAE,IAAIA,IAAGA,GAAEshB,KAAI,CAAC1mC,IAAI,gBAAgBE,MAAM,SAASd,GAAG,OAAOA,GAAE,EAAG,IAAI,CAACY,IAAI,oBAAoBE,MAAM,SAASd,GAAG,OAAOA,GAAE,EAAG,IAAI,CAACY,IAAI,iBAAiBE,MAAM,SAASd,GAAG,OAAOA,EAAE,GAAE,IAAK,CAACY,IAAI,oBAAoBE,MAAM,SAASd,EAAEsxF,GAAG,IAAI7qF,EAAEzG,EAAE43H,KAAK,GAAGnxH,IAAI6qF,EAAEsmC,KAAK,OAAOh1G,GAAEy5G,cAAc51H,GAAG,IAAIqB,GAAE8a,GAAEk3G,kBAAkB95H,EAAEsxF,GAAG,OAAO,EAAExpF,GAAE8a,GAAE05G,kBAAkB71H,GAAG,EAAEqB,GAAE8a,GAAE25G,eAAe91H,GAAG,IAAI,CAAC7F,IAAI,oBAAoBE,MAAM,SAASd,EAAEyG,GAAG,GAAGmc,GAAE81G,gBAAgBjyH,GAAG,CAAC,IAAIqB,EAAE9H,EAAE43H,KAAK7qH,GAAE,EAAEtG,EAAE,GAAGqB,IAAIiF,GAAE,OAAO6V,GAAEy5G,cAAcv0H,GAAG,GAAG,MAAMpK,OAAO,CAAC,GAAGqP,GAAE,MAAM,IAAIqoC,MAAM,sBAAsB,OAAO,MAAM,GAAE,EAAG,GAAG,EAAEp1C,EAAEtC,OAAO,OAAOklB,GAAE05G,kBAAkBx0H,GAAG,IAAI6mC,GAAE2iD,GAAE7qF,GAAGymD,GAAEltD,EAAEu4H,gBAAgB,GAAG,OAAOrrE,GAAEve,GAAE/rB,GAAE05G,kBAAkBx0H,GAAGolD,GAAEve,GAAE/rB,GAAE25G,eAAez0H,GAAG,EAAE,OAAO8a,GAAE45G,kBAAkBx8H,EAAEyG,KAAK,CAAC7F,IAAI,oBAAoBE,MAAM,SAASd,EAAEsxF,GAAG,GAAGA,GAAIA,EAAE,OAAOA,EAAE,GAAGA,IAAI,IAAI,OAAM,EAAG,GAAGA,KAAI,IAAU,OAAO,EAAE,IAAI7qF,EAAEzG,EAAE43H,KAAK,GAAGnxH,IAAI,EAAE6qF,EAAE,OAAO1uE,GAAEy5G,cAAc51H,GAAG,GAAG,MAAM,MAAM,IAAI2uC,MAAM,mDAAmD,GAAG,MAAM13C,OAAO,OAAM,EAAGklB,GAAEu2G,uBAAuB,GAAG7nC,EAAE,IAAIxpF,GAAE,KAAK8a,GAAEs2G,qBAAqB,KAAK,GAAG,GAAG,SAAQ,MAAM,IAAI9jF,MAAM,yCAAyC,IAAIroC,GAAEjF,GAAE,KAAK,GAAG,EAAEiF,GAAE,OAAO6V,GAAE05G,kBAAkB71H,GAAG,IAAIkoC,GAAE3uC,EAAEtC,OAAOwvD,GAAEltD,EAAEk4H,QAAQvpF,GAAE,GAAGyf,GAAExrC,GAAEq1G,QAAQ/qE,IAAG7xB,GAAE,GAAGsT,GAAEyf,GAAE//C,GAAEtB,GAAE,EAAE,GAAGsuB,GAAEhtB,GAAE,OAAOuU,GAAE25G,eAAe91H,GAAG,GAAG40B,GAAEhtB,GAAE,OAAOuU,GAAE05G,kBAAkB71H,GAAG,IAAIyqD,GAAE,QAAQ,QAAQtuC,GAAEs2G,qBAAqB,GAAG5xF,GAAE1kB,GAAEs2G,qBAAqB,GAAQr2G,EAAE,GAAGurC,GAAE,GAAGvrC,KAAK,GAAGwY,GAAE,GAAG,IAAI,MAAM,IAAI+Z,MAAM,sBAAsB,IAAI5sC,GAAEstD,GAAE,EAAE,GAAGjzC,EAAjF,GAAqF,CAAC,IAAI7T,GAA1F,GAA8F6T,EAAEizC,GAAE9mD,GAAE,GAAGxG,GAAE0oD,KAAIliD,GAAEkiD,GAAEA,IAAG,GAAGliD,GAAEs4B,KAAIt4B,GAAEs4B,KAAI,GAAGt4B,WAAtI,KAAgJ6T,EAAMizC,GAAE,GAAGttD,GAAE0oD,GAAEA,GAAE5pB,GAAEA,GAAE,MAAM,CAAC,IAAI13B,GAAEiT,EAAlL,GAAsLizC,GAAE,GAAGlmD,GAAEpH,GAAE0oD,IAAGthD,GAAE03B,KAAI,GAAG13B,GAAEshD,GAAE5pB,IAAG13B,GAAE03B,GAAE,EAAE,IAAG4lB,MAAK,IAAE1kD,MAAK,GAAM,OAAOoa,GAAE05G,kBAAkB71H,GAAG,GAAGymD,GAAE1kD,GAAE,OAAOoa,GAAE25G,eAAe91H,GAAG,QAAQ0X,GAAEwwB,GAAE,EAAE,GAAGxwB,GAAEA,KAAI,CAAC,EAAE23C,IAAGA,IAAG,GAAGttD,GAAE0oD,KAAI,EAAEA,GAAEA,IAAG,GAAG5pB,KAAI,EAAEA,KAAI,IAAI9+B,GAAE,EAAE,IAAIukD,GAAE/sD,EAAEu4H,gBAAgBp6G,IAAG,GAAG4uC,GAAEvkD,GAAE,OAAOoa,GAAE05G,kBAAkB71H,GAAG,GAAGsmD,GAAEvkD,GAAE,OAAOoa,GAAE25G,eAAe91H,GAAG,GAAG,QAAO,OAAM,CAAC,GAAG,OAAM,MAAM,IAAI2uC,MAAM,sBAAsB,OAAOxyB,GAAE25G,eAAe91H,GAAG,OAAO,IAAI,CAAC7F,IAAI,kBAAkBE,MAAM,SAASd,EAAEyG,GAAG,OAAOmc,GAAE81G,gBAAgBjyH,GAAG,MAAM,MAAM/I,OAAO,MAAMA,QAAQsC,EAAE43H,OAAO,EAAEnxH,GAAGzG,EAAEu4H,gBAAgB,KAAKjnC,GAAE7qF,GAAG,OAAM+1H,kBAAkBx8H,EAAEyG,EAA1B,GAA+B,CAAC7F,IAAI,2BAA2BE,MAAM,SAASd,EAAEsxF,GAAG,OAAO,MAAM,EAAEtxF,EAAE,MAAM,GAAGA,EAAE,MAAM,EAAEA,EAAE,MAAM,GAAGA,OAAE,IAAS,CAACY,IAAI,YAAYE,MAAM,SAASd,EAAEsxF,EAAE7qF,GAAG,GAAGzG,EAAE4iB,GAAEm2G,cAAc/4H,GAAGsxF,EAAE1uE,GAAEm2G,cAAcznC,GAAG,iBAAiBtxF,GAAG,iBAAiBsxF,EAAE,OAAO7qF,QAAQ,EAAE,OAAOzG,EAAEsxF,OAAO,EAAE,OAAOtxF,GAAGsxF,OAAO,EAAE,OAAOtxF,EAAEsxF,OAAO,EAAE,OAAOtxF,GAAGsxF,EAAG,GAAG1uE,GAAEm4G,WAAW/6H,IAAI,iBAAiBsxF,EAAE,OAA2B,QAApBA,EAAE1uE,GAAEi2G,aAAavnC,KAAa1uE,GAAE65G,yBAAyB75G,GAAE03G,kBAAkBt6H,EAAEsxF,GAAG7qF,GAAG,GAAG,iBAAiBzG,GAAG4iB,GAAEm4G,WAAWzpC,GAAG,OAA2B,QAApBtxF,EAAE4iB,GAAEi2G,aAAa74H,KAAa4iB,GAAE65G,yBAAyB75G,GAAE03G,kBAAkBt6H,EAAEsxF,GAAG7qF,GAAG,GAAGzG,EAAE4iB,GAAEk4G,YAAY96H,GAAGsxF,EAAE1uE,GAAEk4G,YAAYxpC,GAAG1uE,GAAEm4G,WAAW/6H,GAAG,CAAC,GAAG4iB,GAAEm4G,WAAWzpC,GAAG,OAAO1uE,GAAE65G,yBAAyB75G,GAAE03G,kBAAkBt6H,EAAEsxF,GAAG7qF,GAAG,GAAG,iBAAiB6qF,EAAE,MAAM,IAAIl8C,MAAM,sBAAsB,OAAOxyB,GAAE65G,yBAAyB75G,GAAE85G,kBAAkB18H,EAAEsxF,GAAG7qF,GAAG,GAAG,iBAAiBzG,EAAE,MAAM,IAAIo1C,MAAM,sBAAsB,GAAGxyB,GAAEm4G,WAAWzpC,GAAG,OAAO1uE,GAAE65G,yBAAyB75G,GAAE85G,kBAAkBprC,EAAEtxF,GAAG,EAAEyG,GAAG,GAAG,iBAAiB6qF,EAAE,MAAM,IAAIl8C,MAAM,sBAAsB,OAAO,MAAMp1C,EAAEsxF,EAAE,MAAMtxF,GAAGsxF,EAAE,MAAMtxF,EAAEsxF,EAAE,MAAMtxF,GAAGsxF,OAAE,IAAS,CAAC1wF,IAAI,gBAAgBE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,GAAG9H,EAAEtC,OAAO4zF,EAAE5zF,OAAO,OAAOklB,GAAEs3G,cAAc5oC,EAAEtxF,EAAE8H,GAAG,GAAG,MAAMpK,OAAO,OAAOsC,EAAE,GAAG,MAAMtC,OAAO,OAAOsC,EAAE43H,OAAO9vH,EAAE9H,EAAE4iB,GAAE42G,WAAWx5H,GAAG,IAAI+M,GAAE/M,EAAEtC,QAAQ,IAAIsC,EAAE45H,YAAYtoC,EAAE5zF,SAASsC,EAAEtC,QAAQ,MAAMk8H,aAAa7sH,KAAI,QAAQ4hC,GAAEue,GAAE,IAAItqC,GAAE7V,GAAEjF,GAAGsmD,GAAE,EAAE/yB,GAAE,EAAEA,GAAEi2D,EAAE5zF,OAAO29B,KAAkC+yB,IAA9Bzf,GAAE3uC,EAAEk4H,QAAQ78F,IAAGi2D,EAAE4mC,QAAQ78F,IAAG+yB,MAAQ,GAAGlB,GAAEkrE,WAAW/8F,GAAE,WAAWsT,IAAG,KAAKtT,GAAEr7B,EAAEtC,OAAO29B,KAAI,CAAC,IAAIhtB,GAAErO,EAAEk4H,QAAQ78F,IAAG+yB,GAAEA,GAAE//C,KAAI,GAAG6+C,GAAEkrE,WAAW/8F,GAAE,WAAWhtB,IAAG,OAAOgtB,GAAE6xB,GAAExvD,QAAQwvD,GAAEkrE,WAAW/8F,GAAE+yB,IAAGlB,GAAEosE,WAAW,CAAC14H,IAAI,gBAAgBE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,GAAG,MAAMpK,OAAO,OAAOsC,EAAE,GAAG,MAAMtC,OAAO,OAAOsC,EAAE43H,OAAO9vH,EAAE9H,EAAE4iB,GAAE42G,WAAWx5H,GAAG,QAAQ+M,GAAE4hC,GAAE,IAAI/rB,GAAE5iB,EAAEtC,OAAOoK,GAAGolD,GAAE,EAAEkB,GAAE,EAAEA,GAAEkjC,EAAE5zF,OAAO0wD,KAAkClB,GAAE,GAAhCngD,GAAE/M,EAAEk4H,QAAQ9pE,IAAGkjC,EAAE4mC,QAAQ9pE,IAAGlB,MAAU,GAAGve,GAAEypF,WAAWhqE,GAAE,WAAWrhD,IAAG,KAAKqhD,GAAEpuD,EAAEtC,OAAO0wD,KAAI,CAAC,IAAI/yB,GAAEr7B,EAAEk4H,QAAQ9pE,IAAGlB,GAAEA,GAAE,EAAE7xB,KAAI,GAAGsT,GAAEypF,WAAWhqE,GAAE,WAAW/yB,IAAG,OAAOsT,GAAE2qF,WAAW,CAAC14H,IAAI,mBAAmBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE,EAAEouF,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,KAAKnpF,GAAE/M,EAAEtC,OAAO,OAAOoK,EAAEA,EAAE,IAAI8a,GAAE7V,GAAEukF,GAAGxpF,EAAE8vH,KAAKtmC,EAAE,QAAQ3iD,GAAEue,GAAE,EAAEkB,GAAE,EAAEA,GAAErhD,GAAEqhD,KAAqBlB,IAAjBve,GAAE3uC,EAAEk4H,QAAQ9pE,IAAGlB,MAAQ,GAAGplD,EAAEswH,WAAWhqE,GAAE,WAAWzf,IAAG,OAAO,QAAO7mC,EAAE60H,eAAe5vH,GAAE,GAAGjF,IAAI,CAAClH,IAAI,mBAAmBE,MAAM,SAASd,EAAEsxF,GAAyB,IAAtB,IAA8BvkF,GAA1BjF,EAAE9H,EAAEtC,OAAwBixC,GAAE,IAAI/rB,GAAvB0uE,EAAEA,GAAGxpF,GAAsB,GAAIolD,GAAE,EAAEkB,GAAE,EAAEA,GAAEtmD,EAAEsmD,KAAqBlB,GAAE,GAAnBngD,GAAE/M,EAAEk4H,QAAQ9pE,IAAGlB,MAAU,GAAGve,GAAEypF,WAAWhqE,GAAE,WAAWrhD,IAAG,GAAG,OAAM,MAAM,IAAIqoC,MAAM,sBAAsB,QAAQ/Z,GAAEvzB,EAAEuzB,GAAEi2D,EAAEj2D,KAAIsT,GAAEypF,WAAW/8F,GAAE,GAAG,OAAOsT,KAAI,CAAC/tC,IAAI,gBAAgBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE,EAAEouF,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,KAAKnpF,GAAE/M,EAAEtC,OAAOixC,GAAE2iD,EAAE5zF,OAAOwvD,GAAEve,GAAE,GAAG5hC,GAAE4hC,GAAE,CAACue,GAAEngD,GAAE,IAAIqhD,GAAEpuD,EAAEq7B,GAAEtuB,GAAE/M,EAAEsxF,EAAEvkF,GAAE4hC,GAAE2iD,EAAEljC,GAAEzf,GAAEtT,GAAE,IAAIhtB,GAAE6+C,GAAE,OAAOplD,EAAEA,EAAE,IAAI8a,GAAEvU,IAAE,GAAIA,GAAEvG,EAAEpK,OAAO,QAAQwzD,GAAE,EAAEA,GAAEhE,GAAEgE,KAAIppD,EAAEswH,WAAWlnE,GAAElxD,EAAEk4H,QAAQhnE,IAAGogC,EAAE4mC,QAAQhnE,KAAI,KAAKA,GAAE7iD,GAAE6iD,KAAIppD,EAAEswH,WAAWlnE,GAAE,GAAG,OAAOppD,IAAI,CAAClH,IAAI,mBAAmBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE,EAAEouF,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,KAAKnpF,GAAE/M,EAAEtC,OAAOixC,GAAE2iD,EAAE5zF,OAAOwvD,GAAEve,GAAE5hC,GAAE4hC,KAAIue,GAAEngD,IAAG,IAAIqhD,GAAErhD,GAAE,OAAOjF,EAAEA,EAAE,IAAI8a,GAAEwrC,IAAE,GAAIA,GAAEtmD,EAAEpK,OAAO,QAAQ29B,GAAE,EAAEA,GAAE6xB,GAAE7xB,KAAIvzB,EAAEswH,WAAW/8F,GAAEr7B,EAAEk4H,QAAQ78F,KAAIi2D,EAAE4mC,QAAQ78F,KAAI,KAAKA,GAAEtuB,GAAEsuB,KAAIvzB,EAAEswH,WAAW/8F,GAAEr7B,EAAEk4H,QAAQ78F,KAAI,KAAKA,GAAE+yB,GAAE/yB,KAAIvzB,EAAEswH,WAAW/8F,GAAE,GAAG,OAAOvzB,IAAI,CAAClH,IAAI,eAAeE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE,EAAEouF,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,KAAKnpF,GAAE/M,EAAEtC,OAAOixC,GAAE2iD,EAAE5zF,OAAOwvD,GAAEve,GAAE,GAAG5hC,GAAE4hC,GAAE,CAACue,GAAEngD,GAAE,IAAIqhD,GAAEpuD,EAAEq7B,GAAEtuB,GAAE/M,EAAEsxF,EAAEvkF,GAAE4hC,GAAE2iD,EAAEljC,GAAEzf,GAAEtT,GAAE,IAAIhtB,GAAEtB,GAAE,OAAOjF,EAAEA,EAAE,IAAI8a,GAAEvU,IAAE,GAAIA,GAAEvG,EAAEpK,OAAO,QAAQwzD,GAAE,EAAEA,GAAEhE,GAAEgE,KAAIppD,EAAEswH,WAAWlnE,GAAElxD,EAAEk4H,QAAQhnE,IAAGogC,EAAE4mC,QAAQhnE,KAAI,KAAKA,GAAEnkD,GAAEmkD,KAAIppD,EAAEswH,WAAWlnE,GAAElxD,EAAEk4H,QAAQhnE,KAAI,KAAKA,GAAE7iD,GAAE6iD,KAAIppD,EAAEswH,WAAWlnE,GAAE,GAAG,OAAOppD,IAAI,CAAClH,IAAI,gBAAgBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE,EAAEouF,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,KAAKnpF,GAAE/M,EAAEtC,OAAOixC,GAAE2iD,EAAE5zF,OAAOwvD,GAAEve,GAAE,GAAG5hC,GAAE4hC,GAAE,CAACue,GAAEngD,GAAE,IAAIqhD,GAAEpuD,EAAEq7B,GAAEtuB,GAAE/M,EAAEsxF,EAAEvkF,GAAE4hC,GAAE2iD,EAAEljC,GAAEzf,GAAEtT,GAAE,IAAIhtB,GAAEtB,GAAE,OAAOjF,EAAEA,EAAE,IAAI8a,GAAEvU,IAAE,GAAIA,GAAEvG,EAAEpK,OAAO,QAAQwzD,GAAE,EAAEA,GAAEhE,GAAEgE,KAAIppD,EAAEswH,WAAWlnE,GAAElxD,EAAEk4H,QAAQhnE,IAAGogC,EAAE4mC,QAAQhnE,KAAI,KAAKA,GAAEnkD,GAAEmkD,KAAIppD,EAAEswH,WAAWlnE,GAAElxD,EAAEk4H,QAAQhnE,KAAI,KAAKA,GAAE7iD,GAAE6iD,KAAIppD,EAAEswH,WAAWlnE,GAAE,GAAG,OAAOppD,IAAI,CAAClH,IAAI,oBAAoBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE9H,EAAEtC,OAAO4zF,EAAE5zF,OAAO,GAAG,KAAK,OAAOoK,EAAE,QAAQiF,GAAE/M,EAAEtC,OAAO,EAAE,GAAGqP,IAAG/M,EAAEk4H,QAAQnrH,MAAKukF,EAAE4mC,QAAQnrH,KAAIA,KAAI,OAAO,EAAEA,GAAE,EAAE/M,EAAEu4H,gBAAgBxrH,IAAGukF,EAAEinC,gBAAgBxrH,IAAG,GAAE,IAAK,CAACnM,IAAI,uBAAuBE,MAAM,SAASd,EAAEsxF,EAAExpF,EAAEiF,IAAG,GAAG,MAAM,CAAC,QAAQ4hC,GAAE,MAAM2iD,EAAEpkC,GAAEokC,IAAI,GAAGljC,GAAE,EAAE/yB,GAAE,EAAEhtB,GAAE,EAAEA,GAAErO,EAAEtC,OAAO2Q,KAAItB,KAAI,CAAC,IAAImkD,GAAEppD,EAAEowH,QAAQnrH,IAAGu6B,GAAEtnC,EAAEk4H,QAAQ7pH,IAAGmpH,GAAE,MAAMlwF,GAAEzkB,GAAEykB,KAAI,GAAG9+B,EAAEoa,GAAEu1G,OAAOX,GAAE7oF,IAAGmnB,GAAElzC,GAAEu1G,OAAOX,GAAEtqE,IAAGl+C,GAAE4T,GAAEu1G,OAAOt1G,GAAE8rB,IAA4Byf,IAAT8C,IAAG71B,GAAE7yB,EAAE4lD,MAAQ,GAAG8C,IAAG,WAA8C9C,KAAnC8C,MAAK,MAAM4E,KAAI,MAAM,MAAM9mD,KAAI,OAAW,GAAGqsB,GAA3FzY,GAAEu1G,OAAOt1G,GAAEqqC,KAAqF4I,KAAI,KAAK9mD,KAAI,IAAIlH,EAAEswH,WAAWrrH,GAAE,WAAWmkD,IAAG,KAAK,QAAO,OAAMnkD,KAAI,CAAC,IAAIoR,GAAErW,EAAEowH,QAAQnrH,IAAGoR,IAAGiwC,GAAE/yB,GAAEA,GAAE,EAAE+yB,GAAEjwC,KAAI,GAAGrW,EAAEswH,WAAWrrH,GAAE,WAAWoR,QAAO,CAACvd,IAAI,wBAAwBE,MAAM,SAASd,EAAEsxF,EAAExpF,EAAE6mC,GAAEue,IAAG,QAAQkB,GAAEtmD,EAAEuzB,GAAE,EAAEhtB,GAAE,EAAEA,GAAEsgC,GAAEtgC,KAAI,CAAC,IAAIi5B,GAAEtnC,EAAEk4H,QAAQ7pH,IAAGmpH,GAAE50G,GAAEu1G,OAAO,MAAM7wF,GAAEgqD,GAAGzuE,GAAED,GAAEu1G,OAAO7wF,KAAI,GAAGgqD,GAAG9oF,GAAEgvH,KAAI,MAAM30G,KAAI,IAAIwY,GAAE+yB,GAAEA,GAAE5lD,KAAI,GAAG6yB,GAAExY,KAAI,GAAGqqC,GAAEkrE,WAAW/pH,GAAE,WAAW7F,IAAG,GAAG0kD,GAAExvD,OAAOixC,GAAE,IAAIue,GAAEkrE,WAAWzpF,KAAIyf,GAAE/yB,IAAGsT,GAAEue,GAAExvD,QAAQwvD,GAAEkrE,WAAWzpF,KAAI,WAAW+H,GAAMrb,KAAN,EAAQ,MAAM,IAAI+Z,MAAM,wBAAwB,CAACx0C,IAAI,qBAAqBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE,EAAEouF,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,KAAK,OAAOpuF,IAAIA,EAAE,IAAI8a,GAAE5iB,EAAEtC,QAAO,IAAK,QAAQqP,GAAE,EAAE4hC,GAAE,EAAE3uC,EAAEtC,OAAO,EAAE,GAAGixC,GAAEA,IAAG,EAAE,CAAC,IAAIue,IAAGngD,IAAG,GAAG/M,EAAEq4H,YAAY1pF,OAAM,EAAEyf,GAAE,EAAElB,GAAEokC,EAAuDvkF,GAAE,GAA/CmgD,KAARngD,GAAE,EAAEmgD,GAAEokC,IAAQ,GAAGtxF,EAAEq4H,YAAY1pF,GAAE,MAAM,GAAoB2iD,EAAExpF,EAAEswH,WAAWzpF,KAAI,EAAEyf,IAAG,GAApC,EAAElB,GAAEokC,EAAmCj2D,CAAG,OAAOvzB,IAAI,CAAClH,IAAI,qBAAqBE,MAAM,SAASd,EAAEsxF,GAAG,QAAUvkF,GAAE,EAAE4hC,GAAE,EAAE3uC,EAAEtC,OAAO,EAAE,GAAGixC,GAAEA,KAAmC5hC,GAAE,IAA9BA,IAAG,GAAG/M,EAAEq4H,YAAY1pF,OAAM,GAAQ2iD,EAAE,OAAOvkF,KAAI,CAACnM,IAAI,qBAAqBE,MAAM,SAASd,EAAEsxF,EAAE7qF,EAAEqB,IAAG,IAAI6mC,GAAE2iD,EAAEsrC,oBAAoB7vH,GAAEukF,EAAE5zF,OAAOwvD,GAAEltD,EAAE48H,oBAAoBjuF,GAAEyf,GAAE,KAAK3nD,IAAI2nD,GAAE,IAAIxrC,GAAEsqC,GAAE,IAAI,GAAE,IAAMwsE,qBAAsB,IAAIrrH,GAAE,IAAIuU,GAAE+rB,GAAE,IAAI,GAAE,GAAItgC,GAAEqrH,qBAAqB,IAAIxoE,GAAEtuC,GAAEi6G,QAAQvrC,EAAE+mC,YAAY1pF,GAAE,IAAI,EAAEuiB,KAAIogC,EAAE1uE,GAAEk6G,mBAAmBxrC,EAAEpgC,GAAE,IAAI,QAAQ5pB,GAAE1kB,GAAEk6G,mBAAmB98H,EAAEkxD,GAAE,GAAG71B,GAAEi2D,EAAE+mC,YAAY1pF,GAAE,GAAG6oF,GAAE,EAAE30G,EAAEqqC,GAAE,GAAGrqC,EAAEA,IAAI,CAAC,IAAIra,GAAE,MAAMwG,GAAEs4B,GAAE+wF,YAAYx1G,EAAE8rB,IAAG,GAAG3/B,KAAIqsB,GAAE,CAAC,IAAIzrB,IAAGZ,IAAG,GAAGs4B,GAAE+wF,YAAYx1G,EAAE8rB,GAAE,MAAM,EAAEnmC,GAAE,EAAEoH,GAAEyrB,GAAE,QAAQld,GAAE,EAAEvO,GAAEyrB,GAAE0xB,GAAEukC,EAAE+mC,YAAY1pF,GAAE,GAAG3oB,GAAEshB,GAAE+wF,YAAYx1G,EAAE8rB,GAAE,GAAG/rB,GAAEu1G,OAAO3vH,GAAEukD,MAAK,GAAG5uC,IAAG,GAAG6H,MAAK,IAAIxd,OAAW,OAAP2V,IAAGkd,QAAe,CAAEzY,GAAEm6G,sBAAsBzrC,EAAE9oF,GAAE,EAAEuE,GAAEsB,IAAG,IAAI2wD,GAAE13B,GAAE01F,aAAa3uH,GAAEwU,EAAE8rB,GAAE,GAAG,IAAIqwB,KAAIA,GAAE13B,GAAE21F,aAAa3rC,EAAEzuE,EAAE8rB,IAAGrH,GAAEgxF,eAAez1G,EAAE8rB,GAAE,MAAMrH,GAAE+wF,YAAYx1G,EAAE8rB,IAAGqwB,IAAGx2D,MAAK/B,IAAI,EAAEoc,EAAE20G,GAAEhvH,IAAG,GAAG4lD,GAAEgqE,WAAWv1G,IAAI,EAAE20G,GAAEhvH,KAAI,GAAGV,GAAE,OAAOw/B,GAAE41F,oBAAoBhsE,IAAGzqD,EAAE,CAAC01H,SAAS/tE,GAAEguE,UAAU90F,IAAGA,GAAE,GAAG7gC,EAAE,OAAO2nD,GAAE,MAAM,IAAIhZ,MAAM,iBAAiB,CAACx0C,IAAI,UAAUE,MAAM,SAASd,GAAG,OAAO4iB,GAAEq1G,QAAQj4H,GAAG,KAAK,CAACY,IAAI,qBAAqBE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,IAAI6mC,GAAE3uC,EAAEtC,OAAOqP,GAAE,IAAI6V,GAAE+rB,GAAE7mC,GAAE,GAAI,GAAG,MAAM,CAAC,QAAQolD,GAAE,EAAEA,GAAEve,GAAEue,KAAIngD,GAAEqrH,WAAWlrE,GAAEltD,EAAEk4H,QAAQhrE,KAAI,OAAO,EAAEplD,GAAGiF,GAAEqrH,WAAWzpF,GAAE,GAAG5hC,GAAE,QAAQqhD,GAAE/yB,GAAE,EAAEhtB,GAAE,EAAEA,GAAEsgC,GAAEtgC,KAAI+/C,GAAEpuD,EAAEk4H,QAAQ7pH,IAAGtB,GAAEqrH,WAAW/pH,GAAE,WAAW+/C,IAAGkjC,EAAEj2D,IAAGA,GAAE+yB,KAAI,GAAGkjC,EAAE,OAAO,EAAExpF,GAAGiF,GAAEqrH,WAAWzpF,GAAEtT,IAAGtuB,KAAI,CAACnM,IAAI,wBAAwBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE8a,GAAEu6G,gBAAgB7rC,GAAG,GAAG,EAAExpF,EAAE,MAAM,IAAIgwH,WAAW,kBAAkB,IAAI/qH,GAAE,EAAEjF,EAAE,GAAG6mC,GAAE7mC,EAAE,GAAGolD,GAAEltD,EAAEtC,OAAO0wD,GAAE,QAAOgvE,EAAKlF,QAAQhrE,GAAE,KAAK,GAAGve,IAAvB,EAAyBtT,GAAE6xB,GAAEngD,IAAGqhD,GAAE,EAAE,GAAG//C,GAAE,IAAIuU,GAAEyY,GAAEr7B,EAAE43H,MAAM,GAAG,OAAM,CAAC,QAAQ1mE,GAAE,EAAEA,GAAEnkD,GAAEmkD,KAAI7iD,GAAE+pH,WAAWlnE,GAAE,GAAG,KAAKA,GAAE71B,GAAE61B,KAAI7iD,GAAE+pH,WAAWlnE,GAAElxD,EAAEk4H,QAAQhnE,GAAEnkD,SAAQ,CAAC,QAAQyqH,GAAE,EAAE30G,GAAE,EAAEA,GAAE9V,GAAE8V,KAAIxU,GAAE+pH,WAAWv1G,GAAE,GAAG,QAAQra,GAAEstD,EAAE,EAAEA,EAAE5I,GAAE4I,IAAIttD,GAAExI,EAAEk4H,QAAQpiE,GAAGznD,GAAE+pH,WAAWtiE,EAAE/oD,GAAE,WAAWvE,IAAGmmC,GAAE6oF,IAAGA,GAAEhvH,KAAI,GAAGmmC,GAAE,GAAGyf,GAAE//C,GAAE+pH,WAAWlrE,GAAEngD,GAAEyqH,YAAW,OAAM,MAAM,IAAIpiF,MAAM,sBAAsB,OAAO/mC,GAAEirH,WAAW,CAAC14H,IAAI,yBAAyBE,MAAM,SAASd,EAAEsxF,GAAG,IAAIxpF,EAAE9H,EAAEtC,OAAOqP,GAAE/M,EAAE43H,KAAKjpF,GAAE/rB,GAAEu6G,gBAAgB7rC,GAAG,GAAG,EAAE3iD,GAAE,OAAO/rB,GAAEy6G,sBAAsBtwH,IAAG,IAAImgD,GAAE,EAAEve,GAAE,GAAGyf,GAAEzf,GAAE,GAAGtT,GAAEvzB,EAAEolD,GAAE,GAAG,GAAG7xB,GAAE,OAAOzY,GAAEy6G,sBAAsBtwH,IAAG,IAAIsB,IAAE,EAAG,GAAGtB,GAAG,GAAG,IAAI/M,EAAEk4H,QAAQhrE,KAAI,GAAGkB,IAAG,GAAG//C,IAAE,OAAQ,QAAQ6iD,GAAE,EAAEA,GAAEhE,GAAEgE,KAAI,GAAG,MAAMgnE,QAAQhnE,IAAG,CAAC7iD,IAAE,EAAG,MAAUA,IAAG,QAA4B,IAAfrO,EAAEk4H,QAAQpwH,EAAE,IAAUuzB,KAAI,IAAIxY,GAAE,IAAID,GAAEyY,GAAEtuB,IAAG,GAAG,OAAM,CAAC8V,GAAEu1G,WAAW/8F,GAAE,EAAE,GAAG,QAAQ7yB,GAAE0kD,GAAE1kD,GAAEV,EAAEU,KAAIqa,GAAEu1G,WAAW5vH,GAAE0kD,GAAEltD,EAAEk4H,QAAQ1vH,SAAQ,CAAC,QAAQstD,EAAE9mD,GAAEhP,EAAEk4H,QAAQhrE,MAAKkB,GAAEx+C,GAAE9H,EAAEolD,GAAE,EAAE/uC,GAAE,EAAEA,GAAEvO,GAAEuO,KAAI23C,EAAE91D,EAAEk4H,QAAQ/5G,GAAE+uC,GAAE,GAAGrqC,GAAEu1G,WAAWj6G,GAAE,WAAW23C,GAAG,GAAG1H,GAAEp/C,IAAGA,GAAE8mD,IAAI1H,GAAEvrC,GAAEu1G,WAAWxoH,GAAEZ,IAAG,OAAOX,KAAIwU,GAAED,GAAE22G,iBAAiB12G,IAAE,EAAGA,KAAIA,GAAEy2G,WAAW,CAAC14H,IAAI,wBAAwBE,MAAM,SAASd,GAAG,OAAOA,EAAE4iB,GAAE+1G,WAAW,GAAE,GAAI/1G,GAAE61G,WAAW,CAAC73H,IAAI,kBAAkBE,MAAM,SAASd,GAAG,GAAG,EAAEA,EAAEtC,OAAO,OAAM,EAAG,IAAI4zF,EAAEtxF,EAAEu4H,gBAAgB,GAAG,OAAOjnC,EAAE1uE,GAAE62G,kBAAiB,EAAGnoC,IAAI,CAAC1wF,IAAI,gBAAgBE,MAAM,SAASd,GAAG,IAAIsxF,EAAE,EAAE4E,UAAUx4F,aAAQ,cAAmB,GAAGw4F,UAAU,GAAG,UAAsC,GAAzB,aAAal2F,IAAeA,EAAEyL,cAAcmX,GAAE,OAAO5iB,EAAE,GAAG,oBAAoBi3H,QAAQ,aAAaA,OAAOqG,aAAa,CAAC,IAAIx1H,EAAE9H,EAAEi3H,OAAOqG,aAAa,GAAGx1H,EAAE,CAAC,IAAIiF,GAAEjF,EAAEwpF,GAAG,GAAG,aAAavkF,IAAG,OAAOA,GAAE,MAAM,IAAIioH,UAAU,6CAA6C,IAAIrmF,GAAE3uC,EAAE+oG,QAAQ,GAAGp6D,GAAE,CAAC,IAAIue,GAAEve,GAAEnxC,KAAKwC,GAAG,GAAG,aAAaktD,IAAG,OAAOA,GAAE,IAAIkB,GAAEpuD,EAAEzC,SAAS,GAAG6wD,GAAE,CAAC,IAAI/yB,GAAE+yB,GAAE5wD,KAAKwC,GAAG,GAAG,aAAaq7B,IAAG,OAAOA,GAAE,MAAM,IAAI25F,UAAU,8CAA8C,CAACp0H,IAAI,cAAcE,MAAM,SAASd,GAAG,OAAO4iB,GAAEm4G,WAAW/6H,GAAGA,GAAGA,IAAI,CAACY,IAAI,aAAaE,MAAM,SAASd,GAAG,MAAM,aAAaA,IAAI,UAAUA,EAAEyL,cAAcmX,KAAI,CAAChiB,IAAI,oBAAoBE,MAAM,SAASd,EAAEsxF,GAAG,QAAQxpF,EAAE,GAAG9H,EAAE,IAAI,GAAG+M,GAAE,IAAI6V,GAAE9a,EAAEwpF,EAAEsmC,MAAMjpF,GAAE7mC,EAAE,EAAEolD,GAAE,EAAEA,GAAEve,GAAEue,KAAIngD,GAAEqrH,WAAWlrE,GAAEokC,EAAE4mC,QAAQhrE,KAAI,IAAIkB,GAAEkjC,EAAE4mC,QAAQvpF,IAAG,GAAGyuF,EAAK,IAAL,EAAQ,CAAC,IAAI/hG,GAAE,GAAGr7B,EAAE,GAAGouD,GAAEA,IAAG/yB,KAAIA,GAAE,OAAOtuB,GAAEqrH,WAAWzpF,GAAEyf,IAAGrhD,GAAEusH,WAAW,CAAC14H,IAAI,iCAAiCE,MAAM,SAASd,EAAEsxF,EAAExpF,GAAG,QAAmB6mC,GAAX5hC,GAAE0B,KAAKstF,IAAM7uC,GAAE,GAAGltD,EAAE,IAAI,GAAGouD,GAAE,IAAIxrC,GAAEsqC,GAAEplD,GAAGuzB,GAAE,EAAEhtB,GAAE6+C,GAAE,EAAE5lB,GAAE,EAAEkwF,GAAEzqH,GAAEsB,GAAEijF,EAAE5zF,QAAQ29B,GAAEm8F,GAAEn8F,KAAuBiM,GAAE,GAArBqH,GAAE,EAAE2iD,EAAE4mC,QAAQ78F,IAAGiM,MAAU,GAAG8mB,GAAEgqE,WAAW/8F,GAAE,WAAWsT,IAAG,KAAKtT,GAAEhtB,GAAEgtB,KAAI+yB,GAAEgqE,WAAW/8F,GAAE,EAAE,YAAYiM,IAAG,IAAIzkB,GAAEra,GAAE6F,GAAEijF,EAAE5zF,OAAO4zF,EAAE4mC,QAAQ7pH,IAAG,EAAEynD,EAAE91D,EAAE,GAAG,GAAG,MAAM6iB,GAAE,EAAEra,GAAE8+B,GAAEzkB,IAAG,eAAe,CAAC,IAAI7T,GAAE,GAAG8mD,EAAiBlmD,GAAE,GAAG,GAAGZ,GAAE6T,GAAEjT,IAA3BpH,GAAEA,IAAGwG,KAAIA,IAAsBs4B,GAAEzkB,IAAGjT,GAAE,EAAE,OAAOw+C,GAAEgqE,WAAW/pH,GAAEwU,IAAGurC,GAAEkrE,WAAW,CAAC14H,IAAI,aAAaE,MAAM,SAASd,EAAEsxF,GAAG,QAAQ7qF,EAAE,EAAE,EAAE6qF,GAAG,EAAEA,IAAI7qF,GAAGzG,GAAGsxF,KAAK,EAAEtxF,GAAGA,EAAE,OAAOyG,IAAI,CAAC7F,IAAI,kBAAkBE,MAAM,SAASd,GAAG,OAAO,WAAWA,KAAKA,MAAM4iB,GAAh84B,CAAm84B40G,EAAEh1H,QAAQ,OAAOumB,EAAE8uG,aAAa,SAAS9uG,EAAE0wG,iBAAiB1wG,EAAE8uG,cAAc,EAAE9uG,EAAE2yG,kBAAkB,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK3yG,EAAE6yG,yBAAyB,EAAE7yG,EAAE4yG,8BAA8B,GAAG5yG,EAAE6yG,yBAAyB7yG,EAAEkzG,mBAAmB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKlzG,EAAEw0G,uBAAuB,IAAIC,YAAY,GAAGz0G,EAAEowG,uBAAuB,IAAIsE,aAAa10G,EAAEw0G,wBAAwBx0G,EAAEmwG,qBAAqB,IAAIwE,WAAW30G,EAAEw0G,wBAAwBx0G,EAAEkvG,QAAQ3mC,EAAE,SAAStxF,IAAG,OAAOsxF,EAAEtxF,IAAG,GAAG,SAASA,IAAG,IAAIsxF,GAAE7iF,KAAKkvH,IAAIl3H,GAAEgI,KAAKuvB,IAAI,OAAO,OAAM,GAAG,EAAE,IAAI,EAAEv3B,GAAEzG,KAAI,GAAGsxF,KAAIvoE,EAAEovG,OAAOn4H,IAAG,SAASA,GAAEsxF,IAAG,OAAO,EAAEtxF,GAAEsxF,IAAGvoE,EAAx9iCuoE,EAAw9iCvoE,+DCCpijC,gBAA8B60G,IACjCnyH,YAAYoyH,IACR5jH,QACAtO,KAAKkyH,OAASA,GAEd/8H,YACA,OAAO6K,KAAKmyH,WAEhBC,WAAWC,IACP,MAAMC,EAAehkH,MAAM8jH,WAAWC,IACtC,OAACC,EAAaC,QAAUF,GAAW51H,KAAKuD,KAAKkyH,QACtCI,EAEXH,WACI,MAAQK,YAAUC,cAAaP,UAAWlyH,KAC1C,GAAIwyH,GACA,MAAMC,EAEV,YAAKC,iBACER,EAEXz1H,KAAKtH,IACDmZ,MAAM7R,KAAMuD,KAAKkyH,OAAS/8H,sIChB3B,IAAMw9H,EAAb,MAAO,QACH7yH,YAAYukF,IACJA,KACArkF,KAAKoyH,WAAa/tC,IAG1BuuC,KAAKC,IACD,MAAMC,GAAa,IAAIH,EACvBG,UAAW/tF,OAAS/kC,KACpB8yH,GAAWD,SAAWA,GACfC,GAEXzuC,UAAU0uC,GAAgB/hG,GAAOgiG,GAC7B,MAAMX,GAqEd,WAAsBl9H,GAClB,OAAQA,GAASA,aAAiB89H,MAJtC,WAAoB99H,GAChB,OAAOA,IAAS+2F,OAAW/2F,EAAMsH,QAASyvF,OAAW/2F,EAAM67B,SAAUk7D,OAAW/2F,EAAM69H,UAGpCE,CAAW/9H,KAAUg+H,QAAeh+H,GAtE/Di+H,CAAaL,IAAkBA,GAAiB,IAAIM,KAAeN,GAAgB/hG,GAAOgiG,GAC7GM,cAAa,KACT,MAAQT,YAAU9tF,UAAW/kC,KAC7BqyH,GAAWrwH,IAAI6wH,GAEPA,GAAShhI,KAAKwgI,GAAYttF,GAC5BA,EAEM/kC,KAAKoyH,WAAWC,IAEhBryH,KAAKuzH,cAAclB,OAE5BA,GAEXkB,cAAcC,IACV,IACI,OAAOxzH,KAAKoyH,WAAWoB,GAGZziG,CAHYyiG,MAEpBziG,IACHyiG,GAAKxiG,MAAMD,KAGnBn+B,QAAQ6J,GAAMg3H,IACVA,OACO,IADPA,GAAcC,EAAeD,KACN,CAAC52G,EAASsxC,MAC7B,MAAMkkE,GAAa,IAAIgB,KAAe,CAClC52H,KAAOtH,IACH,IACIsH,GAAKtH,EAIM29D,CAJN39D,MAEF47B,GACHo9B,GAAOp9B,GACPshG,GAAWv/D,gBAGnB9hC,MAAOm9B,GACP6kE,SAAUn2G,IAEd7c,KAAKqkF,UAAUguC,MAGvBD,WAAWC,IACP,IAAIv1G,GACJ,OAA8B,QAAtBA,GAAK9c,KAAK+kC,cAA2B,IAAPjoB,QAAgB,EAASA,GAAGunE,UAAUguC,KAE/EsB,OACG,OAAO3zH,KAEXogC,QAAQwzF,IACJ,OCjED,WAAuBxP,GAC1B,OAAmB,IAAfA,EAAIryH,OACGuhG,KAEQ,IAAf8wB,EAAIryH,OACGqyH,EAAI,GAER,SAAexnH,IAClB,OAAOwnH,EAAIxlD,OAAO,CAAC4rC,GAAMp6F,IAAOA,EAAGo6F,IAAO5tG,KDyDnCi3H,CAAcD,GAAdC,CAA0B7zH,MAErCkjE,UAAUuwD,IACNA,OACO,IADPA,GAAcC,EAAeD,KACN,CAAC52G,GAASsxC,KAC7B,IAAIh5D,GACJ6K,KAAKqkF,UAAWhtC,IAAOliD,GAAQkiD,GAAKtmB,IAAQo9B,EAAOp9B,IAAM,IAAMlU,GAAQ1nB,QAInFw9H,SAAW5lH,OAAUs3E,IACV,IAAIsuC,EAAWtuC,IAzEbsuC,GAAb,GA2EA,WAAwBc,GACpB,IAAI32G,GACJ,OAAgG,QAAxFA,GAAqB,MAAhB22G,EAAiDA,EAAcpmG,mBAAmC,IAAPvQ,GAAgBA,GAAKF,QAMvCznB,yEExFnF,gBAA4B88H,IAC/BnyH,YAAYg0H,EAAcC,IAAUC,EAAcD,IAAUE,EAAqBC,KAC7E5lH,QACAtO,KAAK8zH,YAAcA,EACnB9zH,KAAKg0H,YAAcA,EACnBh0H,KAAKi0H,mBAAqBA,EAC1Bj0H,KAAKm0H,QAAU,GACfn0H,KAAKo0H,qBAAsB,EAC3Bp0H,KAAKo0H,oBAAsBJ,IAAgBD,IAC3C/zH,KAAK8zH,YAAchxH,KAAKC,IAAI,EAAG+wH,GAC/B9zH,KAAKg0H,YAAclxH,KAAKC,IAAI,EAAGixH,GAEnCv3H,KAAKtH,GACD,MAAQk/H,YAAWF,UAASC,sBAAqBH,qBAAoBD,eAAgBh0H,KAChFq0H,IACDF,EAAQzgI,KAAKyB,IACZi/H,GAAuBD,EAAQzgI,KAAKugI,EAAmBn8C,MAAQk8C,IAEpEh0H,KAAKs0H,cACLhmH,MAAM7R,KAAKtH,GAEfi9H,WAAWC,GACPryH,KAAK0yH,iBACL1yH,KAAKs0H,cACL,MAAMhC,EAAetyH,KAAKu0H,gBAAgBlC,IAClC+B,sBAAqBD,WAAYn0H,KACnCgmG,EAAOmuB,EAAQ/nH,QACrB,QAAStR,EAAI,EAAGA,EAAIkrG,EAAKj0G,SAAWsgI,EAAWE,OAAQz3H,GAAKs5H,EAAsB,EAAI,EAClF/B,EAAW51H,KAAKupG,EAAKlrG,IAEzB,YAAK05H,wBAAwBnC,GACtBC,EAEXgC,cACI,MAAQR,cAAaG,qBAAoBE,UAASC,uBAAwBp0H,KACpEy0H,GAAsBL,EAAsB,EAAI,GAAKN,EAE3D,GADAA,EAAcC,KAAYU,EAAqBN,EAAQpiI,QAAUoiI,EAAQ75H,OAAO,EAAG65H,EAAQpiI,OAAS0iI,IAC/FL,EAAqB,CACtB,MAAMt8C,EAAMm8C,EAAmBn8C,MAC/B,IAAI69B,EAAO,EACX,QAAS76G,EAAI,EAAGA,EAAIq5H,EAAQpiI,QAAUoiI,EAAQr5H,IAAMg9E,EAAKh9E,GAAK,EAC1D66G,EAAO76G,EAEX66G,GAAQwe,EAAQ75H,OAAO,EAAGq7G,EAAO,8EC5CtC,MAAM+e,IAA0BC,aAAkBnL,GAAW,WAChEA,EAAOxpH,MACPA,KAAKe,KAAO,0BACZf,KAAK2uD,QAAU,gDCCZ,IAAMsjE,EAAb,MAAO,gBAAsBU,IACzB7yH,cACIwO,QACAtO,KAAKuyH,QAAS,EACdvyH,KAAK40H,iBAAmB,KACxB50H,KAAK60H,UAAY,GACjB70H,KAAKq0H,WAAY,EACjBr0H,KAAKwyH,UAAW,EAChBxyH,KAAKyyH,YAAc,KAEvBG,KAAKC,GACD,MAAMiC,EAAU,IAAIC,EAAiB/0H,KAAMA,MAC3C80H,SAAQjC,SAAWA,EACZiC,EAEXpC,iBACI,GAAI1yH,KAAKuyH,OACL,MAAM,IAAImC,GAGlBj4H,KAAKtH,IACDm+H,OAAa,KAET,GADAtzH,KAAK0yH,kBACA1yH,KAAKq0H,UAAW,CACZr0H,KAAK40H,mBACN50H,KAAK40H,iBAAmB/9H,MAAMC,KAAKkJ,KAAK60H,YAE5C,UAAWG,KAAYh1H,KAAK40H,iBACxBI,EAASv4H,KAAKtH,MAK9B67B,MAAMD,IACFuiG,OAAa,KAET,GADAtzH,KAAK0yH,kBACA1yH,KAAKq0H,UAAW,CACjBr0H,KAAKwyH,SAAWxyH,KAAKq0H,WAAY,EACjCr0H,KAAKyyH,YAAc1hG,EACnB,MAAQ8jG,aAAc70H,KACtB,KAAO60H,EAAU9iI,QACb8iI,EAAUjlE,QAAQ5+B,MAAMD,MAKxCiiG,YACIM,OAAa,KAET,GADAtzH,KAAK0yH,kBACA1yH,KAAKq0H,UAAW,CACjBr0H,KAAKq0H,WAAY,EACjB,MAAQQ,aAAc70H,KACtB,KAAO60H,EAAU9iI,QACb8iI,EAAUjlE,QAAQojE,cAKlClgE,cACI9yD,KAAKq0H,UAAYr0H,KAAKuyH,QAAS,EAC/BvyH,KAAK60H,UAAY70H,KAAK40H,iBAAmB,KAEzCK,eACA,IAAIn4G,EACJ,OAAkC,QAAzBA,EAAK9c,KAAK60H,iBAA8B,IAAP/3G,OAAgB,EAASA,EAAG/qB,QAAU,EAEpFwhI,cAAclB,GACV,YAAKK,iBACEpkH,MAAMilH,cAAclB,GAE/BD,WAAWC,GACP,YAAKK,iBACL1yH,KAAKw0H,wBAAwBnC,GACtBryH,KAAKu0H,gBAAgBlC,GAEhCkC,gBAAgBlC,GACZ,MAAQG,WAAU6B,YAAWQ,aAAc70H,KAC3C,OAAIwyH,GAAY6B,EACLa,MAEXl1H,KAAK40H,iBAAmB,KACxBC,EAAUnhI,KAAK2+H,GACR,IAAI8C,KAAa,KACpBn1H,KAAK40H,iBAAmB,MACxBQ,OAAUP,EAAWxC,MAG7BmC,wBAAwBnC,GACpB,MAAQG,WAAUC,cAAa4B,aAAcr0H,KACzCwyH,EACAH,EAAWrhG,MAAMyhG,GAEZ4B,GACLhC,EAAWW,WAGnBqC,eACI,MAAMvC,EAAa,IAAIH,IACvBG,SAAW/tF,OAAS/kC,KACb8yH,GAGfb,SAAQllH,OAAS,CAACtS,EAAasqC,IACpB,IAAIgwF,EAAiBt6H,EAAasqC,GAvGhCktF,GAAb,GAyGO,gBAA+BA,EAClCnyH,YAAYrF,EAAasqC,GACrBz2B,QACAtO,KAAKvF,YAAcA,EACnBuF,KAAK+kC,OAASA,EAElBtoC,KAAKtH,GACD,IAAI2nB,EAAI+L,EACwE,QAA/EA,EAAiC,QAA3B/L,EAAK9c,KAAKvF,mBAAgC,IAAPqiB,OAAgB,EAASA,EAAGrgB,YAAyB,IAAPosB,GAAyBA,EAAGh3B,KAAKirB,EAAI3nB,GAEjI67B,MAAMD,GACF,IAAIjU,EAAI+L,EACyE,QAAhFA,EAAiC,QAA3B/L,EAAK9c,KAAKvF,mBAAgC,IAAPqiB,OAAgB,EAASA,EAAGkU,aAA0B,IAAPnI,GAAyBA,EAAGh3B,KAAKirB,EAAIiU,GAElIiiG,WACI,IAAIl2G,EAAI+L,EAC4E,QAAnFA,EAAiC,QAA3B/L,EAAK9c,KAAKvF,mBAAgC,IAAPqiB,OAAgB,EAASA,EAAGk2G,gBAA6B,IAAPnqG,GAAyBA,EAAGh3B,KAAKirB,GAEjIs1G,WAAWC,GACP,IAAIv1G,EAAI+L,EACR,OAAmG,QAA3FA,EAA4B,QAAtB/L,EAAK9c,KAAK+kC,cAA2B,IAAPjoB,OAAgB,EAASA,EAAGunE,UAAUguC,UAAgC,IAAPxpG,EAAgBA,EAAKqsG,0HClIjI,MAAMI,EAA+BC,EAAmB,SAAK3gI,OAAWA,GAOxE,WAA4B4gI,EAAMrgI,EAAO67B,IAC5C,MAAO,CACHwkG,OACArgI,QACA67B,kCCHD,gBAAyBmkG,KAC5Br1H,YAAYrF,GACR6T,QACAtO,KAAKq0H,WAAY,EACjBrxF,GACIhjC,KAAKvF,YAAcA,GACf04H,QAAe14H,IACfA,EAAYuH,IAAIhC,OAIpBA,KAAKvF,YAAcg7H,iBAGbh5H,EAAMu0B,GAAOgiG,IACvB,OAAO,IAAIK,GAAe52H,EAAMu0B,GAAOgiG,IAE3Cv2H,KAAKtH,GACG6K,KAAKq0H,UACLqB,GDvBL,WAA0BvgI,GAC7B,OAAOogI,EAAmB,IAAKpgI,OAAOP,GCsBJ+gI,CAAiBxgI,GAAQ6K,MAGnDA,KAAK41H,MAAMzgI,GAGnB67B,MAAMD,GACE/wB,KAAKq0H,UACLqB,GDlCL,WAA2B1kG,GAC9B,OAAOukG,EAAmB,SAAK3gI,EAAWo8B,GCiCR6kG,CAAkB9kG,GAAM/wB,OAGlDA,KAAKq0H,WAAY,EACjBr0H,KAAKg0G,OAAOjjF,IAGpBiiG,WACQhzH,KAAKq0H,UACLqB,GAA0BJ,EAAuBt1H,OAGjDA,KAAKq0H,WAAY,EACjBr0H,KAAK81H,aAGbhjE,cACS9yD,KAAKuyH,SACNvyH,KAAKq0H,WAAY,EACjB/lH,MAAMwkD,cACN9yD,KAAKvF,YAAc,MAG3Bm7H,MAAMzgI,GACF6K,KAAKvF,YAAYgC,KAAKtH,GAE1B6+G,OAAOjjF,GACH,IACI/wB,KAAKvF,YAAYu2B,MAAMD,EAGlB+hC,CAHkB/hC,QAGvB/wB,KAAK8yD,eAGbgjE,YACI,IACI91H,KAAKvF,YAAYu4H,UAGZlgE,CAHYkgE,QAGjBhzH,KAAK8yD,gBAIjB,MAAMijE,EAAQ5hC,SAAS1J,UAAU7+B,KACjC,WAAcx7C,EAAI4lH,GACd,OAAOD,EAAMlkI,KAAKue,EAAI4lH,GAE1B,SACIl2H,YAAYm2H,GACRj2H,KAAKi2H,gBAAkBA,EAE3Bx5H,KAAKtH,GACD,MAAQ8gI,oBAAoBj2H,KAC5B,GAAIi2H,GAAgBx5H,KAChB,IACIw5H,GAAgBx5H,KAAKtH,EAGA67B,CAHA77B,MAElB67B,IACHklG,GAAqBllG,KAIjCA,MAAMD,GACF,MAAQklG,oBAAoBj2H,KAC5B,GAAIi2H,GAAgBjlG,MAChB,IACIilG,GAAgBjlG,MAAMD,EAGDC,CAHCD,MAEnBC,IACHklG,GAAqBllG,SAIzBklG,GAAqBnlG,GAG7BiiG,WACI,MAAQiD,mBAAoBj2H,KAC5B,GAAIi2H,EAAgBjD,SAChB,IACIiD,EAAgBjD,UAGKhiG,CAHLgiG,MAEbhiG,IACHklG,GAAqBllG,MAK9B,iBAA6BiiG,EAChCnzH,YAAYizH,EAAgB/hG,GAAOgiG,IAE/B,IAAIiD,GACJ,GAFA3nH,SAEI49E,OAAW6mC,KAAoBA,EAC/BkD,GAAkB,CACdx5H,KAAyB,MAAnBs2H,EAAuDA,OAAiBn+H,EAC9Eo8B,MAAiB,MAAVA,GAAqCA,QAAQp8B,EACpDo+H,SAAuB,MAAbA,GAA2CA,QAAWp+H,OAGnE,CACD,IAAIqI,GACA+C,MAAQqtB,8BACRpwB,GAAUhK,OAAO8Z,OAAOgmH,GACxB91H,GAAQ61D,YAAc,IAAM9yD,KAAK8yD,cACjCmjE,GAAkB,CACdx5H,KAAMs2H,EAAet2H,MAAQmvD,EAAKmnE,EAAet2H,KAAMQ,IACvD+zB,MAAO+hG,EAAe/hG,OAAS46B,EAAKmnE,EAAe/hG,MAAO/zB,IAC1D+1H,SAAUD,EAAeC,UAAYpnE,EAAKmnE,EAAeC,SAAU/1H,MAIvEg5H,GAAkBlD,EAG1B/yH,KAAKvF,YAAc,IAAI07H,GAAiBF,KAGhD,YAA8BjlG,GACtB3D,2CACA+oG,OAAaplG,IAGbqlG,QAAqBrlG,GAM7B,YAAmCslG,EAAcjE,GAC7C,MAAQkE,0BAA0BlpG,IAClCkpG,IAAyBC,eAA2B,IAAMD,GAAsBD,EAAcjE,IAE3F,MAAMoD,GAAiB,CAC1BlD,QAAQ,EACR91H,KAAMq3F,IACN9iE,MAVJ,WAA6BD,GACzB,MAAMA,GAUNiiG,SAAUl/B,uFC1KP,MAAM2iC,GAAsB9B,aAAkBnL,GAAW,SAAiCh3H,GAC7Fg3H,EAAOxpH,MACPA,KAAK2uD,QAAUn8D,EACR,GAAEA,EAAOT,kDAClBS,EAAOwC,IAAI,CAAC+7B,EAAKj2B,IAAO,GAAEA,EAAI,MAAMi2B,EAAIn/B,cAAc4vD,KAAK,UACnD,GACNxhD,KAAKe,KAAO,sBACZf,KAAKxN,OAASA,mBCLX,QACHsN,YAAY42H,GACR12H,KAAK02H,gBAAkBA,EACvB12H,KAAKuyH,QAAS,EACdvyH,KAAK22H,WAAa,KAClB32H,KAAK42H,YAAc,KAEvB9jE,cACI,IAAItgE,EACJ,IAAKwN,KAAKuyH,OAAQ,CACdvyH,KAAKuyH,QAAS,EACd,MAAQoE,cAAe32H,KACvB,GAAI22H,EAEA,GADA32H,KAAK22H,WAAa,KACd9/H,MAAM4E,QAAQk7H,GACd,UAAWvgI,KAAUugI,EACjBvgI,EAAOqtB,OAAOzjB,WAIlB22H,EAAWlzG,OAAOzjB,MAG1B,MAAQ02H,gBAAiBG,GAAqB72H,KAC9C,IAAIksF,OAAW2qC,GACX,IACIA,GAGwDxiI,CAHxDwiI,MAEGxiI,GACH7B,EAAS6B,aAAaoiI,EAAsBpiI,EAAE7B,OAAS,CAAC6B,GAGhE,MAAQuiI,eAAgB52H,KACxB,GAAI42H,EAAa,CACb52H,KAAK42H,YAAc,KACnB,UAAWE,KAAaF,EACpB,IACIG,EAAcD,EAQE/lG,CARF+lG,MAEX/lG,IACHv+B,EAAoB,MAAXA,EAAuCA,EAAS,GACzDsrD,cAAmB24E,EACfjkI,EAAS,IAAIA,KAAWu+B,GAAIv+B,QAG5BA,EAAOkB,KAAKq9B,KAK5B,GAAIv+B,EACA,MAAM,IAAIikI,EAAoBjkI,IAI1CwP,IAAIg1H,GACA,IAAIl6G,EACJ,GAAIk6G,GAAYA,IAAah3H,KACzB,GAAIA,KAAKuyH,OACLwE,EAAcC,OAEb,CACD,GAAIA,aAAoB7B,EAAc,CAClC,GAAI6B,EAASzE,QAAUyE,EAASC,WAAWj3H,MACvC,OAEJg3H,EAASE,WAAWl3H,OAEvBA,KAAK42H,YAA0C,QAA3B95G,EAAK9c,KAAK42H,mBAAgC,IAAP95G,EAAgBA,EAAK,IAAIppB,KAAKsjI,IAIlGC,WAAW7gI,GACP,MAAQugI,cAAe32H,KACvB,OAAO22H,IAAevgI,GAAWS,MAAM4E,QAAQk7H,IAAeA,EAAW1sF,SAAS7zC,GAEtF8gI,WAAW9gI,GACP,MAAQugI,cAAe32H,KACvBA,KAAK22H,WAAa9/H,MAAM4E,QAAQk7H,IAAeA,EAAWjjI,KAAK0C,GAASugI,GAAcA,EAAa,CAACA,EAAYvgI,GAAUA,EAE9H+gI,cAAc/gI,GACV,MAAQugI,cAAe32H,KACnB22H,IAAevgI,EACf4J,KAAK22H,WAAa,KAEb9/H,MAAM4E,QAAQk7H,KACnBvB,QAAUuB,EAAYvgI,GAG9BqtB,OAAOuzG,GACH,MAAQJ,eAAgB52H,KACxB42H,IAAexB,QAAUwB,EAAaI,GAClCA,aAAoB7B,GACpB6B,EAASG,cAAcn3H,OAInCm1H,EAAaiC,MAAS,MAClB,MAAMC,EAAQ,IAAIlC,EAClBkC,SAAM9E,QAAS,EACR8E,GAHW,GAKf,MAAMnC,EAAqBC,EAAaiC,MACxC,WAAwBjiI,GAC3B,OAAQA,aAAiBggI,GACpBhgI,GAAS,WAAYA,IAAS+2F,OAAW/2F,EAAMsuB,UAAWyoE,OAAW/2F,EAAM6M,OAAQkqF,OAAW/2F,EAAM29D,aAE7G,WAAuBgkE,IACf5qC,OAAW4qC,GACXA,IAGAA,EAAUhkE,gECnHX,MAAMzlC,EAAS,CAClBiqG,iBAAkB,KAClBf,sBAAuB,KACvB35G,aAAShoB,EACT2iI,uCAAuC,EACvCC,0BAA0B,kECJvB,WAAuBzyF,EAAQ1X,IAClC,MAAMoqG,EAA8B,iBAAXpqG,GACzB,OAAO,IAAIzQ,QAAQ,CAACC,EAASsxC,KACzB,IACI+jE,EADAwF,GAAY,EAEhB3yF,EAAOs/C,UAAU,CACb5nF,KAAOtH,IACH+8H,EAAS/8H,EACTuiI,GAAY,GAEhB1mG,MAAOm9B,EACP6kE,SAAU,KACF0E,EACA76G,EAAQq1G,GAEP9wE,EACDvkC,EAAQwQ,GAAOn4B,cAGfi5D,EAAO,IAAIwpE,0JCXxB,cAA0BxjH,GAC7B,MAAMyjH,GAAYC,QAAa1jH,GACzB2jH,IAAiBC,QAAkB5jH,IACjCA,KAAM6jH,GAAa9kI,UAAS+kI,OAAqB9jH,GACzD,GAA2B,IAAvB6jH,GAAYjmI,OACZ,OAAO+E,OAAK,GAAI8gI,GAEpB,MAAMrgI,EAAS,IAAIo7H,IAOhB,WAA2BqF,EAAaJ,EAAWM,GAAiB5kC,MACvE,OAAQ++B,KACJ8F,EAAcP,EAAW,KACrB,MAAQ7lI,WAAWimI,EACb91H,EAAS,IAAIrL,MAAM9E,IACzB,IAAIwrH,GAASxrH,GACTqmI,GAAuBrmI,GAC3B,QAAS+I,EAAI,EAAGA,EAAI/I,GAAQ+I,IACxBq9H,EAAcP,EAAW,KACrB,MAAM7yF,GAASjuC,OAAKkhI,EAAYl9H,GAAI88H,GACpC,IAAIS,IAAgB,EACpBtzF,EAAOs/C,WAAUi0C,OAAyBjG,GAAal9H,KACnD+M,EAAOpH,GAAK3F,GACPkjI,KACDA,IAAgB,EAChBD,MAECA,IACD/F,GAAW51H,KAAKy7H,GAAeh2H,EAAOkK,WAE3C,OACQmxG,IACH8U,GAAWW,eAGpBX,KAERA,KAlCuBkG,CAAkBP,GAAaJ,EAAW1kI,GAE/DgP,KAAWs2H,OAAatlI,GAAMgP,IAE/BoxF,OACR,OAAOwkC,GAAiBvgI,EAAO6oC,MAAKq4F,OAAiBX,KAAmBvgI,EAgC5E,WAAuBqgI,EAAWppE,EAAS8jE,IACnCsF,GACAc,OAAgBpG,GAAcsF,EAAWppE,GAGzCA,wFCvDD,cAAmBr6C,GACtB,OCHG,aACH,OAAOwkH,OAAS,GDETC,IAAY9hI,QAAKqd,GAAM0jH,QAAa1jH,sDEHxC,MAAMijH,EAAQ,YAAIzE,GAAYN,GAAeA,EAAWW,WAKeA,gGCHvE,WAAmB4E,GAAWr/H,GAAQ,GACzC,OAAOsgI,OAAQ,CAAC9zF,GAAQstF,MACpBttF,GAAOs/C,WAAUi0C,QAAyBjG,GAAal9H,IAAUujI,OAAgBrG,GAAYuF,GAAW,IAAMvF,GAAW51H,KAAKtH,GAAQoD,IAAQ,KAAMmgI,OAAgBrG,GAAYuF,GAAW,IAAMvF,GAAWW,WAAYz6H,IAASw4B,IAAQ2nG,OAAgBrG,GAAYuF,GAAW,IAAMvF,GAAWrhG,MAAMD,GAAMx4B,QCJ9S,WAAqBq/H,GAAWr/H,GAAQ,GAC3C,OAAOsgI,OAAQ,CAAC9zF,GAAQstF,MACpBA,GAAWrwH,IAAI41H,GAAUkB,SAAS,IAAM/zF,GAAOs/C,UAAUguC,IAAa95H,yCCDvE,WAA+BqE,GAAOg7H,IACzC,IAAKh7H,GACD,MAAM,IAAI6sC,MAAM,2BAEpB,OAAO,IAAIkpF,IAAYN,MACnBqG,OAAgBrG,GAAYuF,GAAW,KACnC,MAAMr7H,GAAWK,GAAM0uH,OAAOyN,kBAC9BL,OAAgBrG,GAAYuF,GAAW,KACnCr7H,GAASE,OAAOutB,KAAMzyB,IACdA,EAAOmF,KACP21H,GAAWW,WAGXX,GAAW51H,KAAKlF,EAAOpC,UAGhC,GAAG,oFChBX,YAAcyH,GAAOg7H,IACxB,OAAOA,GCUJ,YAAmBh7H,GAAOg7H,IAC7B,GAAa,MAATh7H,GAAe,CACf,IAAIo8H,QAAoBp8H,IACpB,OCbL,WAA4BA,GAAOg7H,IACtC,OAAOqB,QAAUr8H,IAAOwjC,KAAK84F,EAAYtB,IAAYuB,EAAUvB,KDYhDwB,CAAmBx8H,GAAOg7H,IAErC,IAAIyB,QAAYz8H,IACZ,OElBL,WAAuBA,GAAOg7H,IACjC,OAAO,IAAIjF,IAAYN,KACnB,IAAIv3H,GAAI,EACR,OAAO88H,GAAUkB,SAAS,WAClBh+H,KAAM8B,GAAM7K,OACZsgI,GAAWW,YAGXX,GAAW51H,KAAKG,GAAM9B,OACjBu3H,GAAWE,QACZvyH,KAAK84H,gBFQNQ,CAAc18H,GAAOg7H,IAEhC,IAAInrC,QAAU7vF,IACV,OGnBL,WAAyBA,GAAOg7H,IACnC,OAAOqB,QAAUr8H,IAAOwjC,KAAK84F,EAAYtB,IAAYuB,EAAUvB,KHkBhD2B,CAAgB38H,GAAOg7H,IAElC,IAAI4B,QAAgB58H,IAChB,OAAO68H,EAAsB78H,GAAOg7H,IAExC,IAAI8B,OAAW98H,IACX,OIxBL,WAA0BA,GAAOg7H,IACpC,OAAO,IAAIjF,IAAYN,KACnB,IAAI91H,GACJm8H,cAAgBrG,GAAYuF,GAAW,KACnCr7H,GAAWK,GAAM+8H,QACjBjB,OAAgBrG,GAAYuF,GAAW,KACnC,IAAIziI,EACAuH,EACJ,MACOvH,QAAOuH,QAASH,GAASE,OAI5B,CAJ4BA,MAEzBs0B,GAEH,YADAshG,GAAWrhG,MAAMD,EACjB,CAEAr0B,EACA21H,GAAWW,WAGXX,GAAW51H,KAAKtH,IAErB,GAAG,KAEH,KAAM+2F,OAAwB,MAAb3vF,QAA2C,EAASA,GAASwvH,SAAWxvH,GAASwvH,WJC9F6N,CAAiBh9H,GAAOg7H,IAEnC,IAAIiC,OAAqBj9H,IACrB,OK7BL,WAAoCA,GAAOg7H,IAC9C,OAAO6B,GAAsBK,OAAmCl9H,IAAQg7H,IL4BzDmC,CAA2Bn9H,GAAOg7H,IAGjD,MAAMoC,QAAiCp9H,ID/BpBq9H,CAAUr9H,GAAOg7H,KAAaqB,QAAUr8H,uHOG/D,MAAMs9H,EAA0B,CAAC,cAAe,kBAC1CC,EAAqB,CAAC,mBAAoB,uBAC1CC,EAAgB,CAAC,KAAM,OACtB,WAAmBzuH,GAAQ7X,GAAWyN,GAASu2H,GAKlD,IAJI5rC,OAAW3qF,MACXu2H,EAAiBv2H,GACjBA,QAAU3M,GAEVkjI,EACA,OAAOuC,EAAU1uH,GAAQ7X,GAAWyN,IAAS6+B,MAAKq4F,OAAiBX,IAEvE,MAAO91H,GAAKyhB,IA+BhB,WAAuB9X,IACnB,OAAOugF,OAAWvgF,GAAO6a,oBAAqB0lE,OAAWvgF,GAAOs9E,qBAhC1CqxC,CAAc3uH,IAC9BwuH,EAAmBnlI,IAAKulI,GAAgB1hB,GAAYltG,GAAO4uH,GAAYzmI,GAAW+kH,EAASt3G,KAwBrG,WAAiCoK,IAC7B,OAAOugF,OAAWvgF,GAAO6uH,eAAgBtuC,OAAWvgF,GAAO8uH,gBAvBnDC,CAAwB/uH,IAClBuuH,EAAwBllI,IAAI2lI,EAAwBhvH,GAAQ7X,KAwB9E,WAAmC6X,IAC/B,OAAOugF,OAAWvgF,GAAOivH,MAAO1uC,OAAWvgF,GAAOkvH,KAxBpCC,CAA0BnvH,IACtByuH,EAAcplI,IAAI2lI,EAAwBhvH,GAAQ7X,KAClD,GAClB,IAAKkO,KACGq3H,QAAY1tH,IACZ,OAAOovH,OAAUC,GAAcX,EAAUW,EAAWlnI,GAAWyN,IAAxDw5H,EAAkE9B,QAAUttH,KAG3F,IAAK3J,GACD,MAAM,IAAIqnH,UAAU,wBAExB,OAAO,IAAIsJ,IAAYN,IACnB,MAAMxZ,EAAU,IAAI1kG,KAASk+G,EAAW51H,KAAK,EAAI0X,GAAKpiB,OAASoiB,GAAOA,GAAK,IAC3EnS,UAAI62G,GACG,IAAMp1F,GAAOo1F,KAG5B,WAAiCltG,GAAQ7X,IACrC,OAAQymI,IAAgB1hB,GAAYltG,GAAO4uH,IAAYzmI,GAAW+kH,GASF5vB,8KCrC7D,WAAmBrsF,GACtB,GAAIA,aAAiB+1H,KACjB,OAAO/1H,EAEX,GAAa,MAATA,EAAe,CACf,IAAIo8H,OAAoBp8H,GACpB,OAoBL,WAA+BpC,GAClC,OAAO,IAAIm4H,KAAYN,IACnB,MAAM4I,GAAMzgI,EAAIm5H,OAChB,IAAIznC,OAAW+uC,GAAI52C,WACf,OAAO42C,GAAI52C,UAAUguC,GAEzB,MAAM,IAAIhJ,UAAU,oEA1BT6R,CAAsBt+H,GAEjC,IAAIy8H,OAAYz8H,GACZ,OA0BL,YAAuB8xF,GAC1B,OAAO,IAAIikC,KAAYN,IACnB,QAASv3H,GAAI,EAAGA,GAAI4zF,EAAM38F,SAAWsgI,EAAWE,OAAQz3H,KACpDu3H,EAAW51H,KAAKiyF,EAAM5zF,KAE1Bu3H,EAAWW,aA/BAmI,CAAcv+H,GAEzB,IAAI6vF,OAAU7vF,GACV,OA+BL,YAAqB6sB,GACxB,OAAO,IAAIkpG,KAAYN,IACnB5oG,EACKO,KAAM70B,KACFk9H,EAAWE,SACZF,EAAW51H,KAAKtH,IAChBk9H,EAAWW,aAEfjiG,IAAQshG,EAAWrhG,MAAMD,KACxB/G,KAAK,KAAMqsG,OAxCL+E,CAAYx+H,GAEvB,IAAI48H,OAAgB58H,GAChB,OAAOy+H,EAAkBz+H,GAE7B,IAAI88H,OAAW98H,GACX,OAqCL,YAAsB0+H,GACzB,OAAO,IAAI3I,KAAYN,IACnB,UAAWl9H,MAASmmI,EAEhB,GADAjJ,EAAW51H,KAAKtH,IACZk9H,EAAWE,OACX,OAGRF,EAAWW,aA7CAuI,CAAa3+H,GAExB,IAAIi9H,OAAqBj9H,GACrB,OAkDL,YAAgC4+H,GACnC,OAAOH,GAAkBvB,OAAmC0B,IAnD7CC,CAAuB7+H,GAGtC,MAAMo9H,OAAiCp9H,GA0CpC,WAA2B8+H,GAC9B,OAAO,IAAI/I,KAAYN,KAO3B,YAAiBqJ,EAAerJ,GAC5B,IAAIsJ,GAAiBC,GACjBC,GAAK/+G,GACT,OAAOkX,QAAUh0B,UAAM,OAAQ,EAAQ,YACnC,IACI,IAAK27H,IAAkBG,QAAcJ,KAAgBE,SAA0BD,GAAgBl/H,QAA2BC,MAGtH,GADA21H,EAAW51H,KADGm/H,GAAkBzmI,OAE5Bk9H,EAAWE,OACX,MASqBvhG,CATrB,MAIL+qG,IAASF,GAAM,CAAE7qG,MAAO+qG,YAE3B,IACQH,KAAsBA,GAAkBl/H,OAASogB,GAAK6+G,GAAgB5P,gBAAejvG,GAAGjrB,KAAK8pI,IAExE3qG,CAFwE2qG,QAE3F,GAAIE,GAAK,MAAMA,GAAI7qG,OAEjCqhG,EAAWW,cA1BXrhI,CAAQ+pI,EAAerJ,GAAYvhG,MAAOC,IAAQshG,EAAWrhG,MAAMD,OA0BxDiiG,uGCrGZ,cAAkB7+G,GACrB,MAAMyjH,GAAYC,SAAa1jH,GACzB6nH,GAAaC,SAAU9nH,EAAM4/G,KAC7BmI,EAAU/nH,EAChB,OAAOtX,EAAS9K,OAGS,IAAnBmqI,EAAQnqI,QAEFknI,QAAUiD,EAAQ,KAElBvD,OAASqD,EAATrD,EAAqB7hI,OAAKolI,EAAStE,IALvCR,6ECTL,cAAejjH,IAClB,MAAMyjH,GAAYC,QAAa1jH,IAC/B,OAAOrd,OAAKqd,GAAMyjH,6ECFf,WAAoBuE,GAAqBvE,GAC5C,MAAMwE,GAAelwC,OAAWiwC,IAAuBA,GAAsB,IAAMA,GAC7E1nH,EAAQ49G,GAAeA,EAAWrhG,MAAMorG,KAC9C,OAAO,IAAIzJ,IAAWiF,EAAavF,GAAeuF,EAAUkB,SAASrkH,EAAM,EAAG49G,GAAc59G,uFCDzF,WAAe4nH,EAAU,EAAGC,EAAqB1E,EAAY2E,KAChE,IAAIC,GAAmB,EACvB,OAA2B,MAAvBF,KACIG,OAAYH,GACZ1E,EAAY0E,EAGZE,EAAmBF,GAGpB,IAAI3J,IAAYN,IACnB,IAAIqK,ECfL,YAAqBvnI,GACxB,OAAOA,aAAiBk/B,OAASshE,MAAMxgG,GDczBwnI,CAAYN,IAAYA,EAAUzE,EAAU9/C,MAAQukD,EAC1DK,EAAM,IACNA,EAAM,GAEV,IAAIt7H,EAAI,EACR,OAAOw2H,EAAUkB,SAAS,WACjBzG,EAAWE,SACZF,EAAW51H,KAAK2E,KAChB,GAASo7H,EACLx8H,KAAK84H,cAASlkI,EAAW4nI,GAGzBnK,EAAWW,aAGpB0J,qEE7BJ,WAAkCjiI,GAAamiI,EAAQC,EAAY9uE,EAAS+uE,GAC/E,OAAO,IAAIC,EAAmBtiI,GAAamiI,EAAQC,EAAY9uE,EAAS+uE,GAErE,gBAAiC7J,KACpCnzH,YAAYrF,EAAamiI,EAAQC,EAAY9uE,EAAS+uE,EAAYE,GAC9D1uH,MAAM7T,GACNuF,KAAK88H,WAAaA,EAClB98H,KAAKg9H,kBAAoBA,EACzBh9H,KAAK41H,MAAQgH,EACP,SAAUznI,GACR,IACIynI,EAAOznI,EAGW47B,CAHX57B,MAEJ47B,GACHt2B,EAAYu2B,MAAMD,KAGxBziB,MAAMsnH,MACZ51H,KAAKg0G,OAASjmD,EACR,SAAUh9B,GACR,IACIg9B,EAAQh9B,EAMH+hC,CANG/hC,MAELA,GACHt2B,EAAYu2B,MAAMD,WAGlB/wB,KAAK8yD,gBAGXxkD,MAAM0lG,OACZh0G,KAAK81H,UAAY+G,EACX,WACE,IACIA,GAMK/pE,CANL+pE,MAEG9rG,GACHt2B,EAAYu2B,MAAMD,WAGlB/wB,KAAK8yD,gBAGXxkD,MAAMwnH,UAEhBhjE,cACI,IAAIh2C,EACJ,IAAK9c,KAAKg9H,mBAAqBh9H,KAAKg9H,oBAAqB,CACrD,MAAQzK,UAAWvyH,KACnBsO,MAAMwkD,eACLy/D,IAAsC,QAA1Bz1G,EAAK9c,KAAK88H,kBAA+B,IAAPhgH,GAAyBA,EAAGjrB,KAAKmO,8FChDrF,YAAoB/J,GACvB,OAAO4iI,OAAQ,CAAC9zF,EAAQstF,KACpB,IAEI4K,EAFAC,EAAW,KACXC,GAAY,EAEhBD,EAAWn4F,EAAOs/C,WAAUi0C,OAAyBjG,OAAYz9H,OAAWA,EAAYm8B,IACpFksG,GAAgBhE,QAAUhjI,EAAS86B,EAAKqsG,GAAWnnI,EAAXmnI,CAAqBr4F,KAC7Dwc,GACI27E,EAASpqE,cACToqE,EAAW,KACXD,EAAc54C,UAAUguC,IAGxB8K,GAAY,KAGhBA,IACAD,EAASpqE,cACToqE,EAAW,KACXD,EAAc54C,UAAUguC,gFCpB7B,WAAmBgL,GAASvF,GAC/B,OAAO5rC,OAAW4rC,IAAkBiD,OAASsC,GAASvF,EAAgB,IAAKiD,OAASsC,GAAS,6ECD1F,WAAwBnoI,IAC3B,OAAO2jI,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAIiL,GAAW,EACfv4F,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,IACnDmoI,GAAW,EACXjL,EAAW51H,KAAKtH,IACjB,KACMmoI,GACDjL,EAAW51H,KAAKvH,IAEpBm9H,EAAWW,qGCThB,YAA8BuK,EAAYC,EAAclqC,KAC3DiqC,SAA4B,MAAfA,EAA+CA,EAAaE,GAClE5E,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAIqL,EACAr9F,GAAQ,EACZ0E,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,IACnD,MAAMwoI,EAAaH,EAAYroI,IAC3BkrC,IAAUk9F,EAAWG,EAAaC,MAClCt9F,GAAQ,EACRq9F,EAAcC,EACdtL,EAAW51H,KAAKtH,SAKhC,WAAwB8hB,EAAGC,GACvB,OAAOD,IAAMC,2ECjBV,WAAgB4jD,GAAWk7D,GAC9B,OAAO6C,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAIv+G,EAAQ,EACZixB,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,GAAU2lE,GAAUjpE,KAAKmkI,EAAS7gI,EAAO2e,MAAYu+G,EAAW51H,KAAKtH,wHCC7H,WAAe2lE,EAAW5lE,GAC7B,MAAM0oI,EAAkBrzC,UAAUx4F,QAAU,EAC5C,OAAQgzC,GAAWA,EAAO3E,KAAK06B,GAAY1yD,OAAO,CAAC/E,EAAGvI,IAAMggE,EAAUz3D,EAAGvI,EAAGiqC,IAAWuuD,KAAUuqC,OAAK,GAAID,GAAkBE,QAAe5oI,IAAgB6oI,OAAa,IAAM,IAAIpG,+ECN/K,WAAa0F,GAASrH,GACzB,OAAO6C,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAIv+G,EAAQ,EACZixB,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,IACnDk9H,EAAW51H,KAAK4gI,GAAQxrI,KAAKmkI,EAAS7gI,EAAO2e,wECLlD,WAAe3e,GAClB,OAAOH,OAAI,IAAMG,6ECAd,WAAkB6mI,GAAajI,KAClC,OAAOgH,OAASznC,IAAU0oC,sHCEvB,WAAkBqB,EAASvF,EAAgBkE,EAAajI,KAC3D,OAAI7nC,OAAW4rC,GACJiD,EAAS,CAAC9jH,EAAGnc,KAAM9F,OAAI,CAACkiB,EAAG8mH,KAAOlG,EAAe7gH,EAAGC,EAAGpc,EAAGkjI,IAAvChpI,EAA4CikI,QAAUoE,EAAQpmH,EAAGnc,KAAMkhI,IAElE,iBAAnBlE,IACZkE,EAAalE,IAEVe,OAAQ,CAAC9zF,EAAQstF,ICTrB,WAAwBttF,EAAQstF,EAAYgL,EAASrB,EAAYiC,EAAcC,EAAQC,GAAmBC,IAC7G,MAAMC,GAAS,GACf,IAAI9gB,EAAS,EACTzpG,GAAQ,EACRwqH,IAAa,EACjB,MAAMC,EAAgB,KACdD,KAAeD,GAAOtsI,SAAWwrH,GACjC8U,EAAWW,YAGbwL,EAAarpI,IAAWooH,EAASye,EAAayC,GAAWtpI,IAASkpI,GAAO3qI,KAAKyB,IAC9EspI,GAActpI,KAChB+oI,GAAU7L,EAAW51H,KAAKtH,IAC1BooH,IACA,IAAImhB,IAAgB,GACpBzF,QAAUoE,EAAQloI,GAAO2e,OAAUuwE,WAAUi0C,OAAyBjG,EAAasM,KAC9D,MAAjBV,GAA4DA,EAAaU,IACzEtgF,EACImgF,EAAUG,IAGVtM,EAAW51H,KAAKkiI,KAErB,KACCD,IAAgB,QACjB9pI,EAAW,KACV,GAAI8pI,GACA,IAEI,IADAnhB,IACO8gB,GAAOtsI,QAAUwrH,EAASye,GAAY,CACzC,MAAM4C,GAAgBP,GAAOzuE,QACzBuuE,IACAzF,QAAgBrG,EAAY8L,GAAmB,IAAMM,GAAWG,KAGhEH,GAAWG,IAGnBL,GAGiBxtG,CAHjBwtG,MAEGxtG,IACHshG,EAAWrhG,MAAMD,SAKjCgU,SAAOs/C,WAAUi0C,OAAyBjG,EAAYmM,EAAW,KAC7DF,IAAa,EACbC,OAEG,KACqB,MAAxBH,IAA0EA,MD1CvCS,CAAe95F,EAAQstF,EAAYgL,EAASrB,6GEPhF,WAAez6H,EAAU,IAC5B,MAAQu9H,YAAY,KAAM,IAAI7M,KAAW8M,gBAAe,EAAMC,mBAAkB,EAAMC,uBAAsB,GAAS19H,EACrH,OAAQ29H,IACJ,IAAIC,EAAa,KACbC,GAAkB,KAClBtK,GAAU,KACVuK,GAAW,EACXC,GAAe,EACfC,IAAa,EACjB,MAAMC,GAAc,KACI,MAApBJ,IAAkEA,GAAgBtsE,cAClFssE,GAAkB,MAEhB9qH,EAAQ,KACVkrH,KACAL,EAAarK,GAAU,KACvBwK,EAAeC,IAAa,GAE1BE,EAAsB,KACxB,MAAMC,GAAOP,EACb7qH,IACS,MAATorH,IAA4CA,GAAK5sE,eAErD,OAAO+lE,OAAQ,CAAC9zF,GAAQstF,MACpBgN,MACKE,KAAeD,GAChBE,KAEJ,MAAMhvC,GAAQskC,GAAsB,MAAZA,GAAyCA,GAAUgK,IAC3EzM,GAAWrwH,IAAI,KACXq9H,KACiB,IAAbA,KAAmBE,KAAeD,IAClCF,GAAkBO,EAAYF,EAAqBR,MAG3DzuC,GAAKnM,UAAUguC,IACV8M,IACDA,EAAa,IAAI9L,MAAe,CAC5B52H,KAAOtH,IAAUq7F,GAAK/zF,KAAKtH,IAC3B67B,MAAQD,KACJwuG,IAAa,EACbC,KACAJ,GAAkBO,EAAYrrH,EAAOyqH,EAAchuG,IACnDy/D,GAAKx/D,MAAMD,KAEfiiG,SAAU,KACNsM,GAAe,EACfE,KACAJ,GAAkBO,EAAYrrH,EAAO0qH,GACrCxuC,GAAKwiC,eAGbl8H,OAAKiuC,IAAQs/C,UAAU86C,KA7BxBtG,CA+BJqG,IAGX,WAAqB5qH,EAAOsmH,KAAOzmH,GAC/B,OAAW,IAAPymH,GACAtmH,IACO,OAEA,IAAPsmH,EACO,KAEJA,KAAMzmH,GACRisB,MAAKy9F,OAAK,IACVx5C,UAAU,IAAM/vE,yFCrElB,eAAsBpS,GACzB,MAAM01H,GAAYC,QAAa31H,GAC/B,OAAO22H,OAAQ,CAAC9zF,EAAQstF,MACnBuF,GAAY/yG,OAAO3iB,EAAQ6iC,EAAQ6yF,IAAa/yG,OAAO3iB,EAAQ6iC,IAASs/C,UAAUguC,0FCHpF,YAAmBgL,EAASvF,GAC/B,OAAOe,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAIuN,EAAkB,KAClB9rH,EAAQ,EACRwqH,GAAa,EACjB,MAAMC,EAAgB,IAAMD,IAAesB,GAAmBvN,EAAWW,WACzEjuF,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,IAC/B,MAApByqI,GAAkEA,EAAgB9sE,cAClF,IAAI+sE,EAAa,EACjB,MAAMC,GAAahsH,KACnBmlH,QAAUoE,EAAQloI,EAAO2qI,KAAaz7C,UAAWu7C,GAAkBtH,OAAyBjG,EAAasM,IAAetM,EAAW51H,KAAKq7H,EAAiBA,EAAe3iI,EAAOwpI,GAAYmB,GAAYD,KAAgBlB,IAAa,KAChOiB,EAAkB,KAClBrB,QAEL,KACCD,GAAa,EACbC,6FChBL,YAAcr0G,GACjB,OAAOA,GAAS,EAER,IAAMktG,KACRyB,OAAQ,CAAC9zF,EAAQstF,KACf,IAAIp/B,EAAO,EACXluD,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,MAC7C89F,GAAQ/oE,IACVmoG,EAAW51H,KAAKtH,GACZ+0B,GAAS+oE,GACTo/B,EAAWW,gHCT5B,WAAmB+M,GACtB,OAAOlH,OAAQ,CAAC9zF,EAAQstF,MACpB4G,QAAU8G,GAAU17C,WAAUi0C,OAAyBjG,EAAY,IAAMA,EAAWW,WAAYl/B,QAC/Fu+B,EAAWE,QAAUxtF,EAAOs/C,UAAUguC,oGCHxC,WAAaU,EAAgB/hG,EAAOgiG,GACvC,MAAMgN,GAAc9zC,OAAW6mC,IAAmB/hG,GAASgiG,EAEnD,CAAEv2H,KAAMs2H,EAAgB/hG,QAAOgiG,YACjCD,EACN,OAAOiN,GACDnH,OAAQ,CAAC9zF,EAAQstF,KACf,IAAIv1G,EAC6B,QAAhCA,EAAKkjH,EAAY37C,iBAA8B,IAAPvnE,GAAyBA,EAAGjrB,KAAKmuI,GAC1E,IAAIC,GAAU,EACdl7F,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,IACnD,IAAI2nB,GACwB,QAA3BA,GAAKkjH,EAAYvjI,YAAyB,IAAPqgB,IAAyBA,GAAGjrB,KAAKmuI,EAAa7qI,GAClFk9H,EAAW51H,KAAKtH,IACjB,KACC,IAAI2nB,EACJmjH,GAAU,EACsB,QAA/BnjH,EAAKkjH,EAAYhN,gBAA6B,IAAPl2G,GAAyBA,EAAGjrB,KAAKmuI,GACzE3N,EAAWW,YACXjiG,IACA,IAAIjU,GACJmjH,GAAU,EACmB,QAA5BnjH,GAAKkjH,EAAYhvG,aAA0B,IAAPlU,IAAyBA,GAAGjrB,KAAKmuI,EAAajvG,GACnFshG,EAAWrhG,MAAMD,IAClB,KACC,IAAIjU,EAAI+L,GACJo3G,IACmC,QAAlCnjH,EAAKkjH,EAAYltE,mBAAgC,IAAPh2C,GAAyBA,EAAGjrB,KAAKmuI,IAEhD,QAA/Bn3G,GAAKm3G,EAAYE,gBAA6B,IAAPr3G,IAAyBA,GAAGh3B,KAAKmuI,QAI7E1sC,0FClCL,YAAsB8oC,EAAe+D,GACxC,OAAOtH,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAIiL,GAAW,EACfv4F,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,IACnDmoI,GAAW,EACXjL,EAAW51H,KAAKtH,IACjB,IAAOmoI,EAAWjL,EAAWW,WAAaX,EAAWrhG,MAAMorG,SAGtE,aACI,OAAO,IAAIzE,qHCPR,cAA2ByI,GAC9B,MAAM/C,GAAUtF,QAAkBqI,GAClC,OAAOvH,OAAQ,CAAC9zF,EAAQstF,KACpB,MAAMvb,EAAMspB,EAAOruI,OACbsuI,EAAc,IAAIxpI,MAAMigH,GAC9B,IAAIwmB,EAAW8C,EAAOprI,IAAI,KAAM,GAC5BsrI,IAAQ,EACZ,QAASxlI,GAAI,EAAGA,GAAIg8G,EAAKh8G,MACrBm+H,QAAUmH,EAAOtlI,KAAIupF,WAAUi0C,OAAyBjG,EAAal9H,KACjEkrI,EAAYvlI,IAAK3F,IACZmrI,KAAUhD,EAASxiI,MACpBwiI,EAASxiI,KAAK,GACbwlI,GAAQhD,EAAS93E,MAAM8tC,SAAegqC,EAAW,QAEvDxpC,MAEP/uD,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,KACnD,GAAImrI,GAAO,CACP,MAAMp+H,GAAS,CAAC/M,MAAUkrI,GAC1BhO,EAAW51H,KAAK4gI,EAAUA,KAAWn7H,IAAUA,0ECxBxD,gBAAqBizH,KACxBr1H,YAAY83H,EAAWprE,GACnBl+C,QAEJwqH,SAAS/0F,EAAOxrC,EAAQ,GACpB,OAAOyH,MCNR,MAAMugI,EAAmB,CAC5BC,YAAY3nB,EAAS4nB,KAAYtsH,GAC7B,MAAQ+U,YAAaq3G,EACrB,OAAiB,MAAbr3G,OAA2C,EAASA,EAASs3G,aACtDt3G,EAASs3G,YAAY3nB,EAAS4nB,KAAYtsH,GAE9CqsH,YAAY3nB,EAAS4nB,KAAYtsH,IAE5CusH,cAAcjuG,GACV,MAAQvJ,YAAaq3G,EACrB,QAAsB,MAAbr3G,OAA2C,EAASA,EAASw3G,gBAAkBA,eAAejuG,IAE3GvJ,cAAUt0B,kBCTP,gBAA0B+rI,EAC7B7gI,YAAY83H,EAAWprE,GACnBl+C,MAAMspH,EAAWprE,GACjBxsD,KAAK43H,UAAYA,EACjB53H,KAAKwsD,KAAOA,EACZxsD,KAAKszG,SAAU,EAEnBwlB,SAAS/0F,EAAOxrC,EAAQ,GACpB,GAAIyH,KAAKuyH,OACL,OAAOvyH,KAEXA,KAAK+jC,MAAQA,EACb,MAAM9wB,EAAKjT,KAAKiT,GACV2kH,EAAY53H,KAAK43H,UACvB,OAAU,MAAN3kH,IACAjT,KAAKiT,GAAKjT,KAAK4gI,eAAehJ,EAAW3kH,EAAI1a,IAEjDyH,KAAKszG,SAAU,EACftzG,KAAKzH,MAAQA,EACbyH,KAAKiT,GAAKjT,KAAKiT,IAAMjT,KAAK6gI,eAAejJ,EAAW53H,KAAKiT,GAAI1a,GACtDyH,KAEX6gI,eAAejJ,EAAWnvG,EAAKlwB,EAAQ,GACnC,OAAOgoI,cAA6B3I,EAAU56G,MAAM4uC,KAAKgsE,EAAW53H,MAAOzH,GAE/EqoI,eAAeE,EAAY7tH,EAAI1a,EAAQ,GACnC,GAAa,MAATA,GAAiByH,KAAKzH,QAAUA,IAA0B,IAAjByH,KAAKszG,QAC9C,OAAOrgG,EAEXstH,gBAA+BttH,GAGnCu7C,QAAQzqB,EAAOxrC,GACX,GAAIyH,KAAKuyH,OACL,OAAO,IAAI9oF,MAAM,gCAErBzpC,KAAKszG,SAAU,EACf,MAAMtiF,EAAQhxB,KAAK+gI,SAASh9F,EAAOxrC,GACnC,GAAIy4B,EACA,OAAOA,GAEe,IAAjBhxB,KAAKszG,SAAgC,MAAXtzG,KAAKiT,KACpCjT,KAAKiT,GAAKjT,KAAK4gI,eAAe5gI,KAAK43H,UAAW53H,KAAKiT,GAAI,OAG/D8tH,SAASh9F,EAAO7d,GACZ,IACI86G,EADAruC,GAAU,EAEd,IACI3yF,KAAKwsD,KAAKzoB,EAIqB,CAJrBA,MAEP1vC,GACHs+F,GAAU,EACVquC,EAAa3sI,GAAQ,IAAIo1C,MAAM,sCAEnC,GAAIkpD,EACA,YAAK7/B,cACEkuE,EAGfluE,cACI,IAAK9yD,KAAKuyH,OAAQ,CACd,MAAQt/G,KAAI2kH,aAAc53H,MAClBihI,WAAYrJ,EACpB53H,KAAKwsD,KAAOxsD,KAAK+jC,MAAQ/jC,KAAK43H,UAAY,KAC1C53H,KAAKszG,SAAU,GACf8hB,QAAU6L,EAASjhI,MACT,MAANiT,IACAjT,KAAKiT,GAAKjT,KAAK4gI,eAAehJ,EAAW3kH,EAAI,OAEjDjT,KAAKzH,MAAQ,KACb+V,MAAMwkD,gFCzEX,QACHhzD,YAAYohI,EAAqBppD,EAAMqpD,EAAUrpD,KAC7C93E,KAAKkhI,oBAAsBA,EAC3BlhI,KAAK83E,IAAMA,EAEfghD,SAAStsE,EAAMj0D,EAAQ,EAAGwrC,GACtB,OAAO,IAAI/jC,KAAKkhI,oBAAoBlhI,KAAMwsD,GAAMssE,SAAS/0F,EAAOxrC,IAGxE4oI,EAAUrpD,IAAMo8C,QCTT,gBAA6BiN,EAChCrhI,YAAYshI,EAAiBtpD,EAAMqpD,OAC/B7yH,MAAM8yH,EAAiBtpD,GACvB93E,KAAKihI,QAAU,GACfjhI,KAAKqhI,SAAU,EACfrhI,KAAKshI,gBAAa1sI,EAEtBooB,MAAMpnB,GACF,MAAQqrI,WAAYjhI,KACpB,GAAIA,KAAKqhI,QAEL,YADAJ,EAAQvtI,KAAKkC,GAGjB,IAAIo7B,EACJhxB,KAAKqhI,SAAU,EACf,MACSrwG,EAAQp7B,EAAO44D,QAAQ54D,EAAOmuC,MAAOnuC,EAAO2C,OAC7C,YAEE3C,EAASqrI,EAAQrxE,SAE3B,GADA5vD,KAAKqhI,SAAU,EACXrwG,EAAO,CACP,KAAQp7B,EAASqrI,EAAQrxE,SACrBh6D,EAAOk9D,cAEX,MAAM9hC,6ECxBX,MAAMurG,EAAiB,YAAIgF,GAAeC,KACpCr+B,GAAQo5B,mDCHd,MAAMrI,EAAwB,CACjCp8C,SACYo8C,EAAsBhrG,UAAYmL,MAAMyjD,MAEpD5uD,cAAUt0B,oDCJP,MAAM4hI,EAAkB,CAC3BvvE,WAAW4xD,EAAS4nB,KAAYtsH,IAC5B,MAAQ+U,YAAastG,EACrB,OAAiB,MAAbttG,OAA2C,EAASA,EAAS+9B,YACtD/9B,EAAS+9B,WAAW4xD,EAAS4nB,KAAYtsH,IAE7C8yC,WAAW4xD,EAAS4nB,KAAYtsH,KAE3C20E,aAAar2D,GACT,MAAQvJ,YAAastG,EACrB,QAAsB,MAAbttG,OAA2C,EAASA,EAAS4/D,eAAiBA,cAAcr2D,IAEzGvJ,cAAUt0B,oDCNP,MAAM2H,EANN,aACH,MAAsB,mBAAX+uH,QAA0BA,OAAO/uH,SAGrC+uH,OAAO/uH,SAFH,YAEGA,CAEMklI,oDCNjB,MAAM3O,EAAuC,mBAAXxH,QAAyBA,OAAOwH,YAAe,gECCjF,MAAM6E,GAAahD,aAAkBnL,GAAW,WACnDA,EAAOxpH,MACPA,KAAKe,KAAO,aACZf,KAAK2uD,QAAU,wHCFnB,WAAcnyD,GACV,OAAOA,EAAIA,EAAIzK,OAAS,GAErB,YAA2BoiB,GAC9B,OAAO+3E,OAAWypB,EAAKxhG,IAASA,EAAKqgD,WAAQ5/D,EAE1C,WAAsBuf,GACzB,OAAOsoH,OAAY9mB,EAAKxhG,IAASA,EAAKqgD,WAAQ5/D,EAE3C,WAAmBuf,EAAMjf,GAC5B,MAA6B,iBAAfygH,EAAKxhG,GAAqBA,EAAKqgD,MAAQt/D,oDCZzD,MAAQuG,WAAY5E,OACZ20H,iBAAgB/gC,UAAWi3C,EAAaxuI,KAAMyuI,IAAY1uI,OAC3D,WAA8BkhB,GACjC,GAAoB,IAAhBA,EAAKpiB,OAAc,CACnB,MAAMsuC,EAAQlsB,EAAK,GACnB,GAAI1Y,EAAQ4kC,GACR,MAAO,CAAElsB,KAAMksB,EAAOntC,KAAM,MAEhC,GAUR,WAAgBsH,GACZ,OAAOA,GAAsB,iBAARA,GAAoBgxH,EAAehxH,KAASknI,EAXzDE,CAAOvhG,GAAQ,CACf,MAAMntC,EAAOyuI,GAAQthG,GACrB,MAAO,CACHlsB,KAAMjhB,EAAK8B,IAAKC,GAAQorC,EAAMprC,IAC9B/B,SAIZ,MAAO,CAAEihB,KAAMA,EAAMjhB,KAAM,MAGsCwuI,gCCnB9D,WAAmBllI,EAAKzB,GAC3B,GAAIyB,EAAK,CACL,MAAMsX,GAAQtX,EAAI/G,QAAQsF,GAC1B,GAAK+Y,IAAStX,EAAIlC,OAAOwZ,GAAO,qDCHjC,WAA0B+tH,GAK7B,MAAMC,GAAWD,EAJDE,IACZt4F,MAAM53C,KAAKkwI,GACXA,EAAS9b,OAAQ,IAAIx8E,OAAQw8E,QAGjC6b,UAASr3C,UAAYx3F,OAAO8Z,OAAO08B,MAAMghD,WACzCq3C,GAASr3C,UAAU3qF,YAAcgiI,GAC1BA,oDCRJ,WAAsB5uI,EAAMgP,GAC/B,OAAOhP,EAAK0rE,OAAO,CAACrnE,GAAQtC,EAAK6F,KAAQvD,GAAOtC,GAAOiN,EAAOpH,GAAKvD,IAAS,8FCAhF,IAAI0F,EAAU,KACP,WAAsBuwF,GACzB,GAAIngE,0CAA8C,CAC9C,MAAMm5E,GAAUvpG,EAKhB,GAJIupG,IACAvpG,EAAU,CAAE+kI,aAAa,EAAOhxG,MAAO,OAE3Cw8D,IACIgZ,EAAQ,CACR,MAAQw7B,cAAahxG,SAAU/zB,EAE/B,GADAA,EAAU,KACN+kI,EACA,MAAMhxG,QAKdw8D,IAGD,YAAsBz8D,GACrB1D,2CAAgDpwB,IAChDA,EAAQ+kI,aAAc,EACtB/kI,EAAQ+zB,MAAQD,mCCxBjB,WAAyBkxG,EAAoBrK,EAAWprE,GAAMj0D,EAAQ,EAAG2pI,GAAS,GACrF,MAAMC,EAAuBvK,EAAUkB,SAAS,WAC5CtsE,KACArL,EACI8gF,EAAmBjgI,IAAIhC,KAAK84H,SAAS,KAAMvgI,IAG3CyH,KAAK8yD,eAEVv6D,GAEH,GADA0pI,EAAmBjgI,IAAImgI,IAClBD,EACD,OAAOC,mDCZR,WAAkB9qF,GACrB,OAAOA,qECDJ,MAAMgiF,EAAgBhiF,GAAMA,GAAyB,iBAAbA,EAAEtlD,QAAoC,mBAANslD,CAAM,+DCC9E,WAAyB78C,GAC5B,OAAO8wH,OAAOyN,gBAAiB7sC,OAAmB,MAAR1xF,OAAiC,EAASA,EAAI8wH,OAAOyN,gDCF5F,WAAoB5jI,GACvB,MAAwB,mBAAVA,CAAU,4FCCrB,WAA6ByH,IAChC,OAAOsvF,OAAWtvF,GAAM+2H,gFCDrB,WAAoB/2H,IACvB,OAAOsvF,OAAqB,MAAVtvF,QAAqC,EAASA,GAAM+8H,sECFnE,WAAmBxkI,GACtB,OAAO+2F,OAAqB,MAAV/2F,OAAqC,EAASA,EAAM60B,wFCAnE,WAA4CwxG,GAC/C,OAAO4G,QAAiBpiI,KAAMuqF,UAAW,YACrC,MAAM83C,EAAS7G,EAAe8G,YAC9B,IACI,OAAa,CACT,MAAQntI,QAAOuH,cAAe6lI,QAAQF,EAAOnoB,QAC7C,GAAIx9G,EACA,aAAa6lI,aAAQ,eAEbA,QAAQptI,GAIjBqtI,CAJiBrtI,QAIxBktI,EAAOG,iBAIZ,YAA8BhoI,GACjC,OAAO0xF,OAAmB,MAAR1xF,OAAiC,EAASA,EAAI8nI,2ECnB7D,WAAqBntI,GACxB,OAAOA,IAAS+2F,OAAW/2F,EAAM2jI,kFCD9B,WAAiB/zF,IACpB,OAAOmnD,OAAsB,MAAXnnD,QAAuC,EAASA,GAAO6tF,MAEtE,WAAiBn+G,IACpB,OAAQswB,IACJ,GAAI09F,EAAQ19F,GACR,OAAOA,EAAO6tF,KAAK,SAAU8P,GACzB,IACI,OAAOjuH,GAAKiuH,EAAc1iI,KAGf+wB,CAHe,MAEvBA,GACH/wB,KAAKgxB,MAAMD,MAIvB,MAAM,IAAIs4F,UAAU,2GCf5B,MAAQ5tH,WAAY5E,MAIb,YAA0BuZ,GAC7B,OAAOpb,OAAImf,GAJf,WAAqB/D,EAAI+D,GACrB,OAAO1Y,EAAQ0Y,GAAQ/D,KAAM+D,GAAQ/D,EAAG+D,GAGrBwuH,CAAYvyH,EAAI+D,oCCNhC,aAAgB,4FCEhB,WAA8B4c,IACjCylG,eAA2B,KACvB,MAAQc,oBAAqBjqG,IAC7B,IAAIiqG,EAIA,MAAMvmG,GAHNumG,EAAiBvmG,GAGXA,mCCTX,WAA0Cn0B,GAC7C,OAAO,IAAIysH,UAAW,gBAAyB,OAAVzsH,GAAmC,iBAAVA,EAAqB,oBAAuB,IAAGA,iSCmDjH,SASA,SAeA,MAAMpJ,EAAa,IAqJnB,YAAiBuN,EAAME,GACnB,MAAO,CAAE/D,KAAM,EAAiB6D,OAAME,cAAaM,QAAS,IA4DhE,WAAiB3H,EAASc,EAAS,MAC/B,MAAO,CAAEwC,KAAM,EAAiBxC,SAAQd,WAuE5C,WAAkB4B,EAAO+F,EAAU,MAC/B,MAAO,CAAErE,KAAM,EAAkB1B,QAAO+F,WAyC5C,WAAeqhI,GACX,MAAO,CAAE1lI,KAAM,EAAexC,OAAQkoI,EAAQ9vI,OAAQ,MAoO1D,WAAoB+vI,EAAiBrnI,EAAO+F,GAAU,MAClD,MAAO,CAAErE,KAAM,EAAoBwB,KAAMmkI,EAAiBvgI,UAAW9G,EAAO+F,YA2ShF,YAA2BisF,GACvB5wE,QAAQC,QAAQ,MAAMmN,KAAKwjE,GAqB/B,QACI1tF,YAAYxH,EAAW,EAAGC,GAAQ,GAC9ByH,KAAKylB,WAAa,GAClBzlB,KAAK0lB,YAAc,GACnB1lB,KAAK2lB,cAAgB,GACrB3lB,KAAK8lB,UAAW,EAChB9lB,KAAK+lB,YAAa,EAClB/lB,KAAK6lB,WAAY,EACjB7lB,KAAK8iI,UAAY,EACjB9iI,KAAKwgB,aAAe,KACpBxgB,KAAKzL,UAAY+D,EAAWC,GAEhC4tB,YACSnmB,KAAK6lB,YACN7lB,KAAK6lB,WAAY,EACjB7lB,KAAKylB,WAAW7yB,QAAQwd,GAAMA,KAC9BpQ,KAAKylB,WAAa,IAG1BxxB,QAAQmc,GACJpQ,KAAK0lB,YAAYhyB,KAAK0c,GAE1Bjc,OAAOic,GACHpQ,KAAKylB,WAAW/xB,KAAK0c,GAEzBhc,UAAUgc,GACNpQ,KAAK2lB,cAAcjyB,KAAK0c,GAE5BsS,aACI,OAAO1iB,KAAK8lB,SAEhBrR,OAAO,CACPL,OACSpU,KAAK0iB,eACN1iB,KAAK+iI,WACL/iI,KAAKgjI,oBAEThjI,KAAK8lB,UAAW,EAGpBk9G,mBACIC,GAAkB,IAAMjjI,KAAKmmB,aAEjC48G,WACI/iI,KAAK0lB,YAAY9yB,QAAQwd,GAAMA,KAC/BpQ,KAAK0lB,YAAc,GAEvBrR,QAAQ,CACRE,UAAU,CACVC,SACIxU,KAAKmmB,YAETvS,UACS5T,KAAK+lB,aACN/lB,KAAK+lB,YAAa,EACb/lB,KAAK0iB,cACN1iB,KAAK+iI,WAET/iI,KAAKwU,SACLxU,KAAK2lB,cAAc/yB,QAAQwd,GAAMA,KACjCpQ,KAAK2lB,cAAgB,IAG7BrR,QACItU,KAAK8lB,UAAW,EAEpBpR,YAAYwuH,GACRljI,KAAK8iI,UAAY9iI,KAAKzL,UAAY2uI,EAAWljI,KAAKzL,UAAY,EAElEouB,cACI,OAAO3iB,KAAKzL,UAAYyL,KAAK8iI,UAAY9iI,KAAKzL,UAAY,EAG9DiuB,gBAAgBluB,GACZ,MAAMqyB,GAAuB,SAAbryB,EAAuB0L,KAAK0lB,YAAc1lB,KAAKylB,WAC/DkB,GAAQ/zB,QAAQwd,IAAMA,MACtBuW,GAAQ50B,OAAS,GAmBzB,SACI+N,YAAYqjI,GACRnjI,KAAKylB,WAAa,GAClBzlB,KAAK0lB,YAAc,GACnB1lB,KAAK6lB,WAAY,EACjB7lB,KAAK8lB,UAAW,EAChB9lB,KAAK+lB,YAAa,EAClB/lB,KAAK2lB,cAAgB,GACrB3lB,KAAKwgB,aAAe,KACpBxgB,KAAKzL,UAAY,EACjByL,KAAKlO,QAAUqxI,EACf,IAAIC,GAAY,EACZC,GAAe,EACfC,GAAa,EACjB,MAAM3kE,GAAQ3+D,KAAKlO,QAAQC,OACd,GAAT4sE,GACAskE,GAAkB,IAAMjjI,KAAKmmB,aAG7BnmB,KAAKlO,QAAQc,QAAQiB,KACjBA,GAAOM,OAAO,OACJivI,IAAazkE,IACf3+D,KAAKmmB,cAGbtyB,GAAOO,UAAU,OACPivI,IAAgB1kE,IAClB3+D,KAAKujI,eAGb1vI,GAAOI,QAAQ,OACLqvI,IAAc3kE,IAChB3+D,KAAK+iI,eAKrB/iI,KAAKzL,UAAYyL,KAAKlO,QAAQ8sE,OAAO,CAAC3yD,GAAMpY,KAAWiP,KAAKC,IAAIkJ,GAAMpY,GAAOU,WAAY,GAE7F4xB,YACSnmB,KAAK6lB,YACN7lB,KAAK6lB,WAAY,EACjB7lB,KAAKylB,WAAW7yB,QAAQwd,GAAMA,KAC9BpQ,KAAKylB,WAAa,IAG1BhR,OACIzU,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAO4gB,QAE1CxgB,QAAQmc,GACJpQ,KAAK0lB,YAAYhyB,KAAK0c,GAE1B2yH,WACS/iI,KAAK0iB,eACN1iB,KAAK8lB,UAAW,EAChB9lB,KAAK0lB,YAAY9yB,QAAQwd,GAAMA,KAC/BpQ,KAAK0lB,YAAc,IAG3BvxB,OAAOic,GACHpQ,KAAKylB,WAAW/xB,KAAK0c,GAEzBhc,UAAUgc,GACNpQ,KAAK2lB,cAAcjyB,KAAK0c,GAE5BsS,aACI,OAAO1iB,KAAK8lB,SAEhB1R,OACSpU,KAAKwgB,cACNxgB,KAAKyU,OAETzU,KAAK+iI,WACL/iI,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAOugB,QAE1CC,QACIrU,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAOwgB,SAE1CE,UACIvU,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAO0gB,WAE1CC,SACIxU,KAAKmmB,YACLnmB,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAO2gB,UAE1CZ,UACI5T,KAAKujI,aAETA,aACSvjI,KAAK+lB,aACN/lB,KAAK+lB,YAAa,EAClB/lB,KAAKmmB,YACLnmB,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAO+f,WACtC5T,KAAK2lB,cAAc/yB,QAAQwd,GAAMA,KACjCpQ,KAAK2lB,cAAgB,IAG7BrR,QACItU,KAAKlO,QAAQc,QAAQiB,GAAUA,EAAOygB,SACtCtU,KAAK+lB,YAAa,EAClB/lB,KAAK6lB,WAAY,EACjB7lB,KAAK8lB,UAAW,EAEpBpR,YAAY2F,GACR,MAAMmpH,GAAiBnpH,EAAIra,KAAKzL,UAChCyL,KAAKlO,QAAQc,QAAQiB,KACjB,MAAMqvI,GAAWrvI,GAAOU,UAAYuO,KAAKstF,IAAI,EAAGozC,GAAiB3vI,GAAOU,WAAa,EACrFV,GAAO6gB,YAAYwuH,MAG3BvgH,cACI,MAAM8gH,EAAgBzjI,KAAKlO,QAAQ8sE,OAAO,CAAC8kE,GAAc7vI,KACT,OACrC8vI,IAD6C9vI,GAAOU,UAAYmvI,GAAanvI,UACxDV,GAAS6vI,GACtC,MACH,OAAwB,MAAjBD,EAAwBA,EAAc9gH,cAAgB,EAEjEjB,gBACI1hB,KAAKlO,QAAQc,QAAQiB,IACbA,EAAO6tB,eACP7tB,EAAO6tB,kBAKnBc,gBAAgBluB,GACZ,MAAMqyB,GAAuB,SAAbryB,EAAuB0L,KAAK0lB,YAAc1lB,KAAKylB,WAC/DkB,GAAQ/zB,QAAQwd,IAAMA,MACtBuW,GAAQ50B,OAAS,GAWzB,MAAMwB,GAAa,0RCjpCnB,IAAIqwI,EAAO,KACX,aACI,OAAOA,EAKX,WAA2BC,GAClBD,IACDA,EAAOC,GAUf,SAkBA,MAAMt7G,EAAW,IAAI2D,MAAe,qBA+B9B43G,QAAN,QACIC,UAAUC,GACN,MAAM,IAAIv6F,MAAM,oBAGxBq6F,SAAiBnrI,UAAjB,0BAA6GmrI,IAC7GA,EAAiBlrI,WADkFC,MACnG,OAAiHirI,EAAjHhrI,0BASA,aACI,OAAOmrI,SAASC,GAVmJC,IAAvKC,WAA+I,aANzIN,MA8BAI,QAAN,gBAAsCJ,EAClChkI,YAAYukI,GACR/1H,QACAtO,KAAKqkI,KAAOA,EACZrkI,KAAKskI,QAITA,QACItkI,KAAKgzB,SAAWvhC,OAAOuhC,SACvBhzB,KAAK4oH,SAAWn3H,OAAO8zC,QAE3Bg/F,qBACI,OAAOC,IAAS/Z,YAAYzqH,KAAKqkI,MAErCI,WAAWr0H,GACP,MAAM3e,GAAS+yI,IAASE,qBAAqB1kI,KAAKqkI,KAAM,UACxD5yI,UAAO+0B,iBAAiB,WAAYpW,GAAI,GACjC,IAAM3e,GAAOw3F,oBAAoB,WAAY74E,GAExDu0H,aAAav0H,GACT,MAAM3e,GAAS+yI,IAASE,qBAAqB1kI,KAAKqkI,KAAM,UACxD5yI,UAAO+0B,iBAAiB,aAAcpW,GAAI,GACnC,IAAM3e,GAAOw3F,oBAAoB,aAAc74E,GAEtDk4B,WACA,OAAOtoC,KAAKgzB,SAASsV,KAErBrV,eACA,OAAOjzB,KAAKgzB,SAASC,SAErBu3F,eACA,OAAOxqH,KAAKgzB,SAASw3F,SAErB9P,WACA,OAAO16G,KAAKgzB,SAAS0nF,KAErB9I,eACA,OAAO5xG,KAAKgzB,SAAS4+E,SAErBoE,aACA,OAAOh2G,KAAKgzB,SAASgjF,OAErBhZ,WACA,OAAOh9F,KAAKgzB,SAASgqE,KAErB4U,aAASgzB,GACT5kI,KAAKgzB,SAAS4+E,SAAWgzB,EAE7Bl8F,UAAU3E,EAAOyiC,GAAOj3C,IAChBs1G,IACA7kI,KAAK4oH,SAASlgF,UAAU3E,EAAOyiC,GAAOj3C,IAGtCvvB,KAAKgzB,SAASgqE,KAAOztE,GAG7B46F,aAAapmF,EAAOyiC,GAAOj3C,IACnBs1G,IACA7kI,KAAK4oH,SAASuB,aAAapmF,EAAOyiC,GAAOj3C,IAGzCvvB,KAAKgzB,SAASgqE,KAAOztE,GAG7Bu1G,UACI9kI,KAAK4oH,SAASkc,UAElBC,OACI/kI,KAAK4oH,SAASmc,OAElBhB,UAAUC,EAAmB,GACzBhkI,KAAK4oH,SAAS5zF,GAAGgvG,GAErBh6B,WACI,OAAOhqG,KAAK4oH,SAAS7kF,OAG7BmgG,SAAwBvrI,UAAxB,0BAAoHurI,GAvGjBrrI,MAuG0D0vB,KAC7J27G,EAAwBtrI,WAxG2EC,MAwGnG,OAAwHqrI,EAAxHprI,0BAiBA,aACI,OAAO,IAAIorI,GAAwBD,SAAS17G,IAlBqIy8G,IAArLZ,WAA6J,aA/EvJF,MA6FN,aACI,QAASzyI,OAAO8zC,QAAQmD,UA8B5B,WAAuBrjB,EAAO+E,GAC1B,GAAoB,GAAhB/E,EAAMtzB,OACN,OAAOq4B,EAEX,GAAkB,GAAdA,EAAIr4B,OACJ,OAAOszB,EAEX,IAAI4/G,EAAU,EAOd,OANI5/G,EAAM8+B,SAAS,MACf8gF,IAEA76G,EAAIlvB,WAAW,MACf+pI,IAEW,GAAXA,EACO5/G,EAAQ+E,EAAI10B,UAAU,GAElB,GAAXuvI,EACO5/G,EAAQ+E,EAEZ/E,EAAQ,IAAM+E,EAWzB,YAA4BmF,GACxB,MAAM/1B,EAAQ+1B,EAAI/1B,MAAM,UAClB0rI,EAAa1rI,GAASA,EAAMsa,OAASyb,EAAIx9B,OAE/C,OAAOw9B,EAAInjB,MAAM,EADO84H,GAAsC,MAAxB31G,EAAI21G,EAAa,GAAa,EAAI,IACjC31G,EAAInjB,MAAM84H,GASrD,YAA8BrpI,GAC1B,OAAOA,GAAwB,MAAdA,EAAO,GAAa,IAAMA,EAASA,MA2BlDspI,SAAN,QACIpB,UAAUC,GACN,MAAM,IAAIv6F,MAAM,oBAGxB07F,SAAiBxsI,UAAjB,0BAA6GwsI,IAC7GA,EAAiBvsI,WAnOkFC,MAmOnG,OAAiHssI,EAAjHrsI,0BAKA,WAAiCssI,GAE7B,MAAMpyG,GAAWixG,SAAS17G,GAAUyK,SACpC,OAAO,IAAIqyG,IAAqBpB,SAASH,GAAmB9wG,GAAYA,EAASsyG,QAAU,IARoEC,IAAnKnB,WAA+I,SANzIe,MAuCN,MAAMK,GAAgB,IAAIt5G,MAAe,mBAgCnCm5G,SAAN,gBAAmCF,GAC/BrlI,YAAY2lI,EAAmBn9F,IAO3B,GANAh6B,QACAtO,KAAKylI,kBAAoBA,EACzBzlI,KAAK0lI,mBAAqB,GACd,MAARp9F,KACAA,GAAOtoC,KAAKylI,kBAAkBlB,sBAEtB,MAARj8F,GACA,MAAM,IAAImB,MAAO,+GAErBzpC,KAAKsqH,UAAYhiF,GAGrBtc,cACI,KAAOhsB,KAAK0lI,mBAAmB3zI,QAC3BiO,KAAK0lI,mBAAmBlxE,KAAxBx0D,EAAwBw0D,CAGhCiwE,WAAWr0H,GACPpQ,KAAK0lI,mBAAmBhyI,KAAKsM,KAAKylI,kBAAkBhB,WAAWr0H,GAAKpQ,KAAKylI,kBAAkBd,aAAav0H,IAE5Gq6G,cACI,OAAOzqH,KAAKsqH,UAEhBqb,mBAAmBC,GACf,OAAOC,EAAc7lI,KAAKsqH,UAAWsb,GAEzC3kG,KAAK6kG,GAAc,GACf,MAAMl0B,GAAW5xG,KAAKylI,kBAAkB7zB,SAAWm0B,GAAqB/lI,KAAKylI,kBAAkBzvB,QACzFhZ,GAAOh9F,KAAKylI,kBAAkBzoC,KACpC,OAAOA,IAAQ8oC,EAAe,GAAEl0B,KAAW5U,KAAS4U,GAExDlpE,UAAU3E,EAAOyiC,GAAOj3C,GAAKinF,GACzB,MAAMwvB,GAAchmI,KAAK2lI,mBAAmBp2G,GAAMw2G,GAAqBvvB,IACvEx2G,KAAKylI,kBAAkB/8F,UAAU3E,EAAOyiC,GAAOw/D,IAEnD7b,aAAapmF,EAAOyiC,GAAOj3C,GAAKinF,GAC5B,MAAMwvB,GAAchmI,KAAK2lI,mBAAmBp2G,GAAMw2G,GAAqBvvB,IACvEx2G,KAAKylI,kBAAkBtb,aAAapmF,EAAOyiC,GAAOw/D,IAEtDlB,UACI9kI,KAAKylI,kBAAkBX,UAE3BC,OACI/kI,KAAKylI,kBAAkBV,OAE3BhB,UAAUC,EAAmB,GACzB,IAAIlnH,GAAI+L,GAC2C,QAAlDA,IAAM/L,GAAK9c,KAAKylI,mBAAmB1B,iBAA8B,IAAPl7G,IAAyBA,GAAGh3B,KAAKirB,GAAIknH,IAGxGqB,SAAqB1sI,UAArB,0BAAiH0sI,GAxVdxsI,MAwVoDirI,GAxVpDjrI,MAwViF2sI,GAApL,KACAH,EAAqBzsI,WAzV8EC,MAyVnG,OAAqHwsI,EAArHvsI,QAAqHusI,EAArH,YArDMA,MA0FAY,QAAN,gBAAmCd,GAC/BrlI,YAAY2lI,EAAmBnb,IAC3Bh8G,QACAtO,KAAKylI,kBAAoBA,EACzBzlI,KAAKsqH,UAAY,GACjBtqH,KAAK0lI,mBAAqB,GACT,MAAbpb,KACAtqH,KAAKsqH,UAAYA,IAIzBt+F,cACI,KAAOhsB,KAAK0lI,mBAAmB3zI,QAC3BiO,KAAK0lI,mBAAmBlxE,KAAxBx0D,EAAwBw0D,CAGhCiwE,WAAWr0H,GACPpQ,KAAK0lI,mBAAmBhyI,KAAKsM,KAAKylI,kBAAkBhB,WAAWr0H,GAAKpQ,KAAKylI,kBAAkBd,aAAav0H,IAE5Gq6G,cACI,OAAOzqH,KAAKsqH,UAEhBrpF,KAAK6kG,GAAc,GAGf,IAAI7kG,GAAOjhC,KAAKylI,kBAAkBzoC,KAClC,OAAY,MAAR/7D,KACAA,GAAO,KACJA,GAAKlvC,OAAS,EAAIkvC,GAAKvrC,UAAU,GAAKurC,GAEjD0kG,mBAAmBC,GACf,MAAMr2G,GAAMs2G,EAAc7lI,KAAKsqH,UAAWsb,GAC1C,OAAOr2G,GAAIx9B,OAAS,EAAK,IAAMw9B,GAAOA,GAE1CmZ,UAAU3E,EAAOyiC,GAAOvlC,GAAMu1E,GAC1B,IAAIjnF,GAAMvvB,KAAK2lI,mBAAmB1kG,GAAO8kG,GAAqBvvB,IAC5C,GAAdjnF,GAAIx9B,SACJw9B,GAAMvvB,KAAKylI,kBAAkB7zB,UAEjC5xG,KAAKylI,kBAAkB/8F,UAAU3E,EAAOyiC,GAAOj3C,IAEnD46F,aAAapmF,EAAOyiC,GAAOvlC,GAAMu1E,GAC7B,IAAIjnF,GAAMvvB,KAAK2lI,mBAAmB1kG,GAAO8kG,GAAqBvvB,IAC5C,GAAdjnF,GAAIx9B,SACJw9B,GAAMvvB,KAAKylI,kBAAkB7zB,UAEjC5xG,KAAKylI,kBAAkBtb,aAAapmF,EAAOyiC,GAAOj3C,IAEtDu1G,UACI9kI,KAAKylI,kBAAkBX,UAE3BC,OACI/kI,KAAKylI,kBAAkBV,OAE3BhB,UAAUC,EAAmB,GACzB,IAAIlnH,GAAI+L,GAC2C,QAAlDA,IAAM/L,GAAK9c,KAAKylI,mBAAmB1B,iBAA8B,IAAPl7G,IAAyBA,GAAGh3B,KAAKirB,GAAIknH,IAGxGiC,SAAqBttI,UAArB,0BAAiHstI,GAzbdptI,MAyboDirI,GAzbpDjrI,MAybiF2sI,GAApL,KACAS,EAAqBrtI,WA1b8EC,MA0bnG,OAAqHotI,EAArHntI,QAAqHmtI,EAArH,YA5DMA,MA2GAC,QAAN,QACIpmI,YAAYqmI,EAAkBf,IAE1BplI,KAAKomI,SAAW,IAAIjpF,MAEpBn9C,KAAKqmI,oBAAsB,GAC3BrmI,KAAKsmI,kBAAoBH,EACzB,MAAMI,GAAkBvmI,KAAKsmI,kBAAkB7b,cAC/CzqH,KAAKylI,kBAAoBL,GACzBplI,KAAKsqH,UAAYkc,GAAmBC,GAAgBF,KACpDvmI,KAAKsmI,kBAAkB7B,WAAYiC,IAC/B1mI,KAAKomI,SAAS7oF,KAAK,CACfhuB,IAAOvvB,KAAKihC,MAAK,GACjBuzB,KAAO,EACPzwB,MAAS2iG,EAAG3iG,MACZ7mC,KAAQwpI,EAAGxpI,SAavB+jC,KAAK6kG,GAAc,GACf,OAAO9lI,KAAK4yF,UAAU5yF,KAAKsmI,kBAAkBrlG,KAAK6kG,IAMtD97B,WACI,OAAOhqG,KAAKylI,kBAAkBz7B,WAWlC28B,qBAAqB1lG,EAAM9oC,GAAQ,IAC/B,OAAO6H,KAAKihC,QAAUjhC,KAAK4yF,UAAU3xD,EAAO8kG,GAAqB5tI,KASrEy6F,UAAUrjE,GACN,OAAO22G,EAASM,mBAoJxB,YAAwBtzG,EAAU3D,GAC9B,OAAO2D,GAAY3D,EAAIr0B,WAAWg4B,GAAY3D,EAAI75B,UAAUw9B,EAASnhC,QAAUw9B,EArJxCq3G,CAAe5mI,KAAKsqH,UAAWmc,GAAgBl3G,KAYtFo2G,mBAAmBp2G,GACf,OAAIA,GAAkB,MAAXA,EAAI,KACXA,EAAM,IAAMA,GAETvvB,KAAKsmI,kBAAkBX,mBAAmBp2G,GAYrDyF,GAAGiM,EAAM9oC,GAAQ,GAAI4rC,GAAQ,MACzB/jC,KAAKsmI,kBAAkB59F,UAAU3E,GAAO,GAAI9C,EAAM9oC,IAClD6H,KAAK6mI,0BAA0B7mI,KAAK2lI,mBAAmB1kG,EAAO8kG,GAAqB5tI,KAAS4rC,IAUhGomF,aAAalpF,EAAM9oC,GAAQ,GAAI4rC,GAAQ,MACnC/jC,KAAKsmI,kBAAkBnc,aAAapmF,GAAO,GAAI9C,EAAM9oC,IACrD6H,KAAK6mI,0BAA0B7mI,KAAK2lI,mBAAmB1kG,EAAO8kG,GAAqB5tI,KAAS4rC,IAKhG+gG,UACI9kI,KAAKsmI,kBAAkBxB,UAK3BC,OACI/kI,KAAKsmI,kBAAkBvB,OAc3BhB,UAAUC,EAAmB,GACzB,IAAIlnH,GAAI+L,GAC2C,QAAlDA,IAAM/L,GAAK9c,KAAKsmI,mBAAmBvC,iBAA8B,IAAPl7G,IAAyBA,GAAGh3B,KAAKirB,GAAIknH,GAQpG8C,YAAY12H,GACRpQ,KAAKqmI,oBAAoB3yI,KAAK0c,GACzBpQ,KAAK+mI,yBACN/mI,KAAK+mI,uBAAyB/mI,KAAKqkF,UAAUhhF,KACzCrD,KAAK6mI,0BAA0BxjI,GAAEksB,IAAKlsB,GAAE0gC,UAKpD8iG,0BAA0Bt3G,EAAM,GAAIwU,IAChC/jC,KAAKqmI,oBAAoBzzI,QAAQwd,IAAMA,GAAGmf,EAAKwU,KAenDsgD,UAAUu4C,EAAQoK,GAASC,IACvB,OAAOjnI,KAAKomI,SAAS/hD,UAAU,CAAE5nF,KAAMmgI,EAAQ5rG,MAAOg2G,GAAShU,SAAUiU,MAUjFf,SAASH,qBAAuBA,GAUhCG,EAASL,cAAgBA,EAUzBK,EAASM,mBAAqBA,GAC9BN,EAASvtI,UAAT,0BAAqGutI,GA1qBFrtI,MA0qB4BssI,IA1qB5BtsI,MA0qByDirI,KAC5JoC,EAASttI,WA3qB0FC,MA2qBnG,OAAyGqtI,EAAzGptI,0BASA,cACI,OAAO,IAAIotI,GAASjC,SAASkB,KAAmBlB,SAASH,IAVsFoD,IAAnJ9C,WAA+H,SAlMzH8B,MAiNN,YAAyB32G,GACrB,OAAOA,EAAIrzB,QAAQ,gBAAiB,IAmCxC,IAAIirI,GAAiB,OAAjBA,OAAiB,IAECA,GAAkBC,QAAa,GAAK,UACtDD,GAAkBA,GAAkBE,QAAa,GAAK,UACtDF,GAAkBA,GAAkBG,SAAc,GAAK,WACvDH,GAAkBA,GAAkBI,WAAgB,GAAK,aALzDJ,IAAiB,GAkCjBK,EAAS,OAATA,KAAS,IAECA,EAAUC,OAAY,GAAK,SACrCD,EAAUA,EAAUE,WAAgB,GAAK,aAHzCF,GAAS,GAYTG,EAAgB,OAAhBA,KAAgB,IAGCA,EAAiBC,OAAY,GAAK,SAEnDD,EAAiBA,EAAiBE,YAAiB,GAAK,cAExDF,EAAiBA,EAAiBG,KAAU,GAAK,OAEjDH,EAAiBA,EAAiBI,MAAW,GAAK,QATlDJ,GAAgB,GAsBhBK,EAAW,OAAXA,KAAW,IAMCA,EAAYD,MAAW,GAAK,QAKxCC,EAAYA,EAAYC,OAAY,GAAK,SAKzCD,EAAYA,EAAYE,KAAU,GAAK,OAKvCF,EAAYA,EAAYG,KAAU,GAAK,OArBvCH,GAAW,GAgCXI,GAAY,OAAZA,OAAY,IAOCA,GAAahB,QAAa,GAAK,UAM5CgB,GAAaA,GAAaC,MAAW,GAAK,QAK1CD,GAAaA,GAAaE,KAAU,GAAK,OAKzCF,GAAaA,GAAaG,YAAiB,GAAK,cAKhDH,GAAaA,GAAaI,SAAc,GAAK,WAK7CJ,GAAaA,GAAaK,UAAe,GAAK,YAK9CL,GAAaA,GAAaM,YAAiB,GAAK,cAKhDN,GAAaA,GAAaO,uBAA4B,GAAK,yBAK3DP,GAAaA,GAAaQ,SAAc,GAAK,WAK7CR,GAAaA,GAAarU,SAAc,GAAK,WAK7CqU,GAAaA,GAAaS,IAAS,IAAM,MAKzCT,GAAaA,GAAaU,cAAmB,IAAM,gBAKnDV,GAAaA,GAAaW,gBAAqB,IAAM,kBAKrDX,GAAaA,GAAaY,cAAmB,IAAM,gBAzEnDZ,IAAY,GAoNhB,YAA6Ba,EAAQC,GAEjC,OAAOC,IADMC,SAAgBH,GACGI,kBAA8BH,GAalE,WAA6BD,EAAQC,GAEjC,OAAOC,IADMC,SAAgBH,GACGI,kBAA8BH,GAalE,YAAiCD,EAAQC,GAGrC,OAAOC,IADoBr0I,EADds0I,OAAgBH,GACGI,sBACeH,GAYnD,YAA+BD,EAAQK,GACnC,MAAMx0I,GAAOs0I,SAAgBH,GACvB1qC,GAAMzpG,EAAKu0I,qBAAgCC,GACjD,QAAmB,IAAR/qC,GAAqB,CAC5B,GAAI+qC,IAAWlB,GAAaW,gBACxB,OAAOj0I,EAAKu0I,qBAAgCjB,GAAahB,SAExD,GAAIkC,IAAWlB,GAAaY,cAC7B,OAAOl0I,EAAKu0I,qBAAgCjB,GAAaC,OAGjE,OAAO9pC,GAkGX,YAAuBzpG,GACnB,IAAKA,EAAKu0I,iBACN,MAAM,IAAI5/F,MAAO,6CAA4C30C,EAAKu0I,iHAwF1E,YAA6Bv0I,EAAMgf,GAC/B,QAAShZ,EAAIgZ,EAAOhZ,GAAI,EAAIA,IACxB,QAAuB,IAAZhG,EAAKgG,GACZ,OAAOhG,EAAKgG,GAGpB,MAAM,IAAI2uC,MAAM,0CAKpB,YAAqBx9B,GACjB,MAAO4/G,EAAGhvH,GAAKoP,EAAK5N,MAAM,KAC1B,MAAO,CAAEkrI,OAAQ1d,EAAG2d,SAAU3sI,GAqDlC,MAAM4sI,GAAqB,uGAErBC,GAAgB,GAChBC,GAAqB,oNAC3B,IAAIC,GAAS,OAATA,OAAS,IAECA,GAAU7B,MAAW,GAAK,QACpC6B,GAAUA,GAAUC,SAAc,GAAK,WACvCD,GAAUA,GAAU1B,KAAU,GAAK,OACnC0B,GAAUA,GAAUE,SAAc,GAAK,WALvCF,IAAS,GAOTG,GAAQ,OAARA,OAAQ,IAECA,GAASC,SAAc,GAAK,WACrCD,GAASA,GAASE,MAAW,GAAK,QAClCF,GAASA,GAAS11G,KAAU,GAAK,OACjC01G,GAASA,GAASG,MAAW,GAAK,QAClCH,GAASA,GAASI,QAAa,GAAK,UACpCJ,GAASA,GAASK,QAAa,GAAK,UACpCL,GAASA,GAASM,kBAAuB,GAAK,oBAC9CN,GAASA,GAASO,IAAS,GAAK,MAThCP,IAAQ,GAWRQ,GAAe,OAAfA,OAAe,IAECA,GAAgBC,WAAgB,GAAK,aACrDD,GAAgBA,GAAgBE,KAAU,GAAK,OAC/CF,GAAgBA,GAAgBG,OAAY,GAAK,SACjDH,GAAgBA,GAAgBI,KAAU,GAAK,OAL/CJ,IAAe,GA4BnB,YAAoBp1I,EAAOo+F,EAAQ01C,EAAQ2B,IACvC,IAAIltF,GA4mBR,YAAgBvoD,GACZ,GAAIk3F,GAAOl3F,GACP,OAAOA,EAEX,GAAqB,iBAAVA,IAAuBwgG,MAAMxgG,GACpC,OAAO,IAAIk/B,KAAKl/B,GAEpB,GAAqB,iBAAVA,EAAoB,CAE3B,GADAA,EAAQA,EAAMka,OACV,kCAAkCw3E,KAAK1xF,GAAQ,CAQ/C,MAAO8O,GAAGpH,EAAI,EAAG8+B,GAAI,GAAKxmC,EAAMkJ,MAAM,KAAKrJ,IAAKwY,KAASA,IACzD,OAAOq9H,GAAW5mI,GAAGpH,EAAI,EAAG8+B,IAEhC,MAAMmvG,EAAWpxI,WAAWvE,GAE5B,IAAKwgG,MAAMxgG,EAAQ21I,GACf,OAAO,IAAIz2G,KAAKy2G,GAEpB,IAAItxI,GACJ,GAAIA,GAAQrE,EAAMqE,MAAMiwI,IACpB,OAaZ,YAAyBjwI,GACrB,MAAMkkD,EAAO,IAAIrpB,KAAK,GACtB,IAAI02G,EAAS,EACTC,GAAQ,EAEZ,MAAMC,GAAazxI,EAAM,GAAKkkD,EAAKwtF,eAAiBxtF,EAAKytF,YACnDC,EAAa5xI,EAAM,GAAKkkD,EAAK2tF,YAAc3tF,EAAK2B,SAElD7lD,EAAM,KACNuxI,EAASv2G,OAAOh7B,EAAM,GAAKA,EAAM,KACjCwxI,GAAQx2G,OAAOh7B,EAAM,GAAKA,EAAM,MAEpCyxI,GAAWp5I,KAAK6rD,EAAMlpB,OAAOh7B,EAAM,IAAKg7B,OAAOh7B,EAAM,IAAM,EAAGg7B,OAAOh7B,EAAM,KAC3E,MAAMqyH,GAAIr3F,OAAOh7B,EAAM,IAAM,GAAKuxI,EAC5BluI,GAAI23B,OAAOh7B,EAAM,IAAM,GAAKwxI,GAC5BtoI,GAAI8xB,OAAOh7B,EAAM,IAAM,GAIvB4yD,GAAKtpD,KAAKkpH,MAA2C,IAArCtyH,WAAW,MAAQF,EAAM,IAAM,KACrD4xI,SAAWv5I,KAAK6rD,EAAMmuE,GAAGhvH,GAAG6F,GAAG0pD,IACxB1O,EAlCQ4tF,CAAgB9xI,IAG/B,MAAMkkD,EAAO,IAAIrpB,KAAKl/B,GACtB,IAAKk3F,GAAO3uC,GACR,MAAM,IAAIjU,MAAO,sBAAqBt0C,kBAE1C,OAAOuoD,EA9oBI6tF,CAAOp2I,GAElBo+F,EAASi4C,GAD0BvC,EAAQ11C,IACnBA,EACxB,IACI/5F,GADA2lF,GAAQ,GAEZ,KAAOoU,GAEH,IADA/5F,GAAQmwI,GAAmB7tI,KAAKy3F,IAC5B/5F,GAQC,CACD2lF,GAAMzrF,KAAK6/F,GACX,MAVO,CACPpU,GAAQA,GAAMt6D,OAAOrrB,GAAM4S,MAAM,IACjC,MAAMq/H,GAAOtsD,GAAM3qB,MACnB,IAAKi3E,GACD,MAEJl4C,EAASk4C,GAIT,CAGR,IAAIC,GAAqBhuF,GAAKiuF,oBAC1Bf,KACAc,GAAqBE,GAAiBhB,GAAUc,IAChDhuF,GAmkBR,YAAgCA,EAAMktF,EAAU7/C,GAC5C,MAAM8gD,GAAe9gD,GAAU,EAAK,EAC9B2gD,GAAqBhuF,EAAKiuF,oBAEhC,OATJ,YAAwBjuF,EAAM8rF,GAC1B9rF,SAAO,IAAIrpB,KAAKqpB,EAAKppB,YAChBw3G,WAAWpuF,EAAKquF,aAAevC,GAC7B9rF,EAMAsuF,CAAetuF,EAAMmuF,IADLD,GAAiBhB,EAAUc,IACWA,KAvkBlDO,CAAuBvuF,GAAMktF,IAAU,IAElD,IAAInzF,GAAO,GACX0nC,UAAMvsF,QAAQuC,KACV,MAAM+2I,GA8Td,YAA0B34C,GACtB,GAAI44C,GAAa54C,GACb,OAAO44C,GAAa54C,GAExB,IAAI64C,EACJ,OAAQ74C,OAEC,QACA,SACA,MACD64C,EAAYC,GAAc9B,GAAgBI,KAAMhD,EAAiBE,aACjE,UACC,OACDuE,EAAYC,GAAc9B,GAAgBI,KAAMhD,EAAiBG,MACjE,UACC,QACDsE,EAAYC,GAAc9B,GAAgBI,KAAMhD,EAAiBC,QACjE,UAEC,IACDwE,EAAYE,GAAWvC,GAASC,SAAU,EAAG,GAAG,GAAO,GACvD,UAEC,KACDoC,EAAYE,GAAWvC,GAASC,SAAU,EAAG,GAAG,GAAM,GACtD,UAEC,MACDoC,EAAYE,GAAWvC,GAASC,SAAU,EAAG,GAAG,GAAO,GACvD,UAEC,OACDoC,EAAYE,GAAWvC,GAASC,SAAU,EAAG,GAAG,GAAO,GACvD,UAEC,IACDoC,EAAYG,GAAwB,GACpC,UAGC,KACDH,EAAYG,GAAwB,GAAG,GACvC,UAGC,MACDH,EAAYG,GAAwB,GACpC,UAEC,OACDH,EAAYG,GAAwB,GACpC,UAEC,QACA,IACDH,EAAYE,GAAWvC,GAASE,MAAO,EAAG,GAC1C,UACC,SACA,KACDmC,EAAYE,GAAWvC,GAASE,MAAO,EAAG,GAC1C,UAEC,MACDmC,EAAYC,GAAc9B,GAAgBG,OAAQ/C,EAAiBE,aACnE,UACC,OACDuE,EAAYC,GAAc9B,GAAgBG,OAAQ/C,EAAiBG,MACnE,UACC,QACDsE,EAAYC,GAAc9B,GAAgBG,OAAQ/C,EAAiBC,QACnE,UAEC,MACDwE,EACIC,GAAc9B,GAAgBG,OAAQ/C,EAAiBE,YAAaL,EAAUE,YAClF,UACC,OACD0E,EACIC,GAAc9B,GAAgBG,OAAQ/C,EAAiBG,KAAMN,EAAUE,YAC3E,UACC,QACD0E,EACIC,GAAc9B,GAAgBG,OAAQ/C,EAAiBC,OAAQJ,EAAUE,YAC7E,UAEC,IACD0E,EAAYI,GAAW,GACvB,UACC,KACDJ,EAAYI,GAAW,GACvB,UAEC,IACDJ,EAAYI,GAAW,GAAG,GAC1B,UAEC,IACDJ,EAAYE,GAAWvC,GAAS11G,KAAM,GACtC,UACC,KACD+3G,EAAYE,GAAWvC,GAAS11G,KAAM,GACtC,UAEC,QACA,KACD+3G,EAAYE,GAAWvC,GAASO,IAAK,GACrC,UACC,MACD8B,EACIC,GAAc9B,GAAgBE,KAAM9C,EAAiBE,YAAaL,EAAUE,YAChF,UACC,OACD0E,EAAYC,GAAc9B,GAAgBE,KAAM9C,EAAiBG,KAAMN,EAAUE,YACjF,UACC,QACD0E,EACIC,GAAc9B,GAAgBE,KAAM9C,EAAiBC,OAAQJ,EAAUE,YAC3E,UACC,SACD0E,EAAYC,GAAc9B,GAAgBE,KAAM9C,EAAiBI,MAAOP,EAAUE,YAClF,UAEC,QACA,SACA,MACD0E,EAAYC,GAAc9B,GAAgBE,KAAM9C,EAAiBE,aACjE,UACC,OACDuE,EAAYC,GAAc9B,GAAgBE,KAAM9C,EAAiBG,MACjE,UACC,QACDsE,EAAYC,GAAc9B,GAAgBE,KAAM9C,EAAiBC,QACjE,UACC,SACDwE,EAAYC,GAAc9B,GAAgBE,KAAM9C,EAAiBI,OACjE,UAEC,QACA,SACA,MACDqE,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBE,aACvE,UACC,OACDuE,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBG,MACvE,UACC,QACDsE,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBC,QACvE,UAEC,QACA,SACA,MACDwE,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBE,YAAaL,EAAUE,YAAY,GAC1G,UACC,OACD0E,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBG,KAAMN,EAAUE,YAAY,GACnG,UACC,QACD0E,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBC,OAAQJ,EAAUE,YAAY,GACrG,UAEC,QACA,SACA,MACD0E,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBE,YAAaL,EAAUC,QAAQ,GACtG,UACC,OACD2E,EACIC,GAAc9B,GAAgBC,WAAY7C,EAAiBG,KAAMN,EAAUC,QAAQ,GACvF,UACC,QACD2E,EAAYC,GAAc9B,GAAgBC,WAAY7C,EAAiBC,OAAQJ,EAAUC,QAAQ,GACjG,UAEC,IACD2E,EAAYE,GAAWvC,GAASG,MAAO,GAAG,IAC1C,UACC,KACDkC,EAAYE,GAAWvC,GAASG,MAAO,GAAG,IAC1C,UAEC,IACDkC,EAAYE,GAAWvC,GAASG,MAAO,GACvC,UAEC,KACDkC,EAAYE,GAAWvC,GAASG,MAAO,GACvC,UAEC,IACDkC,EAAYE,GAAWvC,GAASI,QAAS,GACzC,UACC,KACDiC,EAAYE,GAAWvC,GAASI,QAAS,GACzC,UAEC,IACDiC,EAAYE,GAAWvC,GAASK,QAAS,GACzC,UACC,KACDgC,EAAYE,GAAWvC,GAASK,QAAS,GACzC,UAEC,IACDgC,EAAYE,GAAWvC,GAASM,kBAAmB,GACnD,UACC,KACD+B,EAAYE,GAAWvC,GAASM,kBAAmB,GACnD,UACC,MACD+B,EAAYE,GAAWvC,GAASM,kBAAmB,GACnD,UAEC,QACA,SACA,MACD+B,EAAYK,GAAe7C,GAAU7B,OACrC,UAEC,QACDqE,EAAYK,GAAe7C,GAAUE,UACrC,UAEC,QACA,SACA,UAEA,QACA,SACA,MACDsC,EAAYK,GAAe7C,GAAUC,UACrC,UAEC,WACA,WAEA,OACDuC,EAAYK,GAAe7C,GAAU1B,MACrC,cAEA,OAAO,KAEfiE,UAAa54C,GAAU64C,EAChBA,EAjjBmBM,CAAiBv3I,IACvCsiD,IAAQy0F,GAAgBA,GAAcxuF,GAAMurF,EAAQyC,IACtC,OAAVv2I,GAAmB,IACfA,GAAM+G,QAAQ,WAAY,IAAIA,QAAQ,MAAO,OAElDu7C,GAYX,YAAoBoG,EAAMD,EAAOF,GAK7B,MAAMivF,GAAU,IAAIt4G,KAAK,GAMzBs4G,UAAQxB,YAAYttF,EAAMD,EAAOF,GAIjCivF,GAAQttF,SAAS,EAAG,EAAG,GAChBstF,GAEX,YAAwB1D,EAAQ11C,GAC5B,MAAMrjE,EAzhBV,YAAqB+4G,GACjB,OAAOG,SAAgBH,GAAQI,gBAwhBduD,CAAY3D,GAE7B,GADAS,GAAcx5G,GAAYw5G,GAAcx5G,IAAa,GACjDw5G,GAAcx5G,GAAUqjE,GACxB,OAAOm2C,GAAcx5G,GAAUqjE,GAEnC,IAAIs5C,GAAc,GAClB,OAAQt5C,OACC,YACDs5C,GAAcC,GAAoB7D,EAAQjB,EAAYD,OACtD,UACC,aACD8E,GAAcC,GAAoB7D,EAAQjB,EAAYC,QACtD,UACC,WACD4E,GAAcC,GAAoB7D,EAAQjB,EAAYE,MACtD,UACC,WACD2E,GAAcC,GAAoB7D,EAAQjB,EAAYG,MACtD,UACC,YACD0E,GAAcE,EAAoB9D,EAAQjB,EAAYD,OACtD,UACC,aACD8E,GAAcE,EAAoB9D,EAAQjB,EAAYC,QACtD,UACC,WACD4E,GAAcE,EAAoB9D,EAAQjB,EAAYE,MACtD,UACC,WACD2E,GAAcE,EAAoB9D,EAAQjB,EAAYG,MACtD,UACC,QACD,MAAM6E,GAAYC,GAAehE,EAAQ,aACnCiE,EAAYD,GAAehE,EAAQ,aACzC4D,GAAcM,GAAeC,GAAwBnE,EAAQjB,EAAYD,OAAQ,CAACiF,GAAWE,IAC7F,UACC,SACD,MAAMG,GAAaJ,GAAehE,EAAQ,cACpCqE,GAAaL,GAAehE,EAAQ,cAC1C4D,GAAcM,GAAeC,GAAwBnE,EAAQjB,EAAYC,QAAS,CAACoF,GAAYC,KAC/F,UACC,OACD,MAAMC,GAAWN,GAAehE,EAAQ,YAClCuE,GAAWP,GAAehE,EAAQ,YACxC4D,GACIM,GAAeC,GAAwBnE,EAAQjB,EAAYE,MAAO,CAACqF,GAAUC,KACjF,UACC,OACD,MAAMC,GAAWR,GAAehE,EAAQ,YAClCyE,GAAWT,GAAehE,EAAQ,YACxC4D,GACIM,GAAeC,GAAwBnE,EAAQjB,EAAYG,MAAO,CAACsF,GAAUC,KAGzF,OAAIb,KACAnD,GAAcx5G,GAAUqjE,GAAUs5C,IAE/BA,GAEX,YAAwB5wI,EAAK0xI,GACzB,OAAIA,IACA1xI,EAAMA,EAAIC,QAAQ,cAAe,SAAU1C,EAAOvE,IAC9C,OAAsB,MAAd04I,GAAsB14I,MAAO04I,EAAcA,EAAW14I,IAAOuE,KAGtEyC,EAEX,YAAmB2xI,EAAKC,EAAQC,EAAY,IAAKz+H,GAAM0+H,IACnD,IAAIC,EAAM,IACNJ,EAAM,GAAMG,IAAWH,GAAO,KAC1BG,GACAH,EAAa,EAANA,GAGPA,GAAOA,EACPI,EAAMF,IAGd,IAAIG,GAASjhD,OAAO4gD,GACpB,KAAOK,GAAOl8I,OAAS87I,GACnBI,GAAS,IAAMA,GAEnB,OAAI5+H,KACA4+H,GAASA,GAAOt4I,OAAOs4I,GAAOl8I,OAAS87I,IAEpCG,EAAMC,GASjB,YAAoBltI,EAAMR,EAAMzN,EAAS,EAAGuc,IAAO,EAAO0+H,IAAU,GAChE,OAAO,SAAUrwF,EAAMurF,IACnB,IAAIwC,GAgBZ,YAAqBA,EAAM/tF,GACvB,OAAQ+tF,QACC1B,GAASC,SACV,OAAOtsF,EAAK7G,mBACXkzF,GAASE,MACV,OAAOvsF,EAAK9G,gBACXmzF,GAAS11G,KACV,OAAOqpB,EAAK/G,eACXozF,GAASG,MACV,OAAOxsF,EAAKwwF,gBACXnE,GAASI,QACV,OAAOzsF,EAAKquF,kBACXhC,GAASK,QACV,OAAO1sF,EAAKywF,kBACXpE,GAASM,kBACV,OAAO3sF,EAAK0wF,uBACXrE,GAASO,IACV,OAAO5sF,EAAK2wF,iBAEZ,MAAM,IAAI5kG,MAAO,2BAA0BgiG,QAnCpC6C,CAAYvtI,EAAM28C,GAI7B,IAHI5qD,EAAS,GAAK24I,IAAQ34I,KACtB24I,IAAQ34I,GAERiO,IAASgpI,GAASG,MACL,IAATuB,KAAyB,KAAX34I,IACd24I,GAAO,YAGN1qI,IAASgpI,GAASM,kBACvB,OAnBZ,YAAiCkE,EAAcV,GAE3C,OAAOW,GADiBD,EAAc,GACzB54I,OAAO,EAAGk4I,GAiBRY,CAAwBhD,GAAMlrI,GAEzC,MAAMmuI,GAAcC,GAAsB1F,GAAQb,GAAaK,WAC/D,OAAOmG,GAAUnD,GAAMlrI,EAAMmuI,GAAar/H,GAAM0+H,KA4BxD,YAAuBhtI,EAAMmoI,EAAO2F,EAAOrH,EAAUC,OAAQqH,IAAW,GACpE,OAAO,SAAUpxF,GAAMurF,GACnB,OAMR,YAA4BvrF,EAAMurF,EAAQloI,EAAMmoI,GAAO2F,GAAMC,GACzD,OAAQ/tI,QACCwpI,GAAgBG,OACjB,OAznBZ,YAA6BzB,EAAQ8F,EAAW7F,GAC5C,MAAMp0I,IAAOs0I,SAAgBH,GAEvB+F,EAAS7F,GADI,CAACr0I,GAAKu0I,oBAAgCv0I,GAAKu0I,yBACf0F,GAC/C,OAAO5F,GAAoB6F,EAAQ9F,GAqnBpB+F,CAAoBhG,EAAQ4F,GAAM3F,IAAOxrF,EAAK9G,iBACpD2zF,GAAgBE,KACjB,OA7oBZ,YAA2BxB,EAAQ8F,EAAW7F,GAC1C,MAAMp0I,IAAOs0I,SAAgBH,GAEvBiG,EAAO/F,GADI,CAACr0I,GAAKu0I,kBAA8Bv0I,GAAKu0I,uBACf0F,GAC3C,OAAO5F,GAAoB+F,EAAMhG,GAyoBlBiG,CAAkBlG,EAAQ4F,GAAM3F,IAAOxrF,EAAK2wF,eAClD9D,GAAgBC,WACjB,MAAM4E,GAAe1xF,EAAKwwF,WACpBmB,GAAiB3xF,EAAKquF,aAC5B,GAAI+C,EAAU,CACV,MAAMj2E,GA7YtB,YAAsCowE,GAClC,MAAMn0I,GAAOs0I,SAAgBH,GAC7BqG,UAAcx6I,IACAA,EAAKu0I,iBAA4B,IAAiC,IACnEr0I,IAAK+5C,IACM,iBAATA,GACAwgG,GAAYxgG,IAEhB,CAACwgG,GAAYxgG,GAAK,IAAKwgG,GAAYxgG,GAAK,MAqYzBygG,CAA6BvG,GACrCwG,GAlXtB,YAAkCxG,EAAQ8F,EAAW7F,GACjD,MAAMp0I,IAAOs0I,SAAgBH,GAC7BqG,GAAcx6I,IACd,MAIM26I,EAAatG,GAJI,CACnBr0I,GAAKu0I,iBAA4B,GACjCv0I,GAAKu0I,iBAA4B,IAEkB0F,IAAc,GACrE,OAAO5F,GAAoBsG,EAAYvG,IAAU,GA0WlBwG,CAAyBzG,EAAQ4F,GAAM3F,IACpDp1H,GAAQ+kD,GAAMhR,UAAU9Y,KAC1B,GAAIl4C,MAAM4E,QAAQszC,IAAO,CAErB,MAAOj4C,GAAMg4B,IAAMigB,GACb4gG,EAAYP,IAAgBt4I,GAAKyyI,OAAS8F,IAAkBv4I,GAAK0yI,QACjEoG,EAAYR,GAAetgH,GAAGy6G,OAC/B6F,KAAiBtgH,GAAGy6G,OAAS8F,GAAiBvgH,GAAG06G,QAWtD,GAAI1yI,GAAKyyI,MAAQz6G,GAAGy6G,OAChB,GAAIoG,GAAaC,EACb,OAAO,UAGND,GAAaC,EAClB,OAAO,UAIP7gG,GAAKw6F,QAAU6F,IAAgBrgG,GAAKy6F,UAAY6F,GAChD,OAAO,EAGf,OAAO,IAEX,IAAc,IAAVv7H,GACA,OAAO27H,GAAW37H,IAI1B,OA9sBZ,YAA6Bm1H,EAAQ8F,EAAW7F,GAC5C,MAAMp0I,IAAOs0I,SAAgBH,GAIvB4G,EAAO1G,GAHI,CACbr0I,GAAKu0I,wBAAoCv0I,GAAKu0I,6BAEP0F,GAC3C,OAAO5F,GAAoB0G,EAAM3G,GAwsBlB4G,CAAoB7G,EAAQ4F,GAAM3F,IAAOkG,GAAe,GAAK,EAAI,QACvE7E,GAAgBI,KACjB,OAzpBZ,YAA2B1B,EAAQC,GAG/B,OAAOC,IADUr0I,EADJs0I,OAAgBH,GACPI,YACeH,GAspBtB6G,CAAkB9G,EAAQC,IAAOxrF,EAAK7G,eAAiB,EAAI,EAAI,WAOtE,MAAM,IAAIpN,MAAO,+BADE1oC,KAC4BivI,CAjE5CC,CAAmBvyF,GAAMurF,EAAQloI,EAAMmoI,EAAO2F,EAAMC,KAyEnE,YAAwB5F,GACpB,OAAO,SAAUxrF,EAAMurF,EAAQn2I,IAC3B,MAAM45B,IAAO,EAAK55B,GACZg7I,EAAYa,GAAsB1F,EAAQb,GAAaK,WACvDc,GAAQ78G,GAAO,EAAI5pB,KAAKkpH,MAAMt/F,GAAO,IAAM5pB,KAAKotI,KAAKxjH,GAAO,IAClE,OAAQw8G,QACCU,GAAU7B,MACX,OAASr7G,IAAQ,EAAK,IAAM,IAAMkiH,GAAUrF,GAAO,EAAGuE,GAClDc,GAAU9rI,KAAK6H,IAAI+hB,GAAO,IAAK,EAAGohH,QACrClE,GAAUC,SACX,MAAO,OAAUn9G,IAAQ,EAAK,IAAM,IAAMkiH,GAAUrF,GAAO,EAAGuE,QAC7DlE,GAAU1B,KACX,MAAO,OAAUx7G,IAAQ,EAAK,IAAM,IAAMkiH,GAAUrF,GAAO,EAAGuE,GAAa,IACvEc,GAAU9rI,KAAK6H,IAAI+hB,GAAO,IAAK,EAAGohH,QACrClE,GAAUE,SACX,OAAe,IAAXh3I,GACO,KAGE45B,IAAQ,EAAK,IAAM,IAAMkiH,GAAUrF,GAAO,EAAGuE,GAAa,IAC/Dc,GAAU9rI,KAAK6H,IAAI+hB,GAAO,IAAK,EAAGohH,WAG1C,MAAM,IAAIrkG,MAAO,uBAAsBy/F,QAUvD,YAA6BiH,GACzB,OAAOtF,GAAWsF,EAASt5F,cAAes5F,EAASv5F,WAAYu5F,EAASx5F,WAN3D,EAMmFw5F,EAAS9B,WAE7G,YAAoB9tI,EAAM6vI,GAAa,GACnC,OAAO,SAAU1yF,EAAMurF,IACnB,IAAI1xI,GACJ,GAAI64I,EAAY,CACZ,MAAMC,EAA4B,IAAIh8G,KAAKqpB,EAAK7G,cAAe6G,EAAK9G,WAAY,GAAGy3F,SAAW,EACxF/uF,GAAQ5B,EAAK/G,UACnBp/C,GAAS,EAAIuL,KAAKkpH,OAAO1sE,GAAQ+wF,GAA6B,OAE7D,CACD,MAAMC,EAAYC,GAAoB7yF,GAGhC8yF,GAnBlB,YAAgC3yF,GAC5B,MAAM4yF,EAAiB5F,GAAWhtF,EAHtB,EAGqC,GAAGwwF,SACpD,OAAOxD,GAAWhtF,EAAM,EAAG,GAAM4yF,GAHpB,IAG6DC,IAAgBD,GAiB/DE,CAAuBL,EAAUz5F,eAC9Csd,GAAOm8E,EAAUh8G,UAAYk8G,GAAWl8G,UAC9C/8B,GAAS,EAAIuL,KAAKiM,MAAMolD,GAAO,QAEnC,OAAOy6E,GAAUr3I,GAAQgJ,EAAMouI,GAAsB1F,GAAQb,GAAaK,aAMlF,YAAiCloI,EAAM8O,GAAO,GAC1C,OAAO,SAAUquC,EAAMurF,IAGnB,OAAO2F,GADmB0B,GADY5yF,GACF7G,cACAt2C,EAAMouI,GAAsB1F,GAAQb,GAAaK,WAAYp5H,IAGzG,MAAM88H,GAAe,GA0PrB,YAA0BvB,EAAUgG,GAGhChG,EAAWA,EAAS1uI,QAAQ,KAAM,IAClC,MAAM20I,EAA0Bx8G,KAAK82D,MAAM,yBAA2By/C,GAAY,IAClF,OAAOj1C,MAAMk7C,GAA2BD,EAAWC,EAwFvD,YAAgB17I,GACZ,OAAOA,aAAiBk/B,OAASshE,MAAMxgG,EAAMioG,WAUjD,MAAM0zC,GAAuB,8BA2X7B,YAA2Br5F,GACvB,MAAMlgD,EAASm+F,SAASj+C,GACxB,GAAIk+C,MAAMp+F,GACN,MAAM,IAAIkyC,MAAM,wCAA0CgO,GAE9D,OAAOlgD,EA8GX,YAA0Bw5I,EAAWhwI,GACjCA,EAAOs1G,mBAAmBt1G,GAC1B,UAAWiwI,KAAUD,EAAU1yI,MAAM,KAAM,CACvC,MAAM4yI,GAAUD,EAAOv7I,QAAQ,MACxBy7I,GAAYC,IAA0B,GAAXF,GAAgB,CAACD,EAAQ,IAAM,CAACA,EAAO5kI,MAAM,EAAG6kI,IAAUD,EAAO5kI,MAAM6kI,GAAU,IACnH,GAAIC,GAAW7hI,SAAWtO,EACtB,OAAOq2G,mBAAmB+5B,GAGlC,OAAO,SAsCLC,SAAN,QACItxI,YAAYuxI,EAAkBC,GAAkBC,GAAOvpH,GACnDhoB,KAAKqxI,iBAAmBA,EACxBrxI,KAAKsxI,iBAAmBA,GACxBtxI,KAAKuxI,MAAQA,GACbvxI,KAAKgoB,UAAYA,EACjBhoB,KAAKwxI,gBAAkB,KACvBxxI,KAAKyxI,gBAAkB,KACvBzxI,KAAK0xI,gBAAkB,GACvB1xI,KAAK2xI,UAAY,KAEjBC,UAAMz8I,GACN6K,KAAK6xI,eAAe7xI,KAAK0xI,iBACzB1xI,KAAK0xI,gBAAmC,iBAAVv8I,EAAqBA,EAAMkJ,MAAM,OAAS,GACxE2B,KAAK8xI,cAAc9xI,KAAK0xI,iBACxB1xI,KAAK8xI,cAAc9xI,KAAK2xI,WAExBI,YAAQ58I,GACR6K,KAAK6xI,eAAe7xI,KAAK2xI,WACzB3xI,KAAK8xI,cAAc9xI,KAAK0xI,iBACxB1xI,KAAKwxI,gBAAkB,KACvBxxI,KAAKyxI,gBAAkB,KACvBzxI,KAAK2xI,UAA6B,iBAAVx8I,EAAqBA,EAAMkJ,MAAM,OAASlJ,EAC9D6K,KAAK2xI,aACDK,SAAoBhyI,KAAK2xI,WACzB3xI,KAAKwxI,gBAAkBxxI,KAAKqxI,iBAAiBjrI,KAAKpG,KAAK2xI,WAAW5kI,SAGlE/M,KAAKyxI,gBAAkBzxI,KAAKsxI,iBAAiBlrI,KAAKpG,KAAK2xI,WAAW5kI,UAI9EklI,YACI,GAAIjyI,KAAKwxI,gBAAiB,CACtB,MAAMU,EAAkBlyI,KAAKwxI,gBAAgBr9E,KAAKn0D,KAAK2xI,WACnDO,GACAlyI,KAAKmyI,sBAAsBD,WAG1BlyI,KAAKyxI,gBAAiB,CAC3B,MAAMW,EAAkBpyI,KAAKyxI,gBAAgBt9E,KAAKn0D,KAAK2xI,WACnDS,GACApyI,KAAKqyI,sBAAsBD,IAIvCC,sBAAsBlzE,GAClBA,EAAQmzE,iBAAkBC,IAAWvyI,KAAKwyI,aAAaD,GAAOt9I,IAAKs9I,GAAOlzE,eAC1EF,EAAQszE,mBAAoBF,IAAWvyI,KAAKwyI,aAAaD,GAAOt9I,IAAKs9I,GAAOlzE,eAC5EF,EAAQuzE,mBAAoBH,KACpBA,GAAO3zH,eACP5e,KAAKwyI,aAAaD,GAAOt9I,KAAK,KAI1Ck9I,sBAAsBhzE,GAClBA,EAAQmzE,iBAAkBC,KACtB,GAA2B,iBAAhBA,GAAOx3I,KAId,MAAM,IAAI0uC,MAAO,kEAAgEkpG,SAAWJ,GAAOx3I,SAHnGiF,KAAKwyI,aAAaD,GAAOx3I,MAAM,EAGoEA,GAG3GokE,EAAQuzE,mBAAoBH,IAAWvyI,KAAKwyI,aAAaD,GAAOx3I,MAAM,IAU1E+2I,cAAcc,GACNA,IACI/7I,MAAM4E,QAAQm3I,IAAgBA,aAAuB5zI,IACrD4zI,EAAYhgJ,QAASg/I,IAAU5xI,KAAKwyI,aAAaZ,IAAO,IAGxD3+I,OAAOC,KAAK0/I,GAAahgJ,QAAQg/I,IAAS5xI,KAAKwyI,aAAaZ,KAASgB,EAAYhB,OAQ7FC,eAAee,GACPA,IACI/7I,MAAM4E,QAAQm3I,IAAgBA,aAAuB5zI,IACrD4zI,EAAYhgJ,QAASg/I,IAAU5xI,KAAKwyI,aAAaZ,IAAO,IAGxD3+I,OAAOC,KAAK0/I,GAAahgJ,QAAQg/I,IAAS5xI,KAAKwyI,aAAaZ,IAAO,KAI/EY,aAAaZ,EAAOp8C,KAChBo8C,EAAQA,EAAMviI,SAEVuiI,EAAMvzI,MAAM,QAAQzL,QAAQg/I,KACpBp8C,GACAx1F,KAAKgoB,UAAU9R,SAASlW,KAAKuxI,MAAMpiG,cAAeyiG,IAGlD5xI,KAAKgoB,UAAUnQ,YAAY7X,KAAKuxI,MAAMpiG,cAAeyiG,OAMzER,SAAQz4I,UAAR,0BAAoGy4I,GAlsFDv4I,MAksF0BA,OAlsF1BA,MAksFyDA,OAlsFzDA,MAksFwFA,OAlsFxFA,MAksFkHA,SACrNu4I,EAAQyB,UAnsF2Fh6I,MAmsFnG,MAAwFu4I,EAAxFhjH,mFAjHMgjH,MAuPN,SACItxI,YAAYgzI,EAAWC,EAASj/H,GAAOoW,IACnClqB,KAAK8yI,UAAYA,EACjB9yI,KAAK+yI,QAAUA,EACf/yI,KAAK8T,MAAQA,GACb9T,KAAKkqB,MAAQA,GAEbmW,YACA,OAAsB,IAAfrgC,KAAK8T,KAAU,CAEtB6hG,WACA,OAAO31G,KAAK8T,QAAU9T,KAAKkqB,MAAQ,EAEnC8oH,WACA,OAAOhzI,KAAK8T,MAAQ,GAAM,EAE1Bm/H,UACA,OAAQjzI,KAAKgzI,UAqGfE,SAAN,QACIpzI,YAAYqzI,EAAgBC,GAAWC,IACnCrzI,KAAKmzI,eAAiBA,EACtBnzI,KAAKozI,UAAYA,GACjBpzI,KAAKqzI,SAAWA,GAChBrzI,KAAKszI,SAAW,KAChBtzI,KAAKuzI,eAAgB,EACrBvzI,KAAKwzI,QAAU,KAMfT,YAAQA,GACR/yI,KAAKszI,SAAWP,EAChB/yI,KAAKuzI,eAAgB,EAoBrBE,iBAAarjI,GAQbpQ,KAAK0zI,WAAatjI,EAElBqjI,mBACA,OAAOzzI,KAAK0zI,WAMZC,kBAAcx+I,GAIVA,IACA6K,KAAKozI,UAAYj+I,GAOzB88I,YACI,GAAIjyI,KAAKuzI,cAAe,CACpBvzI,KAAKuzI,eAAgB,EAErB,MAAMp+I,EAAQ6K,KAAKszI,UACdtzI,KAAKwzI,SAAWr+I,IAcb6K,KAAKwzI,QAAUxzI,KAAKqzI,SAASjtI,KAAKjR,GAAO4X,OAAO/M,KAAKyzI,eAIjE,GAAIzzI,KAAKwzI,QAAS,CACd,MAAMr0E,EAAUn/D,KAAKwzI,QAAQr/E,KAAKn0D,KAAKszI,UACnCn0E,GACAn/D,KAAK4zI,cAAcz0E,IAG/By0E,cAAcz0E,GACV,MAAM00E,GAAgB7zI,KAAKmzI,eAC3Bh0E,EAAQ20E,iBAAiB,CAAC/4I,GAAMg5I,EAAuBC,MACnD,GAA0B,MAAtBj5I,GAAKk5I,cAILJ,GAAcK,mBAAmBl0I,KAAKozI,UAAW,IAAIe,GAAep5I,GAAKA,KAAMiF,KAAKszI,UAAU,GAAI,GAAsB,OAAjBU,QAAwBp/I,EAAYo/I,YAEtH,MAAhBA,GACLH,GAAcpwH,OAAiC,OAA1BswH,OAAiCn/I,EAAYm/I,WAEnC,OAA1BA,EAAgC,CACrC,MAAMz5G,GAAOu5G,GAAcx+I,IAAI0+I,GAC/BF,GAAcO,KAAK95G,GAAM05G,IACzBK,GAAgB/5G,GAAMv/B,OAG9B,QAASD,GAAI,EAAGw5I,EAAOT,GAAc9hJ,OAAQ+I,GAAIw5I,EAAMx5I,KAAK,CAExD,MAAMmC,GAAUs3I,GADcl/I,IAAIyF,IACVmC,QACxBA,GAAQ6W,MAAQhZ,GAChBmC,GAAQitB,MAAQoqH,EAChBr3I,GAAQ81I,QAAU/yI,KAAKszI,SAE3Bn0E,EAAQq1E,sBAAuBjC,KAE3B8B,GADgBR,GAAcx+I,IAAIk9I,GAAOyB,cAChBzB,oCASHkC,EAAKnrI,IAC/B,OAAO,GAGf4pI,SAAQv6I,UAAR,0BAAoGu6I,GApkGDr6I,MAokG0BA,OApkG1BA,MAokG0DA,OApkG1DA,MAokGqFA,SACxLq6I,EAAQL,UArkG2Fh6I,MAqkGnG,MAAwFq6I,EAAxF9kH,gIAtIM8kH,MAiJN,YAAyB54G,EAAMi4G,GAC3Bj4G,EAAKr9B,QAAQ61I,UAAYP,EAAOx3I,SAwJ9B25I,SAAN,QACI50I,YAAYqzI,EAAgBwB,IACxB30I,KAAKmzI,eAAiBA,EACtBnzI,KAAK40I,SAAW,IAAIC,GACpB70I,KAAK80I,iBAAmB,KACxB90I,KAAK+0I,iBAAmB,KACxB/0I,KAAKg1I,aAAe,KACpBh1I,KAAKi1I,aAAe,KACpBj1I,KAAK80I,iBAAmBH,GAKxBO,SAAKC,GACLn1I,KAAK40I,SAAS9B,UAAY9yI,KAAK40I,SAASM,KAAOC,EAC/Cn1I,KAAKo1I,cAKLC,aAASV,GACTW,GAAe,WAAYX,GAC3B30I,KAAK80I,iBAAmBH,EACxB30I,KAAKg1I,aAAe,KACpBh1I,KAAKo1I,cAKLG,aAASZ,GACTW,GAAe,WAAYX,GAC3B30I,KAAK+0I,iBAAmBJ,EACxB30I,KAAKi1I,aAAe,KACpBj1I,KAAKo1I,cAETA,cACQp1I,KAAK40I,SAAS9B,UACT9yI,KAAKg1I,eACNh1I,KAAKmzI,eAAe/rI,QACpBpH,KAAKi1I,aAAe,KAChBj1I,KAAK80I,mBACL90I,KAAKg1I,aACDh1I,KAAKmzI,eAAee,mBAAmBl0I,KAAK80I,iBAAkB90I,KAAK40I,YAK1E50I,KAAKi1I,eACNj1I,KAAKmzI,eAAe/rI,QACpBpH,KAAKg1I,aAAe,KAChBh1I,KAAK+0I,mBACL/0I,KAAKi1I,aACDj1I,KAAKmzI,eAAee,mBAAmBl0I,KAAK+0I,iBAAkB/0I,KAAK40I,0CAWzDH,EAAKnrI,IAC/B,OAAO,GAGforI,SAAK/7I,UAAL,0BAAiG+7I,GA5yGE77I,MA4yGoBA,OA5yGpBA,MA4yGoDA,SACvJ67I,EAAK7B,UA7yG8Fh6I,MA6yGnG,MAAqF67I,EAArFtmH,0FApEMsmH,MAkFN,SACI50I,cACIE,KAAK8yI,UAAY,KACjB9yI,KAAKk1I,KAAO,MAGpB,YAAwBxwH,EAAUiwH,GAE9B,GADgCA,IAAeA,EAAYT,mBAEvD,MAAM,IAAIzqG,MAAO,GAAE/kB,2CAAiDiuH,SAAWgC,QAWvF,MAAMa,GAAsB,UAQ5B,YAA2BC,GACvB,OAAOA,IAAeD,GAg9C1B,SACI11I,YAAY41I,EAAmBC,GAC3B31I,KAAK01I,kBAAoBA,EACzB11I,KAAK21I,aAAeA,EACpB31I,KAAK41I,UAAW,EAEpB7oI,SACI/M,KAAK41I,UAAW,EAChB51I,KAAK01I,kBAAkBxB,mBAAmBl0I,KAAK21I,cAEnD/hI,UACI5T,KAAK41I,UAAW,EAChB51I,KAAK01I,kBAAkBtuI,QAE3ByuI,aAAaC,GACLA,IAAY91I,KAAK41I,SACjB51I,KAAK+M,UAEC+oI,GAAW91I,KAAK41I,UACtB51I,KAAK4T,eAsEXmiI,SAAN,QACIj2I,cACIE,KAAKg2I,cAAe,EACpBh2I,KAAKi2I,WAAa,EAClBj2I,KAAKk2I,oBAAsB,EAC3Bl2I,KAAKm2I,mBAAoB,EAEzBC,aAASC,GACTr2I,KAAKs2I,UAAYD,EACO,IAApBr2I,KAAKi2I,YACLj2I,KAAKu2I,qBAAoB,GAIjCC,WACI,OAAOx2I,KAAKi2I,aAGhBQ,YAAYn8G,GACHt6B,KAAK02I,gBACN12I,KAAK02I,cAAgB,IAEzB12I,KAAK02I,cAAchjJ,KAAK4mC,GAG5Bq8G,WAAWxhJ,GACP,MAAMyhJ,GAAUzhJ,GAAS6K,KAAKs2I,UAC9B,YAAKH,kBAAoBn2I,KAAKm2I,mBAAqBS,GACnD52I,KAAKk2I,sBACDl2I,KAAKk2I,sBAAwBl2I,KAAKi2I,aAClCj2I,KAAKu2I,qBAAqBv2I,KAAKm2I,mBAC/Bn2I,KAAKk2I,oBAAsB,EAC3Bl2I,KAAKm2I,mBAAoB,GAEtBS,GAEXL,oBAAoBM,GAChB,GAAI72I,KAAK02I,eAAiBG,IAAe72I,KAAKg2I,aAAc,CACxDh2I,KAAKg2I,aAAea,EACpB,QAAS/7I,GAAI,EAAGA,GAAIkF,KAAK02I,cAAc3kJ,OAAQ+I,KACvBkF,KAAK02I,cAAc57I,IAC3B+6I,aAAagB,KAKzCd,SAASp9I,UAAT,0BAAqGo9I,IACrGA,EAASlD,UAh7J0Fh6I,MAg7JnG,MAAyFk9I,EAAzF3nH,8DA/CM2nH,MAuFAe,SAAN,QACIh3I,YAAY+zI,EAAec,GAAayB,IACpCp2I,KAAKo2I,SAAWA,GAIhBA,GAASI,WACTx2I,KAAKu6B,MAAQ,IAAIw8G,GAAWlD,EAAec,IAM/C1C,YACIjyI,KAAKu6B,MAAMs7G,aAAa71I,KAAKo2I,SAASO,WAAW32I,KAAKg3I,gBAG9DF,SAAan+I,UAAb,0BAAyGm+I,GAz+JNj+I,MAy+JoCA,OAz+JpCA,MAy+JoEA,OAz+JpEA,MAy+J+Fk9I,GAAlM,KACAe,EAAajE,UA1+JsFh6I,MA0+JnG,MAA6Fi+I,EAA7F1oH,0EAlBM0oH,MA6CAG,SAAN,QACIn3I,YAAY+zI,EAAec,GAAayB,IAIpCA,GAASK,YAAY,IAAIM,GAAWlD,EAAec,MAG3DsC,SAAgBt+I,UAAhB,0BAA4Gs+I,GA7gKTp+I,MA6gK0CA,OA7gK1CA,MA6gK0EA,OA7gK1EA,MA6gKqGk9I,GAAxM,KACAkB,EAAgBpE,UA9gKmFh6I,MA8gKnG,MAAgGo+I,EAAhG7oH,wCATM6oH,MAwQAC,SAAN,QACIp3I,YAAY41I,GACR11I,KAAK01I,kBAAoBA,EACzB11I,KAAKm3I,SAAW,KAOhBn3I,KAAKo3I,wBAA0B,KAI/Bp3I,KAAKq3I,iBAAmB,KAG5Bn4E,YAAYC,GACR,GAAIA,EAAQk4E,iBAAqB,CAC7B,MAAMC,GAAmBt3I,KAAK01I,kBAC1B11I,KAAKm3I,UACLG,GAAiB7zH,OAAO6zH,GAAiB7hJ,QAAQuK,KAAKm3I,WAE1Dn3I,KAAKm3I,SAAWn3I,KAAKq3I,iBACjBC,GAAiBpD,mBAAmBl0I,KAAKq3I,iBAAkBr3I,KAAKo3I,yBAChE,UAECp3I,KAAKm3I,UAAYh4E,EAAQi4E,yBAA8Bp3I,KAAKo3I,0BACjEp3I,KAAKm3I,SAASl6I,QAAU+C,KAAKo3I,0BAIzCF,SAAiBv+I,UAAjB,0BAA6Gu+I,GA7yKVr+I,MA6yK4CA,SAC/Iq+I,EAAiBrE,UA9yKkFh6I,MA8yKnG,MAAiGq+I,EAAjG9oH,gJA9yKmGv1B,SA6wK7Fq+I,MA2EN,YAAkCh6I,EAAM/H,GAIpC,OAAO,IAAI3D,MAAc,KADrB,GACuD+lJ,CAU/D,SACIC,mBAAmBr0C,EAAOs0C,GACtB,OAAOt0C,EAAM9e,UAAU,CACnB5nF,KAAMg7I,EACNzmH,MAAQ38B,KACJ,MAAMA,MAIlBoxD,QAAQ6sE,GACJA,EAAax/D,cAEjB1+D,UAAUk+H,GACNA,EAAax/D,eAGrB,SACI0kF,mBAAmBr0C,EAAOs0C,GACtB,OAAOt0C,EAAMn5E,KAAKytH,EAAmBpjJ,KACjC,MAAMA,KAGdoxD,QAAQ6sE,GAAc,CACtBl+H,UAAUk+H,GAAc,EAE5B,MAAMolB,GAAmB,IAAIC,GACvBC,GAAwB,IAAIC,OA6B5BC,SAAN,QACIh4I,YAAYi4I,GACR/3I,KAAK+3I,KAAOA,EACZ/3I,KAAKg4I,aAAe,KACpBh4I,KAAKi4I,cAAgB,KACrBj4I,KAAKk4I,KAAO,KACZl4I,KAAKm4I,UAAY,KAErBnsH,cACQhsB,KAAKi4I,eACLj4I,KAAKo4I,WAGb7iH,UAAU/6B,GACN,OAAKwF,KAAKk4I,KAMN19I,IAAQwF,KAAKk4I,MACbl4I,KAAKo4I,WACEp4I,KAAKu1B,UAAU/6B,IAEnBwF,KAAKg4I,cATJx9I,GACAwF,KAAKoyH,WAAW53H,GAEbwF,KAAKg4I,cAQpB5lB,WAAW53H,GACPwF,KAAKk4I,KAAO19I,EACZwF,KAAKm4I,UAAYn4I,KAAKq4I,gBAAgB79I,GACtCwF,KAAKi4I,cAAgBj4I,KAAKm4I,UAAUX,mBAAmBh9I,EAAMrF,IAAU6K,KAAKs4I,mBAAmB99I,EAAKrF,KAExGkjJ,gBAAgB79I,GACZ,IAAI+9I,SAAW/9I,GACX,OAAOk9I,GAEX,IAAIc,SAAgBh+I,GAChB,OAAOo9I,GAEX,MAAMa,IAAoCj+I,CAE9C49I,WACIp4I,KAAKm4I,UAAU1yF,QAAQzlD,KAAKi4I,eAC5Bj4I,KAAKg4I,aAAe,KACpBh4I,KAAKi4I,cAAgB,KACrBj4I,KAAKk4I,KAAO,KAEhBI,mBAAmBn1C,EAAOhuG,IAClBguG,IAAUnjG,KAAKk4I,OACfl4I,KAAKg4I,aAAe7iJ,GACpB6K,KAAK+3I,KAAKW,iBAItBZ,SAAUn/I,UAAV,0BAAsGm/I,GAl9KHj/I,MAk9K8BA,MAAjI,MACAi/I,EAAUa,WAn9KyF9/I,MAm9KnG,mBAAoGi/I,EAApGhoG,UAtDMgoG,MAgLN,MAAMc,GAA6B,IAAI1sH,MAAe,kCAgKhD2sH,SAAN,QACI/4I,YAAYmpI,EAAQ6P,IAChB94I,KAAKipI,OAASA,EACdjpI,KAAK84I,gBAAkBA,GAE3BvjH,UAAUpgC,EAAOo+F,GAAS,aAAcq3C,GAAU3B,GAC9C,IAAInsH,GACJ,GAAa,MAAT3nB,GAA2B,KAAVA,GAAgBA,GAAUA,EAC3C,OAAO,KACX,IACI,OAAO4jJ,GAAW5jJ,EAAOo+F,GAAQ01C,GAAUjpI,KAAKipI,OAA8F,QAArFnsH,GAAkB,MAAb8tH,GAA2CA,GAAW5qI,KAAK84I,uBAAoC,IAAPh8H,GAAgBA,QAAKloB,EAG5H+5D,CAH4H/5D,MAExKo8B,IACH,MAAMynH,IAAyC9pF,GAI3DkqF,SAASlgJ,UAAT,0BAAqGkgJ,GA9vLFhgJ,MA8vL4Bm3B,MAA/H,IA9vLmGn3B,MA8vLkD+/I,GAArJ,MACAC,EAASF,WA/vL0F9/I,MA+vLnG,kBAAmGggJ,EAAnG/oG,UAlBM+oG,MA0YAG,SAAN,QACIl5I,YAAYm5I,GACRj5I,KAAKi5I,QAAUA,EAkBnB1jH,UAAUpgC,EAAO+jJ,GAAYjQ,IACzB,IA+IR,YAAiB9zI,GACb,QAAkB,MAATA,GAA2B,KAAVA,GAAgBA,GAAUA,GAhJ3CgkJ,CAAQhkJ,GACT,OAAO,KACX8zI,GAASA,IAAUjpI,KAAKi5I,QACxB,IAEI,OA/7HZ,YAAuB9jJ,EAAO8zI,EAAQiQ,GAIlC,OArJJ,YAAoC/jJ,EAAOwxF,EAASsiD,EAAQmQ,GAAaC,GAAeH,EAAYI,IAAY,GAC5G,IAAIC,GAAgB,GAChBC,IAAS,EACb,GAAK3sB,SAAS13H,GAGT,CACD,IAAIskJ,GAgPZ,YAAqB7L,GACjB,IACkBC,GAAQ6L,GACtB5+I,EAAG+lB,GAAG84H,GAFNC,EAAS92I,KAAK6H,IAAIijI,GAAO,GACzBiM,EAAW,EAmBf,KAhBKH,GAAaE,EAAOnkJ,QAtQT,OAsQiC,IAC7CmkJ,EAASA,EAAO19I,QAvQJ,IAuQyB,MAGpCpB,EAAI8+I,EAAO5jC,OAAO,OAAS,GAExB0jC,GAAa,IACbA,GAAa5+I,GACjB4+I,KAAeE,EAAOxtI,MAAMtR,EAAI,GAChC8+I,EAASA,EAAOlkJ,UAAU,EAAGoF,IAExB4+I,GAAa,IAElBA,GAAaE,EAAO7nJ,QAGnB+I,EAAI,EArRK,MAqRF8+I,EAAOliJ,OAAOoD,GAAkBA,KAE5C,GAAIA,KAAO6+I,GAAQC,EAAO7nJ,QAEtB87I,GAAS,CAAC,GACV6L,GAAa,MAEZ,CAGD,IADAC,KA9RU,MA+RHC,EAAOliJ,OAAOiiJ,KACjBA,KAKJ,IAHAD,IAAc5+I,EACd+yI,GAAS,GAEJhtH,GAAI,EAAG/lB,GAAK6+I,GAAO7+I,IAAK+lB,KACzBgtH,GAAOhtH,IAAK2T,OAAOolH,EAAOliJ,OAAOoD,IAIzC,OAAI4+I,GA5SW,KA6SX7L,GAASA,GAAOvzI,OAAO,EAAGw/I,IAC1BD,EAAWH,GAAa,EACxBA,GAAa,GAEV,CAAE7L,UAAQgM,WAAUH,eA/RJK,CAAY5kJ,GAC3BmkJ,KACAG,GAqNZ,YAAmBA,GAEf,GAA+B,IAA3BA,EAAa5L,OAAO,GACpB,OAAO4L,EAGX,MAAMO,EAAcP,EAAa5L,OAAO97I,OAAS0nJ,EAAaC,WAC9D,OAAID,EAAaI,SACbJ,EAAaI,UAAY,GAGL,IAAhBG,EACAP,EAAa5L,OAAOn6I,KAAK,EAAG,GAEP,IAAhBsmJ,GACLP,EAAa5L,OAAOn6I,KAAK,GAE7B+lJ,EAAaC,YAAc,GAExBD,EAxOgBQ,CAAUR,KAE7B,IAAIS,GAASvzD,EAAQuzD,OACjBC,GAAcxzD,EAAQyzD,QACtBC,GAAc1zD,EAAQ2zD,QAC1B,GAAIpB,EAAY,CACZ,MAAM/5D,EAAQ+5D,EAAW1/I,MAAMs3I,IAC/B,GAAc,OAAV3xD,EACA,MAAM,IAAI11C,MAAO,GAAEyvG,+BAEvB,MAAMqB,GAAap7D,EAAM,GACnBq7D,GAAkBr7D,EAAM,GACxBs7D,GAAkBt7D,EAAM,GACZ,MAAdo7D,KACAL,GAASQ,GAAkBH,KAER,MAAnBC,KACAL,GAAcO,GAAkBF,KAEb,MAAvBG,GACIN,GAAcK,GAAkBD,IAER,MAAnBD,IAA2BL,GAAcE,KAC9CA,GAAcF,KA4Q9B,YAAqBV,EAAcW,EAASE,GACxC,GAAIF,EAAUE,EACV,MAAM,IAAI7wG,MAAO,gDAA+C2wG,kCAAwCE,OAE5G,IAAIzM,GAAS4L,EAAa5L,OACtBmM,GAAcnM,GAAO97I,OAAS0nJ,EAAaC,WAC/C,MAAMkB,EAAe93I,KAAKstF,IAAIttF,KAAKC,IAAIq3I,EAASJ,IAAcM,GAE9D,IAAIO,GAAUD,EAAenB,EAAaC,WACtCoB,GAAQjN,GAAOgN,IACnB,GAAIA,GAAU,EAAG,CAEbhN,GAAOvzI,OAAOwI,KAAKC,IAAI02I,EAAaC,WAAYmB,KAEhD,QAASh6H,GAAIg6H,GAASh6H,GAAIgtH,GAAO97I,OAAQ8uB,KACrCgtH,GAAOhtH,IAAK,MAGf,CAEDm5H,GAAcl3I,KAAKC,IAAI,EAAGi3I,IAC1BP,EAAaC,WAAa,EAC1B7L,GAAO97I,OAAS+Q,KAAKC,IAAI,EAAG83I,GAAUD,EAAe,GACrD/M,GAAO,GAAK,EACZ,QAAS/yI,GAAI,EAAGA,GAAI+/I,GAAS//I,KACzB+yI,GAAO/yI,IAAK,EAEpB,GAAIggJ,IAAS,EACT,GAAID,GAAU,EAAI,EAAG,CACjB,QAASxnF,GAAI,EAAGA,GAAIwnF,GAASxnF,KACzBw6E,GAAOlyH,QAAQ,GACf89H,EAAaC,aAEjB7L,GAAOlyH,QAAQ,GACf89H,EAAaC,kBAGb7L,GAAOgN,GAAU,KAIzB,KAAOb,GAAcl3I,KAAKC,IAAI,EAAG63I,GAAeZ,KAC5CnM,GAAOn6I,KAAK,GAChB,IAAIqnJ,GAAqC,IAAjBH,EAGxB,MAAMI,GAASZ,EAAUX,EAAaC,WAEhCuB,GAAQpN,GAAOqN,YAAY,SAAUD,GAAOt/G,GAAG7gC,GAAG+yI,IACpDlyG,OACAkyG,GAAO/yI,KADP6gC,IAAQs/G,IACQ,GAAKt/G,GAAIA,GAAI,GACzBo/G,KAEkB,IAAdlN,GAAO/yI,KAAYA,IAAKkgJ,GACxBnN,GAAOr5E,MAGPumF,IAAoB,GAGrBp/G,IAAK,GAAK,EAAI,GACtB,GACCs/G,KACApN,GAAOlyH,QAAQs/H,IACfxB,EAAaC,cAzUbyB,CAAY1B,GAAcU,GAAaE,IACvC,IAAIxM,GAAS4L,GAAa5L,OACtB6L,GAAaD,GAAaC,WAC9B,MAAMG,EAAWJ,GAAaI,SAC9B,IAAIuB,EAAW,GAGf,IAFA5B,GAAS3L,GAAOroF,MAAM7pB,IAAMA,GAErB+9G,GAAaQ,GAAQR,KACxB7L,GAAOlyH,QAAQ,GAGnB,KAAO+9H,GAAa,EAAGA,KACnB7L,GAAOlyH,QAAQ,GAGf+9H,GAAa,EACb0B,EAAWvN,GAAOvzI,OAAOo/I,GAAY7L,GAAO97I,SAG5CqpJ,EAAWvN,GACXA,GAAS,CAAC,IAGd,MAAMwN,EAAS,GAIf,IAHIxN,GAAO97I,QAAU40F,EAAQ20D,QACzBD,EAAO1/H,QAAQkyH,GAAOvzI,QAAQqsF,EAAQ20D,OAAQzN,GAAO97I,QAAQyvD,KAAK,KAE/DqsF,GAAO97I,OAAS40F,EAAQ40D,OAC3BF,EAAO1/H,QAAQkyH,GAAOvzI,QAAQqsF,EAAQ40D,MAAO1N,GAAO97I,QAAQyvD,KAAK,KAEjEqsF,GAAO97I,QACPspJ,EAAO1/H,QAAQkyH,GAAOrsF,KAAK,KAE/B+3F,GAAgB8B,EAAO75F,KAAKmtF,GAAsB1F,EAAQmQ,KAEtDgC,EAASrpJ,SACTwnJ,IAAiB5K,GAAsB1F,EAAQoQ,IAAiB+B,EAAS55F,KAAK,KAE9Eq4F,IACAN,IAAiB5K,GAAsB1F,EAAQb,GAAaM,aAAe,IAAMmR,QAtErFN,GAAgB5K,GAAsB1F,EAAQb,GAAarU,UAyE/D,OACIwlB,GADApkJ,EAAQ,IAAMqkJ,GACE7yD,EAAQ60D,OAASjC,GAAgB5yD,EAAQ80D,OAGzC90D,EAAQ+0D,OAASnC,GAAgB5yD,EAAQg1D,OAEtDpC,GAkEAh7C,CADgCppG,EAyB3C,YAA2Bo+F,EAAQu6C,EAAY,KAC3C,MAAMzzH,EAAI,CACN6/H,OAAQ,EACRE,QAAS,EACTE,QAAS,EACToB,OAAQ,GACRC,OAAQ,GACRH,OAAQ,GACRC,OAAQ,GACRF,MAAO,EACPD,OAAQ,GAENM,GAAeroD,EAAOl1F,MAjMZ,KAkMVw9I,GAAWD,GAAa,GACxBE,EAAWF,GAAa,GACxBG,IAAkD,IAAlCF,GAASpmJ,QAtMf,KAuMZomJ,GAASx9I,MAvMG,KAwMZ,CACIw9I,GAASnmJ,UAAU,EAAGmmJ,GAAS5pE,YAxMzB,KAwMkD,GACxD4pE,GAASnmJ,UAAUmmJ,GAAS5pE,YAzMtB,KAyM+C,IACtD+pE,GAAUD,GAAc,GAAIE,GAAWF,GAAc,IAAM,GAClE1hI,EAAEqhI,OAASM,GAAQrmJ,OAAO,EAAGqmJ,GAAQvmJ,QAxMtB,MAyMf,QAASqF,GAAI,EAAGA,GAAImhJ,GAASlqJ,OAAQ+I,KAAK,CACtC,MAAMohJ,GAAKD,GAASvkJ,OAAOoD,IA7MjB,MA8MNohJ,GACA7hI,EAAE+/H,QAAU//H,EAAEigI,QAAUx/I,GAAI,EA5MrB,MA8MNqhJ,GACD9hI,EAAEigI,QAAUx/I,GAAI,EAGhBuf,EAAEshI,QAAUO,GAGpB,MAAMb,GAASW,GAAQ39I,MAtNT,KAyNd,GAFAgc,EAAEkhI,MAAQF,GAAO,GAAKA,GAAO,GAAGtpJ,OAAS,EACzCsoB,EAAEihI,OAAUD,GAAO,IAAMA,GAAO,IAAOA,GAAO,IAAMA,GAAO,IAAItpJ,OAAS,EACpE+pJ,EAAU,CACV,MAAMM,GAAWP,GAAS9pJ,OAASsoB,EAAEqhI,OAAO3pJ,OAASsoB,EAAEshI,OAAO5pJ,OAAQsqJ,GAAMP,EAASrmJ,QAzN1E,KA0NX4kB,EAAEmhI,OAASM,EAASnmJ,OAAO,EAAG0mJ,IAAKngJ,QAAQ,KAAM,IACjDme,EAAEohI,OAASK,EAASnmJ,OAAO0mJ,GAAMD,IAAUlgJ,QAAQ,KAAM,SAGzDme,EAAEmhI,OAAS1N,EAAYzzH,EAAEqhI,OACzBrhI,EAAEohI,OAASphI,EAAEshI,OAEjB,OAAOthI,EAxESiiI,CAjmCpB,YAA+BrT,EAAQ/rI,GAEnC,OAAOpI,EADMs0I,OAAgBH,GACjBI,qBAAgCnsI,GA8lC7Bq/I,CAAsBtT,EAAQ9B,GAAkBE,SACrBsH,GAAsB1F,EAAQb,GAAaK,YAC9BQ,EAAQb,GAAaC,MAAOD,GAAahB,QAAS8R,GAAY,GAC1Gh9I,QAAQ,IAAIN,OAzJN,IAyJ2B,KAAM+yI,GAAsB1F,EAAQb,GAAaG,cA27H9EiU,CAgJnB,YAAqBrnJ,GAEjB,GAAqB,iBAAVA,IAAuBwgG,MAAMnhE,OAAOr/B,GAASuE,WAAWvE,IAC/D,OAAOq/B,OAAOr/B,GAElB,GAAqB,iBAAVA,EACP,MAAM,IAAIs0C,MAAO,GAAEt0C,qBAEvB,OAAOA,EAzJasnJ,CAAYtnJ,GACE8zI,GAAQiQ,GAGgBvqF,CAHhBuqF,MAE/BloH,GACH,MAAMynH,IAA4C9pF,GAI9DqqF,SAAYrgJ,UAAZ,0BAAwGqgJ,GAxpMLngJ,MAwpMkCm3B,MAArI,MACAgpH,EAAYL,WAzpMuF9/I,MAypMnG,qBAAsGmgJ,EAAtGlpG,UAlCMkpG,UAmSA3pH,SAAN,SAEAA,SAAa12B,UAAb,0BAAyG02B,IACzGA,EAAa7B,UA75MsF30B,MA65MnG,MAA0Gw2B,IAC1GA,EAAa5B,UA95MsF50B,MA85MnG,IAJMw2B,MAqPN,UA8BqDkhE,mKCtuNrD,SAYA,SAiBA,QAEIzwF,YAAYq3D,IAKRn3D,KAAK08I,gBAAkB,IAAItnJ,IAI3B4K,KAAK28I,WAAa,KAClBC,GAII58I,KAAK68I,SADmB,iBAAZ1lF,GACI,KACZn3D,KAAKm3D,QAAU,IAAI/hE,IACnB+hE,GAAQ94D,MAAM,MAAMzL,QAAQkqJ,KACxB,MAAMhpI,GAAQgpI,GAAKrnJ,QAAQ,KAC3B,GAAIqe,GAAQ,EAAG,CACX,MAAM/S,GAAO+7I,GAAK1wI,MAAM,EAAG0H,IACrB7e,GAAM8L,GAAKjE,cACX3H,GAAQ2nJ,GAAK1wI,MAAM0H,GAAQ,GAAGzE,OACpCrP,KAAK+8I,uBAAuBh8I,GAAM9L,IAClC+K,KAASm3D,QAAQ93D,IAAIpK,IACjB+K,KAAKm3D,QAAQ9hE,IAAIJ,IAAKvB,KAAKyB,IAG3B6K,KAAKm3D,QAAQ7hE,IAAIL,GAAK,CAACE,SAOvB,KACZ6K,KAAKm3D,QAAU,IAAI/hE,IACnBnC,OAAOC,KAAKikE,IAASvkE,QAAQmO,KACzB,IAAImB,GAASi1D,GAAQp2D,IACrB,MAAM9L,GAAM8L,GAAKjE,cACK,iBAAXoF,KACPA,GAAS,CAACA,KAEVA,GAAOnQ,OAAS,IAChBiO,KAAKm3D,QAAQ7hE,IAAIL,GAAKiN,IACtBlC,KAAK+8I,uBAAuBh8I,GAAM9L,QAjC9C+K,KAAKm3D,QAAU,IAAI/hE,IA8C3BiK,IAAI0B,IACA,YAAK0T,OACEzU,KAAKm3D,QAAQ93D,IAAI0B,GAAKjE,eASjCzH,IAAI0L,IACAf,KAAKyU,OACL,MAAMvS,GAASlC,KAAKm3D,QAAQ9hE,IAAI0L,GAAKjE,eACrC,OAAOoF,IAAUA,GAAOnQ,OAAS,EAAImQ,GAAO,GAAK,KAOrDhP,OACI,YAAKuhB,OACE5d,MAAMC,KAAKkJ,KAAK08I,gBAAgBx6I,UAS3C86I,OAAOj8I,IACH,YAAK0T,OACEzU,KAAKm3D,QAAQ9hE,IAAI0L,GAAKjE,gBAAkB,KAWnDmK,OAAOlG,GAAM5L,IACT,OAAO6K,KAAKw+F,MAAM,CAAEz9F,QAAM5L,SAAO8nJ,GAAI,MAYzC3nJ,IAAIyL,GAAM5L,IACN,OAAO6K,KAAKw+F,MAAM,CAAEz9F,QAAM5L,SAAO8nJ,GAAI,MAUzChlI,OAAOlX,GAAM5L,IACT,OAAO6K,KAAKw+F,MAAM,CAAEz9F,QAAM5L,SAAO8nJ,GAAI,MAEzCF,uBAAuBh8I,GAAMm8I,IACpBl9I,KAAK08I,gBAAgBr9I,IAAI69I,KAC1Bl9I,KAAK08I,gBAAgBpnJ,IAAI4nJ,GAAQn8I,IAGzC0T,OACUzU,KAAK68I,WACH78I,KAAK68I,oBAAoBM,EACzBn9I,KAAKo9I,SAASp9I,KAAK68I,UAGnB78I,KAAK68I,WAET78I,KAAK68I,SAAW,KACV78I,KAAK28I,aACP38I,KAAK28I,WAAW/pJ,QAAQshE,IAAUl0D,KAAKq9I,YAAYnpF,KACnDl0D,KAAK28I,WAAa,OAI9BS,SAASE,IACLA,GAAM7oI,OACN5d,MAAMC,KAAKwmJ,GAAMnmF,QAAQjkE,QAAQN,QAAQqC,KACrC+K,KAAKm3D,QAAQ7hE,IAAIL,GAAKqoJ,GAAMnmF,QAAQ9hE,IAAIJ,KACxC+K,KAAK08I,gBAAgBpnJ,IAAIL,GAAKqoJ,GAAMZ,gBAAgBrnJ,IAAIJ,OAGhEupG,MAAMtqC,IACF,MAAMsqC,GAAQ,IAAI2+C,EAClB3+C,UAAMq+C,SACC78I,KAAK68I,UAAY78I,KAAK68I,oBAAoBM,EAAen9I,KAAK68I,SAAW78I,KAChFw+F,GAAMm+C,YAAc38I,KAAK28I,YAAc,IAAI93H,OAAO,CAACqvC,KAC5CsqC,GAEX6+C,YAAYnpF,IACR,MAAMj/D,GAAMi/D,GAAOnzD,KAAKjE,cACxB,OAAQo3D,GAAO+oF,QACN,QACA,IACD,IAAI9nJ,GAAQ++D,GAAO/+D,MAInB,GAHqB,iBAAVA,KACPA,GAAQ,CAACA,KAEQ,IAAjBA,GAAMpD,OACN,OAEJiO,KAAK+8I,uBAAuB7oF,GAAOnzD,KAAM9L,IACzC,MAAM2qG,IAAsB,MAAd1rC,GAAO+oF,GAAaj9I,KAAKm3D,QAAQ9hE,IAAIJ,SAAOL,IAAc,GACxEgrG,GAAKlsG,QAAQyB,IACb6K,KAAKm3D,QAAQ7hE,IAAIL,GAAK2qG,IACtB,UACC,IACD,MAAMjd,GAAWzuB,GAAO/+D,MACxB,GAAKwtF,GAIA,CACD,IAAI46D,GAAWv9I,KAAKm3D,QAAQ9hE,IAAIJ,IAChC,IAAKsoJ,GACD,OAEJA,GAAWA,GAASn1I,OAAOjT,KAAqC,IAA5BwtF,GAASltF,QAAQN,KAC7B,IAAxBqoJ,GAAazrJ,QACTiO,KAAKm3D,QAAQl/C,OAAOhjB,IACpB+K,KAAK08I,gBAAgBzkI,OAAOhjB,KAG5B+K,KAAKm3D,QAAQ7hE,IAAIL,GAAKsoJ,SAd1Bv9I,KAAKm3D,QAAQl/C,OAAOhjB,IACpB+K,KAAK08I,gBAAgBzkI,OAAOhjB,IAgBhC,CAMZrC,QAAQwd,IACJpQ,KAAKyU,OACL5d,MAAMC,KAAKkJ,KAAK08I,gBAAgBxpJ,QAC3BN,QAAQqC,IAAOmb,GAAGpQ,KAAK08I,gBAAgBrnJ,IAAIJ,IAAM+K,KAAKm3D,QAAQ9hE,IAAIJ,OAqB/E,QAMIwoJ,UAAUxoJ,IACN,OAAOyoJ,GAAiBzoJ,IAO5B0oJ,YAAYxoJ,IACR,OAAOuoJ,GAAiBvoJ,IAO5ByoJ,UAAU3oJ,IACN,OAAOmiH,mBAAmBniH,IAO9B4oJ,YAAY1oJ,IACR,OAAOiiH,mBAAmBjiH,KAyBlC,MAAM2oJ,EAA0B,kBAC1BC,EAAiC,CACnC,GAAM,IACN,KAAM,IACN,GAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAEV,YAA0B16I,IACtB,OAAOgzG,mBAAmBhzG,IAAGnH,QAAQ4hJ,EAAyB,CAACp7I,GAAGijF,MAAQ,IAAI7oE,GAAI,OAAoD,QAA5CA,GAAKihI,EAA+Bp4D,WAAuB,IAAP7oE,GAAgBA,GAAKpa,KAEvK,YAAuBvN,IACnB,MAAQ,GAAEA,KAUd,SACI2K,YAAYyB,GAAU,IAIlB,GAHAvB,KAAKg+I,QAAU,KACfh+I,KAAKi+I,UAAY,KACjBj+I,KAAKk+I,QAAU38I,GAAQ28I,SAAW,IAAIC,EAChC58I,GAAQyvF,WAAY,CACtB,GAAMzvF,GAAQ68I,WACV,MAAM,IAAI30G,MAAO,kDAErBzpC,KAAKhL,IAzDjB,WAAqBqpJ,GAAWC,IAC5B,MAAMtpJ,GAAM,IAAII,IAChB,OAAIipJ,GAAUtsJ,OAAS,GAKnB8J,GADyBK,QAAQ,MAAO,IAAImC,MAAM,KAC3CzL,QAAS8oG,KACZ,MAAM6iD,GAAQ7iD,GAAMjmG,QAAQ,MACrBR,GAAKuY,KAAgB,GAAT+wI,GACf,CAACD,GAAMV,UAAUliD,IAAQ,IACzB,CAAC4iD,GAAMV,UAAUliD,GAAMtvF,MAAM,EAAGmyI,KAASD,GAAMT,YAAYniD,GAAMtvF,MAAMmyI,GAAQ,KAC7EC,GAAOxpJ,GAAIK,IAAIJ,KAAQ,GAC7BupJ,GAAK9qJ,KAAK8Z,IACVxY,GAAIM,IAAIL,GAAKupJ,MAGdxpJ,GAwCYypJ,CAAYl9I,GAAQyvF,WAAYhxF,KAAKk+I,cAEzC38I,GAAQ68I,YACfp+I,KAAKhL,IAAM,IAAII,IACfnC,OAAOC,KAAKqO,GAAQ68I,YAAYxrJ,QAAQqC,KACpC,MAAME,GAAQoM,GAAQ68I,WAAWnpJ,IACjC+K,KAAKhL,IAAIM,IAAIL,GAAK4B,MAAM4E,QAAQtG,IAASA,GAAQ,CAACA,QAItD6K,KAAKhL,IAAM,KASnBqK,IAAIq8F,IACA,YAAKjnF,OACEzU,KAAKhL,IAAIqK,IAAIq8F,IAQxBrmG,IAAIqmG,IACA17F,KAAKyU,OACL,MAAM8pF,GAAMv+F,KAAKhL,IAAIK,IAAIqmG,IACzB,OAAOgjD,GAAQngD,GAAI,GAAK,KAQ5By+C,OAAOthD,IACH,YAAKjnF,OACEzU,KAAKhL,IAAIK,IAAIqmG,KAAU,KAMlCxoG,OACI,YAAKuhB,OACE5d,MAAMC,KAAKkJ,KAAKhL,IAAI9B,QAQ/B+T,OAAOy0F,GAAOvmG,IACV,OAAO6K,KAAKw+F,MAAM,CAAE9C,SAAOvmG,SAAO8nJ,GAAI,MAO1C0B,UAAU9iJ,IACN,MAAMmiJ,GAAU,GAChB/qJ,cAAOC,KAAK2I,IAAQjJ,QAAQ8oG,KACxB,MAAMvmG,GAAQ0G,GAAO6/F,IACjB7kG,MAAM4E,QAAQtG,IACdA,GAAMvC,QAAQs/H,KACV8rB,GAAQtqJ,KAAK,CAAEgoG,SAAOvmG,MAAO+8H,GAAQ+qB,GAAI,QAI7Ce,GAAQtqJ,KAAK,CAAEgoG,SAAOvmG,MAAOA,GAAO8nJ,GAAI,QAGzCj9I,KAAKw+F,MAAMw/C,IAQtB1oJ,IAAIomG,GAAOvmG,IACP,OAAO6K,KAAKw+F,MAAM,CAAE9C,SAAOvmG,SAAO8nJ,GAAI,MAS1ChlI,OAAOyjF,GAAOvmG,IACV,OAAO6K,KAAKw+F,MAAM,CAAE9C,SAAOvmG,SAAO8nJ,GAAI,MAM1CrrJ,WACI,YAAK6iB,OACEzU,KAAK9M,OACP8B,IAAIC,KACL,MAAM2pJ,GAAO5+I,KAAKk+I,QAAQT,UAAUxoJ,IAIpC,OAAO+K,KAAKhL,IAAIK,IAAIJ,IAAKD,IAAIG,IAASypJ,GAAO,IAAM5+I,KAAKk+I,QAAQP,YAAYxoJ,KACvEqsD,KAAK,OAITp5C,OAAOszF,IAAmB,KAAVA,IAChBl6C,KAAK,KAEdg9C,MAAMtqC,IACF,MAAMsqC,GAAQ,IAAIqgD,GAAW,CAAEX,QAASl+I,KAAKk+I,UAC7C1/C,UAAMy/C,UAAYj+I,KAAKi+I,WAAaj+I,KACpCw+F,GAAMw/C,SAAWh+I,KAAKg+I,SAAW,IAAIn5H,OAAOqvC,IACrCsqC,GAEX/pF,OACqB,OAAbzU,KAAKhL,MACLgL,KAAKhL,IAAM,IAAII,KAEI,OAAnB4K,KAAKi+I,YACLj+I,KAAKi+I,UAAUxpI,OACfzU,KAAKi+I,UAAU/qJ,OAAON,QAAQqC,IAAO+K,KAAKhL,IAAIM,IAAIL,GAAK+K,KAAKi+I,UAAUjpJ,IAAIK,IAAIJ,MAC9E+K,KAAKg+I,QAAQprJ,QAAQshE,KACjB,OAAQA,GAAO+oF,QACN,QACA,IACD,MAAMr9C,IAAsB,MAAd1rC,GAAO+oF,GAAaj9I,KAAKhL,IAAIK,IAAI6+D,GAAOwnC,YAAS9mG,IAAc,GAC7EgrG,GAAKlsG,KAAKorJ,GAAc5qF,GAAO/+D,QAC/B6K,KAAKhL,IAAIM,IAAI4+D,GAAOwnC,MAAOkE,IAC3B,UACC,IACD,QAAqBhrG,IAAjBs/D,GAAO/+D,MAaN,CACD6K,KAAKhL,IAAIijB,OAAOi8C,GAAOwnC,OACvB,MAf4B,CAC5B,IAAIkE,GAAO5/F,KAAKhL,IAAIK,IAAI6+D,GAAOwnC,QAAU,GACzC,MAAM9M,GAAMgR,GAAKnqG,QAAQqpJ,GAAc5qF,GAAO/+D,SAClC,IAARy5F,IACAgR,GAAKtlG,OAAOs0F,GAAK,GAErBmwD,GAAShtJ,OAAS,EACdiO,KAAKhL,IAAIM,IAAI4+D,GAAOwnC,MAAOkE,IAG3B5/F,KAAKhL,IAAIijB,OAAOi8C,GAAOwnC,QAK3B,GAIhB17F,KAAKi+I,UAAYj+I,KAAKg+I,QAAU,OAuD5C,SACIl+I,cACIE,KAAKhL,IAAM,IAAII,IAUnBE,IAAI+Q,GAAOlR,IACP,YAAKH,IAAIM,IAAI+Q,GAAOlR,IACb6K,KASX3K,IAAIgR,IACA,OAAKrG,KAAKhL,IAAIqK,IAAIgH,KACdrG,KAAKhL,IAAIM,IAAI+Q,GAAOA,GAAMnR,gBAEvB8K,KAAKhL,IAAIK,IAAIgR,IASxB4R,OAAO5R,IACH,YAAKrR,IAAIijB,OAAO5R,IACTrG,KASXX,IAAIgH,IACA,OAAOrG,KAAKhL,IAAIqK,IAAIgH,IAKxBnT,OACI,OAAO8M,KAAKhL,IAAI9B,QA+BxB,WAAuBiC,IACnB,MAA8B,oBAAhB08H,aAA+B18H,cAAiB08H,YAOlE,WAAgB18H,IACZ,MAAuB,oBAAT6pJ,MAAwB7pJ,cAAiB6pJ,KAO3D,YAAoB7pJ,IAChB,MAA2B,oBAAb8pJ,UAA4B9pJ,cAAiB8pJ,SAoB/D,SACIn/I,YAAYo/I,GAAQ3vH,GAAK4vH,GAAOC,IA+B5B,IAAI79I,GAyCJ,GAvEAvB,KAAKuvB,IAAMA,GAQXvvB,KAAK5I,KAAO,KAOZ4I,KAAKq/I,gBAAiB,EAItBr/I,KAAKs/I,iBAAkB,EAOvBt/I,KAAKu/I,aAAe,OACpBv/I,KAAKk/I,OAASA,GAAOvnJ,cAnF7B,YAAuBunJ,IACnB,OAAQA,QACC,aACA,UACA,WACA,cACA,QACD,OAAO,UAEP,OAAO,GAgFXM,CAAkBx/I,KAAKk/I,SAAaE,IAEhCp/I,KAAK5I,UAAkBxC,IAAVuqJ,GAAuBA,GAAQ,KAC5C59I,GAAU69I,IAIV79I,GAAU49I,GAGV59I,KAEAvB,KAAKq/I,iBAAmB99I,GAAQ89I,eAChCr/I,KAAKs/I,kBAAoB/9I,GAAQ+9I,gBAE3B/9I,GAAQg+I,eACVv/I,KAAKu/I,aAAeh+I,GAAQg+I,cAG1Bh+I,GAAQ41D,UACVn3D,KAAKm3D,QAAU51D,GAAQ41D,SAErB51D,GAAQtE,UACV+C,KAAK/C,QAAUsE,GAAQtE,SAErBsE,GAAQ1F,SACVmE,KAAKnE,OAAS0F,GAAQ1F,SAIzBmE,KAAKm3D,UACNn3D,KAAKm3D,QAAU,IAAIgmF,GAGlBn9I,KAAK/C,UACN+C,KAAK/C,QAAU,IAAIwiJ,IAGlBz/I,KAAKnE,OAIL,CAED,MAAMA,GAASmE,KAAKnE,OAAOjK,WAC3B,GAAsB,IAAlBiK,GAAO9J,OAEPiO,KAAK0/I,cAAgBnwH,OAEpB,CAED,MAAMowH,GAAOpwH,GAAI95B,QAAQ,KASzBuK,KAAK0/I,cAAgBnwH,KADA,IAATowH,GAAc,IAAOA,GAAOpwH,GAAIx9B,OAAS,EAAI,IAAM,IAC9B8J,SArBrCmE,KAAKnE,OAAS,IAAIgjJ,GAClB7+I,KAAK0/I,cAAgBnwH,EAoBgB1zB,CAQ7C+jJ,gBAEI,OAAkB,OAAd5/I,KAAK5I,KACE,KAIPyoJ,EAAc7/I,KAAK5I,OAAS0oJ,EAAO9/I,KAAK5I,OAAS2oJ,GAAW//I,KAAK5I,OA3H7E,YAA2BjC,IACvB,MAAkC,oBAApB6qJ,iBAAmC7qJ,cAAiB6qJ,gBA2H1DC,CAAkBjgJ,KAAK5I,OAA8B,iBAAd4I,KAAK5I,KACrC4I,KAAK5I,KAGZ4I,KAAK5I,gBAAgBynJ,GACd7+I,KAAK5I,KAAKxF,WAGI,iBAAdoO,KAAK5I,MAA0C,kBAAd4I,KAAK5I,MAC7CP,MAAM4E,QAAQuE,KAAK5I,MACZowD,KAAKC,UAAUznD,KAAK5I,MAGxB4I,KAAK5I,KAAKxF,WAQrBsuJ,0BAMI,OAJkB,OAAdlgJ,KAAK5I,MAIL2oJ,GAAW//I,KAAK5I,MACT,KAIP0oJ,EAAO9/I,KAAK5I,MACL4I,KAAK5I,KAAK8F,MAAQ,KAGzB2iJ,EAAc7/I,KAAK5I,MACZ,KAIc,iBAAd4I,KAAK5I,KACL,aAGP4I,KAAK5I,gBAAgBynJ,GACd,kDAGc,iBAAd7+I,KAAK5I,MAA0C,iBAAd4I,KAAK5I,MACxB,kBAAd4I,KAAK5I,KACL,mBAGJ,KAEXonG,MAAMtqC,GAAS,IACX,IAAIp3C,GAGJ,MAAMoiI,GAAShrF,GAAOgrF,QAAUl/I,KAAKk/I,OAC/B3vH,GAAM2kC,GAAO3kC,KAAOvvB,KAAKuvB,IACzBgwH,GAAerrF,GAAOqrF,cAAgBv/I,KAAKu/I,aAK3CnoJ,QAAwBxC,IAAhBs/D,GAAO98D,KAAsB88D,GAAO98D,KAAO4I,KAAK5I,KAGxDkoJ,QAA8C1qJ,IAA3Bs/D,GAAOorF,gBAAiCprF,GAAOorF,gBAAkBt/I,KAAKs/I,gBACzFD,QAA4CzqJ,IAA1Bs/D,GAAOmrF,eAAgCnrF,GAAOmrF,eAAiBr/I,KAAKq/I,eAG5F,IAAIloF,GAAUjD,GAAOiD,SAAWn3D,KAAKm3D,QACjCt7D,GAASq4D,GAAOr4D,QAAUmE,KAAKnE,OAEnC,MAAMoB,GAAoC,QAAzB6f,GAAKo3C,GAAOj3D,eAA4B,IAAP6f,GAAgBA,GAAK9c,KAAK/C,QAE5E,YAA0BrI,IAAtBs/D,GAAOisF,aAEPhpF,GACIlkE,OAAOC,KAAKghE,GAAOisF,YACdvhF,OAAO,CAACzH,GAASp2D,KAASo2D,GAAQ7hE,IAAIyL,GAAMmzD,GAAOisF,WAAWp/I,KAAQo2D,KAG/EjD,GAAOksF,YAEPvkJ,GAAS5I,OAAOC,KAAKghE,GAAOksF,WACvBxhF,OAAO,CAAC/iE,GAAQ6/F,KAAU7/F,GAAOvG,IAAIomG,GAAOxnC,GAAOksF,UAAU1kD,KAAS7/F,KAGxE,IAAIwkJ,GAAYnB,GAAQ3vH,GAAKn4B,GAAM,CACtCyE,UACAs7D,WACAl6D,WACAoiJ,kBACAE,gBACAD,sBAiBZ,IAAIgB,GAAa,OAAbA,OAAa,IAKCA,GAAcC,KAAU,GAAK,OAI3CD,GAAcA,GAAcE,eAAoB,GAAK,iBAIrDF,GAAcA,GAAcG,eAAoB,GAAK,iBAIrDH,GAAcA,GAAcI,iBAAsB,GAAK,mBAIvDJ,GAAcA,GAAcK,SAAc,GAAK,WAI/CL,GAAcA,GAAcM,KAAU,GAAK,OAzB3CN,IAAa,GAgCjB,SAOIxgJ,YAAY2U,GAAMosI,GAAgB,IAAcC,GAAoB,MAGhE9gJ,KAAKm3D,QAAU1iD,GAAK0iD,SAAW,IAAIgmF,EACnCn9I,KAAK8+B,YAAyBlqC,IAAhB6f,GAAKqqB,OAAuBrqB,GAAKqqB,OAAS+hH,GACxD7gJ,KAAK+gJ,WAAatsI,GAAKssI,YAAcD,GACrC9gJ,KAAKuvB,IAAM9a,GAAK8a,KAAO,KAEvBvvB,KAAKghJ,GAAKhhJ,KAAK8+B,QAAU,KAAO9+B,KAAK8+B,OAAS,KAYtD,iBAAiCmiH,GAI7BnhJ,YAAY2U,GAAO,IACfnG,MAAMmG,IACNzU,KAAK9C,KAAOojJ,GAAcG,eAM9BjiD,MAAMtqC,GAAS,IAGX,OAAO,IAAIgtF,GAAmB,CAC1B/pF,QAASjD,GAAOiD,SAAWn3D,KAAKm3D,QAChCr4B,YAA0BlqC,IAAlBs/D,GAAOp1B,OAAuBo1B,GAAOp1B,OAAS9+B,KAAK8+B,OAC3DiiH,WAAY7sF,GAAO6sF,YAAc/gJ,KAAK+gJ,WACtCxxH,IAAK2kC,GAAO3kC,KAAOvvB,KAAKuvB,UAAO36B,KAa3C,gBAA2BqsJ,GAIvBnhJ,YAAY2U,GAAO,IACfnG,MAAMmG,IACNzU,KAAK9C,KAAOojJ,GAAcK,SAC1B3gJ,KAAK5I,UAAqBxC,IAAd6f,GAAKrd,KAAqBqd,GAAKrd,KAAO,KAEtDonG,MAAMtqC,GAAS,IACX,OAAO,IAAIitF,EAAa,CACpB/pJ,UAAuBxC,IAAhBs/D,GAAO98D,KAAsB88D,GAAO98D,KAAO4I,KAAK5I,KACvD+/D,QAASjD,GAAOiD,SAAWn3D,KAAKm3D,QAChCr4B,YAA2BlqC,IAAlBs/D,GAAOp1B,OAAwBo1B,GAAOp1B,OAAS9+B,KAAK8+B,OAC7DiiH,WAAY7sF,GAAO6sF,YAAc/gJ,KAAK+gJ,WACtCxxH,IAAK2kC,GAAO3kC,KAAOvvB,KAAKuvB,UAAO36B,KAiB3C,gBAAgCqsJ,GAC5BnhJ,YAAY2U,IAERnG,MAAMmG,GAAM,EAAG,iBACfzU,KAAKe,KAAO,oBAIZf,KAAKghJ,IAAK,EAKNhhJ,KAAK2uD,QADT3uD,KAAS8+B,QAAU,KAAO9+B,KAAK8+B,OAAS,IACpB,mCAAkCrqB,GAAK8a,KAAO,kBAG9C,6BAA4B9a,GAAK8a,KAAO,oBAAoB9a,GAAKqqB,UAAUrqB,GAAKssI,aAEpG/gJ,KAAKgxB,MAAQvc,GAAKuc,OAAS,MAqBnC,WAAiBzvB,GAASnK,IACtB,MAAO,CACHA,QACA+/D,QAAS51D,GAAQ41D,QACjBl6D,QAASsE,GAAQtE,QACjBmkJ,QAAS7/I,GAAQ6/I,QACjBvlJ,OAAQ0F,GAAQ1F,OAChBwjJ,eAAgB99I,GAAQ89I,eACxBE,aAAch+I,GAAQg+I,aACtBD,gBAAiB/9I,GAAQ+9I,qBA0D3B+B,SAAN,SACIvhJ,YAAY+4G,IACR74G,KAAK64G,QAAUA,GA4BnByoC,QAAQjhH,GAAO9Q,GAAKhuB,GAAU,IAC1B,IAAIggJ,GAEJ,GAAIlhH,cAAiBggH,GAGjBkB,GAAMlhH,OAEL,CAKD,IAAI82B,GAQAt7D,GANAs7D,GADA51D,GAAQ41D,mBAAmBgmF,EACjB57I,GAAQ41D,QAGR,IAAIgmF,EAAY57I,GAAQ41D,SAIhC51D,GAAQ1F,SAENA,GADA0F,GAAQ1F,kBAAkBgjJ,GACjBt9I,GAAQ1F,OAGR,IAAIgjJ,GAAW,CAAET,WAAY78I,GAAQ1F,UAItD0lJ,GAAM,IAAIlB,GAAYhgH,GAAO9Q,QAAuB36B,IAAjB2M,GAAQnK,KAAqBmK,GAAQnK,KAAO,KAAO,CAClF+/D,WACAl6D,QAASsE,GAAQtE,QACjBpB,UACAwjJ,eAAgB99I,GAAQ89I,eAExBE,aAAch+I,GAAQg+I,cAAgB,OACtCD,gBAAiB/9I,GAAQ+9I,kBAOjC,MAAMkC,IAAUC,QAAGF,IAAKnhH,MAAKshH,OAAWH,IAAQvhJ,KAAK64G,QAAQpmF,OAAO8uH,MAIpE,GAAIlhH,cAAiBggH,IAAmC,WAApB9+I,GAAQ6/I,QACxC,OAAOI,GAKX,MAAMG,GAAOH,GAAQphH,MAAKh4B,OAAQrU,IAAUA,cAAiBotJ,IAE7D,OAAQ5/I,GAAQ6/I,SAAW,YAClB,OAMD,OAAQG,GAAIhC,kBACH,cACD,OAAOoC,GAAKvhH,MAAKprC,OAAKupG,KAElB,GAAiB,OAAbA,GAAInnG,QAAmBmnG,GAAInnG,gBAAgBy6H,aAC3C,MAAM,IAAIpoF,MAAM,mCAEpB,OAAO80D,GAAInnG,YAEd,OACD,OAAOuqJ,GAAKvhH,MAAKprC,OAAKupG,KAElB,GAAiB,OAAbA,GAAInnG,QAAmBmnG,GAAInnG,gBAAgB4nJ,MAC3C,MAAM,IAAIv1G,MAAM,2BAEpB,OAAO80D,GAAInnG,YAEd,OACD,OAAOuqJ,GAAKvhH,MAAKprC,OAAKupG,KAElB,GAAiB,OAAbA,GAAInnG,MAAqC,iBAAbmnG,GAAInnG,KAChC,MAAM,IAAIqyC,MAAM,6BAEpB,OAAO80D,GAAInnG,QAEd,QAGD,OAAOuqJ,GAAKvhH,MAAKprC,OAAKupG,IAAQA,GAAInnG,WAEzC,WAED,OAAOuqJ,WAGP,MAAM,IAAIl4G,MAAO,uCAAsCloC,GAAQ6/I,aAY3EnpI,OAAOsX,GAAKhuB,GAAU,IAClB,OAAOvB,KAAKshJ,QAAQ,SAAU/xH,GAAKhuB,IAOvClM,IAAIk6B,GAAKhuB,GAAU,IACf,OAAOvB,KAAKshJ,QAAQ,MAAO/xH,GAAKhuB,IASpCgrF,KAAKh9D,GAAKhuB,GAAU,IAChB,OAAOvB,KAAKshJ,QAAQ,OAAQ/xH,GAAKhuB,IAoBrCqgJ,MAAMryH,GAAKsyH,IACP,OAAO7hJ,KAAKshJ,QAAQ,QAAS/xH,GAAK,CAC9B1zB,QAAQ,IAAIgjJ,IAAa53I,OAAO46I,GAAe,kBAC/CT,QAAS,OACT7B,aAAc,SAUtBh+I,QAAQguB,GAAKhuB,GAAU,IACnB,OAAOvB,KAAKshJ,QAAQ,UAAW/xH,GAAKhuB,IAOxCmwC,MAAMniB,GAAKn4B,GAAMmK,GAAU,IACvB,OAAOvB,KAAKshJ,QAAQ,QAAS/xH,GAAKuyH,EAAQvgJ,GAASnK,KAQvDuoB,KAAK4P,GAAKn4B,GAAMmK,GAAU,IACtB,OAAOvB,KAAKshJ,QAAQ,OAAQ/xH,GAAKuyH,EAAQvgJ,GAASnK,KAQtD2qJ,IAAIxyH,GAAKn4B,GAAMmK,GAAU,IACrB,OAAOvB,KAAKshJ,QAAQ,MAAO/xH,GAAKuyH,EAAQvgJ,GAASnK,MAGzDiqJ,UAAW1oJ,UAAX,4BAAuG0oJ,IAAVxoJ,MAAsCmpJ,KACnIX,GAAWzoJ,WADkFC,MAC7F,OAA2GwoJ,GAA3GvoJ,QAA2GuoJ,GAA3G,YAjOMA,OAkPN,SACIvhJ,YAAYrD,GAAMwlJ,IACdjiJ,KAAKvD,KAAOA,GACZuD,KAAKiiJ,YAAcA,GAEvBxvH,OAAO8uH,IACH,OAAOvhJ,KAAKiiJ,YAAYC,UAAUX,GAAKvhJ,KAAKvD,OASpD,MAAMo1B,GAAoB,IAAI3F,MAAe,yBACvCi2H,SAAN,SACID,UAAUX,GAAK9kJ,IACX,OAAOA,GAAKg2B,OAAO8uH,KAG3BY,UAAgBxpJ,UAAhB,4BAA4GwpJ,KAC5GA,GAAgBvpJ,WAxC6EC,MAwC7F,OAAgHspJ,GAAhHrpJ,QAAgHqpJ,GAAhH,YANMA,OA8ON,MAAMC,GAAc,mBAqBdC,SAAN,SACIviJ,YAAYwiJ,IACRtiJ,KAAKsiJ,WAAaA,GAOtB7vH,OAAO8uH,IAGH,GAAmB,UAAfA,GAAIrC,OACJ,MAAM,IAAIz1G,MAAO,iFAGrB,OAAO,IAAIkpF,KAAYqC,KAEnB,MAAMutB,GAAMviJ,KAAKsiJ,WAAWziJ,QAY5B,GAXA0iJ,GAAIh+G,KAAKg9G,GAAIrC,OAAQqC,GAAI7B,eACnB6B,GAAIjC,kBACNiD,GAAIjD,iBAAkB,GAG1BiC,GAAIpqF,QAAQvkE,QAAQ,CAACmO,GAAMmB,KAAWqgJ,GAAIC,iBAAiBzhJ,GAAMmB,GAAOs/C,KAAK,OAExE+/F,GAAIpqF,QAAQ93D,IAAI,WACjBkjJ,GAAIC,iBAAiB,SAAU,sCAG9BjB,GAAIpqF,QAAQ93D,IAAI,gBAAiB,CAClC,MAAMojJ,GAAelB,GAAIrB,0BAEJ,OAAjBuC,IACAF,GAAIC,iBAAiB,eAAgBC,IAI7C,GAAIlB,GAAIhC,aAAc,CAClB,MAAMA,GAAegC,GAAIhC,aAAaziJ,cAMtCylJ,GAAIhD,aAAkC,SAAjBA,GAA2BA,GAAe,OAGnE,MAAMmD,GAAUnB,GAAI3B,gBAOpB,IAAI+C,GAAiB,KAGrB,MAAMC,GAAiB,KACnB,GAAuB,OAAnBD,GACA,OAAOA,GAEX,MAAM5B,GAAawB,GAAIxB,YAAc,KAE/B5pF,GAAU,IAAIgmF,EAAYoF,GAAIM,yBAG9BtzH,GAnFtB,YAAwBgzH,IACpB,MAAI,gBAAiBA,IAAOA,GAAIO,YACrBP,GAAIO,YAEX,mBAAmBj8D,KAAK07D,GAAIM,yBACrBN,GAAIQ,kBAAkB,iBAE1B,KA4EiBC,CAAeT,KAAQhB,GAAIhyH,IAEvCozH,UAAiB,IAAIzB,GAAmB,CAAE/pF,WAASr4B,OAAQyjH,GAAIzjH,OAAQiiH,cAAYxxH,SAC5EozH,IAKLM,GAAS,KAEX,IAAM9rF,WAASr4B,UAAQiiH,cAAYxxH,QAAQqzH,KAEvCxrJ,GAAO,KACI,MAAX0nC,KAEA1nC,QAAgC,IAAjBmrJ,GAAIW,SAA4BX,GAAIY,aAAeZ,GAAIW,UAG3D,IAAXpkH,KACAA,GAASskH,GAAS,IAAe,GAMrC,IAAIpC,GAAKliH,IAAU,KAAOA,GAAS,IAGnC,GAAyB,SAArByiH,GAAIhC,cAA2C,iBAATnoJ,GAAmB,CAEzD,MAAMisJ,GAAejsJ,GACrBA,GAAOA,GAAK8E,QAAQkmJ,GAAa,IACjC,IAEIhrJ,GAAgB,KAATA,GAAcowD,KAAK2jC,MAAM/zF,IAAQ,IAadA,CAbc,MAErC45B,IAIH55B,GAAOisJ,GAGHrC,KAEAA,IAAK,EAEL5pJ,GAAO,CAAE45B,SAAOymB,KAAMrgD,MAI9B4pJ,IAEAhsB,GAASv4H,KAAK,IAAI0kJ,EAAa,CAC3B/pJ,QACA+/D,WACAr4B,UACAiiH,cACAxxH,IAAKA,SAAO36B,KAIhBogI,GAAShC,YAITgC,GAAShkG,MAAM,IAAIsyH,EAAkB,CAEjCtyH,MAAO55B,GACP+/D,WACAr4B,UACAiiH,cACAxxH,IAAKA,SAAO36B,MAOlBm5D,GAAW/8B,KACb,MAAQzB,QAAQqzH,KACVrkD,GAAM,IAAI+kD,EAAkB,CAC9BtyH,SACA8N,OAAQyjH,GAAIzjH,QAAU,EACtBiiH,WAAYwB,GAAIxB,YAAc,gBAC9BxxH,IAAKA,SAAO36B,IAEhBogI,GAAShkG,MAAMutE,KAMnB,IAAIglD,IAAc,EAGlB,MAAMC,GAAkBzvJ,KAEfwvJ,KACDvuB,GAASv4H,KAAKmmJ,MACdW,IAAc,GAIlB,IAAIE,GAAgB,CAChBvmJ,KAAMojJ,GAAcI,iBACpBgD,OAAQ3vJ,GAAM2vJ,QAGd3vJ,GAAM4vJ,mBACNF,GAAc9kF,MAAQ5qE,GAAM4qE,OAKP,SAArB4iF,GAAIhC,gBAA6BgD,GAAIY,eACrCM,GAAcG,YAAcrB,GAAIY,cAGpCnuB,GAASv4H,KAAKgnJ,KAIZI,GAAgB9vJ,KAGlB,IAAI+vJ,GAAW,CACX5mJ,KAAMojJ,GAAcE,eACpBkD,OAAQ3vJ,GAAM2vJ,QAId3vJ,GAAM4vJ,mBACNG,GAASnlF,MAAQ5qE,GAAM4qE,OAG3Bq2D,GAASv4H,KAAKqnJ,KAGlBvB,UAAI/7H,iBAAiB,OAAQy8H,IAC7BV,GAAI/7H,iBAAiB,QAASunC,IAC9Bw0F,GAAI/7H,iBAAiB,UAAWunC,IAChCw0F,GAAI/7H,iBAAiB,QAASunC,IAE1BwzF,GAAIlC,iBAEJkD,GAAI/7H,iBAAiB,WAAYg9H,IAEjB,OAAZd,IAAoBH,GAAIwB,QACxBxB,GAAIwB,OAAOv9H,iBAAiB,WAAYq9H,KAIhDtB,GAAIyB,KAAKtB,IACT1tB,GAASv4H,KAAK,CAAES,KAAMojJ,GAAcC,OAG7B,KAEHgC,GAAIt5D,oBAAoB,QAASl7B,IACjCw0F,GAAIt5D,oBAAoB,QAASl7B,IACjCw0F,GAAIt5D,oBAAoB,OAAQg6D,IAChCV,GAAIt5D,oBAAoB,UAAWl7B,IAC/BwzF,GAAIlC,iBACJkD,GAAIt5D,oBAAoB,WAAYu6D,IACpB,OAAZd,IAAoBH,GAAIwB,QACxBxB,GAAIwB,OAAO96D,oBAAoB,WAAY46D,KAI/CtB,GAAI0B,aAAe1B,GAAI2B,MACvB3B,GAAItuH,YAMxBouH,UAAe1pJ,UAAf,4BAA2G0pJ,IAzhBdxpJ,MAyhB8CyxB,QAC3I+3H,GAAezpJ,WA1hB8EC,MA0hB7F,OAA+GwpJ,GAA/GvpJ,QAA+GupJ,GAA/G,YArPMA,OAiQN,MAAM8B,GAAmB,IAAIj4H,MAAe,oBACtCk4H,GAAmB,IAAIl4H,MAAe,oBAM5C,cAKMm4H,SAAN,SACIvkJ,YAAYgoB,GAAKw8H,GAAUpT,IACvBlxI,KAAK8nB,IAAMA,GACX9nB,KAAKskJ,SAAWA,GAChBtkJ,KAAKkxI,WAAaA,GAClBlxI,KAAKukJ,iBAAmB,GACxBvkJ,KAAKwkJ,UAAY,KAIjBxkJ,KAAKykJ,WAAa,EAEtB19C,WACI,GAAsB,WAAlB/mG,KAAKskJ,SACL,OAAO,KAEX,MAAMI,GAAe1kJ,KAAK8nB,IAAIkpH,QAAU,GACxC,OAAI0T,KAAiB1kJ,KAAKukJ,mBACtBvkJ,KAAKykJ,aACLzkJ,KAAKwkJ,WAAYG,QAAkBD,GAAc1kJ,KAAKkxI,YACtDlxI,KAAKukJ,iBAAmBG,IAErB1kJ,KAAKwkJ,WAGpBH,UAAwB1rJ,UAAxB,4BAAoH0rJ,IA3kBvBxrJ,MA2kBgE0vB,MA3kBhE1vB,MA2kBqF+rJ,OA3kBrF/rJ,MA2kB6GsrJ,MAC1ME,GAAwBzrJ,WA5kBqEC,MA4kB7F,OAAwHwrJ,GAAxHvrJ,QAAwHurJ,GAAxH,YA1BMA,OA4CAQ,SAAN,SACI/kJ,YAAYglJ,GAAcC,IACtB/kJ,KAAK8kJ,aAAeA,GACpB9kJ,KAAK+kJ,WAAaA,GAEtB7C,UAAUX,GAAK9kJ,IACX,MAAMuoJ,GAAQzD,GAAIhyH,IAAIzyB,cAKtB,GAAmB,QAAfykJ,GAAIrC,QAAmC,SAAfqC,GAAIrC,QAAqB8F,GAAM9pJ,WAAW,YAClE8pJ,GAAM9pJ,WAAW,YACjB,OAAOuB,GAAKg2B,OAAO8uH,IAEvB,MAAMl7I,GAAQrG,KAAK8kJ,aAAa/9C,WAEhC,OAAc,OAAV1gG,KAAmBk7I,GAAIpqF,QAAQ93D,IAAIW,KAAK+kJ,cACxCxD,GAAMA,GAAI/iD,MAAM,CAAErnC,QAASoqF,GAAIpqF,QAAQ7hE,IAAI0K,KAAK+kJ,WAAY1+I,OAEzD5J,GAAKg2B,OAAO8uH,KAG3BsD,UAAoBlsJ,UAApB,4BAAgHksJ,IArnBnBhsJ,MAqnBwDosJ,IArnBxDpsJ,MAqnB2FurJ,MACxLS,GAAoBjsJ,WAtnByEC,MAsnB7F,OAAoHgsJ,GAApH/rJ,QAAoH+rJ,GAApH,YAxBMA,OAkDAK,SAAN,SACIplJ,YAAYqlJ,GAAS32H,IACjBxuB,KAAKmlJ,QAAUA,GACfnlJ,KAAKwuB,SAAWA,GAChBxuB,KAAKmoG,MAAQ,KAEjB11E,OAAO8uH,IACH,GAAmB,OAAfvhJ,KAAKmoG,MAAgB,CACrB,MAAMi9C,GAAeplJ,KAAKwuB,SAASn5B,IAAIw8B,GAAmB,IAC1D7xB,KAAKmoG,MAAQi9C,GAAalK,YAAY,CAACz+I,GAAMwlJ,KAAgB,IAAIoD,GAAuB5oJ,GAAMwlJ,IAAcjiJ,KAAKmlJ,SAErH,OAAOnlJ,KAAKmoG,MAAM11E,OAAO8uH,KAGjC2D,UAAwBvsJ,UAAxB,4BAAoHusJ,IA9pBvBrsJ,MA8pBgEysJ,GA9pBhEzsJ,MA8pBwFA,SACrLqsJ,GAAwBtsJ,WA/pBqEC,MA+pB7F,OAAwHqsJ,GAAxHpsJ,QAAwHosJ,GAAxH,YAfMA,OA2DAK,SAAN,SAA2Bn4H,iBAKnB,MAAO,CACHE,SAAUi4H,GACVh4H,UAAW,CACP,CAAEnB,QAASy4H,GAAqBx4H,SAAU81H,yBAYnC5gJ,GAAU,IACzB,MAAO,CACH+rB,SAAUi4H,GACVh4H,UAAW,CACPhsB,GAAQ2vI,WAAa,CAAE9kH,QAAS+3H,GAAkBn3H,SAAUzrB,GAAQ2vI,YAAe,GACnF3vI,GAAQwjJ,WAAa,CAAE34H,QAASg4H,GAAkBp3H,SAAUzrB,GAAQwjJ,YAAe,MAKnGQ,UAAqB5sJ,UAArB,4BAAiH4sJ,KACjHA,GAAqB/3H,UA1uBwE30B,MA0uB7F,MAAkH0sJ,KAClHA,GAAqB93H,UA3uBwE50B,MA2uB7F,WAAmJ,CAC3IgsJ,GACA,CAAEz4H,QAASyF,GAAmBq1E,YAAa29C,GAAqB3uJ,OAAO,GACvE,CAAEk2B,QAAS64H,GAAwB54H,SAAUg4H,IAC7C,CAAEj4H,QAAS+3H,GAAkBn3H,SAAU,cACvC,CAAEZ,QAASg4H,GAAkBp3H,SAAU,mBArCzCu4H,OA4DAj1H,SAAN,UAEAA,UAAiB33B,UAAjB,4BAA6G23B,KAC7GA,GAAiB9C,UA1wB4E30B,MA0wB7F,MAA8Gy3B,KAC9GA,GAAiB7C,UA3wB4E50B,MA2wB7F,WAA2I,CACnIwoJ,GACA,CAAEj1H,QAAS41H,EAAa31H,SAAU64H,IAClC7C,GACA,CAAEj2H,QAASk5H,EAAap+C,YAAam7C,KAJ7C30H,SAKiB,CACL63H,GAAqBxlD,YAAY,CAC7BmxC,WAAY,aACZ6T,WAAY,qBAZtBz0H,MAqFak1H,k/CCrsEnB,WAAgCC,GAC5B,QAASxwJ,KAAOwwJ,EACZ,GAAIA,EAAyBxwJ,KAASywJ,EAClC,OAAOzwJ,EAGf,MAAMw0C,MAAM,qDAQhB,WAAwB99B,EAAQo5B,GAC5B,UAAW9vC,KAAO8vC,EACVA,EAAOjrC,eAAe7E,KAAS0W,EAAO7R,eAAe7E,KACrD0W,EAAO1W,GAAO8vC,EAAO9vC,IAYjC,WAAmBoR,GACf,GAAqB,iBAAVA,EACP,OAAOA,EAEX,GAAIxP,MAAM4E,QAAQ4K,GACd,MAAO,IAAMA,EAAMrR,IAAIyyD,GAAWjG,KAAK,MAAQ,IAEnD,GAAa,MAATn7C,EACA,MAAO,GAAKA,EAEhB,GAAIA,EAAMs/I,eACN,MAAQ,GAAEt/I,EAAMs/I,iBAEpB,GAAIt/I,EAAMtF,KACN,MAAQ,GAAEsF,EAAMtF,OAEpB,MAAMw9F,EAAMl4F,EAAMzU,WAClB,GAAW,MAAP2sG,EACA,MAAO,GAAKA,EAEhB,MAAMqnD,EAAernD,EAAI9oG,QAAQ,MACjC,OAAwB,IAAjBmwJ,EAAsBrnD,EAAMA,EAAI7oG,UAAU,EAAGkwJ,GAUxD,WAAgCC,EAAQC,GACpC,OAAkB,MAAVD,GAA6B,KAAXA,EACX,OAAVC,EAAiB,GAAKA,EACZ,MAATA,GAA2B,KAAVA,EAAgBD,EAASA,EAAS,IAAMC,EAUnE,MAAMC,EAAkBL,EAAuB,CAAEK,gBAAiBL,IAalE,WAAoBM,GAChBA,SAAaD,gBAAkBE,EAC/BD,EAAap0J,SAAW,WACpB,OAAO61D,EAAUznD,SAEdgmJ,EAeX,WAA2B9oJ,GACvB,OAAOgpJ,EAAahpJ,GAAQA,IAASA,EAGzC,WAAsBkT,GAClB,MAAqB,mBAAPA,GAAqBA,EAAGtW,eAAeisJ,IACjD31I,EAAG21I,kBAAoBE,EAyC/B,iBAA2Bx8G,MACvB3pC,YAAYqmJ,EAAMx3F,GACdrgD,MAQR,YAA4B63I,EAAMx3F,GAQ9B,MAJoB,MADG7rD,KAAK6H,IAAIw7I,KACCx3F,EAAU,KAAOA,EAAU,KAZlDy3F,CAAmBD,EAAMx3F,IAC/B3uD,KAAKmmJ,KAAOA,GA+BpB,YAAyBhxJ,GACrB,MAAqB,iBAAVA,EACAA,EACE,MAATA,EACO,GAGJ63F,OAAO73F,GAOlB,WAA2BA,GACvB,MAAqB,mBAAVA,EACAA,EAAM4L,MAAQ5L,EAAMvD,WACV,iBAAVuD,GAA+B,MAATA,GAAuC,mBAAfA,EAAM+H,KACpD/H,EAAM+H,KAAK6D,MAAQ5L,EAAM+H,KAAKtL,WAElCy0J,GAAgBlxJ,GA4B3B,WAAoCkR,EAAOigJ,GACvC,MAAMC,EAAkBD,EAAgB,OAAMA,IAAiB,GAC/D,MAAM,IAAIE,IAAa,IAAgC,mBAAkBC,EAAkBpgJ,WAAekgJ,KAgF9G,YAAoBG,EAAKC,EAAQC,EAAUC,GACvC,MAAM,IAAIp9G,MAAO,oBAAmBi9G,KACjB,MAAdG,EAAqB,GAAM,gBAAeD,KAAYC,KAAcF,gBA+C7E,YAA4B73D,GACxB,MAAO,CACHzoF,MAAOyoF,EAAKzoF,MACZ+9H,WAAYt1C,EAAKs1C,YAAc,KAC/BtrI,QAASg2F,EAAKh2F,QACd3D,WAAOP,GA0Bf,YAA0B2M,GACtB,MAAO,CAAEgsB,UAAWhsB,EAAQgsB,WAAa,GAAIG,QAASnsB,EAAQmsB,SAAW,IAQ7E,YAA0BxwB,GACtB,OAAO4pJ,GAAiB5pJ,EAAM6pJ,KAAgBD,GAAiB5pJ,EAAM8pJ,IAMzE,YAA0B9pJ,EAAM+pJ,GAC5B,OAAO/pJ,EAAKpD,eAAemtJ,GAAS/pJ,EAAK+pJ,GAAS,KA2CtD,YAAwB/pJ,GACpB,OAAOA,IAASA,EAAKpD,eAAeotJ,KAAehqJ,EAAKpD,eAAeqtJ,KACnEjqJ,EAAKgqJ,IACL,KAER,MAAMH,GAAcrB,EAAuB,CAAE9sJ,WAAO8sJ,IAC9CwB,GAAaxB,EAAuB,CAAEj4H,UAAMi4H,IAE5CsB,GAAoBtB,EAAuB,CAAE0B,gBAAiB1B,IAC9DyB,GAAkBzB,EAAuB,CAAE2B,cAAe3B,IAchE,IAAI4B,GAAW,OAAXA,OAAW,IAKCA,GAAYhgH,QAAa,GAAK,UAK1CggH,GAAYA,GAAYC,KAAU,GAAK,OAEvCD,GAAYA,GAAYE,KAAU,GAAK,OAEvCF,GAAYA,GAAYG,SAAc,GAAK,WAE3CH,GAAYA,GAAYI,SAAc,GAAK,WAhB3CJ,IAAW,GAmCf,IAAIK,GAOJ,YAAiCC,GAC7B,MAAMC,EAAWF,GACjBA,UAAwBC,EACjBC,EASX,YAA4BxhJ,EAAOyhJ,EAAet8H,GAC9C,MAAMu8H,EAAgBC,GAAiB3hJ,GACvC,OAAI0hJ,GAA6C,QAA5BA,EAAc3jB,gBACAxvI,IAAxBmzJ,EAAc5yJ,MAAsB4yJ,EAAc5yJ,MAAQ4yJ,EAAcjvJ,UAC3EivJ,EAAc5yJ,MAElBq2B,EAAQ87H,GAAYI,SACb,UACW9yJ,IAAlBkzJ,EACOA,OACXG,EAA2BxgG,EAAUphD,GAAQ,YA8BjD,YAAuB+J,GACnB,MAAO,CAAExe,SAAUwe,GAAKxe,WAkB5B,IAAIs2J,GAAuB,OAAvBA,OAAuB,IAQCA,GAAwBC,OAAY,GAAK,SAKjED,GAAwBA,GAAwB5gH,QAAa,GAAK,UAblE4gH,IAAuB,GAoFvBE,GAAmB,MACtB,OAAUjgI,EAwBRigI,KAAwBA,GAAsB,KAd3BjgI,EAAkBkgI,SAAc,GAAK,WAOvDlgI,EAAkBA,EAAkBmgI,KAAU,GAAK,OAMnDngI,EAAkBA,EAAkBogI,UAAe,GAAK,YAxBxDH,GACH,IAAUjgI,CADPigI,EAAmB,GAkCvB,MAAMI,GAAqC,oBAAfC,YAA8BA,WACpDC,GAA6B,oBAAXj3J,QAA0BA,OAC5Ck3J,GAAyB,oBAAT90F,MAAqD,oBAAtB+0F,mBACjD/0F,gBAAgB+0F,mBAAqB/0F,KAKnCg1F,GAAUL,IAJmB,oBAAXp7D,QAA0BA,QAINs7D,IAAYC,GAyFlDG,GAAY,GACZC,GAAc,GAkBdC,GAActD,EAAuB,CAAEuD,UAAMvD,IAC7CwD,GAAaxD,EAAuB,CAAE7S,UAAM6S,IAC5CyD,GAAczD,EAAuB,CAAE/M,WAAO+M,IAC9C0D,GAAa1D,EAAuB,CAAEl4H,UAAMk4H,IAC5C2D,GAAiB3D,EAAuB,CAAE/sJ,UAAM+sJ,IAOhD4D,GAAgB5D,EAAuB,CAAE6D,kBAAmB7D,IASlE,IAAI8D,GAAmB,EAiBvB,YAA2BC,GACvB,OAAOC,GAAc,KAIjB,MACMC,EAAiB,GACjBzoJ,EAAM,CACRhE,KAHSusJ,EAAoBvsJ,KAI7B0sJ,kBAAmB,KACnBl6G,MAAO+5G,EAAoB/5G,MAC3Bm6G,KAAMJ,EAAoBI,KAC1B/wJ,QAAS,KACTgxJ,SAAUL,EAAoBK,UAAY,KAC1CC,OAAQN,EAAoBM,QAAU,KACtCC,mBAAoBP,EAAoBO,mBACxCC,aAAcR,EAAoBQ,cAAgB,KAClDC,SAAUT,EAAoBS,UAAY,EAC1CC,UAAWV,EAAoBU,WAAa,KAC5CC,eAAgBX,EAAoBW,gBAAkB,KACtDT,eAAgBA,EAChBvpB,OAAQ,KACRiqB,QAAS,KACTC,SAAUb,EAAoBa,UAAY,KAC1CC,OAAQd,EAAoBe,kBAAoBtC,GAAwBC,OACxEsC,cAAe,KACfC,SAAU,KACVt8H,UAAWq7H,EAAoBr7H,WAAa26H,GAC5C4B,UAAWlB,EAAoBkB,WAAa,KAC5CC,SAAUnB,EAAoBmB,UAAY,KAC1C91J,KAAM20J,EAAoB30J,MAAQ,GAClCozB,cAAeuhI,EAAoBvhI,eAAiBkgI,GAAoBC,SACxEp1I,GAAI,IACJvY,OAAQ+uJ,EAAoB/uJ,QAAUquJ,GACtC5sJ,EAAG,KACH0uJ,SAAU,KACVC,QAASrB,EAAoBqB,SAAW,KACxCC,MAAO,MAELC,EAAiBvB,EAAoBwB,WACrCC,EAAUzB,EAAoBmB,SAC9BO,EAAY1B,EAAoB2B,MACtClqJ,SAAI+R,IAAMu2I,KACVtoJ,EAAIk/H,OAASirB,GAAa5B,EAAoBrpB,OAAQupB,GAClDzoJ,EAAImpJ,QAAUgB,GAAa5B,EAAoBY,SAC/Ca,GAAWA,EAAQt4J,QAASwd,GAAOA,EAAGlP,IAC1CA,EAAIupJ,cAAgBO,EAChB,KAAiC,mBAAnBA,EAAgCA,IAAmBA,GAC5Dh2J,IAAIs2J,IACT,KACJpqJ,EAAIwpJ,SAAWS,EACX,KAA4B,mBAAdA,EAA2BA,IAAcA,GAAWn2J,IAAIu2J,IACtE,KACGrqJ,IAYf,YAA6BhE,EAAM+tJ,EAAYG,GAC3C,MAAMlqJ,EAAMhE,EAAK+rJ,UACjB/nJ,EAAIupJ,cAAgB,IAAMQ,EAAWj2J,IAAIs2J,IACzCpqJ,EAAIwpJ,SAAW,IAAMU,EAAMp2J,IAAIu2J,IAEnC,YAA6BruJ,GAKzB,OAJYsuJ,GAAgBtuJ,IAkLhC,YAAyBA,GACrB,OAAOA,EAAKgsJ,KAAe,KAnLUuC,CAAgBvuJ,GAMzD,YAAwBA,GAKpB,OA0KJ,YAAsBA,GAClB,OAAOA,EAAKisJ,KAAgB,KA/KhBuC,CAAaxuJ,GAM7B,MAAMyuJ,GAAyB,GAI/B,YAA0BzqJ,GACtB,OAAOwoJ,GAAc,KACjB,MAAMnrD,EAAM,CACRrhG,KAAMgE,EAAIhE,KACV4yB,UAAW5uB,EAAI4uB,WAAai5H,GAC5B6C,aAAc1qJ,EAAI0qJ,cAAgB7C,GAClCr7H,QAASxsB,EAAIwsB,SAAWq7H,GACxB59B,QAASjqH,EAAIiqH,SAAW49B,GACxB8C,wBAAyB,KACzBf,QAAS5pJ,EAAI4pJ,SAAW,KACxB73I,GAAI/R,EAAI+R,IAAM,MAElB,OAAc,MAAV/R,EAAI+R,KACJ04I,GAAuBzqJ,EAAI+R,IAAM/R,EAAIhE,MAElCqhG,IA4Ef,YAAsB/jG,EAAKsxJ,GACvB,GAAW,MAAPtxJ,EACA,OAAOsuJ,GACX,MAAMiD,EAAY,GAClB,UAAWC,KAAexxJ,EACtB,GAAIA,EAAIV,eAAekyJ,GAAc,CACjC,IAAIC,EAAazxJ,EAAIwxJ,GACjBE,EAAeD,EACfp1J,MAAM4E,QAAQwwJ,KACdC,EAAeD,EAAW,GAC1BA,EAAaA,EAAW,IAE5BF,EAAUE,GAAcD,EACpBF,IACCA,EAAUG,GAAcC,GAIrC,OAAOH,EAkBX,MAAMI,GAAoBC,GAiB1B,YAAsBC,GAClB,MAAO,CACHnvJ,KAAMmvJ,EAAQnvJ,KACd6D,KAAMsrJ,EAAQtrJ,KACdjI,QAAS,KACTg3C,MAAuB,IAAjBu8G,EAAQv8G,KACd17C,UAAWi4J,EAAQnvJ,KAAKutF,UAAUz+D,aAAe,MAQzD,YAAyB9uB,GACrB,OAAOA,EAAK8rJ,KAAgB,KAQhC,YAAwB9rJ,EAAMovJ,GAC1B,MAAMC,EAAcrvJ,EAAKksJ,KAAe,KACxC,IAAKmD,IAAiC,IAAlBD,EAChB,MAAM,IAAI7iH,MAAO,QAAOge,EAAUvqD,0CAEtC,OAAOqvJ,EAwGX,YAAiBp3J,GACb,OAAO0B,MAAM4E,QAAQtG,IAAiC,iBAAhBA,EAjG7B,EAiG6C,CAM1D,YAAsBA,GAClB,OAAO0B,MAAM4E,QAAQtG,KAA0B,IAAhBA,EAxGtB,EAwGsC,CAEnD,YAA4Bq3J,GACxB,OAAmD,IAA7B,EAAdA,EAAMhhI,MAAqC,CAEvD,YAAyBghI,GACrB,OAAmD,IAA7B,EAAdA,EAAMhhI,MAAqC,CAEvD,YAAyBghI,GACrB,OAAmD,IAA7B,EAAdA,EAAMhhI,MAAqC,CAEvD,YAAwBtqB,GACpB,OAAwB,OAAjBA,EAAI4oJ,QAAa,CAE5B,YAAoBn+I,GAChB,OAA8C,IAAtB,IAAhBA,EA1EE,GA0EoC,CAqIlD,YAAuBzO,EAAMovJ,GAKzB,OAJsBpvJ,EAAKpD,eAAeuvJ,IAInBnsJ,EAAKmsJ,IAAkB,KAmBlD,SACIvpJ,YAAY8e,EAAeygD,EAAcotF,GACrCzsJ,KAAK4e,cAAgBA,EACrB5e,KAAKq/D,aAAeA,EACpBr/D,KAAKysJ,YAAcA,EAKvBC,gBACI,OAAO1sJ,KAAKysJ,aAiCpB,cACI,OAAOE,GAEX,YAAgClwD,GAC5B,OAAIA,EAAWv/F,KAAKutF,UAAUvrB,cAC1Bu9B,EAAWouD,SAAW+B,IAEnBC,GAiBX,cACI,MAAMC,EAAqBC,GAAsB/sJ,MAC3CsnD,EAAiC,MAAvBwlG,OAA+D,EAASA,EAAmBxlG,QAC3G,GAAIA,EAAS,CACT,MAAMugG,EAAWiF,EAAmBjF,SACpC,GAAIA,IAAaiB,GACbgE,EAAmBjF,SAAWvgG,OAK9B,QAASryD,KAAOqyD,EACZugG,EAAS5yJ,GAAOqyD,EAAQryD,GAGhC63J,EAAmBxlG,QAAU,KAC7BtnD,KAAKk/D,YAAY5X,IAGzB,YAA6By6E,EAAU5sI,EAAO82J,EAAYe,GACtD,MAAMF,EAAqBC,GAAsBhrB,IAarD,YAA+BA,EAAU/8E,GACrC,OAAO+8E,EAASkrB,IAAwBjoG,EAbpCkoG,CAAsBnrB,EAAU,CAAE8lB,SAAUiB,GAAWxhG,QAAS,OAC9DA,EAAUwlG,EAAmBxlG,UAAYwlG,EAAmBxlG,QAAU,IACtEugG,EAAWiF,EAAmBjF,SAC9BqE,EAAelsJ,KAAK2pJ,eAAesC,GACnCkB,GAAiBtF,EAASqE,GAChC5kG,EAAQ4kG,GAAgB,IAAIkB,GAAaD,IAAkBA,GAAe9tF,aAAclqE,EAAO0yJ,IAAaiB,IAC5G/mB,EAASirB,GAAe73J,EAtC5Bk4J,GAAqBC,WAAY,EAwCjC,MAAML,GAAuB,sBAC7B,YAA+BlrB,GAC3B,OAAOA,EAASkrB,KAAyB,KAkF7C,IAAI1kI,GAQJ,YAAqB72B,GACjB62B,GAAW72B,EAQf,cACI,YAAiBkD,IAAb2zB,GACOA,GAEkB,oBAAb72B,SACLA,cADN,CACMA,CAwBf,YAA8Bo3B,GAC1B,QAAUA,EAAS9U,OAEvB,MAAMu5I,GAAsB,CACxBtlI,eAAgB,CAACrS,EAAa43I,IACnBC,MAkCf,YAAqBt4J,GACjB,KAAO0B,MAAM4E,QAAQtG,IACjBA,EAAQA,EApfH,GAsfT,OAAOA,EAkCX,YAA0B2e,EAAO45I,GAG7B,OAAOC,GAAYD,EAAM55I,IAU7B,YAA0B04I,EAAOkB,GAK7B,OAFaC,GAAYD,EAAMlB,EAAM14I,QAuBzC,YAAkBi3I,EAAOj3I,GAKrB,OAFci3I,EAAMj2J,KAAKgf,GAK7B,YAAcwmB,EAAMxmB,GAEhB,OAAOwmB,EAAKxmB,GAEhB,YAAkC85I,EAAWC,GAGzC,MAAMC,EAAYD,EAASD,GAE3B,OADcG,GAAQD,GAAaA,EAAYA,EA/kBtC,EA+kBgDE,CAI7D,YAAwB1zH,GACpB,OAAgD,IAA1B,EAAdA,EAllBE,GAklBsC,CAQpD,YAAsCA,GAClC,OAA8C,MAAxB,IAAdA,EA3lBE,GA2lBoC,CAMlD,YAAqByvH,EAAQj2I,GACzB,OAAc,MAAVA,EACO,KAEJi2I,EAAOj2I,GAMlB,YAAgC45I,GAC5BA,EA3lBwB,IA2lBK,EASjC,YAAqCO,EAAY3xE,GAC7C2xE,EAnnBkC,IAmnBW3xE,EAC7C,IAAI4xE,EAAkBD,EAClB73J,EAAS63J,EAvnBF,GAwnBX,KAAkB,OAAX73J,IACU,IAAXkmF,GAAmE,IAAnD4xE,EAvnBY,KAwnBd,IAAX5xE,GAAoE,IAAnD4xE,EAxnBQ,KAynB9B93J,EAznB8B,IAynBWkmF,EACzC4xE,EAAkB93J,EAClBA,EAASA,EA7nBF,EA6nBS+3J,CAWxB,MAAMC,GAAmB,CACrBC,OAAQC,GAAa,MACrBC,iBAAiB,GA4BrB,cACI,OAAOH,GAAiBG,gBAiD5B,cACI,OAAOH,GAAiBC,OAAOX,MAKnC,cACI,OAAOU,GAAiBC,OAAOtD,MAcnC,YAAuByD,GACnBJ,UAAiBC,OAAOI,aAAeD,EAChCA,EA1uBK,EA0uBSE,CAEzB,cACI,IAAIC,EAAeC,KACnB,KAAwB,OAAjBD,GAA+C,KAAtBA,EAAazxJ,MACzCyxJ,EAAeA,EAAav4J,OAEhC,OAAOu4J,EAEX,cACI,OAAOP,GAAiBC,OAAOM,aAEnC,cACI,MAAMN,EAASD,GAAiBC,OAC1BM,EAAeN,EAAOM,aAC5B,OAAON,EAAOQ,SAAWF,EAAeA,EAAav4J,OAEzD,YAAyBo2J,EAAOqC,GAE5B,MAAMR,EAASD,GAAiBC,OAChCA,EAAOM,aAAenC,EACtB6B,EAAOQ,SAAWA,EAEtB,cACI,OAAOT,GAAiBC,OAAOQ,SAEnC,cACIT,GAAiBC,OAAOQ,UAAW,EAiBvC,cACI,MAAMR,EAASD,GAAiBC,OAChC,IAAIv6I,EAAQu6I,EAAOS,iBACnB,OAAc,IAAVh7I,IACAA,EAAQu6I,EAAOS,iBAAmBT,EAAOtD,MAAMgE,mBAE5Cj7I,EAEX,cACI,OAAOs6I,GAAiBC,OAAOW,aAKnC,cACI,OAAOZ,GAAiBC,OAAOW,eAEnC,YAA+B9kI,GAC3B,MAAMmkI,EAASD,GAAiBC,OAC1Bv6I,EAAQu6I,EAAOW,aACrBX,SAAOW,aAAeX,EAAOW,aAAe9kI,EACrCpW,EAKX,YAAwBm7I,GACpBb,GAAiBC,OAAOa,OAASD,EAarC,YAAuCH,EAAkBK,GACrD,MAAMd,EAASD,GAAiBC,OAChCA,EAAOW,aAAeX,EAAOS,iBAAmBA,EAChDM,GAAyBD,GAe7B,YAAkCA,GAC9Bf,GAAiBC,OAAOc,sBAAwBA,EAYpD,cACI,OAAOf,GAAiBC,OAAO7jJ,kBAEnC,YAA8BrV,GAC1Bi5J,GAAiBC,OAAO7jJ,kBAAoBrV,EAOhD,YAA6Bu4J,GACzB,MAAM3C,EAAQ2C,EAh3BJ,GAk3BV,OAAmB,IAAf3C,EAAM7tJ,KAEC6tJ,EAAMsE,UAKE,IAAftE,EAAM7tJ,KACCwwJ,EAr3BA,GAw3BJ,KAeX,YAAiBA,EAAOlB,EAAOhhI,GAE3B,GAAIA,EAAQ87H,GAAYG,SAAU,CAE9B,IAAI6H,EAAc9C,EACd+C,EAAc7B,EAClB,OAEI4B,EAAcA,EAAYl5J,OACN,OAAhBk5J,GAA0B9jI,EAAQ87H,GAAYC,OAC9C+H,EAAcE,GAAoBD,GACd,OAAhBD,IAKJC,EAAcA,EA74BL,IAi5Be,GAApBD,EAAYpyJ,UAQxB,GAAoB,OAAhBoyJ,EAEA,OAAO,EAGP9C,EAAQ8C,EACR5B,EAAQ6B,EAIhB,MAAMlB,EAASD,GAAiBC,OAASoB,KACzCpB,SAAOM,aAAenC,EACtB6B,EAAOX,MAAQA,GACR,EAaX,YAAmBgC,GAGf,MAAMC,EAAYF,KAYZ1E,EAAQ2E,EAj9BJ,GAk9BVtB,GAAiBC,OAASsB,EAE1BA,EAAUhB,aAAe5D,EAAM6E,WAC/BD,EAAUjC,MAAQgC,EAClBC,EAAU5E,MAAQA,EAClB4E,EAAUlB,aAAeiB,EACzBC,EAAUX,aAAejE,EAAMgE,kBAC/BY,EAAUT,QAAS,EAKvB,cACI,MAAMW,EAAgBzB,GAAiBC,OACjCyB,EAAgC,OAAlBD,EAAyB,KAAOA,EAAcE,MAElE,OADkC,OAAhBD,EAAuBxB,GAAauB,GAAiBC,EAG3E,YAAsB15J,GAClB,MAAMi4J,EAAS,CACXM,aAAc,KACdE,UAAU,EACVnB,MAAO,KACP3C,MAAO,KACPiF,eAAe,EACfvB,aAAc,KACdwB,kBAAmB,EACnBC,iBAAkB,KAClBf,uBAAuB,EACvBL,kBAAkB,EAClBE,cAAc,EACdxkJ,kBAAmB,EACnBpU,OAAQA,EACR25J,MAAO,KACPb,QAAQ,GAEZ94J,OAAW,OAAXA,IAAoBA,EAAO25J,MAAQ1B,GAC5BA,EAWX,cACI,MAAM8B,EAAY/B,GAAiBC,OACnCD,UAAiBC,OAAS8B,EAAU/5J,OACpC+5J,EAAUxB,aAAe,KACzBwB,EAAUzC,MAAQ,KACXyC,EAQX,MAAMC,GAAUC,GAShB,cACI,MAAMF,EAAYE,KAClBF,EAAUtB,UAAW,EACrBsB,EAAUpF,MAAQ,KAClBoF,EAAUH,eAAgB,EAC1BG,EAAU1B,aAAe,KACzB0B,EAAUF,kBAAoB,EAC9BE,EAAUhB,uBAAwB,EAClCgB,EAAUD,iBAAmB,KAC7BC,EAAUrB,kBAAmB,EAC7BqB,EAAUnB,cAAe,EACzBmB,EAAU3lJ,kBAAoB,EAsBlC,cACI,OAAO4jJ,GAAiBC,OAAO2B,cAWnC,YAA0Bl8I,GAKtBs6I,GAAiBC,OAAO2B,cAAgBl8I,EAK5C,cACI,MAAMu6I,EAASD,GAAiBC,OAChC,OAAOiC,GAASjC,EAAOtD,MAAOsD,EAAO2B,eA4FzC,YAAgCjF,EAAOyB,GAKnC,QAAS1xJ,EAAI0xJ,EAAM+D,eAAgBnmI,EAAMoiI,EAAMgE,aAAc11J,EAAIsvB,EAAKtvB,IAAK,CAGvE,MAAM21J,EAAiBC,EAFI57J,KAAKgG,GAEIoC,KAAKutF,WACjCkmE,qBAAoBC,wBAAuBzqH,mBAAiB0qH,sBAAoB7kI,gBAAgBykI,EACpGE,IACC5F,EAAM+F,eAAiB/F,EAAM+F,aAAe,KAAKp9J,MAAMoH,EAAG61J,GAE3DC,KACC7F,EAAM+F,eAAiB/F,EAAM+F,aAAe,KAAKp9J,KAAKoH,EAAG81J,IACzD7F,EAAMgG,oBAAsBhG,EAAMgG,kBAAoB,KAAKr9J,KAAKoH,EAAG81J,IAEpEzqH,KACC4kH,EAAMiG,YAAcjG,EAAMiG,UAAY,KAAKt9J,MAAMoH,EAAGqrC,IAErD0qH,MACC9F,EAAMiG,YAAcjG,EAAMiG,UAAY,KAAKt9J,KAAKoH,EAAG+1J,KACnD9F,EAAMkG,iBAAmBlG,EAAMkG,eAAiB,KAAKv9J,KAAKoH,EAAG+1J,KAE/C,MAAf7kI,KACC++H,EAAMmG,eAAiBnG,EAAMmG,aAAe,KAAKx9J,KAAKoH,EAAGkxB,KAoCtE,WAA2B0hI,EAAOnhD,EAAOqhD,GACrCuD,GAAUzD,EAAOnhD,EAAO,EAA4BqhD,GAexD,WAAkCF,EAAOnhD,EAAO6kD,EAAWxD,IAGnC,EAAfF,EA5vCK,MA4vC0C0D,GAChDD,GAAUzD,EAAOnhD,EAAO6kD,EAAWxD,GAG3C,YAAiCF,EAAO0D,GAGpC,IAAI5lI,EAAQkiI,EAnwCF,IAowCG,EAARliI,KAAwC4lI,IACzC5lI,GAAS,KACTA,GAAS,EACTkiI,EAvwCM,GAuwCSliI,GAiBvB,YAAmB6lI,EAAa70J,EAAK40J,EAAWE,GAG5C,MAGMC,EAAqC,MAApBD,EAA2BA,GAAmB,EAC/DvuJ,EAAMvG,EAAIzK,OAAS,EACzB,IAAIy/J,EAAqB,EACzB,QAAS12J,QAN+BlG,IAArB08J,EACqB,MAAnCD,EA3wCmB,IA4wCpB,EAIqBv2J,GAAIiI,EAAKjI,KAE9B,GAAoB,iBADP0B,EAAI1B,GAAI,IAGjB,GADA02J,EAAqBh1J,EAAI1B,IACD,MAApBw2J,GAA4BE,GAAsBF,EAClD,WAKAG,EADmB32J,IAAK,IAExBu2J,EA3xCY,KA2xCwB,QACpCG,EAAqBD,IAAoC,GAAlBA,KACvCG,GAASL,EAAaD,EAAW50J,EAAK1B,IACtCu2J,EA9xCY,KA+xC4B,WAAnCA,EA/xCO,KA+xC4Ev2J,GAChF,GAEZA,KAYZ,YAAkBu2J,EAAaD,EAAW50J,EAAK1B,GAC3C,MAAM22J,EAAaj1J,EAAI1B,GAAK,EACtBiyG,EAAOvwG,EAAI1B,EAAI,GAEf62J,EAAYN,EADKI,GAAcj1J,EAAI1B,GAAK0B,EAAI1B,IAElD,GAAI22J,GAGA,GAAIG,EAv0CE,IAq0C8C,GAG/CP,EAvzCe,KAuzCqB,KACf,EAArBA,EAz0CC,MAy0CoDD,EAAW,CACjEC,EA10CE,IA00CoB,KAEtB,IACItkD,EAAKl7G,KAAK8/J,EAGoC5kD,CAHpC4kD,QAGoC5kD,QAMtD,IACIA,EAAKl7G,KAAK8/J,EAGoC5kD,CAHpC4kD,QAGoC5kD,EAY1D,MAAM8kD,GAAqB,EA+F3B,QACI/xJ,YAIAhH,EAIAg5J,EAAgBC,GACZ/xJ,KAAKlH,QAAUA,EAKfkH,KAAKgyJ,WAAY,EAGjBhyJ,KAAKiyJ,oBAAsBH,EAC3B9xJ,KAAKkyJ,WAAaH,GAkI1B,YAAyBjpI,EAAU08E,EAAQ2sD,GACvC,MAAMC,EAASC,GAAqBvpI,GACpC,IAAIhuB,EAAI,EACR,KAAOA,EAAIq3J,EAAMpgK,QAAQ,CACrB,MAAMoD,EAAQg9J,EAAMr3J,GACpB,GAAqB,iBAAV3F,EAAoB,CAG3B,GAAc,IAAVA,EACA,MAIJ2F,IACA,MAAMw3J,EAAeH,EAAMr3J,KACrBy3J,EAAWJ,EAAMr3J,KACjB03J,GAAUL,EAAMr3J,KAEtBs3J,EACItpI,EAAS1tB,aAAaoqG,EAAQ+sD,EAAUC,GAASF,GACjD9sD,EAAOitD,eAAeH,EAAcC,EAAUC,QAEjD,CAED,MAAMD,EAAWp9J,EACXq9J,EAAUL,IAAQr3J,GAGpB43J,GAAgBH,GACZH,GACAtpI,EAASC,YAAYy8E,EAAQ+sD,EAAUC,GAI3CJ,EACItpI,EAAS1tB,aAAaoqG,EAAQ+sD,EAAUC,GACxChtD,EAAOpqG,aAAam3J,EAAUC,GAEtC13J,KAOR,OAAOA,EASX,YAAmC63J,GAC/B,OAAkB,IAAXA,GAA0C,IAAXA,GACvB,IAAXA,CAAW,CAEnB,YAAyB5xJ,GAIrB,OAA8B,KAAvBA,EAAKu1G,WAAW,EAAO,CAUlC,YAAwBs8C,EAAKriE,GACzB,GAAY,OAARA,GAA+B,IAAfA,EAAIx+F,OAGnB,GAAY,OAAR6gK,GAA+B,IAAfA,EAAI7gK,OAEzB6gK,EAAMriE,EAAInkF,YAET,CACD,IAAIymJ,GAAY,EAChB,QAAS/3J,EAAI,EAAGA,EAAIy1F,EAAIx+F,OAAQ+I,IAAK,CACjC,MAAMC,EAAOw1F,EAAIz1F,GACG,iBAATC,EACP83J,EAAY93J,EAGM,IAAd83J,GAMAC,GAAmBF,EAAKC,EAAW93J,EAAM,MAHtB,IAAd83J,GACS,IAAdA,EAE+CtiE,IAAMz1F,GAIN,OAK/D,OAAO83J,EAWX,YAA4BA,EAAKD,EAAQjgJ,EAAMC,EAAMxd,GACjD,IAAI2F,EAAI,EAEJi4J,EAAuBH,EAAI7gK,OAE/B,IAAe,IAAX4gK,EACAI,GAAuB,OAGvB,KAAOj4J,EAAI83J,EAAI7gK,QAAQ,CACnB,MAAMihK,EAAWJ,EAAI93J,KACrB,GAAwB,iBAAbk4J,EAAa,CACpB,GAAIA,IAAaL,EAAQ,CACrBI,GAAuB,EACvB,SAEKC,EAAWL,EAAQ,CAExBI,EAAuBj4J,EAAI,EAC3B,QAMhB,KAAOA,EAAI83J,EAAI7gK,QAAQ,CACnB,MAAMgJ,EAAO63J,EAAI93J,GACjB,GAAoB,iBAATC,EAGP,MAEC,GAAIA,IAAS2X,GAEd,GAAa,OAATC,EAIA,YAHc,OAAVxd,IACAy9J,EAAI93J,EAAI,GAAK3F,IAEjB,GAEKwd,IAASigJ,EAAI93J,EAAI,GAEtB,YADA83J,EAAI93J,EAAI,GAAK3F,EACb,CAIR2F,IACa,OAAT6X,GACA7X,IACU,OAAV3F,GACA2F,KAGqB,IAAzBi4J,IACAH,EAAIt4J,OAAOy4J,EAAsB,EAAGJ,GACpC73J,EAAIi4J,EAAuB,GAE/BH,EAAIt4J,OAAOQ,IAAK,EAAG4X,GACN,OAATC,GACAigJ,EAAIt4J,OAAOQ,IAAK,EAAG6X,GAET,OAAVxd,GACAy9J,EAAIt4J,OAAOQ,IAAK,EAAG3F,GAY3B,WAA2B89J,GACvB,OAAOA,IAAmBpB,EAE9B,WAAgCoB,GAM5B,OAAwB,MAAjBA,CAAiB,CAc5B,WAA+BjgI,EAAUkgI,GACrC,IAAIC,EAbR,WAAqCF,GACjC,OAAOA,GAAkB,GAYRG,CAA4BpgI,GACzCqgI,EAAaH,EAKjB,KAAOC,EAAa,GAChBE,EAAaA,EAvyDI,IAwyDjBF,IAEJ,OAAOE,EA8CX,IAAIC,IAAuB,EAC3B,YAAiCjwJ,GAC7B,MAAMuf,EAAW0wI,GACjBA,UAAuBjwJ,EAChBuf,EAgBX,IAAI2wI,GAAkB,EA0CtB,YAAwC/G,EAAOkB,GAC3C,MAAM8F,EAAwBC,GAAiBjH,EAAOkB,GACtD,IAA8B,IAA1B8F,EACA,OAAOA,EAEX,MAAMzI,EAAQ2C,EA16DJ,GA26DN3C,EAAM2I,kBACNlH,EAAMmH,cAAgBjG,EAAM37J,OAC5B6hK,GAAY7I,EAAMj2J,KAAM03J,GACxBoH,GAAYlG,EAAO,MACnBkG,GAAY7I,EAAM8I,UAAW,OAEjC,MAAMC,EAAYC,GAA0BvH,EAAOkB,GAC7CiG,EAAgBnH,EAAMmH,cAG5B,GAAIK,EAAkBF,GAAY,CAC9B,MAAMG,EAAcC,EAAuBJ,GACrCvE,EAAc4E,EAAsBL,EAAWpG,GAC/C0G,GAAa7E,EAx7Db,GAw7DgCz6J,KAGtC,QAASgG,GAAI,EAAGA,GAAI,EAAoBA,KACpC4yJ,EAAMiG,EAAgB74J,IAAKy0J,EAAY0E,EAAcn5J,IAAKs5J,GAAWH,EAAcn5J,IAG3F4yJ,SAAMiG,EAAgB,GAAkBG,EACjCH,EAEX,YAAqBn3J,EAAK63J,GACtB73J,EAAI9I,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG2gK,GAErC,YAA0B7H,EAAOkB,GAC7B,OAA4B,IAAxBlB,EAAMmH,eAGLnH,EAAMp2J,QAAUo2J,EAAMp2J,OAAOu9J,gBAAkBnH,EAAMmH,eAGN,OAAhDjG,EAAMlB,EAAMmH,cAAgB,IACrB,EAIAnH,EAAMmH,cAUrB,YAAmCnH,EAAOkB,GACtC,GAAIlB,EAAMp2J,SAAyC,IAA/Bo2J,EAAMp2J,OAAOu9J,cAG7B,OAAOnH,EAAMp2J,OAAOu9J,cAKxB,IAAIW,EAAwB,EACxBhF,EAAc,KACdiF,EAAc7G,EAIlB,KAAuB,OAAhB6G,GAAsB,CAEzB,MAAMxJ,EAAQwJ,EA5+DR,GA6+DAC,EAAYzJ,EAAM7tJ,KAexB,GAXIoyJ,EAHc,IAAlBmF,EAGkB1J,EAAMsE,UAED,IAAlBoF,EAGaF,EAj/DX,GAq/DW,KAEE,OAAhBjF,EAEA,OAAOuC,EAMX,GAFAyC,IACAC,EAAcA,EAp/DG,KAq/DiB,IAA9BjF,EAAYqE,cAEZ,OAAQrE,EAAYqE,cACfW,GAAyB,GAGtC,OAAOzC,EASX,YAA4B8B,EAAe5I,EAAO1kJ,IA/IlD,YAAkBstJ,EAAe5I,EAAO7tJ,GAEpC,IAAI+V,EACgB,iBAAT/V,EACP+V,EAAK/V,EAAKo5G,WAAW,IAAM,EAEtBp5G,EAAKpD,eAAewvJ,MACzBr2I,EAAK/V,EAAKosJ,KAIJ,MAANr2I,IACAA,EAAK/V,EAAKosJ,IAAiBiK,MAI/B,MAAMmB,EAjCSC,IAiCG1hJ,EAQlB83I,EAAMj2J,KAAK6+J,GAAiBe,GAnCN,KA+BT,GAAKA,CAI8CE,CAwHhEC,CAASlB,EAAe5I,EAAO1kJ,GA4EnC,YAA8ByhJ,EAAezhJ,EAAOmlB,GAChD,GAAIA,EAAQ87H,GAAYI,SACpB,OAAOI,EAGPG,EAA2B5hJ,EAAO,gBAY1C,YAAwCqnJ,EAAOrnJ,EAAOmlB,EAAOs8H,GAKzD,GAJIt8H,EAAQ87H,GAAYI,eAA8B9yJ,IAAlBkzJ,IAEhCA,EAAgB,MAEoC,IAAnDt8H,GAAS87H,GAAYE,KAAOF,GAAYC,OAAc,CACvD,MAAMuN,EAAiBpH,EA/mEZ,GAmnELqH,EAA+BC,QAAwBpgK,GAC7D,IACI,OAAIkgK,EACOA,EAAez/J,IAAIgR,EAAOyhJ,EAAet8H,EAAQ87H,GAAYI,UAG7DuN,GAAmB5uJ,EAAOyhJ,EAAet8H,EAAQ87H,GAAYI,SAIhDqN,CAJgDrN,QAIxEsN,GAAwBD,IAGhC,OAAOG,GAAqBpN,EAAezhJ,EAAOmlB,GAkBtD,YAA+BghI,EAAOkB,EAAOrnJ,EAAOmlB,EAAQ87H,GAAYhgH,QAASwgH,GAC7E,GAAc,OAAV0E,EAAgB,CAChB,MAAMkI,EAmNd,YAA+BruJ,GAE3B,GAAqB,iBAAVA,EACP,OAAOA,EAAMiwG,WAAW,IAAM,EAElC,MAAM6+C,EAEN9uJ,EAAMvM,eAAewvJ,IAAiBjjJ,EAAMijJ,SAAiB10J,EAE7D,MAAuB,iBAAZugK,EACHA,GAAW,EAtgBJR,IAugBAQ,EAKAC,GAIJD,EAvOWE,CAAsBhvJ,GAGxC,GAAyB,mBAAdquJ,EAA0B,CACjC,IAAKY,GAAQ5H,EAAOlB,EAAOhhI,GAGvB,OAAQA,EAAQ87H,GAAYC,KACxB2N,GAAqBpN,EAAezhJ,EAAOmlB,GAC3C+pI,GAA+B7H,EAAOrnJ,EAAOmlB,EAAOs8H,GAE5D,IACI,MAAM3yJ,EAAQu/J,EAAUlpI,GACxB,GAAa,MAATr2B,GAAmBq2B,EAAQ87H,GAAYI,SAIvC,OAAOvyJ,EAHP8yJ,EAA2B5hJ,EAO/B+pJ,CAJWj7J,QAIXi7J,cAGsB,iBAAdsE,EAAwB,CAIpC,IAAIc,EAAgB,KAChB7B,EAAgBF,GAAiBjH,EAAOkB,GACxCuF,GAAiBpB,EACjB4D,GAAmBjqI,EAAQ87H,GAAYC,KAAOmG,EA3qE3B,IAXpB,GAsrE2F,KAiB9F,MAdsB,IAAlBiG,GAAwBnoI,EAAQ87H,GAAYG,YAC5CwL,IAAmC,IAAlBU,EAAuBI,GAA0BvH,EAAOkB,GACrEA,EAAMiG,EAAgB,GAC1B9lE,KAAuBgkE,GAAuB6D,GAAmBlqI,GAAO,IAIpEgqI,EAAgB9H,EArsEtB,GAssEMiG,EAAgBO,EAAuBjB,IACvCvF,EAAQyG,EAAsBlB,GAAgBvF,IAL9CiG,GAAgB,IAUC,IAAlBA,GAAsB,CAGzB,MAAM5I,GAAQ2C,EA/sEhB,GAktEE,GAAIiI,GAAcjB,EAAWf,EAAe5I,GAAMj2J,MAAO,CAIrD,MAAMitI,GAAW6zB,GAAuBjC,EAAejG,EAAOrnJ,EAAOmvJ,EAAehqI,EAAOiqI,IAC3F,GAAI1zB,KAAa8zB,GACb,OAAO9zB,GAGfkxB,GAAiBvF,EAAMiG,EAAgB,GACvC9lE,KAAuBgkE,GACnB6D,GAAmBlqI,EAAOkiI,EA7tEhC,GA6tE6C54J,KAAK6+J,EAAgB,KAAmB8B,KAC/EE,GAAcjB,EAAWf,EAAejG,IAGxC8H,EAAgBzK,GAChB4I,EAAgBO,EAAuBjB,IACvCvF,EAAQyG,EAAsBlB,GAAgBvF,IAM9CiG,GAAgB,IAKhC,OAAO4B,GAA+B7H,EAAOrnJ,EAAOmlB,EAAOs8H,GAE/D,MAAM+N,GAAY,GAClB,cACI,OAAO,IAAIC,GAAaC,KAAmBC,MAE/C,YAAgCrC,EAAejG,EAAOrnJ,EAAOmvJ,EAAehqI,EAAOiqI,GAC/E,MAAMQ,EAAevI,EArvEX,GAsvEJlB,EAAQyJ,EAAanhK,KAAK6+J,EAAgB,GAsB1CuC,GAAgBC,GAA0B3J,EAAOyJ,EAAc5vJ,EAnBrB,MAAjBmvJ,EAQ1BY,GAAgB5J,IAAU8G,GAO1BkC,GAAiBS,GAAqD,IAAtB,EAAbzJ,EAAMtvJ,MAGnBsuB,EAAQ87H,GAAYC,MAASkO,IAAqBjJ,GAE7E,OAAsB,OAAlB0J,GACOG,GAAkB3I,EAAOuI,EAAcC,GAAe1J,GAGtDqJ,GAaf,YAAmCrJ,EAAOzB,EAAO1kJ,EAAOiwJ,EAAwBC,GAC5E,MAAMC,EAAsBhK,EAAMiK,gBAC5BC,EAAe3L,EAAMj2J,KACrB6hK,EAAyC,QAAtBH,EACnBI,GAAkBpK,EAAM+D,eAExBsG,GAAwBL,GAAuB,GAG/CM,GAAWP,EAAoBI,EAAmBE,GAJnCrK,EAAMgE,aAK3B,QAAS11J,GAHaw7J,EAAyBK,EAAmBA,EAAmBE,GAGzD/7J,GAAIg8J,GAAUh8J,KAAK,CAC3C,MAAMi8J,GAAqBL,EAAa57J,IACxC,GAAIA,GAAI87J,IAAmBvwJ,IAAU0wJ,IACjCj8J,IAAK87J,IAAmBG,GAAmB75J,OAASmJ,EACpD,OAAOvL,GAGf,GAAIy7J,EAAmB,CACnB,MAAMS,GAASN,EAAaE,IAC5B,GAAII,IAAUC,GAAeD,KAAWA,GAAO95J,OAASmJ,EACpD,OAAOuwJ,GAGf,OAAO,KASX,YAA2BlJ,EAAO3C,EAAOj3I,EAAO04I,GAC5C,IAAIr3J,EAAQu4J,EAAM55I,GAClB,MAAMojJ,EAAQnM,EAAMj2J,KACpB,GAr2BJ,WAAmB0F,GACf,OAAOA,aAAe28J,EAo2BlBC,CAAUjiK,GAAQ,CAClB,MAAM2D,EAAU3D,EACZ2D,EAAQk5J,WAjwGpB,YAAoC3rJ,EAAO46B,GACvC,MAAMo2H,EAAUp2H,EAAQ,sBAAqBA,EAAKugB,KAAK,YAAYn7C,IAAU,GAC7E,MAAM,IAAImgJ,IAAa,IAAkC,0CAAyCngJ,IAAQgxJ,KAgwGlGC,CAA2B7Q,EAAkByQ,EAAMpjJ,KAEvD,MAAMyjJ,EAA+BC,GAAwB1+J,EAAQm5J,qBACrEn5J,EAAQk5J,WAAY,EACpB,MAAM+C,GAA+Bj8J,EAAQo5J,WAAa8C,GAAwBl8J,EAAQo5J,YAAc,KACxFoD,GAAQ5H,EAAOlB,EAAOlF,GAAYhgH,SAGlD,IACInyC,EAAQu4J,EAAM55I,GAAShb,EAAQA,aAAQlE,EAAWsiK,EAAOxJ,EAAOlB,GAO5DzB,EAAM2I,iBAAmB5/I,GAAS04I,EAAM+D,gBA1sCxD,YAA+BkH,EAAgB/G,EAAc3F,GAEzD,MAAQ7rF,cAAa5sC,WAAU2/G,aAAcye,EAAaxzJ,KAAKutF,UAC/D,GAAIvrB,EAAa,CACb,MAAMw4F,EAAmB/K,GAAuB+D,IAC/C3F,EAAM4M,gBAAkB5M,EAAM4M,cAAgB,KAAKjkK,KAAK+jK,EAAgBC,IACxE3M,EAAM6M,qBAAuB7M,EAAM6M,mBAAqB,KACpDlkK,KAAK+jK,EAAgBC,GAE1BplI,IACCy4H,EAAM4M,gBAAkB5M,EAAM4M,cAAgB,KAAKjkK,KAAK,EAAI+jK,EAAgBnlI,GAE7E2/G,KACC8Y,EAAM4M,gBAAkB5M,EAAM4M,cAAgB,KAAKjkK,KAAK+jK,EAAgBxlB,IACxE8Y,EAAM6M,qBAAuB7M,EAAM6M,mBAAqB,KAAKlkK,KAAK+jK,EAAgBxlB,IA8rC3E4lB,CAAsB/jJ,EAAOojJ,EAAMpjJ,GAAQi3I,EAQ/CqF,CAR+CrF,QAId,OAAjCgK,IACIC,GAAwBD,IAC5ByC,GAAwBD,GACxBz+J,EAAQk5J,WAAY,EACpB5B,MAGR,OAAOj7J,EAqCX,YAAuBu/J,EAAWf,EAAemE,GAW7C,SAHcA,EAAanE,GAAiBe,GArhBtB,IAihBT,GAAKA,EAOAE,CAGtB,YAA4BppI,EAAOusI,GAC/B,QAASvsI,EAAQ87H,GAAYE,MAAWh8H,EAAQ87H,GAAYC,MAAQwQ,GAExE,SACIj4J,YAAYk4J,EAAQC,GAChBj4J,KAAKg4J,OAASA,EACdh4J,KAAKi4J,OAASA,EAElB5iK,IAAIgR,EAAOyhJ,EAAet8H,GACtB,OAAO0sI,GAAsBl4J,KAAKg4J,OAAQh4J,KAAKi4J,OAAQ5xJ,EAAOmlB,EAAOs8H,IAM7E,YAA+B5qJ,GAC3B,OAAOwsJ,GAAc,KACjB,MAAMyO,EAAiBj7J,EAAKutF,UAAU3qF,YAChCs4J,EAAaD,EAAe9O,KAAmBgP,GAAaF,GAC5DG,EAAkBrlK,OAAOw3F,UAC/B,IAAIr0F,EAASnD,OAAOu4H,eAAetuH,EAAKutF,WAAW3qF,YAEnD,KAAO1J,GAAUA,IAAWkiK,GAAiB,CACzC,MAAMx/J,EAAU1C,EAAOizJ,KAAmBgP,GAAajiK,GAMvD,GAAI0C,GAAWA,IAAYs/J,EACvB,OAAOt/J,EAEX1C,EAASnD,OAAOu4H,eAAep1H,GAMnC,OAAOuvF,GAAK,IAAIA,IAGxB,YAAsBzoF,GAClB,OAAIgpJ,EAAahpJ,GACN,KACH,MAAMpE,EAAUu/J,GAAaE,EAAkBr7J,IAC/C,OAAOpE,GAAWA,KAGnB0/J,GAAct7J,GAezB,YAA2Bu7J,GACvB,OA/ZJ,YAA6BjM,EAAOiM,GAGhC,GAAyB,UAArBA,EACA,OAAOjM,EAAMkM,QAEjB,GAAyB,UAArBD,EACA,OAAOjM,EAAM9xJ,OAEjB,MAAMy3J,EAAQ3F,EAAM2F,MACpB,GAAIA,EAAO,CACP,MAAMwG,EAAcxG,EAAMpgK,OAC1B,IAAI+I,EAAI,EACR,KAAOA,EAAI69J,GAAa,CACpB,MAAMxjK,EAAQg9J,EAAMr3J,GAEpB,GAAI89J,GAA0BzjK,GAC1B,MAEJ,GAAc,IAAVA,EAKA2F,GAAQ,UAEc,iBAAV3F,EAGZ,IADA2F,IACOA,EAAI69J,GAAmC,iBAAbxG,EAAMr3J,IACnCA,QAGH,IAAI3F,IAAUsjK,EACf,OAAOtG,EAAMr3J,EAAI,GAGjBA,GAAQ,IAIpB,OAAO,KAsXA+9J,CAAoB9C,KAAmB0C,GAUlD,MAAMK,GAAc,kBACdC,GAAa,iBACbC,GAAgB,qBA6CtB,YAA4Bj4J,EAAM0M,EAAOwrJ,GACrC,OAAOvP,GAAc,KACjB,MAAMwP,EAZd,YAA0BzrJ,GACtB,OAAO,YAAiB0G,GACpB,GAAI1G,EAAO,CACP,MAAMvL,EAASuL,KAAS0G,GACxB,UAAWglJ,KAAYj3J,EACnBlC,KAAKm5J,GAAYj3J,EAAOi3J,KAOfC,CAAiB3rJ,GAClC,cAAkC0G,GAC9B,GAAInU,gBAAgBq5J,EAChBH,SAASxuE,MAAM1qF,KAAMmU,GACdnU,KAEX,MAAMs5J,EAAqB,IAAID,KAAyBllJ,GACxDolJ,SAAeC,WAAaF,EACrBC,EACP,WAAwBE,GAAKC,GAAW5lJ,IAGpC,MAAMwqF,GAAam7D,GAAI3/J,eAAei/J,IAClCU,GAAIV,IACJ9lK,OAAO0nH,eAAe8+C,GAAKV,GAAY,CAAE5jK,MAAO,KAAM4jK,IAG1D,KAAOz6D,GAAWvsG,QAAU+hB,IACxBwqF,GAAW5qG,KAAK,MAEpB,OAAC4qG,GAAWxqF,IAASwqF,GAAWxqF,KAAU,IAAIpgB,KAAK4lK,GAC5CG,IAGf,OAAIR,IACAI,EAAsB5uE,UAAYx3F,OAAO8Z,OAAOksJ,EAAYxuE,YAEhE4uE,EAAsB5uE,UAAUkvE,eAAiB54J,EACjDs4J,EAAsBO,cAAgBP,EAC/BA,IAkGf,SAOIv5J,YAAY+5J,EAAOt4J,GACfvB,KAAK65J,MAAQA,EAEb75J,KAAK25J,eAAiB,iBACtB35J,KAAKpH,gBAAQhE,EACS,iBAAX2M,EAKPvB,KAAKupJ,kBAAoBhoJ,OAER3M,IAAZ2M,IACLvB,KAAKpH,WAAQkhK,GAAmB,CAC5BzzJ,MAAOrG,KACPokI,WAAY7iI,EAAQ6iI,YAAc,OAClCtrI,QAASyI,EAAQzI,WAI7BlH,WACI,MAAQ,kBAAiBoO,KAAK65J,SAgDtC,MAAME,GAA+B,IAAI7tI,GAAe,6BAiIlDwlD,GAAOyiB,SACb,YAAgB9wF,GACZ,MAAoB,mBAANA,CAAM,CAgDxB,YAAiBm7I,EAAMoU,QACPh+J,IAARg+J,IACAA,EAAMpU,GACV,QAAS1jJ,EAAI,EAAGA,EAAI0jJ,EAAKzsJ,OAAQ+I,IAAK,CAClC,IAAIC,EAAOyjJ,EAAK1jJ,GACZjE,MAAM4E,QAAQV,IAEV63J,IAAQpU,IAGRoU,EAAMpU,EAAKpyI,MAAM,EAAGtR,IAExBk/J,GAAQj/J,EAAM63J,IAETA,IAAQpU,GACboU,EAAIl/J,KAAKqH,GAGjB,OAAO63J,EAEX,YAAqBh2J,EAAOwT,GACxBxT,EAAMhK,QAAQuC,GAAS0B,MAAM4E,QAAQtG,GAAS8kK,GAAY9kK,EAAOib,GAAMA,EAAGjb,IAE9E,YAAoBqH,EAAKsX,EAAO3e,GAExB2e,GAAStX,EAAIzK,OACbyK,EAAI9I,KAAKyB,GAGTqH,EAAIlC,OAAOwZ,EAAO,EAAG3e,GAG7B,YAAyBqH,EAAKsX,GAE1B,OAAIA,GAAStX,EAAIzK,OAAS,EACfyK,EAAIg4D,MAGJh4D,EAAIlC,OAAOwZ,EAAO,GAAG,GAGpC,YAAkBvT,EAAMpL,GACpB,MAAMqpJ,EAAO,GACb,QAAS1jJ,EAAI,EAAGA,EAAIyF,EAAMzF,IACtB0jJ,EAAK9qJ,KAAKyB,GAEd,OAAOqpJ,EAkJX,YAA0B0b,EAAejlK,EAAKE,GAC1C,IAAI2e,EAAQqmJ,GAAqBD,EAAejlK,GAChD,OAAI6e,GAAS,EAETomJ,EAAsB,EAARpmJ,GAAa3e,GAG3B2e,GAASA,EA/FjB,YAAsB46E,EAAO56E,EAAOsmJ,EAAQC,GAExC,IAAIjwI,EAAMskE,EAAM38F,OAChB,GAAIq4B,GAAOtW,EAEP46E,EAAMh7F,KAAK0mK,EAAQC,WAEN,IAARjwI,EAELskE,EAAMh7F,KAAK2mK,EAAQ3rE,EAAM,IACzBA,EAAM,GAAK0rE,MAEV,CAGD,IAFAhwI,IACAskE,EAAMh7F,KAAKg7F,EAAMtkE,EAAM,GAAIskE,EAAMtkE,IAC1BA,EAAMtW,GAET46E,EAAMtkE,GAAOskE,EADOtkE,EAAM,GAE1BA,IAEJskE,EAAM56E,GAASsmJ,EACf1rE,EAAM56E,EAAQ,GAAKumJ,GA2EnBC,CAAaJ,EAAepmJ,EAAO7e,EAAKE,IAErC2e,EASX,YAA0BomJ,EAAejlK,GACrC,MAAM6e,EAAQqmJ,GAAqBD,EAAejlK,GAClD,GAAI6e,GAAS,EAET,OAAOomJ,EAAsB,EAARpmJ,EAAQ,CAcrC,YAA8BomJ,EAAejlK,GACzC,OAqCJ,YAA6By5F,EAAOv5F,EAAOy6D,GAEvC,IAAIvqC,EAAQ,EACR+E,EAAMskE,EAAM38F,QAAU69D,EAC1B,KAAOxlC,IAAQ/E,GAAO,CAClB,MAAMk1I,EAASl1I,GAAU+E,EAAM/E,GAAU,GACnCiiC,EAAUonC,EAAM6rE,GAAU3qG,GAChC,GAAIz6D,IAAUmyD,EACV,OAAQizG,GAAU3qG,EAEbtI,EAAUnyD,EACfi1B,EAAMmwI,EAGNl1I,EAAQk1I,EAAS,EAGzB,QAASnwI,GAAOwlC,GAtDT4qG,CAAoBN,EAAejlK,EAAK,GA8FnD,MAAMwlK,GAAoB,uGAEpBC,GAAyB,4CAKzBC,GAAmC,mEAKnCC,GAA4C,sGAclD,SACI96J,YAAY+6J,GACR76J,KAAK86J,SAAWD,GAAWhS,GAAQp9B,QAEvCsvC,sBACI,OAAO,EAEXjiK,QAAQ6sF,GACJ,MAAO,IAAIxxE,IAAS,IAAIwxE,KAAKxxE,GAGjC6mJ,wBAAwBpgE,EAAYqgE,GAChC,IAAI1jK,EAEAA,EAAS2jK,QADa,IAAftgE,EACWqgE,EAAiBlpK,OAGjB6oG,EAAW7oG,QAEjC,QAAS+I,EAAI,EAAGA,EAAIvD,EAAOxF,OAAQ+I,IAK3BvD,EAAOuD,QADe,IAAf8/F,EACK,GAEXx5F,EAAetG,IAAM8/F,EAAW9/F,IAAM7H,OAC3B,CAAC2nG,EAAW9/F,IAGZ,GAEZmgK,GAA2C,MAAvBA,EAAiBngK,KACrCvD,EAAOuD,GAAKvD,EAAOuD,GAAG+pB,OAAOo2I,EAAiBngK,KAGtD,OAAOvD,EAEX4jK,eAAej+J,EAAMk+J,GASjB,GApDR,YAAwBC,GACpB,OAAOZ,GAAkB5zE,KAAKw0E,IAC1BT,GAA0C/zE,KAAKw0E,IAC9CX,GAAuB7zE,KAAKw0E,KAAaV,GAAiC9zE,KAAKw0E,GAiD5EC,CARYp+J,EAAKtL,YASjB,OAAO,KAGX,GAAIsL,EAAKohG,YAAcphG,EAAKohG,aAAe88D,EAAW98D,WAClD,OAAOphG,EAAKohG,WAGhB,MAAMi9D,EAAoBr+J,EAAKs+J,eAC/B,GAAID,GAAqBA,IAAsBH,EAAWI,eAAgB,CAGtE,MAAMA,EAA8C,mBAAtBD,EAAmCA,IAAsBA,EACjF3gE,GAAa4gE,EAAexmK,IAAKymK,IAAcA,IAAaA,GAAUv+J,MACtE+9J,GAAmBO,EAAexmK,IAAKymK,IAAcA,IAAaC,GAAoCD,GAAUE,aACtH,OAAO37J,KAAKg7J,wBAAwBpgE,GAAYqgE,IAGpD,MAAMA,EAAmB/9J,EAAKpD,eAAei/J,KAAe77J,EAAK67J,IAC3Dn+D,EAAa56F,KAAK86J,UAAY96J,KAAK86J,SAASc,gBAC9C57J,KAAK86J,SAASc,eAAe,oBAAqB1+J,GACtD,OAAI09F,GAAcqgE,EACPj7J,KAAKg7J,wBAAwBpgE,EAAYqgE,GAM7CC,GAASh+J,EAAKnL,QAEzBusG,WAAWphG,GAGP,IAAK2+J,GAAO3+J,GACR,MAAO,GAEX,MAAMk+J,EAAaU,GAAc5+J,GACjC,IAAIohG,EAAat+F,KAAKm7J,eAAej+J,EAAMk+J,GAC3C,OAAK98D,GAAc88D,IAAenoK,SAC9BqrG,EAAat+F,KAAKs+F,WAAW88D,IAE1B98D,GAAc,GAEzBy9D,gBAAgBC,EAAYZ,GAExB,GAAIY,EAAWC,aAAeD,EAAWC,cAAgBb,EAAWa,YAAa,CAC7E,IAAIA,EAAcD,EAAWC,YAC7B,MAA2B,mBAAhBA,GAA8BA,EAAYA,cACjDA,EAAcA,EAAYA,aAEvBA,EAGX,OAAID,EAAWL,YAAcK,EAAWL,aAAeP,EAAWO,WACvDD,GAAoCM,EAAWL,YAGtDK,EAAWliK,eAAeg/J,IACnBkD,EAAWlD,IAEf,KAEXmD,YAAYD,GACR,IAAKH,GAAOG,GACR,MAAO,GAEX,MAAMZ,EAAaU,GAAcE,GAC3BE,EAAiBl8J,KAAK+7J,gBAAgBC,EAAYZ,IAAe,GAEvE,OAD0BA,IAAenoK,OAAS+M,KAAKi8J,YAAYb,GAAc,IACxDv2I,OAAOq3I,GAEpCC,iBAAiBH,EAAYZ,GAEzB,GAAIY,EAAWI,cACXJ,EAAWI,eAAiBhB,EAAWgB,aAAc,CACrD,IAAIA,EAAeJ,EAAWI,aAC9B,MAA4B,mBAAjBA,GAA+BA,EAAaA,eACnDA,EAAeA,EAAaA,cAEzBA,EAGX,GAAIJ,EAAWK,gBACXL,EAAWK,iBAAmBjB,EAAWiB,eAAgB,CACzD,MAAMA,EAAiBL,EAAWK,eAC5BD,EAAe,GACrBnpK,cAAOC,KAAKmpK,GAAgBzpK,QAAQO,IAChCipK,EAAajpK,GAAQuoK,GAAoCW,EAAelpK,MAErEipK,EAGX,OAAIJ,EAAWliK,eAAek/J,IACnBgD,EAAWhD,IAEf,KAEXoD,aAAaJ,GACT,IAAKH,GAAOG,GACR,MAAO,GAEX,MAAMZ,EAAaU,GAAcE,GAC3BI,EAAe,GACrB,GAAIhB,IAAenoK,OAAQ,CACvB,MAAMqpK,EAAqBt8J,KAAKo8J,aAAahB,GAC7CnoK,OAAOC,KAAKopK,GAAoB1pK,QAASumK,IACrCiD,EAAajD,GAAYmD,EAAmBnD,KAGpD,MAAMoD,EAAkBv8J,KAAKm8J,iBAAiBH,EAAYZ,GAC1D,OAAImB,GACAtpK,OAAOC,KAAKqpK,GAAiB3pK,QAASumK,IAClC,MAAMwC,EAAa,GACfS,EAAatiK,eAAeq/J,IAC5BwC,EAAWjoK,QAAQ0oK,EAAajD,IAEpCwC,EAAWjoK,QAAQ6oK,EAAgBpD,IACnCiD,EAAajD,GAAYwC,IAG1BS,EAEXG,gBAAgBP,GACZ,OAAKH,GAAOG,IAGLh8J,KAAKm8J,iBAAiBH,EAAYF,GAAcE,KAF5C,GAIfQ,iBAAiBt/J,EAAMu/J,GACnB,OAAOv/J,aAAgBw0E,IAAQ+qF,KAAcv/J,EAAKutF,UAEtDiyE,OAAOx/J,GACH,MAAO,GAEXy/J,OAAO57J,GACH,OAAO,IAAIozF,SAAS,IAAK,YAAcpzF,EAAO,KAElD67J,OAAO77J,GACH,OAAO,IAAIozF,SAAS,IAAK,IAAK,YAAcpzF,EAAO,SAEvDm+I,OAAOn+I,GAGH,OAAO,IAAIozF,SAAS,IAAK,OAFH,UAASpzF,wBAA2BA,wCAC/CA,oBACsB87J,CAGrCC,UAAU5/J,GAEN,MAAoB,iBAATA,GAAqBA,EAAK6/J,SAC1B7/J,EAAK6/J,SAGR,KAAIt1G,EAAUvqD,KAE1B8/J,YAAY9/J,GACR,MAAQ,KAAIuqD,EAAUvqD,KAE1B+/J,kBAAkBl8J,EAAMm8J,EAAWC,EAASC,GACxC,OAAOA,EAEXC,YAAYC,EAAgBv8J,GACxB,OAAOu8J,EAAev8J,IAG9B,YAA6Cw8J,GACzC,OAAKA,EAGEA,EAAqBvoK,IAAIwoK,GAIrB,IAAI5D,EAFW6D,EADoBvgK,KACN08J,kBACb4D,EAAoBrpJ,KAAOqpJ,EAAoBrpJ,KAAO,KALtE,GASf,YAAuBs3E,GACnB,MAAMiyE,EAAcjyE,EAAKhB,UAAYx3F,OAAOu4H,eAAe//B,EAAKhB,WAAa,KAI7E,OAHmBizE,EAAcA,EAAY59J,YAAc,OAGtC7M,OAWzB,MAAM0qK,GADsB,GAOtBC,GAAoB,iBACpBC,GAAqB,kBAErBC,GAAW,OAEXC,GAAS,WACTC,GAActY,EAAuB,CAAEt5H,QAAS4gE,OAAQhgE,SAAU04H,IAOxE,IAAIuY,GACJ,YAA4BzvI,GACxB,MAAM0vI,EAASD,GACfA,UAAmBzvI,EACZ0vI,EAEX,YAA4B73J,EAAOmlB,EAAQ87H,GAAYhgH,SACnD,QAAyB1yC,IAArBqpK,GAIA,MAAM,IAAIzX,GAAa,IADnB,IAGH,OAAyB,OAArByX,GACEhJ,GAAmB5uJ,OAAOzR,EAAW42B,GAGrCyyI,GAAiB5oK,IAAIgR,EAAOmlB,EAAQ87H,GAAYI,SAAW,UAAO9yJ,EAAW42B,GAG5F,YAAkBnlB,EAAOmlB,EAAQ87H,GAAYhgH,SACzC,OArpIJ,cACI,OAAOqgH,GAopICwW,IAA6BC,IAAoB7F,EAAkBlyJ,GAAQmlB,GA+CvF,MAAM6yI,GAASp6B,GACf,YAAoBznC,GAChB,MAAMroF,EAAO,GACb,QAASrZ,EAAI,EAAGA,EAAI0hG,EAAMzqG,OAAQ+I,IAAK,CACnC,MAAMwjK,EAAM/F,EAAkB/7D,EAAM1hG,IACpC,GAAIjE,MAAM4E,QAAQ6iK,GAAM,CACpB,GAAmB,IAAfA,EAAIvsK,OAIJ,MAAM,IAAIy0J,GAAa,IADnB,IAGR,IAAItpJ,EACAsuB,EAAQ87H,GAAYhgH,QACxB,QAASzmB,EAAI,EAAGA,EAAIy9I,EAAIvsK,OAAQ8uB,IAAK,CACjC,MAAM09I,EAAOD,EAAIz9I,GACX29I,GAAOC,EAAcF,GACP,iBAATC,IAEM,IAAb3wE,GACI3wF,EAAOqhK,EAAKl4J,MAGZmlB,GAASgzI,GAIbthK,EAAOqhK,EAGfpqJ,EAAKzgB,KAAKuwI,GAAS/mI,EAAMsuB,SAGzBrX,EAAKzgB,KAAKuwI,GAASq6B,IAG3B,OAAOnqJ,EAYX,WAA0Bo3F,EAAWizD,GACjCjzD,SAAUqyD,IAAqBY,EAC/BjzD,EAAU9gB,UAAUmzE,IAAqBY,EAClCjzD,EAOX,WAAuBllG,GACnB,OAAOA,EAAMu3J,IA4CjB,MAAMc,GAASC,EAGfC,GAAmB,SAAWv4J,IAAW,CAAEA,YAAW,GAOhDqhJ,GAGNiX,EAAiBC,GAAmB,YAAa,GAO3CpX,GAGNmX,EAAiBC,GAAmB,QAAS,GAOvCnX,GAGNkX,EAAiBC,GAAmB,YAAa,GAyPjD,IAAIC,GAAmB,OAAnBA,OAAmB,IAQCA,GAAoBC,UAAe,GAAK,YAI5DD,GAAoBA,GAAoBE,SAAc,GAAK,WAZ3DF,IAAmB,GA2BvB,MAAMG,GAAqB,6BAIrBC,GAAoB,QA4L1B,MAAMC,GAAwB,gBAK9B,YAAyBvzJ,EAAQ7W,GAE7B6W,EAAOuzJ,IAAyBpqK,EAUpC,YAA0B6W,GACtB,MAAMxW,EALV,YAAyBwW,GAErB,OAAOA,EAAOuzJ,KAA0B,KAG1BC,CAAgBxzJ,GAC9B,OAAIxW,EACO0B,MAAM4E,QAAQtG,GAASA,EAAQA,EAAMu4J,MAEzC,KAuIX,IAAI0R,GAIJ,YAA6BC,EAAmB3R,GAC5C,OAAO0R,GAAqBC,EAAmB3R,GAuCnD,YAAwBA,GAEpB,MAAMt3J,EAASs3J,EAr1IJ,GAs1IX,OAAO4R,GAAalpK,GAAUA,EAt1InB,GAs1IoCA,EAiCnD,YAA4Bs3J,GACxB,OAAO6R,GAAqB7R,EA92Ib,IA82ImB8R,CAKtC,YAA2BC,GACvB,OAAOF,GAAqBE,EA73InB,GA63I6BC,CAE1C,YAA8BxR,GAC1B,KAA2B,OAApBA,IAA6BoR,GAAapR,IAC7CA,EAAkBA,EAj4Ib,GAm4IT,OAAOA,EAeX,YAAmCt4J,EAAQkzB,EAAU1yB,EAAQupK,EAAeC,GAKxE,GAAqB,MAAjBD,EAAuB,CACvB,IAAI1R,EACA4R,GAAc,EAIdP,GAAaK,GACb1R,EAAa0R,EAER5R,GAAQ4R,KACbE,GAAc,EAEdF,EAAgBA,EAv6If,IAy6IL,MAAMG,EAAQnS,GAAYgS,GAEX,IAAX/pK,GAAwC,OAAXQ,EACX,MAAlBulC,EACIokI,GAAkBj3I,EAAU1yB,EAAQ0pK,GAGpCE,GAAmBl3I,EAAU1yB,EAAQ0pK,EAAOF,GAAc,MAAM,GAGpD,IAAfvrK,GAA4C,OAAX+B,EAClC4pK,GAAmBl3I,EAAU1yB,EAAQ0pK,EAAOF,GAAc,MAAM,GAEhD,IAAfvrK,EACD4rK,GAAiBn3I,EAAUg3I,EAAOD,GAElB,IAAXjqK,GAELkzB,EAASyB,YAAYu1I,GAEP,MAAd7R,GA6xBZ,YAAwBnlI,EAAUlzB,EAAQq4J,EAAYiS,EAAgBN,GAElE,MAAM3jD,EAASgyC,EApvKJ,GA4vKPhyC,IAPW0xC,GAAYM,IAYvBkS,GAA0BvqK,EAAQkzB,EAAUo3I,EAAgBjkD,EAAQ2jD,GAExE,QAAS9kK,EA1vKmB,GA0vKUA,EAAImzJ,EAAWl8J,OAAQ+I,IAAK,CAC9D,MAAM4yJ,GAAQO,EAAWnzJ,GACzBslK,GAAU1S,GA5uKJ,GA4uKkBA,GAAO5kI,EAAUlzB,EAAQsqK,EAAgBjkD,IA/yB7DokD,CAAev3I,EAAUlzB,EAAQq4J,EAAY73J,EAAQwpK,IAIjE,YAAwB92I,EAAU3zB,GAG9B,OAAOk9J,GAAqBvpI,GAAYA,EAAS6B,WAAWx1B,GACxD2zB,EAASw3I,eAAenrK,GAEhC,WAAwB2zB,EAAUg3I,EAAO3qK,GAErCk9J,GAAqBvpI,GAAYA,EAAS4C,SAASo0I,EAAO3qK,GAAS2qK,EAAMS,YAAcprK,EAE3F,WAA2B2zB,EAAU3zB,GAIjC,OAAO2zB,EAAS4B,cAlepB,YAA2Bv1B,GACvB,OAAOA,EAAM+G,QAAQ8iK,GAAqBvnH,GAASA,EAAKv7C,QAAQ+iK,GA7BlC,kBA6BqDuB,CAierDC,CAAkBtrK,IASpD,WAA2B2zB,EAAU/nB,EAAM0pB,GAEvC,GAAI4nI,GAAqBvpI,GACrB,OAAOA,EAAS0B,cAAczpB,EAAM0pB,GAEnC,CACD,MAAMi2I,EAA6B,OAAdj2I,EA/lI7B,YAAyBA,GACrB,MAAM1pB,EAAO0pB,EAAU3tB,cACvB,MANkB,QAMXiE,EALe,6BACA,SAKjBA,EAJqB,iCAIgC,KA4lIZ4/J,CAAgBl2I,GAAa,KACvE,OAAwB,OAAjBi2I,EAAwB53I,EAAS0B,cAAczpB,GAClD+nB,EAAS83I,gBAAgBF,EAAc3/J,IAyKnD,WAAyB8/J,EAAsBnT,GAI3C,MAAMoT,EAAaD,EApqJH,GAqqJVE,EAAuBD,EAAWrrK,QAAQi4J,GAC1CsT,EAAsBtT,EA7oJjB,GAkpJQ,KAAfA,EAnpJM,KAopJNA,EAppJM,KAopJU,KAChBuT,GAA4BD,GAAqB,IAErDF,EAAWxmK,OAAOymK,EAAsB,GAY5C,YAAoB9S,EAAYiT,GAC5B,GAAIjT,EAAWl8J,QArrJa,GAsrJxB,OACJ,MAAMovK,EAvrJsB,GAurJuBD,EAC7CE,EAAenT,EAAWkT,GAChC,GAAIC,EAAc,CACd,MAAMC,EAAwBD,EAzpJP,IA0pJO,OAA1BC,GAAkCA,IAA0BpT,GAC5DqT,EAAgBD,EAAuBD,GAEvCF,EAAc,IACdjT,EAAWkT,EAAmB,GA5qJ7B,GA4qJwCC,EA5qJxC,IA8qJL,MAAMG,EAAeC,GAAgBvT,EAjsJb,GAisJmDiT,IApMnF,WAAiCnW,EAAO2C,GAEpC0S,GAAUrV,EAAO2C,EADAA,EAp+IJ,IAq+IqB,EAAgB,KAAM,MACxDA,EAj/IS,GAi/IK,KACdA,EA5+IW,GA4+IK,KAiMZ+T,CAAwBL,EAlrJlB,GAkrJuCA,GAE7C,MAAMM,EAAWH,EAjqJT,IAkqJS,OAAbG,GACAA,EAASC,WAAWJ,EAtrJlB,IAwrJNH,EAtrJO,GAsrJgB,KACvBA,EAtrJK,GAsrJgB,KAErBA,EA1rJM,KA0rJiB,IAE3B,OAAOA,EASX,YAAsBrW,EAAO2C,GACzB,KAAqB,IAAfA,EAtsJI,IAssJiC,CACvC,MAAM5kI,EAAW4kI,EA9rJR,IA+rJL2E,GAAqBvpI,IAAaA,EAASyB,aAC3C61I,GAAUrV,EAAO2C,EAAO5kI,EAAU,EAAiB,KAAM,MA9KrE,WAAyB84I,GAErB,IAAIC,EAAoBD,EAlhJT,IAmhJf,IAAKC,EACD,OAAOC,GAAYF,EAhiJb,GAgiJ8BA,GAExC,KAAOC,GAAmB,CACtB,IAAIplK,EAAO,KACX,GAAIsxJ,GAAQ8T,GAERplK,EAAOolK,EA1hJA,QA4hJN,CAGD,MAAME,EAAYF,EA3jJE,IA4jJhBE,IACAtlK,EAAOslK,GAEf,IAAKtlK,EAAM,CAGP,KAAOolK,IAAsBA,EA/iJ5B,IA+iJuDA,IAAsBD,GACtE7T,GAAQ8T,IACRC,GAAYD,EApjJlB,GAojJ4CA,GAE1CA,EAAoBA,EApjJrB,GAsjJuB,OAAtBA,IACAA,EAAoBD,GACpB7T,GAAQ8T,IACRC,GAAYD,EA3jJd,GA2jJwCA,GAE1CplK,EAAOolK,GAAqBA,EA1jJ3B,EA0jJ6CnC,CAElDmC,EAAoBplK,GA6IpBulK,CAAgBtU,IAWxB,YAAqB3C,EAAO2C,GACxB,KAAqB,IAAfA,EAvtJI,IAutJiC,CAGvCA,EA1tJM,KA0tJU,IAMhBA,EAhuJM,IAguJU,IA0ExB,YAA2B3C,EAAO2C,GAC9B,IAAIwD,EACJ,GAAa,MAATnG,GAAwD,OAAtCmG,EAAenG,EAAMmG,cACvC,QAASp2J,EAAI,EAAGA,EAAIo2J,EAAan/J,OAAQ+I,GAAK,EAAG,CAC7C,MAAMmC,EAAUywJ,EAAMwD,EAAap2J,IAEnC,KAAMmC,aAAmBk6J,GAAsB,CAC3C,MAAM8K,EAAS/Q,EAAap2J,EAAI,GAChC,GAAIjE,MAAM4E,QAAQwmK,GACd,QAASphJ,EAAI,EAAGA,EAAIohJ,EAAOlwK,OAAQ8uB,GAAK,EAAG,CACvC,MAAMqhJ,EAAcjlK,EAAQglK,EAAOphJ,IAC7BksF,GAAOk1D,EAAOphJ,EAAI,GAExB,IACIksF,GAAKl7G,KAAKqwK,EAGsCn1D,CAHtCm1D,QAGsCn1D,OAMxD,IACIk1D,EAAOpwK,KAAKoL,EAGgCglK,CAHhChlK,QAGgCglK,IApG5DE,CAAkBpX,EAAO2C,GAuBjC,YAAyB3C,EAAO2C,GAC5B,MAAM0U,EAAWrX,EAAMsX,QACjBC,EAAW5U,EArvJL,GAyvJZ,IAAI6U,GAAoB,EACxB,GAAiB,OAAbH,EACA,QAAStnK,EAAI,EAAGA,EAAIsnK,EAASrwK,OAAS,EAAG+I,GAAK,EAC1C,GAA2B,iBAAhBsnK,EAAStnK,GAAiB,CAEjC,MAAM0nK,EAAoBJ,EAAStnK,EAAI,GACjC6Q,EAAsC,mBAAtB62J,EAClBA,EAAkB9U,GAClBC,GAAYD,EAAM8U,IAChBvpJ,GAAWqpJ,EAASC,EAAoBH,EAAStnK,EAAI,IACrD2nK,GAAqBL,EAAStnK,EAAI,GACN,kBAAvB2nK,GAEP92J,EAAOs9E,oBAAoBm5E,EAAStnK,GAAIme,GAAUwpJ,IAGlDtrJ,IAA0B,EAEtBmrJ,EAASC,EAAoBE,MAI7BH,EAASC,GAAqBE,IAAoB3vG,cAG1Dh4D,GAAK,MAEJ,CAED,MAAMmC,EAAUqlK,EAASC,EAAoBH,EAAStnK,EAAI,IAC1DsnK,EAAStnK,GAAGjJ,KAAKoL,GAI7B,GAAiB,OAAbqlK,EAAmB,CACnB,QAASxnK,EAAIynK,EAAoB,EAAGznK,EAAIwnK,EAASvwK,OAAQ+I,IAC3BwnK,EAASxnK,KAIvC4yJ,EAjyJQ,GAiyJS,MApEjBgV,CAAgB3X,EAAO2C,GAEG,IAAtBA,EAruJE,GAquJWxwJ,MAA8Bm1J,GAAqB3E,EA3tJ3D,MA6tJLA,EA7tJK,IA6tJW95I,UAEpB,MAAMitJ,EAAuBnT,EAxtJN,IA0tJvB,GAA6B,OAAzBmT,GAAiCvB,GAAa5R,EAzuJ3C,IAyuJ2D,CAE1DmT,IAAyBnT,EA3uJ1B,IA4uJC4T,EAAgBT,EAAsBnT,GAG1C,MAAMgU,EAAWhU,EA9tJb,IA+tJa,OAAbgU,GACAA,EAASC,WAAW5W,KA0GpC,YAA2BA,EAAOyB,EAAOkB,GACrC,OAAOiV,GAAmB5X,EAAOyB,EAAMp2J,OAAQs3J,GAiBnD,YAA4B3C,EAAOyB,EAAOkB,GACtC,IAAI4B,EAAc9C,EAGlB,KAAuB,OAAhB8C,GACkB,GAApBA,EAAYpyJ,MAEboyJ,GADA9C,EAAQ8C,GACYl5J,OAIxB,GAAoB,OAAhBk5J,EAGA,OAAO5B,EA93JF,GAk4JL,GAAwB,EAApB4B,EAAY9jI,MAAiC,CAE7C,MAAMtD,EAAgB6iI,EAAMj2J,KAAKw6J,EAAYiB,gBAAgBroI,cAO7D,GAAIA,IAAkBkgI,GAAoBE,MACtCpgI,IAAkBkgI,GAAoBC,SACtC,OAAO,KAGf,OAAOua,GAAiBtT,EAAa5B,GAQ7C,YAA4B5kI,EAAU1yB,EAAQ25J,EAAO6P,EAAY70I,GAEzDsnI,GAAqBvpI,GACrBA,EAAS9M,aAAa5lB,EAAQ25J,EAAO6P,EAAY70I,GAGjD30B,EAAO4lB,aAAa+zI,EAAO6P,EAAY70I,GAG/C,YAA2BjC,EAAU1yB,EAAQ25J,GAGrCsC,GAAqBvpI,GACrBA,EAAS8B,YAAYx0B,EAAQ25J,GAG7B35J,EAAOw0B,YAAYmlI,GAG3B,YAAoCjnI,EAAU1yB,EAAQ25J,EAAO6P,EAAY70I,GAClD,OAAf60I,EACAI,GAAmBl3I,EAAU1yB,EAAQ25J,EAAO6P,EAAY70I,GAGxDg1I,GAAkBj3I,EAAU1yB,EAAQ25J,GAe5C,YAA0BjnI,EAAU9rB,GAChC,OAAQq1J,GAAqBvpI,GAAYA,EAASzyB,WAAW2G,GAAQA,EAAK3G,WAkB9E,YAAiCi5J,EAAaX,EAAcjB,GACxD,OAAOmV,GAAiCvT,EAAaX,EAAcjB,GAavE,YAA2C4B,EAAaX,EAAcjB,GAClE,OAAwB,GAApB4B,EAAYpyJ,KACL0lK,GAAiBtT,EAAa5B,GAElC,KAOX,IAMIoV,GA0XAC,GAqKAlgE,GAriBAggE,GAAmCG,GAOvC,YAAyBC,EAAiCC,GACtDL,GAAmCI,EACnCH,GAA2BI,EAU/B,YAAqBnY,EAAO2C,EAAOyV,EAAYC,GAC3C,MAAMC,EAAcC,GAAkBvY,EAAOqY,EAAY1V,GACnD5kI,EAAW4kI,EAr/JJ,IAu/JP6V,EAAaC,GADCJ,EAAWhtK,QAAUs3J,EA3/J9B,GA4/J6C0V,EAAY1V,GACpE,GAAmB,MAAf2V,EACA,GAAIxsK,MAAM4E,QAAQ0nK,GACd,QAASroK,GAAI,EAAGA,GAAIqoK,EAAWpxK,OAAQ+I,KACnC2oK,GAA2B36I,EAAUu6I,EAAaF,EAAWroK,IAAIyoK,GAAY,QAIjFE,GAA2B36I,EAAUu6I,EAAaF,EAAYI,GAAY,QAGrD3uK,IAA7BkuK,IACIA,GAAyBh6I,EAAUs6I,EAAY1V,EAAOyV,EAAYE,GAO1E,YAA4B3V,EAAOlB,GAC/B,GAAc,OAAVA,EAAgB,CAGhB,MAAMkX,EAAYlX,EAAMtvJ,KACxB,GAAgB,EAAZwmK,EACA,OAAOd,GAAiBpW,EAAOkB,GAE9B,GAAgB,EAAZgW,EACL,OAAOC,GAAqB,EAAIjW,EAAMlB,EAAM14I,QAE3C,GAAgB,EAAZ4vJ,EAAsC,CAC3C,MAAME,EAAsBpX,EAAMuD,MAClC,GAA4B,OAAxB6T,EACA,OAAOC,GAAmBnW,EAAOkW,GAEhC,CACD,MAAME,EAAoBpW,EAAMlB,EAAM14I,OACtC,OAAIwrJ,GAAawE,GACNH,GAAqB,EAAIG,GAGzBnW,GAAYmW,IAI1B,GAAgB,GAAZJ,EAIL,OAAO5D,GAH6BtT,EAAOkB,EAGpCoS,IAASnS,GAAYD,EAAMlB,EAAM14I,QAEvC,CACD,MAAMiwJ,EAAkBC,GAAmBtW,EAAOlB,GAClD,OAAwB,OAApBuX,EACIltK,MAAM4E,QAAQsoK,GACPA,EAAgB,GAIpBF,GAFYI,GAAevW,EA1iKf,KA4iKmBqW,GAG/BF,GAAmBnW,EAAOlB,EAAM/vJ,OAInD,OAAO,KAEX,YAA4BixJ,EAAOlB,GAC/B,OAAc,OAAVA,EAEsB0X,EAxjKK,IAXpB,GAskKcC,WAFL3X,EAAM2X,YAInB,KAEX,WAA8BC,EAAsBnW,GAChD,MAAMoW,EAhmKsB,GAgmKoBD,EAAuB,EACvE,GAAIC,EAAgBpW,EAAWl8J,OAAQ,CACnC,MAAM27J,EAAQO,EAAWoW,GACnBC,EAAmB5W,EAnlKnB,GAmlKgCkC,WACtC,GAAyB,OAArB0U,EACA,OAAOT,GAAmBnW,EAAO4W,GAGzC,OAAOrW,EAjnKI,EAinKOsW,CAWtB,YAA0Bz7I,EAAUg3I,EAAO3jJ,GAEvC,MAAMqoJ,EAAeC,GAAiB37I,EAAUg3I,GAC5C0E,GAnLR,YAA2B17I,EAAU1yB,EAAQ25J,EAAO5zI,GAC5Ck2I,GAAqBvpI,GACrBA,EAASY,YAAYtzB,EAAQ25J,EAAO5zI,GAGpC/lB,EAAOszB,YAAYqmI,GA+KnB2U,CAAkB57I,EAAU07I,EAAc1E,EAAO3jJ,GAOzD,YAAoB2M,EAAUlzB,EAAQ42J,EAAOkB,EAAOwS,EAAgBN,EAAY+E,GAC5E,KAAgB,MAATnY,GAAe,CAIlB,MAAMoY,EAAelX,EAAMlB,EAAM14I,OAC3B4vJ,GAAYlX,EAAMtvJ,KAOxB,GANIynK,GACe,IAAX/uK,IACAgvK,GAAgBC,GAAgBlX,GAAYiX,GAAelX,GAC3DlB,EAAMhhI,OAAS,GAGqB,KAAzB,GAAdghI,EAAMhhI,OACP,GAAgB,EAAZk4I,GACAoB,GAAWh8I,EAAUlzB,EAAQ42J,EAAMuD,MAAOrC,EAAOwS,EAAgBN,GAAY,GAC7EO,GAA0BvqK,EAAQkzB,EAAUo3I,EAAgB0E,EAAchF,WAEzD,GAAZ8D,GAA0B,CAC/B,MAAMqB,GAAYC,GAAoBxY,EAAOkB,GAC7C,IAAIoS,GACJ,KAAOA,GAAQiF,MACX5E,GAA0BvqK,EAAQkzB,EAAUo3I,EAAgBJ,GAAOF,GAEvEO,GAA0BvqK,EAAQkzB,EAAUo3I,EAAgB0E,EAAchF,QAEzD,GAAZ8D,GACLuB,GAAyBn8I,EAAUlzB,EAAQ83J,EAAOlB,EAAO0T,EAAgBN,GAIzEO,GAA0BvqK,EAAQkzB,EAAUo3I,EAAgB0E,EAAchF,GAGlFpT,EAAQmY,EAAenY,EAAM0Y,eAAiB1Y,EAAM/vJ,MAG5D,YAAmBsuJ,EAAO2C,EAAO5kI,EAAUlzB,EAAQsqK,EAAgBN,GAC/DkF,GAAWh8I,EAAUlzB,EAAQm1J,EAAM6E,WAAYlC,EAAOwS,EAAgBN,GAAY,GAiCtF,YAAkC92I,EAAUlzB,EAAQ83J,EAAOyX,EAAiBjF,EAAgBN,GACxF,MAAMwF,EAAiB1X,EAtqKQ,IA0qKzB2X,GAAwBC,EArrKnB,GAqrKiCnB,WAAWgB,EAAgBhB,YACvE,GAAIttK,MAAM4E,QAAQ4pK,IAMd,QAASvqK,GAAI,EAAGA,GAAIuqK,GAAsBtzK,OAAQ+I,KAE9CqlK,GAA0BvqK,EAAQkzB,EAAUo3I,EAD9BmF,GAAsBvqK,IAC+B8kK,QAMvEkF,GAAWh8I,EAAUlzB,EAFDyvK,GACYD,EAtsKzB,GAusK8DlF,EAAgBN,GAAY,GAiHzG,YAA0B92I,EAAU12B,EAASikJ,GAErCgc,GAAqBvpI,GACrBA,EAAS1tB,aAAahJ,EAAS,QAASikJ,GAGxCjkJ,EAAQkF,MAAMiuK,QAAUlvB,EAchC,YAA0BvtH,EAAU12B,EAASikJ,GAErCgc,GAAqBvpI,GACJ,KAAjB68D,EAEI78D,EAASwC,gBAAgBl5B,EAAS,SAGlC02B,EAAS1tB,aAAahJ,EAAS,QAASikJ,GAI5CjkJ,EAAQ+rB,UAAYk4H,EAmD5B,YAA+Bl/C,GAC3B,IAAIr6E,EACJ,OAAiC,QAAxBA,EAhCb,cACI,QAAiBloB,IAAbmuK,KACAA,GAAW,KACPla,GAAQ2c,cACR,IACIzC,GAAWla,GAAQ2c,aAAaC,aAAa,UAAW,CACpDC,WAAahjK,GAAMA,EACnBijK,aAAejjK,GAAMA,EACrBkjK,gBAAkBljK,GAAMA,GAGhC,CAHgCA,MAGzBoa,GAAP,CAQR,OAAOimJ,GAaO8C,UAAkC,IAAP/oJ,OAAgB,EAASA,EAAG4oJ,WAAWvuE,KAAUA,EAqI9F,cACI,QAAeviG,IAAXiuG,KACAA,GAAS,KACLgmD,GAAQ2c,cACR,IACI3iE,GAASgmD,GAAQ2c,aACZC,aAAa,wBAAyB,CACvCC,WAAahjK,GAAMA,EACnBijK,aAAejjK,GAAMA,EACrBkjK,gBAAkBljK,GAAMA,GAGhC,CAHgCA,MAGzBoa,GAAP,CAQR,OAAO+lF,GAUX,YAAqC1L,GACjC,IAAIr6E,EACJ,OAA+B,QAAtBA,EAAKimF,YAAgC,IAAPjmF,OAAgB,EAASA,EAAG4oJ,WAAWvuE,KAAUA,EAsB5F,YAA0C5nE,GACtC,IAAIzS,EACJ,OAA+B,QAAtBA,EAAKimF,YAAgC,IAAPjmF,OAAgB,EAASA,EAAG8oJ,gBAAgBr2I,KAASA,EAUhG,SACIzvB,YAAYgmK,GACR9lK,KAAK8lK,sCAAwCA,EAEjDl0K,WACI,MAAQ,0CAAyCoO,KAAK8lK,4EAI9D,iBAA2BC,GACvBC,cACI,MAAO,QAGf,iBAA4BD,GACxBC,cACI,MAAO,SAGf,iBAA6BD,GACzBC,cACI,MAAO,UAGf,iBAA0BD,GACtBC,cACI,MAAO,OAGf,iBAAkCD,GAC9BC,cACI,MAAO,eAGf,YAAyB7wK,GACrB,OAAOA,aAAiB4wK,GAAgB5wK,EAAM2wK,sCAC1C3wK,EAER,YAAyCA,EAAO+H,GAC5C,MAAM+oK,EAAaC,GAA0B/wK,GAC7C,GAAkB,MAAd8wK,GAAsBA,IAAe/oK,EAAM,CAE3C,GAAmB,gBAAf+oK,GAA2D,QAAT/oK,EAClD,OAAO,EACX,MAAM,IAAIusC,MAAO,mBAAkBvsC,YAAe+oK,wCAEtD,OAAOA,IAAe/oK,EAE1B,YAAmC/H,GAC/B,OAAOA,aAAiB4wK,IAAiB5wK,EAAM6wK,eAAiB,KAWpE,YAAqCG,GACjC,OAAO,IAAIC,GAAaD,GAW5B,YAAsCE,GAClC,OAAO,IAAIC,GAAcD,GAW7B,YAAuCE,GACnC,OAAO,IAAIC,GAAeD,GAW9B,YAAoCE,GAChC,OAAO,IAAIC,GAAYD,GAW3B,YAA4CE,GACxC,OAAO,IAAIC,GAAoBD,GAiBnC,YAA4BE,GACxB,MAAMC,EAAsB,IAAIC,GAAoBF,GACpD,OA4GJ,cACI,IACI,SAAS,IAAIp1K,OAAOu1K,WAAYC,gBAAgBC,GAAsB,IAAK,YAGpE,CAHoE,MAExEpqJ,GACH,OAAO,GAjHJqqJ,GAAyB,IAAIC,GAAgBN,GAAuBA,EAM/E,SACIhnK,YAAYgnK,GACR9mK,KAAK8mK,oBAAsBA,EAE/BO,oBAAoBlwE,GAKhBA,EAAO,0BAA4BA,EACnC,IACI,MAAM//F,GAAO,IAAI3F,OAAOu1K,WACnBC,gBAAgBC,GAAsB/vE,GAAO,aAC7C//F,KACL,OAAa,OAATA,EAIO4I,KAAK8mK,oBAAoBO,oBAAoBlwE,IAExD//F,EAAKsyB,YAAYtyB,EAAKw4J,YACfx4J,EAGA,CAHAA,MAEJ0lB,GACH,OAAO,OASnB,SACIhd,YAAY+mK,GAGR,GAFA7mK,KAAK6mK,WAAaA,EAClB7mK,KAAKsnK,cAAgBtnK,KAAK6mK,WAAWU,eAAeC,mBAAmB,sBACxC,MAA3BxnK,KAAKsnK,cAAclwK,KAAc,CAGjC,MAAMqwK,EAAYznK,KAAKsnK,cAAc98I,cAAc,QACnDxqB,KAAKsnK,cAAc18I,YAAY68I,GAC/B,MAAMC,EAAmB1nK,KAAKsnK,cAAc98I,cAAc,QAC1Di9I,EAAU78I,YAAY88I,IAG9BL,oBAAoBlwE,GAEhB,MAAMwwE,EAAa3nK,KAAKsnK,cAAc98I,cAAc,YACpD,GAAI,YAAam9I,EACbA,SAAWC,UAAYV,GAAsB/vE,GACtCwwE,EASX,MAAME,EAAY7nK,KAAKsnK,cAAc98I,cAAc,QACnDq9I,SAAUD,UAAYV,GAAsB/vE,GAGxCn3F,KAAK6mK,WAAW5yE,cAChBj0F,KAAK8nK,mBAAmBD,GAErBA,EAUXC,mBAAmBz8I,GACf,MAAM08I,EAAU18I,EAAG28I,WAEnB,QAASltK,EAAIitK,EAAQh2K,OAAS,EAAG,EAAI+I,EAAGA,IAAK,CAEzC,MAAMy3J,EAAW0V,EADMltK,KAAKD,GACJiG,MACP,cAAbwxJ,GAAyD,IAA7BA,EAAS98J,QAAQ,UAC7C41B,EAAGC,gBAAgBinI,GAG3B,IAAI2V,EAAY78I,EAAGukI,WACnB,KAAOsY,GACCA,EAAUlqK,WAAamqK,KAAKC,cAC5BpoK,KAAK8nK,mBAAmBI,GAC5BA,EAAYA,EAAU98I,aAqDlC,MAAMi9I,GAAmB,kEAInBC,GAAmB,uIACzB,YAAsB/4I,GAElB,OADAA,EAAMy9D,OAAOz9D,IACL/1B,MAAM6uK,KAAqB94I,EAAI/1B,MAAM8uK,IAClC/4I,EAIJ,UAAYA,EAEvB,YAAwBg5I,GACpBA,SAASv7E,OAAOu7E,IACFlqK,MAAM,KAAKrJ,IAAKuzK,GAAWC,GAAaD,EAAOl5J,SAASmyC,KAAK,MAU/E,YAAgBinH,GACZ,MAAMlqE,EAAM,GACZ,UAAW5Y,KAAK8iF,EAAKpqK,MAAM,KACvBkgG,EAAI5Y,IAAK,EACb,OAAO4Y,EAEX,eAAkBmqE,GACd,MAAMnqE,EAAM,GACZ,UAAW77F,KAAKgmK,EACZ,UAAWrlK,KAAKX,EACRA,EAAE5I,eAAeuJ,KACjBk7F,EAAIl7F,IAAK,GAGrB,OAAOk7F,EAOX,MAAMoqE,GAAgBC,GAAO,0BAGvBC,GAAkCD,GAAO,kDACzCE,GAAmCF,GAAO,SAU1CG,GAAiB13G,GAAMs3G,GAPNt3G,GAAMw3G,GAAiCD,GAAO,oMAI7Cv3G,GAAMy3G,GAAkCF,GAAO,+LANrCv3G,GAAMy3G,GAAkCD,KAWpEG,GAAYJ,GAAO,gEAEnBK,GAAeL,GAAO,UAoBtBM,GAAc73G,GAAM23G,GAAWC,GAnBlBL,GAAO,idAMPA,GAAO,6qBAmBpBO,GAA8CP,GAAO,yBAK3D,SACI9oK,cAGIE,KAAKopK,oBAAqB,EAC1BppK,KAAKqpK,IAAM,GAEfC,iBAAiBj+I,GAIb,IAAIi8B,EAAUj8B,EAAGukI,WACb2Z,GAAkB,EACtB,KAAOjiH,GAWH,GAVAq+B,EAAY3nF,WAAamqK,KAAKC,aAC1BmB,EAAkBvpK,KAAKwpK,aAAaliH,GAEnCq+B,EAAY3nF,WAAamqK,KAAKsB,UAC/BzpK,KAAK0pK,MAAMpiH,EAAQqiH,WAInB3pK,KAAKopK,oBAAqB,EAE1BG,GAAmBjiH,EAAQsoG,WAC3BtoG,EAAUA,EAAQsoG,gBAGtB,KAAOtoG,GAAS,CAERA,EAAQtpD,WAAamqK,KAAKC,cAC1BpoK,KAAK4pK,WAAWtiH,GAEpB,IAAI7qD,EAAOuD,KAAK6pK,sBAAsBviH,EAASA,EAAQl8B,aACvD,GAAI3uB,EAAM,CACN6qD,EAAU7qD,EACV,MAEJ6qD,EAAUtnD,KAAK6pK,sBAAsBviH,EAASA,EAAQjxD,YAG9D,OAAO2J,KAAKqpK,IAAI7nH,KAAK,IAUzBgoH,aAAap3K,GACT,MAAM03K,EAAU13K,EAAQ23K,SAASjtK,cACjC,IAAKisK,GAAejvK,eAAegwK,GAC/B,YAAKV,oBAAqB,GAClBD,GAA4CrvK,eAAegwK,GAEvE9pK,KAAKqpK,IAAI31K,KAAK,KACdsM,KAAKqpK,IAAI31K,KAAKo2K,GACd,MAAM/B,EAAU31K,EAAQ41K,WACxB,QAASltK,EAAI,EAAGA,EAAIitK,EAAQh2K,OAAQ+I,IAAK,CACrC,MAAMkvK,EAASjC,EAAQhtK,KAAKD,GACtBy3J,EAAWyX,EAAOjpK,KAClBkpK,EAAQ1X,EAASz1J,cACvB,IAAKosK,GAAYpvK,eAAemwK,GAAQ,CACpCjqK,KAAKopK,oBAAqB,EAC1B,SAEJ,IAAIj0K,GAAQ60K,EAAO70K,MAEf6zK,GAAUiB,KACV90K,GAAQqzK,GAAarzK,KACrB8zK,GAAagB,KACb90K,GAAQ+0K,GAAe/0K,KAC3B6K,KAAKqpK,IAAI31K,KAAK,IAAK6+J,EAAU,KAAM4X,GAAeh1K,IAAQ,KAE9D,YAAKk0K,IAAI31K,KAAK,MACP,EAEXk2K,WAAWtiH,GACP,MAAMwiH,EAAUxiH,EAAQyiH,SAASjtK,cAC7BisK,GAAejvK,eAAegwK,KAAanB,GAAc7uK,eAAegwK,KACxE9pK,KAAKqpK,IAAI31K,KAAK,MACdsM,KAAKqpK,IAAI31K,KAAKo2K,GACd9pK,KAAKqpK,IAAI31K,KAAK,MAGtBg2K,MAAMA,GACF1pK,KAAKqpK,IAAI31K,KAAKy2K,GAAeT,IAEjCG,sBAAsB7sK,EAAMotK,GACxB,GAAIA,IACCptK,EAAKqtK,wBAAwBD,GAC1BjC,KAAKmC,kCAAoCnC,KAAKmC,+BAClD,MAAM,IAAI7gI,MAAO,6DAA4DzsC,EAAKutK,aAEtF,OAAOH,GAIf,MAAMI,GAAwB,kCAExBC,GAA0B,gBAOhC,YAAwBt1K,GACpB,OAAOA,EAAM+G,QAAQ,KAAM,SACtBA,QAAQsuK,GAAuB,SAAUhxK,GAG1C,MAAO,MAAyB,MAFrBA,EAAM88G,WAAW,GAEN,QADV98G,EAAM88G,WAAW,GACmB,OAAU,OAAW,MAEpEp6G,QAAQuuK,GAAyB,SAAUjxK,GAC5C,MAAO,KAAOA,EAAM88G,WAAW,GAAK,MAEnCp6G,QAAQ,KAAM,QACdA,QAAQ,KAAM,QAEvB,IAAIwuK,GAKJ,YAAuB7D,EAAY8D,GAC/B,IAAIjD,EAAmB,KACvB,IACIgD,GAAkBA,IAAmBE,GAAmB/D,GAExD,IAAIgE,EAAaF,EAAkB39E,OAAO29E,GAAmB,GAC7DjD,EAAmBgD,GAAgBrD,oBAAoBwD,GAGvD,IAAIC,EAAe,EACfC,EAAaF,EACjB,EAAG,CACC,GAAqB,IAAjBC,EACA,MAAM,IAAIrhI,MAAM,yDAEpBqhI,IACAD,EAAaE,EACbA,EAAarD,EAAiBE,UAC9BF,EAAmBgD,GAAgBrD,oBAAoBwD,SAClDA,IAAeE,GAMxB,OAAO7D,IAJUzkG,IADKuoG,IACK1B,iBAAiB2B,GAAmBvD,IAAqBA,GAWlD9X,CAPLsb,QAI7B,GAAIxD,EAAkB,CAClB,MAAMtxK,EAAS60K,GAAmBvD,IAAqBA,EACvD,KAAOtxK,EAAOw5J,YACVx5J,EAAOszB,YAAYtzB,EAAOw5J,cAK1C,YAA4BvkI,GACxB,MAAO,YAAaA,GAIxB,YAA2BA,GACvB,OAAOA,EAAGrtB,WAAamqK,KAAKC,cAAgC,aAAhB/8I,EAAG0+I,QAAa,CALAoB,CAAkB9/I,GAC1EA,EAAG+/I,QACH,KAsBR,IAAIC,GAAe,OAAfA,OAAe,IAECA,GAAgBC,KAAU,GAAK,OAC/CD,GAAgBA,GAAgBE,KAAU,GAAK,OAC/CF,GAAgBA,GAAgBG,MAAW,GAAK,QAChDH,GAAgBA,GAAgBI,OAAY,GAAK,SACjDJ,GAAgBA,GAAgBK,IAAS,GAAK,MAC9CL,GAAgBA,GAAgBM,aAAkB,GAAK,eAPvDN,IAAe,GAgCnB,YAAwBR,GACpB,MAAMpoG,EAAYmpG,KAClB,OAAInpG,EACOopG,GAA4BppG,EAAUqpG,SAAST,GAAgBE,KAAMV,IAAe,IAE3FkB,GAAgClB,EAAY,QACrCgB,GAA4BG,GAAgBnB,IAEhDoB,GAAcxe,KAAepH,GAAgBwkB,IAuCxD,YAAuBqB,GACnB,MAAMzpG,EAAYmpG,KAClB,OAAInpG,EACOA,EAAUqpG,SAAST,GAAgBK,IAAKQ,IAAc,GAE7DH,GAAgCG,EAAW,OACpCF,GAAgBE,GAEpB1D,GAAaniB,GAAgB6lB,IAaxC,YAA+BC,GAC3B,MAAM1pG,EAAYmpG,KAClB,GAAInpG,EACA,OAAO2pG,GAAiC3pG,EAAUqpG,SAAST,GAAgBM,aAAcQ,IAAsB,IAEnH,GAAIJ,GAAgCI,EAAmB,eACnD,OAAOC,GAAiCJ,GAAgBG,IAK5D,MAAM,IAAI3lB,GAAa,IADnB,GAC2DjP,CA+HnE,cACI,MAAMmW,EAAQsI,KACd,OAAOtI,GAASA,EA92MF,GA82MQ2e,CAU1B,MAAMC,GAAuB,kBAQ7B,YAA0Bt7I,GACtB,OAAOA,EAAMs7I,IAKjB,YAA4Br9I,KAAY/sB,GACpC+sB,EAAQ+B,SAAS9uB,GAmCrB,SACIpC,cAIIE,KAAKusK,SAAWt9I,QAEpBo+E,YAAYr8E,GACR,MAAMw7I,EAAgBxsK,KAAKysK,mBAAmBz7I,GAGxC07I,EAlDd,YAAwB17I,GACpB,OAAOA,GAASA,EAAM27I,eAAiBC,GAiDfC,CAAe77I,GACnC07I,EAAY1sK,KAAKusK,SAAW,QAAQv7I,GAChCw7I,GACAE,EAAY1sK,KAAKusK,SAAW,iBAAiBC,GAIrDC,mBAAmBz7I,GACf,IAAI38B,EAAI28B,GAAS87I,GAAiB97I,GAClC,KAAO38B,GAAKy4K,GAAiBz4K,IACzBA,EAAIy4K,GAAiBz4K,GAEzB,OAAOA,GAAK,MAoEpB,MAAM04K,GAAoB,MAAwC,oBAA1BC,uBACpCA,uBACA/lH,YAEC2E,KAAKi9F,IAJgB,GA4C1B,YAAuB1zJ,GACnB,OAAIA,aAAiBg/F,SACVh/F,IAGAA,EAgGf,YAAsBgpB,EAAW8uJ,EAAeC,GAE5C,IAAI9iJ,EAAMjM,EAAUpsB,OACpB,OAAa,CACT,MAAMo7K,EAAahvJ,EAAU1oB,QAAQw3K,EAAeC,GACpD,IAAmB,IAAfC,EACA,OAAOA,EACX,GAAmB,IAAfA,GAAoBhvJ,EAAUm4F,WAAW62D,EAAa,IAAM,GAAgB,CAE5E,MAAMp7K,EAASk7K,EAAcl7K,OAC7B,GAAIo7K,EAAap7K,IAAWq4B,GACxBjM,EAAUm4F,WAAW62D,EAAap7K,IAAW,GAE7C,OAAOo7K,EAIfD,EAAgBC,EAAa,GAWrC,MACMC,GAAuB,cAS7B,YAA4Bjb,EAAOkb,EAAiBC,GAOhD,IAAIxyK,EAAI,EACR,KAAOA,EAAIq3J,EAAMpgK,QAAQ,CACrB,IAAIgJ,EAAOo3J,EAAMr3J,KACjB,GAAIwyK,GAA6B,UAATvyK,GAEpB,GADAA,EAAOo3J,EAAMr3J,IACgD,IAAzDyyK,GAAaxyK,EAAK+B,cAAeuwK,EAAiB,GAClD,OAAO,UAGG,IAATtyK,EAA0B,CAE/B,KAAOD,EAAIq3J,EAAMpgK,QAAwC,iBAAtBgJ,EAAOo3J,EAAMr3J,OAE5C,GAAIC,EAAK+B,gBAAkBuwK,EACvB,OAAO,EAEf,OAAO,GAGf,OAAO,EAOX,YAA0B7gB,GACtB,OAAsB,IAAfA,EAAMtvJ,MAA8BsvJ,EAAMr3J,QAAUi4K,GAa/D,YAA4B5gB,EAAOghB,EAAiBF,GAEhD,OAAOE,KADiC,IAAfhhB,EAAMtvJ,MAA+BowK,EAA0C9gB,EAAMr3J,MAA7Bi4K,GACtDK,CAW/B,YAAgCjhB,EAAOv2J,EAAUq3K,GAE7C,IAAI10E,EAAO,EACX,MAAM80E,EAAYlhB,EAAM2F,OAAS,GAE3Bwb,EA0KV,YAAgCD,GAC5B,QAAS5yK,EAAI,EAAGA,EAAI4yK,EAAU37K,OAAQ+I,IAElC,GAAI89J,GADa8U,EAAU5yK,IAEvB,OAAOA,EAGf,OAAO4yK,EAAU37K,OAjLS67K,CAAuBF,GAGjD,IAAIG,GAAqB,EACzB,QAAS/yK,EAAI,EAAGA,EAAI7E,EAASlE,OAAQ+I,IAAK,CACtC,MAAMwsD,GAAUrxD,EAAS6E,GACzB,GAAuB,iBAAZwsD,IAaX,IAAIumH,EAEJ,GAAW,EAAPj1E,GAEA,GADAA,EAAO,EAA2B,EAAPA,EACX,KAAZtxC,KAAmBwmH,GAAmBthB,EAAOllG,GAASgmH,IAC1C,KAAZhmH,IAAsC,IAApBrxD,EAASlE,OAAc,CACzC,GAAIg8K,GAAWn1E,GACX,OAAO,EACXi1E,GAAqB,OAGxB,CACD,MAAMG,GAA2B,EAAPp1E,EAAuBtxC,GAAUrxD,IAAW6E,GAGtE,GAAY,EAAP89F,GAAyC,OAAhB4zD,EAAM2F,MAAgB,CAChD,IAAK8b,GAAmBzhB,EAAM2F,MAAO6b,GAAmBV,GAAmB,CACvE,GAAIS,GAAWn1E,GACX,OAAO,EACXi1E,GAAqB,EAEzB,SAEJ,MACMK,GAAkBC,GADC,EAAPv1E,EAAwB,QAAUtxC,GACEomH,EAAWU,GAAiB5hB,GAAQ8gB,GAC1F,IAAwB,IAApBY,GAAwB,CACxB,GAAIH,GAAWn1E,GACX,OAAO,EACXi1E,GAAqB,EACrB,SAEJ,GAA0B,KAAtBG,GAA0B,CAC1B,IAAIK,GAEAA,GADAH,GAAkBP,EACF,GAQAD,EAAUQ,GAAkB,GAAGpxK,cAEnD,MAAMwxK,GAAiC,EAAP11E,EAAuBy1E,GAAgB,KACvE,GAAIC,KACgE,IAAhEf,GAAae,GAAyBN,GAAmB,IAClD,EAAPp1E,GAA4Bo1E,KAAsBK,GAAe,CACjE,GAAIN,GAAWn1E,GACX,OAAO,EACXi1E,GAAqB,SA/DjC,CAEI,IAAKA,IAAuBE,GAAWn1E,KAAUm1E,GAAWzmH,IACxD,OAAO,EAIX,GAAIumH,GAAsBE,GAAWzmH,IACjC,SACJumH,GAAqB,EACrBj1E,EAAOtxC,GAAkB,EAAPsxC,CAClB,CAoD6B,CAKrC,OAAOm1E,GAAWn1E,IAASi1E,EAE/B,YAAoBj1E,GAChB,OAAgC,IAAjB,EAAPA,EAAwB,CA+BpC,YAA6B73F,EAAMoxJ,EAAOic,EAAkBd,GACxD,GAAc,OAAVnb,EACA,OAAO,EACX,IAAIr3J,EAAI,EACR,GAAIwyK,IAAqBc,EAAkB,CACvC,IAAIG,GAAe,EACnB,KAAOzzK,EAAIq3J,EAAMpgK,QAAQ,CACrB,MAAMy8K,EAAgBrc,EAAMr3J,GAC5B,GAAI0zK,IAAkBztK,EAClB,OAAOjG,EAEN,GAAsB,IAAlB0zK,GAAwD,IAAlBA,EAC3CD,GAAe,UAEQ,IAAlBC,GAAuD,IAAlBA,EAAkC,CAC5E,IAAIr5K,EAAQg9J,IAAQr3J,GAGpB,KAAwB,iBAAV3F,GACVA,EAAQg9J,IAAQr3J,GAEpB,SAEC,GAAsB,IAAlB0zK,EAEL,MAEC,GAAsB,IAAlBA,EAAwC,CAE7C1zK,GAAK,EACL,UAGJA,GAAKyzK,EAAe,EAAI,EAG5B,OAAO,EAGP,OAgCR,YAAgCpc,EAAOpxJ,GACnC,IAAIjG,EAAIq3J,EAAM18J,QAAQ,GACtB,GAAIqF,GAAI,EAEJ,IADAA,IACOA,EAAIq3J,EAAMpgK,QAAQ,CACrB,MAAM08K,EAAOtc,EAAMr3J,GAGnB,GAAoB,iBAAT2zK,EACP,OAAO,EACX,GAAIA,IAAS1tK,EACT,OAAOjG,EACXA,IAGR,OAAO,EA/CI4zK,CAAuBvc,EAAOpxJ,GAG7C,YAAoCyrJ,EAAOv2J,EAAUq3K,GAAmB,GACpE,QAASxyK,EAAI,EAAGA,EAAI7E,EAASlE,OAAQ+I,IACjC,GAAI6zK,GAAuBniB,EAAOv2J,EAAS6E,GAAIwyK,GAC3C,OAAO,EAGf,OAAO,EA6CX,YAAkCr3K,EAAUuoJ,GACxCowB,EAAkB,QAAS9zK,EAAI,EAAGA,EAAI0jJ,EAAKzsJ,OAAQ+I,IAAK,CACpD,MAAM+zK,EAAwBrwB,EAAK1jJ,GACnC,GAAI7E,EAASlE,SAAW88K,EAAsB98K,OAG9C,SAAS8uB,EAAI,EAAGA,EAAI5qB,EAASlE,OAAQ8uB,IACjC,GAAI5qB,EAAS4qB,KAAOguJ,EAAsBhuJ,GACtC,WAGR,OAAO,GAEX,OAAO,EAEX,YAAgCiuJ,EAAgBC,GAC5C,OAAOD,EAAiB,QAAUC,EAAM1/J,OAAS,IAAM0/J,EAE3D,YAA8B94K,GAC1B,IAAIsB,EAAStB,EAAS,GAClB6E,EAAI,EACJ89F,EAAO,EACPo2E,EAAe,GACfF,GAAiB,EACrB,KAAOh0K,EAAI7E,EAASlE,QAAQ,CACxB,IAAIk9K,EAAgBh5K,EAAS6E,GAC7B,GAA6B,iBAAlBm0K,EACP,GAAW,EAAPr2E,EAA0B,CAC1B,MAAMs2E,EAAYj5K,IAAW6E,GAC7Bk0K,GACI,IAAMC,GAAiBC,EAAUn9K,OAAS,EAAI,KAAOm9K,EAAY,IAAM,IAAM,SAErE,EAAPt2E,EACLo2E,GAAgB,IAAMC,EAEV,EAAPr2E,IACLo2E,GAAgB,IAAMC,OAqBL,KAAjBD,IAAwBjB,GAAWkB,KACnC13K,GAAU43K,GAAuBL,EAAgBE,GACjDA,EAAe,IAEnBp2E,EAAOq2E,EAGPH,EAAiBA,IAAmBf,GAAWn1E,GAEnD99F,IAEJ,MAAqB,KAAjBk0K,IACAz3K,GAAU43K,GAAuBL,EAAgBE,IAE9Cz3K,EAiEX,MAAM63K,GAA2F,GAgCjG,YAAmBC,GAEfC,GAAoBC,KAAYvZ,KAAYwZ,KAAqBH,GAAO,GAE5E,YAA6BtkB,EAAO2C,EAAO55I,EAAO27J,GAI9C,IAAKA,EAED,GADgF,IAAhC,EAAf/hB,EAjoO3B,IAkoOuB,CACzB,MAAMkK,EAAqB7M,EAAM6M,mBACN,OAAvBA,GACA8X,EAAkBhiB,EAAOkK,EAAoB9jJ,OAGhD,CACD,MAAM6jJ,EAAgB5M,EAAM4M,cACN,OAAlBA,GACAgY,EAAyBjiB,EAAOiK,EAAe,EAA4B7jJ,GAQvF87J,GAAiB97J,GAgDrB,YAAyB02F,EAAM/tG,GAG3B,OAAQ+tG,GAAQ,GAAsB/tG,GAAQ,EAElD,YAA8BozK,GAE1B,OAAQA,GAAiB,GAAuB,MAapD,YAAuCA,GAEnC,OAAwB,EAAhBA,CAAgB,CAE5B,YAA8BA,GAE1B,OAAwB,OAAhBA,IAA2C,EAEvD,YAA8BA,EAAepzK,GAGzC,OAAyB,OAAhBozK,EACLpzK,GAAQ,EAOhB,YAAuCozK,GAEnC,OAAwB,EAAhBA,CAAgB,CAsvB5B,YAA+B9kB,EAAO2C,GAClC,MAAMtD,EAAiBW,EAAMX,eAC7B,GAAuB,OAAnBA,EACA,QAAStvJ,EAAI,EAAGA,EAAIsvJ,EAAer4J,OAAQ+I,GAAK,EAAG,CAC/C,MAAMg1K,EAAgB1lB,EAAetvJ,GAC/Bi1K,EAAkB3lB,EAAetvJ,EAAI,GAC3C,IAAwB,IAApBi1K,EAAwB,CACxB,MAAMrf,EAAe3F,EAAMj2J,KAAKi7K,GAIhCC,GAAqBF,GACrBpf,EAAatG,eAAe,EAAgBsD,EAAMqiB,GAAkBA,KAiBpF,YAAqBxgB,EAAaxE,EAAO9tJ,EAASuuB,EAAOl1B,EAAM25K,EAAWC,EAAiBpnJ,EAAU25C,GAAWj0C,IAC5G,MAAMk/H,GAA4D3C,EAAM8I,UAAUznJ,QAClFshJ,UAngQS,GAmgQKp3J,EACdo3J,GAlgQU,GAkgQa,IAARliI,EACf2kJ,GAAuBziB,IAEvBA,GApgQW,GAogQKA,GAv/PK,IAu/PqB6B,EAC1C7B,GAhgQY,GAggQKzwJ,EACjBywJ,GA//PqB,IA+/PMwiB,GAAmB3gB,GAAeA,EA//PxC,IAigQrB7B,GAhgQa,IAggQM5kI,GAAYymI,GAAeA,EAhgQjC,IAkgQb7B,GAjgQc,IAigQKjrF,IAAa8sF,GAAeA,EAjgQjC,KAigQ2D,KACzE7B,GArgQe,GAqgQKl/H,IAAY+gI,GAAeA,EArgQhC,IAqgQ2D,KAC1E7B,GAzgQW,GAygQKuiB,EAGhBviB,GAjgQ+B,IAkgQb,GAAd3C,EAAM7tJ,KAA2BqyJ,EAlgQN,IAkgQgD7B,GAExEA,GAEX,YAA0B3C,EAAOj3I,EAAO5W,EAAM6D,EAAMoxJ,GAMhD,IAAI3F,EAAQzB,EAAMj2J,KAAKgf,GACvB,GAAc,OAAV04I,EACAA,EAAQ4jB,GAAmBrlB,EAAOj3I,EAAO5W,EAAM6D,EAAMoxJ,GA1uO7D,cACI,OAAO/D,GAAiBC,OAAOa,OA0uOvBD,KAKAzC,EAAMhhI,OAAS,YAGD,GAAbghI,EAAMtvJ,KAA6B,CACxCsvJ,EAAMtvJ,KAAOA,EACbsvJ,EAAMr3J,MAAQ4L,EACdyrJ,EAAM2F,MAAQA,EACd,MAAM/7J,EAASi6K,KACf7jB,EAAMmH,cAA2B,OAAXv9J,GAAkB,EAAKA,EAAOu9J,cAIxD2c,UAAgB9jB,GAAO,GAChBA,EAEX,YAA4BzB,EAAOj3I,EAAO5W,EAAM6D,EAAMoxJ,GAClD,MAAMxD,EAAeC,KACfC,EAAW0hB,KAGX/jB,GAAQzB,EAAMj2J,KAAKgf,GAkgB7B,YAAqBi3I,EAAOylB,EAAStzK,EAAM4W,EAAO3e,EAAOg9J,GAgFrD,MAvCI,CACIj1J,OACA4W,QACA28J,kBAAmB,KACnB9c,cAtCY6c,EAAUA,EAAQ7c,eAAgB,EAuC9CpD,gBAAgB,EAChBC,cAAc,EACdkgB,sBAAsB,EACtBC,iBAAkB,KAClBnlJ,MAAO,EACPirI,gBAAiB,EACjBthK,MAAOA,EACPg9J,MAAOA,EACPye,YAAa,KACbC,WAAY,KACZC,mBAAel8K,EACfwrI,OAAQ,KACRiqB,QAAS,KACT0mB,OAAQ,KACRt0K,KAAM,KACNyoK,eAAgB,KAChBnV,MAAO,KACP35J,OAAQo6K,EACRrM,WAAY,KACZzpK,OAAQ,KACRs2K,kBAAmB,KACnBC,oBAAgBr8K,EAChB8jK,QAAS,KACTwY,mBAAoB,KACpBC,qBAAiBv8K,EACjBw8K,cAAe,EACfC,cAAe,GAzkBnBC,CAAYvmB,EAHD8D,EAAWF,EAAeA,GAAgBA,EAAav4J,OAGvC8G,EAAM4W,EAAO/S,EAAMoxJ,GAIlD,OAAyB,OAArBpH,EAAM6E,aACN7E,EAAM6E,WAAapD,IAEF,OAAjBmC,IACIE,EAE0B,MAAtBF,EAAaoB,OAAkC,OAAjBvD,GAAMp2J,SAEpCu4J,EAAaoB,MAAQvD,IAIC,OAAtBmC,EAAalyJ,OAGbkyJ,EAAalyJ,KAAO+vJ,KAIzBA,GAYX,YAAsBzB,EAAO2C,EAAO6jB,EAAiBC,GACjD,GAAwB,IAApBD,EACA,OAAO,EAQX,MAAME,EAAW/jB,EAAM37J,OACvB,QAAS+I,EAAI,EAAGA,EAAIy2K,EAAiBz2K,IACjC4yJ,EAAMh6J,KAAK89K,GACXzmB,EAAM8I,UAAUngK,KAAK89K,GACrBzmB,EAAMj2J,KAAKpB,KAAK,MAEpB,OAAO+9K,EAYX,YAAoB1mB,EAAO2C,EAAOzwJ,GAE9By0K,GAAUhkB,GACV,IACI,MAAM/C,EAAYI,EAAMJ,UACN,OAAdA,GACAgnB,GAAmB,EAAgBhnB,EAAW1tJ,GAIlD,MAAM20K,EAAa7mB,EAAMjB,SACN,OAAf8nB,GACAC,GAAgB9mB,EAAO2C,EAAOkkB,EAAY,EAAgB30K,GAO1D8tJ,EAAM2I,kBACN3I,EAAM2I,iBAAkB,GAKxB3I,EAAM+mB,sBACNC,GAAsBhnB,EAAO2C,GAK7B3C,EAAMinB,mBACNL,GAAmB,EAAgB5mB,EAAMJ,UAAW1tJ,GAGxD,MAAMg1K,EAAalnB,EAAMknB,WACN,OAAfA,GAjKZ,YAA+BC,EAAWD,GACtC,QAASn3K,EAAI,EAAGA,EAAIm3K,EAAWlgL,OAAQ+I,IACnCq3K,GAAkBD,EAAWD,EAAWn3K,IAgKpCs3K,CAAsB1kB,EAAOukB,EAcjCI,CAdiCJ,MAG9BjhJ,GAGH,MAAI+5H,EAAM2I,kBACN3I,EAAMunB,qBAAsB,EAC5BvnB,EAAM2I,iBAAkB,GAEtB1iI,UAGN08H,EAzqQM,KAyqQU,EAChB2kB,MAWR,YAAqBtnB,EAAO2C,EAAOkkB,EAAY30K,GAE3C,MAAMuuB,EAAQkiI,EAvrQJ,GAwrQV,GAAsC,MAAzB,IAARliI,GAAL,CAEAkmJ,GAAUhkB,GAIV,IACIyiB,GAAuBziB,GAx5O/B,YAAyBv4J,GACrB,OAAOi5J,GAAiBC,OAAOW,aAAe75J,EAw5O1Co9K,CAAgBxnB,EAAMgE,mBACH,OAAf6iB,GACAC,GAAgB9mB,EAAO2C,EAAOkkB,EAAY,EAAgB30K,GAE9D,MAAMu1K,EAAmE,IAAhC,EAARhnJ,GAI7B,GAAIgnJ,EAAyB,CACzB,MAAM5a,GAAqB7M,EAAM6M,mBACN,OAAvBA,IACA8X,EAAkBhiB,EAAOkK,GAAoB,UAGhD,CACD,MAAMD,GAAgB5M,EAAM4M,cACN,OAAlBA,IACAgY,EAAyBjiB,EAAOiK,GAAe,EAA4B,MAE/E8a,GAAwB/kB,EAAO,GAenC,GAymCZ,YAAyCA,GACrC,QAASO,EAAaykB,GAAmBhlB,GAAuB,OAAfO,EAAqBA,EAAa0kB,GAAkB1kB,GAAa,CAC9G,IAAKA,EA52SkB,GA62SnB,SACJ,MAAM6S,EAAa7S,EAv2SP,GAy2SZ,QAASnzJ,EAAI,EAAGA,EAAIgmK,EAAW/uK,OAAQ+I,IAAK,CACxC,MAAM83K,EAAa9R,EAAWhmK,GACxBkmK,EAAsB4R,EAl1SzB,GAs1S8D,IAAxC,KAApBA,EAv1SH,KAw1SE3R,GAA4BD,EAAqB,GAMrD4R,EA91SE,IA81SmB,OAroCzBC,CAAgCnlB,GAimCxC,YAA8BA,GAC1B,QAASO,EAAaykB,GAAmBhlB,GAAuB,OAAfO,EAAqBA,EAAa0kB,GAAkB1kB,GACjG,QAASnzJ,EA70Se,GA60ScA,EAAImzJ,EAAWl8J,OAAQ+I,IAAK,CAC9D,MAAMg4K,EAAgB7kB,EAAWnzJ,GAC3Bi4K,EAAgBD,EA/zSpB,GAi0SEE,GAA6BF,IAC7BG,GAAYF,EAAeD,EAAeC,EAAcjpB,SAAUgpB,EA3zSlE,GA2zSgFpkB,EAvmCxFwkB,CAAqBxlB,GAEQ,OAAzB3C,EAAMX,gBACN2nB,GAAsBhnB,EAAO2C,GAKzB8kB,EAAyB,CACzB,MAAMzhB,GAAoBhG,EAAMgG,kBACN,OAAtBA,IACA2e,EAAkBhiB,EAAOqD,QAG5B,CACD,MAAMD,GAAe/F,EAAM+F,aACN,OAAjBA,IACA6e,EAAyBjiB,EAAOoD,GAAc,GAElD2hB,GAAwB/kB,EAAO,IAtS/C,YAAmC3C,EAAO2C,GACtC,MAAMylB,EAAqBpoB,EAAMooB,mBACjC,GAA2B,OAAvBA,EAEJ,IACI,QAASr4K,EAAI,EAAGA,EAAIq4K,EAAmBphL,OAAQ+I,IAAK,CAChD,MAAMs4K,EAASD,EAAmBr4K,GAClC,GAAIs4K,EAAS,EAETxD,IAAkBwD,OAEjB,CAED,MAAMC,EAAeD,EACfE,EAAkBH,IAAqBr4K,GACvCy4K,EAAgBJ,IAAqBr4K,GAC3C04K,GAA8BF,EAAiBD,GAE/CE,EAAc,EADE7lB,EAAM2lB,GACQp2K,EAKrB,CALqBA,QAKtC2yK,IAAiB,IAkRjB6D,CAA0B1oB,EAAO2C,GAEjC,MAAMukB,EAAalnB,EAAMknB,WACN,OAAfA,GA/PZ,YAAgCC,EAAWD,GACvC,QAASn3K,EAAI,EAAGA,EAAIm3K,EAAWlgL,OAAQ+I,IACnC44K,GAAiBxB,EAAWD,EAAWn3K,IA8PnC64K,CAAuBjmB,EAAOukB,GAKlC,MAAMtnB,GAAYI,EAAMJ,UAOpB,GANc,OAAdA,IACAgnB,GAAmB,EAAgBhnB,GAAW1tJ,GAK1Cu1K,EAAyB,CACzB,MAAMvhB,GAAiBlG,EAAMkG,eACN,OAAnBA,IACAye,EAAkBhiB,EAAOuD,QAG5B,CACD,MAAMD,GAAYjG,EAAMiG,UACN,OAAdA,IACA2e,EAAyBjiB,EAAOsD,GAAW,GAE/CyhB,GAAwB/kB,EAAO,IAGT,IAA1B3C,EAAM6oB,kBAON7oB,EAAM6oB,iBAAkB,GASxBlmB,EA9xQE,KA8xQc,GAED,KAAfA,EAhyQE,KAiyQFA,EAjyQE,KAiyQc,KAChBuT,GAA4BvT,EAjyQzB,IAiyQwC,GAI/C2kB,CAJ+C,QAI/CA,KA7GA,CA6GAA,CAGR,YAAmCtnB,EAAO2C,EAAOkkB,EAAY30K,GACzD,MAAMizK,EAAkBxiB,EAlyQH,IAuyQfmmB,EAAuBC,GAAepmB,GAC5C,KACgCmmB,GAAwB3D,EAAgBpmJ,OAChEomJ,EAAgBpmJ,QAEhB+pJ,GACAE,GAAWhpB,EAAO2C,EAAOzwJ,GAE7Bg2K,GAAYloB,EAAO2C,EAAOkkB,EAAY30K,EAIlBmtB,CAJkBntB,SAGV42K,GAAwB3D,EAAgB9lJ,KAChE8lJ,EAAgB9lJ,OAI5B,YAAyB2gI,EAAO2C,EAAOkkB,EAAYj/D,EAAI11G,GACnD,MAAM+2K,EAAoBxE,KACpByE,EAAqB,EAALthE,EACtB,IACIi9D,IAAiB,GACbqE,GAAiBvmB,EAAM37J,OA1yQb,IA6yQVu9K,GAAoBvkB,EAAO2C,EA7yQjB,IA6yQuC,GAIrDkkB,EAAWj/D,EAAI11G,EAKQA,CALRA,QAGf2yK,GAAiBoE,EAEM/2K,EAM/B,YAA+B8tJ,EAAOyB,EAAOkB,GACzC,GAAIwmB,GAAmB1nB,GAAQ,CAC3B,MACMpiI,EAAMoiI,EAAMgE,aAClB,QAASiH,EAFKjL,EAAM+D,eAEakH,EAAiBrtI,EAAKqtI,IAAkB,CACrE,MAAMv2J,EAAM6pJ,EAAMj2J,KAAK2iK,GACnBv2J,EAAIkpJ,gBACJlpJ,EAAIkpJ,eAAe,EAAgBsD,EAAM+J,GAAiBA,KAQ1E,YAAmC1M,EAAO2C,EAAOlB,IACxC2nB,OAkpBT,YAAkCppB,EAAO2C,EAAOlB,EAAOhnD,GACnD,MAAMngF,EAAQmnI,EAAM+D,eACdnmI,EAAMoiI,EAAMgE,aACbzF,EAAM2I,iBACP0gB,GAA+B5nB,EAAOkB,GAE1CmX,GAAgBr/D,EAAQkoD,GACxB,MAAMojB,EAAgBtkB,EAAMskB,cAC5B,QAASh2K,EAAIuqB,EAAOvqB,EAAIsvB,EAAKtvB,IAAK,CAC9B,MAAMoG,GAAM6pJ,EAAMj2J,KAAKgG,GACjB+kK,GAAc5I,GAAe/1J,IAC/B2+J,IAEAwU,GAAkB3mB,EAAOlB,EAAOtrJ,IAEpC,MAAMywJ,GAAY0E,GAAkB3I,EAAO3C,EAAOjwJ,EAAG0xJ,GACrDqY,GAAgBlT,GAAWjE,GACL,OAAlBojB,GACAwD,GAAmB5mB,EAAO5yJ,EAAIuqB,EAAOssI,GAAWzwJ,GAAKsrJ,EAAOskB,GAE5DjR,KACsB0U,GAAyB/nB,EAAM14I,MAAO45I,GAvgSxD,GAwgSqBiE,KAtqBjC6iB,CAAyBzpB,EAAO2C,EAAOlB,EAAOoW,GAAiBpW,EAAOkB,IACpB,MAA/B,IAAdlB,EAAMhhI,QAyqBf,YAAsCu/H,EAAO2C,EAAOlB,GAChD,MAAMnnI,EAAQmnI,EAAM+D,eACdnmI,EAAMoiI,EAAMgE,aAEZikB,EAAejoB,EAAM14I,MACrBq7I,EAzsQV,cACI,OAAOf,GAAiBC,OAAOc,sBAwsQDulB,GAC9B,IACI9E,GAAiB6E,GACjB,QAASE,GAAWtvJ,EAAOsvJ,GAAWvqJ,EAAKuqJ,KAAY,CACnD,MAAMzzK,GAAM6pJ,EAAMj2J,KAAK6/K,IACjBhjB,GAAYjE,EAAMinB,IACxBvlB,GAAyBulB,KACA,OAArBzzK,GAAI+oJ,cAA0C,IAAjB/oJ,GAAIgpJ,UAAoC,OAAlBhpJ,GAAIipJ,YACvDyqB,GAAiC1zK,GAAKywJ,IAMrBxC,CANqBwC,QAK9Cie,IAAiB,GACjBxgB,GAAyBD,IA3rBzB0lB,CAA6B9pB,EAAO2C,EAAOlB,IAOnD,YAAkC11D,EAAU01D,EAAOsoB,EAAoBlS,IACnE,MAAMiO,EAAarkB,EAAMqkB,WACzB,GAAmB,OAAfA,EAAqB,CACrB,IAAIkE,EAAavoB,EAAM14I,MAAQ,EAC/B,QAAShZ,EAAI,EAAGA,EAAI+1K,EAAW9+K,OAAQ+I,GAAK,EAAG,CAC3C,MAAMgZ,EAAQ+8J,EAAW/1K,EAAI,GACvB3F,GAAkB,IAAV2e,EACVghK,EAAkBtoB,EAAO11D,GACzBA,EAAShjF,GACbgjF,EAASi+E,KAAgB5/K,IAWrC,YAAmC+L,GAC/B,MAAM6pJ,EAAQ7pJ,EAAI6pJ,MAGlB,OAAc,OAAVA,GAAkBA,EAAMunB,oBAIjBpxK,EAAI6pJ,MAAQiqB,GAAY,EAAmB3lB,KAAWnuJ,EAAI4oJ,SAAU5oJ,EAAIwuC,MAAOxuC,EAAI2oJ,KAAM3oJ,EAAIupJ,cAAevpJ,EAAIwpJ,SAAUxpJ,EAAIypJ,UAAWzpJ,EAAI4pJ,QAAS5pJ,EAAI6oJ,QAE9JgB,EAeX,YAAqB7tJ,EAAMmyJ,EAAWuiB,EAAYliI,EAAOm6G,EAAMoB,EAAYG,EAAOT,EAAWG,GAASmqB,IAElG,MAAMlmB,GAt4QY,GAs4QwBr/G,EAIpCwlI,GAAoBnmB,GAAoBlF,EACxCgK,GA6EV,YAA6B9E,EAAmBmmB,GAC5C,MAAMrhB,EAA+C,GACrD,QAAS/4J,EAAI,EAAGA,EAAIo6K,EAAmBp6K,IACnC+4J,EAAUngK,KAAKoH,EAAIi0J,EAAoB,KAAOqgB,IAElD,OAAOvb,EAlFWshB,CAAoBpmB,GAAmBmmB,IACnDnrB,GAAoC,mBAApBkrB,GAAiCA,KAAoBA,GA0E3E,OAzEcphB,GAx6QJ,GA28QN,CACI32J,KAAMA,EACN22J,UAAWA,GACX/J,SAAU8nB,EACVwD,QAAS,KACTzqB,UAAWA,EACX0E,UAAWA,EACXv6J,KAAM++J,GAAUznJ,QAAQya,KAAK,KAAMkoI,IACnCA,kBAAmBA,GACnBsmB,kBAAmBH,GACnB/B,mBAAoB,KACpBzf,iBAAiB,EACjBkgB,iBAAiB,EACjB5B,mBAAmB,EACnBF,sBAAsB,EACtBna,cAAe,KACfC,mBAAoB,KACpB9G,aAAc,KACdC,kBAAmB,KACnBC,UAAW,KACXC,eAAgB,KAChBC,aAAc,KACdmR,QAAS,KACTjY,eAAgB,KAChB6nB,WAAY,KACZqD,kBAAyC,mBAAfrqB,EAA4BA,IAAeA,EACrEsqB,aAA+B,mBAAVnqB,EAAuBA,IAAUA,EACtDwE,WAAY,KACZ9E,QAASA,GACTf,OAAQA,GACRuoB,qBAAqB,GAgEjC,YAAiCvnB,EAAO2C,EAAOzwJ,EAASu4K,GACpD,MAAMlT,EAAWmT,GAAwB/nB,GACzB,OAAZzwJ,EAMAqlK,EAAS5uK,KAAK8hL,IAGdlT,EAAS5uK,KAAKuJ,GACV8tJ,EAAM2I,iBACNgiB,GAAwB3qB,GAAOr3J,KAAK8hL,EAAWlT,EAASvwK,OAAS,IAsF7E,YAAiC4jL,EAAe5F,EAAiB6F,GAC7D,QAAS3pB,KAAc0pB,EACnB,GAAIA,EAAc77K,eAAemyJ,GAAa,CAE1C,MAAM4pB,EAAeF,EAAc1pB,IADnC2pB,EAA0B,OAAdA,EAAqB,GAAKA,GAExB97K,eAAemyJ,GACzB2pB,EAAU3pB,GAAYv4J,KAAKq8K,EAAiB8F,GAG3CD,EAAU3pB,GAAc,CAAC8jB,EAAiB8F,GAIvD,OAAOD,EAkEX,YAAiC7qB,EAAOyB,EAAOkB,EAAOyL,EAAUhkK,EAAO2zB,EAAU25C,EAAWqzG,GAExF,MAAM1jL,GAAUwwK,GAAiBpW,EAAOkB,GACxC,IACIqoB,GADAC,GAAYxpB,EAAMpsB,QAEjB01C,GAA2B,MAAbE,KAAsBD,GAAYC,GAAU7c,KAC3D8c,GAAqBlrB,EAAO2C,EAAOqoB,GAAW5c,EAAUhkK,GACpDihK,GAAgB5J,IAqC5B,YAA2BkB,EAAOwoB,GAE9B,MAAMC,EAAsB5B,GAAyB2B,EAAWxoB,GAC7B,GAA7ByoB,EAzwRI,KA0wRNA,EA1wRM,IA0wRwB,IAxC1BC,CAAkB1oB,EAAOlB,EAAM14I,QAKjB,EAAjB1S,EAAUlE,OACXi8J,EA7BR,YAAqBp4J,GACjB,MAAa,UAATA,EACO,YACE,QAATA,EACO,UACE,eAATA,EACO,aACE,cAATA,EACO,YACE,aAATA,EACO,WACE,aAATA,EACO,WACJA,EAgBQs1K,CAAYld,GAYvBhkK,EAAqB,MAAbstE,EAAoBA,EAAUttE,EAAOq3J,EAAMr3J,OAAS,GAAIgkK,GAAYhkK,EAC5EmhL,GAAyBxtJ,GACrBA,EAASC,YAAY32B,GAAS+mK,EAAUhkK,GAElCu9J,GAAgByG,KACtB/mK,GAAQ22B,YAAc32B,GAAQ22B,YAAYowI,EAAUhkK,GAChD/C,GAAQ+mK,GAAYhkK,GAGV,CA0I1B,YAA2B41J,EAAO2C,EAAOlB,EAAO+pB,GAI5C,IAAIC,GAAgB,EACpB,GAAIrC,KAAsB,CACtB,MAAM1pB,EA0Kd,YAAiCM,EAAOj0D,EAAU01D,GAG9C,MAAMpsD,EAAW2qD,EAAMuqB,kBACvB,IAAI/7K,EAAU,KACd,GAAI6mG,EACA,QAAStlG,EAAI,EAAGA,EAAIslG,EAASruG,OAAQ+I,IAAK,CACtC,MAAMoG,EAAMk/F,EAAStlG,GACjB27K,GAA2BjqB,EAAOtrJ,EAAIktB,WAAkC,KACxE70B,IAAYA,EAA2C,IACvDm9K,GAAmBtC,GAA+B5nB,EAAO11D,GAAWi0D,EAAO7pJ,EAAIhE,MAC/Ey5K,GAAmBz1K,IAUf01K,GAAoB7rB,EAAOyB,GAE3BjzJ,EAAQoiB,QAAQza,IAGhB3H,EAAQ7F,KAAKwN,IAK7B,OAAO3H,EAzMmBs9K,CAAwB9rB,EAAO2C,EAAOlB,GACtDsqB,EAA2B,OAAdP,EAAqB,KAAO,CAAE,IAAI,GACrD,GAAsB,OAAlB9rB,EAAwB,CACxB+rB,GAAgB,EAChBO,GAAevqB,EAAOzB,EAAMj2J,KAAK/C,OAAQ04J,EAAc14J,QAOvD,QAAS+I,GAAI,EAAGA,GAAI2vJ,EAAc14J,OAAQ+I,KAAK,CAC3C,MAAMoG,GAAMupJ,EAAc3vJ,IACtBoG,GAAI0oJ,mBACJ1oJ,GAAI0oJ,kBAAkB1oJ,IAE9B,IAAI81K,GAAqB,EACrBC,IAA0B,EAC1B5D,GAAe6D,GAAansB,EAAO2C,EAAOjD,EAAc14J,OAAQ,MAGpE,QAAS+I,GAAI,EAAGA,GAAI2vJ,EAAc14J,OAAQ+I,KAAK,CAC3C,MAAMoG,GAAMupJ,EAAc3vJ,IAG1B0xJ,EAAMokB,YAAcuG,GAAe3qB,EAAMokB,YAAa1vK,GAAIipJ,WAC1DitB,GAA2BrsB,EAAOyB,EAAOkB,EAAO2lB,GAAcnyK,IAC9Dm2K,GAAoBhE,GAAcnyK,GAAK41K,GACZ,OAAvB51K,GAAIkpJ,iBACJoC,EAAMhhI,OAAS,IACM,OAArBtqB,GAAI+oJ,cAA2C,OAAlB/oJ,GAAIipJ,WAAuC,IAAjBjpJ,GAAIgpJ,YAC3DsC,EAAMhhI,OAAS,KACnB,MAAM8rJ,GAAiBp2K,GAAIhE,KAAKutF,WAG3BusF,IACAM,GAAep4G,aAAeo4G,GAAehlJ,UAAYglJ,GAAerlC,cAIxE8Y,EAAM4M,gBAAkB5M,EAAM4M,cAAgB,KAAKjkK,KAAK84J,EAAM14I,OAC/DkjK,GAAqB,IAEpBC,KAA4BK,GAAep4G,aAAeo4G,GAAerlC,cACzE8Y,EAAM6M,qBAAuB7M,EAAM6M,mBAAqB,KAAKlkK,KAAK84J,EAAM14I,OACzEmjK,IAA0B,GAE9B5D,MA9RhB,YAAyCtoB,EAAOyB,GAE5C,MACMpiI,EAAMoiI,EAAMgE,aACZ+mB,EAAYxsB,EAAMj2J,KAClB0iL,EAAahrB,EAAM2F,MACnBslB,EAAyD,GAC/D,IAAIC,EAAc,KACdC,GAAe,KACnB,QAAS78K,GAPK0xJ,EAAM+D,eAOAz1J,GAAIsvB,EAAKtvB,KAAK,CAC9B,MAAM41J,GAAe6mB,EAAUz8K,IACzB88K,GAAkBlnB,GAAatwB,OAK/B0wC,GAAgC,OAAf0G,GAAwBpJ,GAAiB5hB,GAE5D,KADAqrB,GAAsBD,GAAiBJ,GAE3CC,EAAgB/jL,KAAKo9K,IACrB4G,EAAcI,GAAwBF,GAAiB98K,GAAG48K,GAC1DC,GAAeG,GAAwBpnB,GAAarG,QAASvvJ,GAAG68K,IAEhD,OAAhBD,IACIA,EAAY59K,eAAe,WAC3B0yJ,EAAMhhI,OAAS,IAEfksJ,EAAY59K,eAAe,WAC3B0yJ,EAAMhhI,OAAS,KAGvBghI,EAAMskB,cAAgB2G,EACtBjrB,EAAMpsB,OAASs3C,EACflrB,EAAMnC,QAAUstB,GA+PRI,CAAgChtB,EAAOyB,GAEvCsqB,GAoKZ,YAAiCtqB,EAAO+pB,EAAWO,GAC/C,GAAIP,EAAW,CACX,MAAM1F,EAAarkB,EAAMqkB,WAAiD,GAI1E,QAAS/1K,EAAI,EAAGA,EAAIy7K,EAAUxkL,OAAQ+I,GAAK,EAAG,CAC1C,MAAMgZ,EAAQgjK,EAAWP,EAAUz7K,EAAI,IACvC,GAAa,MAATgZ,EACA,MAAM,IAAI0yI,IAAa,KAA6BwxB,GACxDnH,EAAWn9K,KAAK6iL,EAAUz7K,GAAIgZ,KA7K9BmkK,CAAwBzrB,EAAO+pB,EAAWO,GAGlDtqB,SAAMokB,YAAcuG,GAAe3qB,EAAMokB,YAAapkB,EAAM2F,OACrDqkB,EAYX,YAAoCzrB,EAAOyB,EAAOkB,EAAO2lB,EAAc6E,EAAkBh3K,GAErF,MAAM+oJ,EAAe/oJ,EAAI+oJ,aACzB,GAAIA,EAAc,CACd,IAAIkpB,EAAqBpoB,EAAMooB,mBACJ,OAAvBA,IACAA,EAAqBpoB,EAAMooB,mBAAqB,IAEpD,MAAMgF,IAAe3rB,EAAM14I,OAkBnC,YAAgCq/J,GAC5B,IAAIr4K,EAAIq4K,EAAmBphL,OAC3B,KAAO+I,EAAI,GAAG,CACV,MAAM3F,EAAQg+K,IAAqBr4K,GACnC,GAAqB,iBAAV3F,GAAsBA,EAAQ,EACrC,OAAOA,EAGf,OAAO,GAzBCijL,CAAuBjF,IAAuBgF,IAI9ChF,EAAmBz/K,KAAKykL,IAE5BhF,EAAmBz/K,KAAK2/K,EAAc6E,EAAkBjuB,IA8EhE,YAA0C/oJ,EAAKywJ,GAClB,OAArBzwJ,EAAI+oJ,cACJ/oJ,EAAI+oJ,aAAa,EAAgB0H,GA6CzC,YAA6B5G,EAAOstB,GAEhCA,EAAU7sJ,OAAS,GAClBu/H,EAAMknB,aAAelnB,EAAMknB,WAAiD,KACxEv+K,KAAK2kL,EAAUvkK,OAqBxB,YAA6Bu/J,EAAcnyK,EAAK41K,GAC5C,GAAIA,EAAY,CACZ,GAAI51K,EAAIopJ,SACJ,QAASxvJ,EAAI,EAAGA,EAAIoG,EAAIopJ,SAASv4J,OAAQ+I,IACrCg8K,EAAW51K,EAAIopJ,SAASxvJ,IAAMu4K,EAGlCpc,GAAe/1J,KACf41K,EAAW,IAAMzD,IAQ7B,YAAwB7mB,EAAO14I,EAAOwkK,GAGlC9rB,EAAMhhI,OAAS,EAEfghI,EAAM+D,eAAiBz8I,EACvB04I,EAAMgE,aAAe18I,EAAQwkK,EAC7B9rB,EAAMiK,gBAAkB3iJ,EAc5B,YAAoCi3I,EAAOyB,EAAOkB,EAAO+J,EAAgBv2J,GAGrE6pJ,EAAMj2J,KAAK2iK,GAAkBv2J,EAC7B,MAAMq3K,EAAmBr3K,EAAIpI,UAAYoI,EAAIpI,QAAU0/J,GAAct3J,EAAIhE,OACnEs7K,EAAsB,IAAIrhB,EAAoBohB,EAAkBthB,GAAe/1J,GAAM,MAC3F6pJ,EAAM8I,UAAU4D,GAAkB+gB,EAClC9qB,EAAM+J,GAAkB+gB,EACxBC,GAA2B1tB,EAAOyB,EAAOkB,EAAO+J,EAAgByf,GAAansB,EAAO2C,EAAOxsJ,EAAIgpJ,SAAUklB,IAAYluK,GAEzH,YAA2BwsJ,EAAO2qB,EAAWn3K,GACzC,MAAMskG,EAASo9D,GAAiByV,EAAW3qB,GACrC3C,EAAQ2tB,GAA0Bx3K,GAGlCgvK,EAAkBxiB,EAlqSH,IAmqSfwW,EAAgByU,GAAcjrB,EAAOkrB,GAAYlrB,EAAO3C,EAAO,KAAM7pJ,EAAIqpJ,OAAS,GAAiB,GAAsB/kD,EAAQ6yE,EAAWnI,EAAiBA,EAAgBjoJ,eAAeu9E,EAAQtkG,GAAM,KAAM,OAGtNwsJ,EAAM2qB,EAAUvkK,OAASowJ,EAY7B,YAA6Bp7I,EAAU12B,EAASq4B,EAAWq/I,EAAS/oK,EAAM5L,EAAOstE,GAC7E,GAAa,MAATttE,EAEAk9J,GAAqBvpI,GAAYA,EAASwC,gBAAgBl5B,EAAS2O,EAAM0pB,GACrEr4B,EAAQk5B,gBAAgBvqB,OAE3B,CAED,MAAMoC,EAAwB,MAAbs/D,EAAoB4jF,GAAgBlxJ,GAASstE,EAAUttE,EAAO20K,GAAW,GAAI/oK,GAC1FsxJ,GAAqBvpI,GACrBA,EAAS1tB,aAAahJ,EAAS2O,EAAMoC,EAAUsnB,GAG/CA,EAAYr4B,EAAQqgK,eAAehoI,EAAW1pB,EAAMoC,GAChD/Q,EAAQgJ,aAAa2F,EAAMoC,IAa3C,YAA4BuqJ,EAAO+J,EAAgB11B,EAAU7gI,EAAKsrJ,EAAOqsB,GACrE,MAAM/H,EAAgB+H,EAAiBphB,GACvC,GAAsB,OAAlBqZ,EAAwB,CACxB,MAAMjmB,EAAW3pJ,EAAI2pJ,SACrB,QAAS/vJ,GAAI,EAAGA,GAAIg2K,EAAc/+K,QAAS,CACvC,MAAMk6J,GAAa6kB,EAAch2K,MAC3BkyJ,GAAc8jB,EAAch2K,MAC5B3F,GAAQ27K,EAAch2K,MACX,OAAb+vJ,EACA3pJ,EAAI2pJ,SAAS9oB,EAAU5sI,GAAO82J,GAAYe,IAG1CjrB,EAASirB,IAAe73J,KAuBxC,YAA+BirI,EAAQ+xB,GACnC,IAAI2mB,EAAgB,KAChBh+K,EAAI,EACR,KAAOA,EAAIq3J,EAAMpgK,QAAQ,CACrB,MAAMwgK,EAAWJ,EAAMr3J,GACvB,GAAiB,IAAby3J,EAGA,GAEkB,IAAbA,EAFL,CAQJ,GAAwB,iBAAbA,EACP,MACAnyB,EAAOtmI,eAAey4J,KACA,OAAlBumB,IACAA,EAAgB,IACpBA,EAAcplL,KAAK6+J,EAAUnyB,EAAOmyB,GAAWJ,EAAMr3J,EAAI,KAE7DA,GAAK,CAVD,MADAA,GAAK,OALLA,GAAK,CAgBJ,CAET,OAAOg+K,EAkBX,YAA0BC,EAAY1nB,EAAa7rD,EAAQgnD,GAiBvD,OAbmB,IAAmC31J,MAAOkiL,GAC7D,GACA,EACA1nB,EACA,KACA,EACA7E,EACAhnD,EACA,KACA,MAwDJ,YAA0B0sE,EAAW8G,GAEjC,MAAM9U,EAAgBqQ,GAAyByE,EAAkB9G,GAEjE,GAAIc,GAA6B9O,GAAgB,CAC7C,MAAMnZ,EAAQmZ,EA92SR,GA+2SsB,GAAxBA,EA92SE,GA+2SF+O,GAAYloB,EAAOmZ,EAAenZ,EAAMjB,SAAUoa,EAz2S9C,IA22SCA,EA92SqB,GA82S0B,GAEpD+U,GAAyB/U,IAUrC,YAAkCxW,GAC9B,QAASO,EAAaykB,GAAmBhlB,GAAuB,OAAfO,EAAqBA,EAAa0kB,GAAkB1kB,GACjG,QAASnzJ,EAh5Se,GAg5ScA,EAAImzJ,EAAWl8J,OAAQ+I,IAAK,CAC9D,MAAMg4K,EAAgB7kB,EAAWnzJ,GACjC,GAA2B,KAAvBg4K,EAj4SF,GAi4S6D,CAC3D,MAAMC,EAAgBD,EAn4SxB,GAq4SEG,GAAYF,EAAeD,EAAeC,EAAcjpB,SAAUgpB,EA93SlE,GA83SgFpkB,MAE3EokB,EAn4SiB,GAm4S8B,GACpDmG,GAAyBnG,GAMrC,MAAMb,EAAalnB,EA94ST,GA84SeknB,WACzB,GAAmB,OAAfA,EACA,QAASn3K,EAAI,EAAGA,EAAIm3K,EAAWlgL,OAAQ+I,IAAK,CACxC,MAAMopK,EAAgBqQ,GAAyBtC,EAAWn3K,GAAI4yJ,GAE1DslB,GAA6B9O,IAC7BA,EAh5SsB,GAg5SyB,GAC/C+U,GAAyB/U,IAKzC,YAA2BgO,EAAW8G,GAElC,MAAM9U,EAAgBqQ,GAAyByE,EAAkB9G,GAC3DgH,EAAiBhV,EA75Sb,IA47Sd,YAA+BnZ,EAAO2C,GAClC,QAAS5yJ,EAAI4yJ,EAAM37J,OAAQ+I,EAAIiwJ,EAAM8I,UAAU9hK,OAAQ+I,IACnD4yJ,EAAMh6J,KAAKq3J,EAAM8I,UAAU/4J,KAhC/Bq+K,CAAsBD,EAAgBhV,GACtC6P,GAAWmF,EAAgBhV,EAAeA,EAx5S9B,GAw5S4CxV,CA6C5D,YAAuBhB,EAAOmU,GAK1B,OAAInU,EAr8SW,IAs8SXA,EAr8SW,IAVN,GA+8SqBmU,EAG1BnU,EAz8SW,IAy8SSmU,EAExBnU,EA18Se,IA08SKmU,EACbA,EAgBX,YAAuBnU,GACnB,KAAOA,GAAO,CACVA,EAz+SM,IAy+SU,GAChB,MAAMt3J,EAAS6tK,GAAevW,GAE9B,GAAI0rB,GAAW1rB,KAAWt3J,EACtB,OAAOs3J,EAGXA,EAAQt3J,EAEZ,OAAO,KAmEX,YAAiCs3J,IA7BjC,YAAyB2rB,GACrB,QAASv+K,EAAI,EAAGA,EAAIu+K,EAAYpH,WAAWlgL,OAAQ+I,IAAK,CACpD,MAAMw+K,EAAgBD,EAAYpH,WAAWn3K,GACvC4yJ,EAAQ6rB,GAAiBD,GACzBvuB,EAAQ2C,EA7hTR,GA8hTN8rB,GAA0BzuB,EAAO2C,EAAO3C,EAAMjB,SAAUwvB,IAyB5DG,CAAgB/rB,EAhjTJ,GAgjTUgB,CA6B1B,YAA4BljI,EAAOkuJ,EAAanmJ,GAE5Cy8I,GAAqB,GACrB0J,EAAYluJ,EAAO+H,GA2CvB,MAAMomJ,GApsDkB,KAAM/8J,QAAQC,QAAQ,MAAtB,GAqsDxB,YAAiCyd,GAE7B,OAAOA,EA/nTK,KA+nTaA,EA/nTb,GA+nT0D,IAE1E,YAAiCywH,GAC7B,OAAOA,EAAMsX,UAAYtX,EAAMsX,QAAuC,IAmB1E,YAAqB3U,EAAO18H,GACxB,MAAMxC,EAAWk/H,EAppTF,GAqpTTvmC,EAAe34F,EAAWA,EAASn5B,IAAIukL,GAAc,MAAQ,KACnEzyD,GAAgBA,EAAa9Z,YAAYr8E,GAW7C,YAA8B+5H,EAAO2C,EAAOttB,EAAQ6rB,EAAY92J,GAC5D,QAAS2F,EAAI,EAAGA,EAAIslI,EAAOruI,QAAS,CAChC,MAAM+hB,EAAQssH,EAAOtlI,KACfkyJ,EAAc5sB,EAAOtlI,KACrBinI,GAAW2rB,EAAM55I,GAEjB5S,GAAM6pJ,EAAMj2J,KAAKgf,GACF,OAAjB5S,GAAI2pJ,SACJ3pJ,GAAI2pJ,SAAS9oB,GAAU5sI,EAAO82J,EAAYe,GAG1CjrB,GAASirB,GAAe73J,GAOpC,YAA6Bu4J,EAAO55I,EAAO3e,GAIvC,MAAM/C,EAAUynL,GAAiB/lK,EAAO45I,GAExCosB,EAAepsB,EAvrTF,IAurTmBt7J,EAAS+C,GAqB7C,YAA8Bq3J,EAAO2F,EAAO4nB,GAGxC,IAAIr/K,EAASq/K,EAAcvtB,EAAM9xJ,OAAS,KACtCg+J,EAAUqhB,EAAcvtB,EAAMkM,QAAU,KACxC9/D,EAAO,EACX,GAAc,OAAVu5D,EACA,QAASr3J,EAAI,EAAGA,EAAIq3J,EAAMpgK,OAAQ+I,IAAK,CACnC,MAAM3F,EAAQg9J,EAAMr3J,GACC,iBAAV3F,EACPyjG,EAAOzjG,EAEM,GAARyjG,EACL8/D,EAAUshB,EAAuBthB,EAASvjK,GAE7B,GAARyjG,IAGLl+F,EAASs/K,EAAuBt/K,EAFlBvF,EAEkC,KAD7Bg9J,IAAQr3J,GACyC,MAIhFi/K,EAAcvtB,EAAM9xJ,OAASA,EAAS8xJ,EAAMwkB,kBAAoBt2K,EAChEq/K,EAAcvtB,EAAMkM,QAAUA,EAAUlM,EAAM0kB,mBAAqBxY,EAqEvE,MAAMuhB,GAAW,IAAI/tJ,GAAe,YAGpC,GASA,SACI72B,IAAIgR,EAAOyhJ,EAAgB6V,IACvB,GAAI7V,IAAkB6V,GAAoB,CACtC,MAAM3sI,EAAQ,IAAIyY,MAAO,sCAAqCge,EAAUphD,OACxE2qB,QAAMjwB,KAAO,oBACPiwB,EAEV,OAAO82H,GAgBf,MAAMoyB,GAAiB,IAAIhuJ,GAAe,uBAYpCiuJ,GAAU,GAQVC,GAAW,GAIjB,IAAIC,GACJ,cACI,YAAwBzlL,IAApBylL,KACAA,GAAkB,IAAIC,IAEnBD,GAOX,YAAwBE,EAASnkL,EAAS,KAAMokL,EAAsB,KAAMz5K,GACxE,MAAMytB,EAAWisJ,GAAuCF,EAASnkL,EAAQokL,EAAqBz5K,GAC9FytB,SAASksJ,2BACFlsJ,EAOX,YAAgD+rJ,EAASnkL,EAAS,KAAMokL,EAAsB,KAAMz5K,GAChG,OAAO,IAAI45K,GAAWJ,EAASC,EAAqBpkL,GAAUwkL,KAAmB75K,GAErF,SACIjB,YAAYoB,EAAKs5K,EAAqBpkL,EAAQ2uC,EAAS,MACnD/kC,KAAK5J,OAASA,EAMd4J,KAAK66K,QAAU,IAAIzlL,IAInB4K,KAAK86K,iBAAmB,IAAI97K,IAI5BgB,KAAK5L,UAAY,IAAI4K,IACrBgB,KAAK+lB,YAAa,EAClB,MAAMg1J,EAAa,GAInBP,GACIvgB,GAAYugB,EAAqBQ,GAAYh7K,KAAKi7K,gBAAgBD,EAAU95K,EAAKs5K,IACrFvgB,GAAY,CAAC/4J,GAAMg6K,GAAel7K,KAAKm7K,oBAAoBD,EAAa,GAAIH,IAE5E/6K,KAAK66K,QAAQvlL,IAAI2kL,GAAUmB,QAAWxmL,EAAWoL,OAGjD,MAAMuyI,EAASvyI,KAAK66K,QAAQxlL,IAAI6kL,IAChCl6K,KAAKqvG,MAAkB,MAAVkjC,EAAiBA,EAAOp9I,MAAQ,KAE7C6K,KAAK+kC,OAASA,IAA0B,iBAAR7jC,EAAmB,KAAOumD,EAAUvmD,IAKpE6Y,gBACA,OAAO/Z,KAAK+lB,WAQhBnS,UACI5T,KAAKq7K,qBAELr7K,KAAK+lB,YAAa,EAClB,IAEI/lB,KAAK5L,UAAUxB,QAAQg6F,GAAWA,EAAQ5gE,cAMpB5kB,CANoB4kB,QAI1ChsB,KAAK66K,QAAQzzK,QACbpH,KAAK5L,UAAUgT,QACfpH,KAAK86K,iBAAiB1zK,SAG9B/R,IAAIgR,EAAOyhJ,EAAgB6V,GAAoBnyI,EAAQ87H,GAAYhgH,SAC/DtnC,KAAKq7K,qBAEL,MAAMC,EAAmBC,GAAmBv7K,MACtC+0J,EAA+BC,QAAwBpgK,GAC7D,IAEI,KAAM42B,EAAQ87H,GAAYG,UAAW,CAEjC,IAAIlV,EAASvyI,KAAK66K,QAAQxlL,IAAIgR,GAC9B,QAAezR,IAAX29I,EAAsB,CAGtB,MAAMrxI,GAwU1B,YAA+B/L,GAC3B,MAAyB,mBAAVA,GACO,iBAAVA,GAAsBA,aAAiB+2B,GA1UvBsvJ,CAAsBn1K,IAAU2hJ,GAAiB3hJ,GAIzDksI,EAHArxI,IAAOlB,KAAKy7K,qBAAqBv6K,IAGxBk6K,GAAWM,GAAkCr1K,GAAQ8zK,IAGrD,KAEbn6K,KAAK66K,QAAQvlL,IAAI+Q,EAAOksI,GAG5B,GAAc,MAAVA,EACA,OAAOvyI,KAAK27K,QAAQt1K,EAAOksI,GAQnCuV,OAHqBviG,EAAU+hG,GAAYE,KAAsBozB,KAAd56K,KAAK5J,QAMpCf,IAAIgR,EAHxByhJ,EAAiBt8H,EAAQ87H,GAAYI,UAAaI,IAAkB6V,GAChE,KACA7V,EAuBewzB,CAtBYxzB,MAE5BzzJ,GACH,GAAe,sBAAXA,EAAE0M,KAA8B,CAGhC,IAFa1M,EAAEwpK,IAAsBxpK,EAAEwpK,KAAuB,IACzDliJ,QAAQ8rC,EAAUphD,IACnBi1K,EAEA,MAAMjnL,EAIN,OAv4MpB,WAA4BA,EAAGgS,EAAOu1K,EAAmB72I,GACrD,MAAM82I,EAAYxnL,EAAEwpK,IACpB,MAAIx3J,EAAM03J,KACN8d,EAAUlgK,QAAQtV,EAAM03J,KAE5B1pK,EAAEs6D,QAKN,WAAqBlX,EAAMj9C,EAAKohL,EAAmB72I,EAAS,MACxD0S,EAAOA,GAA2B,OAAnBA,EAAK//C,OAAO,IArJX,UAqJ0B+/C,EAAK//C,OAAO,GAAoB+/C,EAAK9hD,OAAO,GAAK8hD,EAC3F,IAAIx6C,EAAUwqD,EAAUjtD,GACxB,GAAI3D,MAAM4E,QAAQjB,GACdyC,EAAUzC,EAAIxF,IAAIyyD,GAAWjG,KAAK,gBAEd,iBAARhnD,EAAkB,CAC9B,IAAI2kF,EAAQ,GACZ,QAASlqF,KAAOuF,EACZ,GAAIA,EAAIV,eAAe7E,GAAM,CACzB,IAAIE,EAAQqF,EAAIvF,GAChBkqF,EAAMzrF,KAAKuB,EAAM,KAAwB,iBAAVE,EAAqBqyD,KAAKC,UAAUtyD,GAASsyD,EAAUtyD,KAG9F8H,EAAW,IAAGkiF,EAAM39B,KAAK,SAE7B,MAAQ,GAAEo6H,IAAoB72I,EAAS,IAAMA,EAAS,IAAM,MAAM9nC,OAAaw6C,EAAKv7C,QAAQ4hK,GAAU,UArB1Fge,CAAY,KAAOznL,EAAEs6D,QAASktH,EAAWD,EAAmB72I,GACxE1wC,EAAE0nL,YAAiBF,EACnBxnL,EAAEwpK,IAAsB,KAClBxpK,EA+3MiB2nL,CAAmB3nL,EAAGgS,EAAO,kBAAmBrG,KAAK+kC,QAIhE,MAAM1wC,UAKV2gK,GAAwBD,GACxBwmB,GAAmBD,IAI3BZ,2BACI16K,KAAK86K,iBAAiBloL,QAAQ2nL,GAAWv6K,KAAK3K,IAAIklL,IAEtD3oL,WACI,MAAMgxI,EAAS,GACfi4C,OAD6B76K,KAAK66K,QAC1BjoL,QAAQ,CAACyQ,EAAGgD,IAAUu8H,EAAOlvI,KAAK+zD,EAAUphD,KAC5C,cAAau8H,EAAOphF,KAAK,SAErC65H,qBACI,GAAIr7K,KAAK+lB,WACL,MAAM,IAAIygI,GAAa,KAAsCwxB,GAYrEmD,oBAAoBc,EAAiB96I,EAAS45I,GAE1C,KADAkB,EAAkB1jB,EAAkB0jB,IAEhC,OAAO,EAKX,IAAI/6K,EAAMg7K,GAAeD,GAEzB,MAAM3uJ,EAAmB,MAAPpsB,GAAgB+6K,EAAgB3uJ,eAAY14B,EAIxD2lL,OAAwB3lL,IAAb04B,EAA0B2uJ,EAAkB3uJ,EAQvD6uJ,GAA8C,IAAhCpB,EAAWtlL,QAAQ8kL,GAOvC,QAJiB3lL,IAAb04B,IACApsB,EAAMg7K,GAAe5uJ,IAGd,MAAPpsB,EACA,OAAO,EAIX,GAAmB,MAAfA,EAAIwsB,UAAoByuJ,EAAa,CAMrC,IAAIC,GADJrB,EAAWrnL,KAAK6mL,GAEhB,IACItgB,GAAY/4J,EAAIwsB,QAAS2uJ,KACjBr8K,KAAKm7K,oBAAoBkB,GAAUl7I,EAAS45I,UACXnmL,IAA7BwnL,KACAA,GAA2B,IAG/BA,GAAyB1oL,KAAK2oL,MAP1C,CAO0CA,QAP1C,CAkBA,QAAiCznL,IAA7BwnL,GACA,QAASthL,GAAI,EAAGA,GAAIshL,GAAyBrqL,OAAQ+I,KAAK,CACtD,MAAQwyB,YAAUC,cAAc6uJ,GAAyBthL,IACzDm/J,GAAY1sI,GAAWytJ,IAAYh7K,KAAKi7K,gBAAgBD,GAAU1tJ,GAAUC,IAAaw7H,MAMrG/oJ,KAAK86K,iBAAiB94K,IAAIu4K,GAC1B,MAAMzhL,GAAU0/J,GAAc+hB,IAAa,KAAM,IAAIA,GACrDv6K,KAAK66K,QAAQvlL,IAAIilL,EAASa,GAAWtiL,GAASqhL,KAE9C,MAAMmC,GAAep7K,EAAIqsB,UACzB,GAAoB,MAAhB+uJ,KAAyBH,EAAa,CACtC,MAAMI,GAAeN,EACrBhiB,GAAYqiB,GAActB,IAAYh7K,KAAKi7K,gBAAgBD,GAAUuB,GAAcD,KAEvF,YAAqB1nL,IAAb04B,QAC0B14B,IAA9BqnL,EAAgB1uJ,SAAc34B,CAKtCqmL,gBAAgBD,EAAUwB,EAAcjvJ,GAIpC,IAAIlnB,EAAQo2K,GADZzB,EAAWziB,EAAkByiB,IACUA,EAAWziB,EAAkByiB,GAAYA,EAAS5uJ,SAEzF,MAAMmmH,EA4Fd,YAA0ByoC,EAAUwB,EAAcjvJ,GAC9C,OAAImvJ,GAAgB1B,GACTI,QAAWxmL,EAAWomL,EAAShuJ,UAI/BouJ,GADSuB,GAAkB3B,GACPb,IAlGZyC,CAAiB5B,GAChC,GAAKyB,GAAezB,KAAgC,IAAnBA,EAAS9kL,MAmBrB8J,KAAK66K,QAAQxlL,IAAIgR,OAnBoB,CAGtD,IAAIw2K,EAAc78K,KAAK66K,QAAQxlL,IAAIgR,GAC/Bw2K,IAOAA,EAAczB,QAAWxmL,EAAWulL,IAAS,GAC7C0C,EAAY/jL,QAAU,IAAMgkL,GAAWD,EAAY3mL,OACnD8J,KAAK66K,QAAQvlL,IAAI+Q,EAAOw2K,IAE5Bx2K,EAAQ20K,EACR6B,EAAY3mL,MAAMxC,KAAKsnL,GAQ3Bh7K,KAAK66K,QAAQvlL,IAAI+Q,EAAOksI,GAE5BopC,QAAQt1K,EAAOksI,GAIN,OAAIA,EAAOp9I,QAAUglL,KACtB5nC,EAAOp9I,MAAQilL,GACf7nC,EAAOp9I,MAAQo9I,EAAOz5I,WAEE,iBAAjBy5I,EAAOp9I,OAAsBo9I,EAAOp9I,OAgIvD,YAAsBA,GAClB,OAAiB,OAAVA,GAAmC,iBAAVA,GACC,mBAAtBA,EAAM62B,WAAgB,CAlI2B+wJ,CAAaxqC,EAAOp9I,QACxE6K,KAAK5L,UAAU4N,IAAIuwI,EAAOp9I,OAEvBo9I,EAAOp9I,MAElBsmL,qBAAqBv6K,GACjB,IAAKA,EAAIkjI,WACL,OAAO,EAEX,MAAMA,EAAam0B,EAAkBr3J,EAAIkjI,YACzC,MAA0B,iBAAfA,EACe,QAAfA,GAAyBA,IAAepkI,KAAKqvG,MAG7CrvG,KAAK86K,iBAAiBz7K,IAAI+kI,IAI7C,YAA2C/9H,GAEvC,MAAM0hJ,EAAgBC,GAAiB3hJ,GACjCvN,EAA4B,OAAlBivJ,EAAyBA,EAAcjvJ,QAAU0/J,GAAcnyJ,GAC/E,GAAgB,OAAZvN,EACA,OAAOA,EAIX,GAAIuN,aAAiB6lB,GACjB,MAAM,IAAIs6H,GAAa,KAAmCwxB,GAG9D,GAAI3xK,aAAiB8tF,SACjB,OAKR,YAAyC9tF,GAErC,MAAM22K,EAAc32K,EAAMtU,OAC1B,GAAIirL,EAAc,EAEd,MADa9hB,GAAS8hB,EAAa,KAC7B,IAAIx2B,GAAa,KAAmCwxB,GAO9D,MAAMiF,EAr7VV,YAAmC//K,GAC/B,MAAMgE,EAAMhE,IAASA,EAAK6pJ,KAAgB7pJ,EAAK8pJ,KAC/C,GAAI9lJ,EAAK,CACL,MAAMg8K,EAYd,YAAqBhgL,GAOjB,GAAIA,EAAKpD,eAAe,QACpB,OAAOoD,EAAK6D,KAEhB,MAAMvH,GAAS,GAAK0D,GAAM1D,MAAM,yBAChC,OAAiB,OAAVA,EAAiB,GAAKA,EAAM,GAvBdwsK,CAAY9oK,GAG7B+xB,eAAQkuJ,KAAM,4CAA2CD,2KACyCA,aAC3Fh8K,EAGP,OAAO,KA06VoBk8K,CAA0B/2K,GACzD,OAA+B,OAA3B42K,EACO,IAAMA,EAAuBnkL,QAAQuN,GAGrC,IAAM,IAAIA,EAtBVg3K,CAAgCh3K,GAG3C,MAAM,IAAImgJ,GAAa,KAAmCwxB,GAoC9D,YAA2BgD,EAAUwB,EAAcjvJ,GAC/C,IAAIz0B,EACJ,GAAI2jL,GAAezB,GAAW,CAC1B,MAAMsC,EAAoB/kB,EAAkByiB,GAC5C,OAAOxiB,GAAc8kB,IAAsB5B,GAAkC4B,MAGzEZ,GAAgB1B,GAChBliL,EAAU,IAAMy/J,EAAkByiB,EAAShuJ,kBAqCvD,YAA2B73B,GACvB,SAAUA,IAASA,EAAMo3B,YApCZgxJ,CAAkBvC,GACvBliL,EAAU,IAAMkiL,EAASzuJ,cAAcuwJ,GAAW9B,EAASruJ,MAAQ,aA+B/E,YAA4Bx3B,GACxB,SAAUA,IAASA,EAAM+xG,aA9BZs2E,CAAmBxC,GACxBliL,EAAU,IAAMmrI,GAASs0B,EAAkByiB,EAAS9zE,kBAEnD,CACD,MAAMu2E,EAAWllB,EAAkByiB,IAC9BA,EAAS3uJ,UAAY2uJ,EAAS5uJ,UAInC,IAgCZ,YAAiBj3B,GACb,QAASA,EAAMw3B,KAjCH+wJ,CAAQ1C,GAIR,OAAOxiB,GAAcilB,IAAa/B,GAAkC+B,GAHpE3kL,EAAU,IAAM,IAAK2kL,KAAaX,GAAW9B,EAASruJ,MAGc8wJ,CAIhF,OAAO3kL,EAEX,YAAoBA,EAAS3D,EAAOe,GAAQ,GACxC,MAAO,CACH4C,QAASA,EACT3D,MAAOA,EACPe,MAAOA,EAAQ,QAAKtB,GAG5B,YAAyBO,GACrB,OAAiB,OAAVA,GAAkC,iBAATA,GAAqB6oK,MAAe7oK,EAQxE,YAAwBA,GACpB,MAAwB,mBAAVA,CAAU,KAgDtBwoL,SAAN,QAAevwJ,cACG7rB,EAASnL,GACnB,IAAI0mB,EACJ,GAAIjmB,MAAM4E,QAAQ8F,GACd,OAAOq8K,GAAe,CAAE78K,KAAM,IAAM3K,EAAQmL,EAAS,IAEpD,CACD,MAAMR,EAA+B,QAAvB+b,EAAKvb,EAAQR,YAAyB,IAAP+b,EAAgBA,EAAK,GAClE,OAAO8gK,GAAe,CAAE78K,QAAQQ,EAAQnL,OAAQmL,EAAQgsB,UAAWxsB,YAI/E48K,EAAShgB,mBAAqBA,GAC9BggB,EAASE,KAAwB,IAAIvD,GAErCqD,EAAS/kL,WAAQkhK,GAAmB,CAChCzzJ,MAAOs3K,EACPv5C,WAAY,MACZtrI,QAAS,IAAMmrI,GAASg2C,MAM5B0D,EAASp0B,mBAAoB,EAxBvBo0B,MAqqBN,YAA+BpqJ,EAAWryB,GAMtC48K,GAHcpwB,GAFiBn6H,GAl+VrB,GAq+VIwiI,KAEgBvJ,CAsClC,YAAoC/vD,GAChC,IAAIshF,EAVR,YAAsB7gL,GAClB,OAAOjK,OAAOu4H,eAAetuH,EAAKutF,WAAW3qF,YAS7Bk+K,CAAavhF,EAAWv/F,MACpC+gL,GAAsB,EAC1B,MAAMC,EAAmB,CAACzhF,GAC1B,KAAOshF,GAAW,CACd,IAAII,EACJ,GAAIlnB,GAAex6D,GAEf0hF,EAAWJ,EAAU90B,WAAQ80B,EAAUlrC,cAEtC,CACD,GAAIkrC,EAAU90B,UAIV,MAAM,IAAIzC,GAAa,IADnB,IAIR23B,EAAWJ,EAAUlrC,UAEzB,GAAIsrC,EAAU,CACV,GAAIF,EAAqB,CACrBC,EAAiBxqL,KAAKyqL,GAGtB,MAAMC,EAAe3hF,EACrB2hF,EAAah+C,OAASi+C,GAAiB5hF,EAAW2jC,QAClDg+C,EAAaz0B,eAAiB00B,GAAiB5hF,EAAWktD,gBAC1Dy0B,EAAa/zB,QAAUg0B,GAAiB5hF,EAAW4tD,SAEnD,MAAMi0B,EAAoBH,EAASl0B,aACnCq0B,GAAqBC,GAAoB9hF,EAAY6hF,GAErD,MAAME,GAAiBL,EAASxzB,UAC1B8zB,GAAsBN,EAAS/zB,eASrC,GARAo0B,IAAkBE,GAAiBjiF,EAAY+hF,IAC/CC,IAAuBE,GAAsBliF,EAAYgiF,IAEzDG,EAAeniF,EAAW2jC,OAAQ+9C,EAAS/9C,QAC3Cw+C,EAAeniF,EAAWktD,eAAgBw0B,EAASx0B,gBACnDi1B,EAAeniF,EAAW4tD,QAAS8zB,EAAS9zB,SAGxC4M,GAAeknB,IAAaA,EAASrpL,KAAKwN,UAAW,CAGrD,MAAMu8K,GAAUpiF,EAAW3nG,KAC3B+pL,GAAQv8K,WAAau8K,GAAQv8K,WAAa,IAAIuiB,OAAOs5J,EAASrpL,KAAKwN,YAI3E,MAAMsoJ,EAAWuzB,EAASvzB,SAC1B,GAAIA,EACA,QAAS9vJ,EAAI,EAAGA,EAAI8vJ,EAAS74J,OAAQ+I,IAAK,CACtC,MAAMowJ,EAAUN,EAAS9vJ,GACrBowJ,GAAWA,EAAQoC,WACnBpC,EAAQzuD,GASRyuD,IAAY4zB,KACZb,GAAsB,IAKtCF,EAAY9qL,OAAOu4H,eAAeuyD,IAW1C,YAAyCG,GACrC,IAAIh0B,EAAW,EACXC,EAAY,KAEhB,QAASrvJ,EAAIojL,EAAiBnsL,OAAS,EAAG+I,GAAK,EAAGA,IAAK,CACnD,MAAMoG,EAAMg9K,EAAiBpjL,GAE7BoG,EAAIgpJ,SAAYA,GAAYhpJ,EAAIgpJ,SAEhChpJ,EAAIipJ,UACAgtB,GAAej2K,EAAIipJ,UAAWA,EAAYgtB,GAAehtB,EAAWjpJ,EAAIipJ,aAnBhF40B,CAAgCb,GAsBpC,YAA0B/oL,GACtB,OAAIA,IAAU2zJ,GACH,GAEF3zJ,IAAU4zJ,GACR,GAGA5zJ,EAGf,YAA0BsnG,EAAY+hF,GAClC,MAAMQ,EAAgBviF,EAAWkuD,UAE7BluD,EAAWkuD,UADXq0B,EACuB,CAACrsE,EAAIrpG,KACxBk1K,EAAe7rE,EAAIrpG,GACnB01K,EAAcrsE,EAAIrpG,IAICk1K,EAG/B,YAA+B/hF,EAAYgiF,GACvC,MAAMQ,EAAqBxiF,EAAW2tD,eAElC3tD,EAAW2tD,eADX60B,EAC4B,CAACtsE,EAAIrpG,EAAKmuJ,KAClCgnB,EAAoB9rE,EAAIrpG,EAAKmuJ,GAC7BwnB,EAAmBtsE,EAAIrpG,EAAKmuJ,IAIJgnB,EAGpC,YAA6BhiF,EAAY6hF,GACrC,MAAMY,EAAmBziF,EAAWwtD,aAEhCxtD,EAAWwtD,aADXi1B,EAC0B,CAACvsE,EAAIrpG,KAC3Bg1K,EAAkB3rE,EAAIrpG,GACtB41K,EAAiBvsE,EAAIrpG,IAICg1K,EA2FlC,IAAIa,GAAkB,KACtB,cACI,IAAKA,GAAiB,CAClB,MAAM7zD,EAASu9B,GAAQv9B,OACvB,GAAIA,GAAUA,EAAO/uH,SACjB4iL,GAAkB7zD,EAAO/uH,aAExB,CAED,MAAMrJ,EAAOD,OAAOmsL,oBAAoBhqL,IAAIq1F,WAC5C,QAAS3vF,EAAI,EAAGA,EAAI5H,EAAKnB,SAAU+I,EAAG,CAClC,MAAM7F,EAAM/B,EAAK4H,GACL,YAAR7F,GAA6B,SAARA,GACrBG,IAAIq1F,UAAUx1F,KAASG,IAAIq1F,UAAU40F,UACrCF,GAAkBlqL,KAKlC,OAAOkqL,GA2BX,YAA4B3kL,GACxB,QAAK8kL,GAAW9kL,KAET3D,MAAM4E,QAAQjB,MACdA,aAAepF,MACdqsI,OAAuBjnI,EAHpB,CAiCf,YAAoBioD,GAChB,OAAa,OAANA,IAA4B,mBAANA,GAAiC,iBAANA,EAAM,CAYlE,YAAuBirG,EAAOsB,EAAc75J,GACxC,OAAOu4J,EAAMsB,GAAgB75J,EAsBjC,YAAwBu4J,EAAOsB,EAAc75J,GAKzC,OAAIlC,OAAOu4F,GADMkiE,EAAMsB,GACC75J,KAkBpBu4J,EAAMsB,GAAgB75J,GACf,GAIf,YAAyBu4J,EAAOsB,EAAcuwB,EAAMC,GAChD,MAAMC,EAAYC,GAAehyB,EAAOsB,EAAcuwB,GACtD,OAAOG,GAAehyB,EAAOsB,EAAe,EAAGwwB,IAASC,EAQ5D,YAAyB/xB,EAAOsB,EAAcuwB,EAAMC,EAAMG,EAAMC,GAC5D,MAAMH,EAAYI,GAAgBnyB,EAAOsB,EAAcuwB,EAAMC,GAC7D,OAAOK,GAAgBnyB,EAAOsB,EAAe,EAAG2wB,EAAMC,IAASH,EAuBnE,YAAqB1+K,EAAM5L,EAAOstE,EAAWh4C,GACzC,MAAMijI,EAAQsI,KAQd,OANI0pB,GAAehyB,EADEoyB,KACmB3qL,KACtBo6K,KA1vEtB,YAAkC/iB,EAAOkB,EAAO3sJ,EAAM5L,EAAOstE,EAAWh4C,GAOpE,MAAMr4B,EAAUwwK,GAAiBpW,EAAOkB,GACxCqyB,GAAoBryB,EA/qSP,IA+qSwBt7J,EAASq4B,EAAW+hI,EAAMr3J,MAAO4L,EAAM5L,EAAOstE,GAovE/Eu9G,CADcC,KACkBvyB,EAAO3sJ,EAAM5L,EAAOstE,EAAWh4C,IAG5Dy1J,GAiDX,YAAwBxyB,EAAOyyB,EAAQC,EAAIC,GAEvC,OAAOZ,GAD0B/xB,EAAOoyB,KAAoBM,GACzCD,EAAS95B,GAAgB+5B,GAAMC,EAASjR,GA+f/D,YAAoBt7J,EAAO89J,EAAYliI,EAAOm6G,EAAMigB,EAASwW,EAAYC,EAAgBzL,GACrF,MAAMpnB,GAAQsI,KACRjL,GAAQwkB,KACRiR,GAAgB1sK,EA18XJ,GA28XZ04I,GAAQzB,GAAM2I,gBAtCxB,YAAiC5/I,EAAOi3I,EAAO2C,EAAOkkB,EAAYliI,EAAOm6G,EAAMigB,EAASwW,EAAYC,IAGhG,MAAME,GAAc11B,EAAMhB,OAEpByC,GAAQk0B,GAAiB31B,EAAOj3I,EAAO,EAAmBg2J,GAAW,KAAM6W,GAAYF,GAAaH,IAC1GM,GAAkB71B,EAAO2C,EAAOlB,GAAOm0B,GAAYF,GAAaF,KAChEzC,GAAuB/yB,EAAOyB,IAC9B,MAAMumB,GAAgBvmB,GAAMukB,OAASiE,GAAY,EAAkBxoB,GAAOolB,EAAYliI,EAAOm6G,EAAMkB,EAAMuqB,kBAAmBvqB,EAAMwqB,aAAc,KAAMxqB,EAAMD,QAAS21B,IACrK,OAAsB,OAAlB11B,EAAMqqB,UACNrqB,EAAMqqB,QAAQtrB,SAASiB,EAAOyB,IAC9BumB,GAAcqC,QAAUrqB,EAAMqqB,QAAQrC,cAAcvmB,KAEjDA,GAyB+Bq0B,CAAwBL,GAAez1B,GAAO2C,GAAOkkB,EAAYliI,EAAOm6G,EAAMigB,EAASwW,EAAYC,GACrIx1B,GAAMj2J,KAAK0rL,IACflQ,GAAgB9jB,IAAO,GACvB,MAAMs0B,GAAUpzB,GA/9XH,IA+9XmBhjI,cAAwC,IACxEE,GAAYmgI,GAAO2C,GAAOozB,GAASt0B,IACnCqY,GAAgBic,GAASpzB,IACzBirB,GAAcjrB,GAAOA,GAAM8yB,IAAiBO,GAAiBD,GAASpzB,GAAOozB,GAASt0B,KAClFw0B,GAAgBx0B,KAChBy0B,GAA0Bl2B,GAAO2C,GAAOlB,IAEtB,MAAlB+zB,GACAW,GAAyBxzB,GAAOlB,GAAOsoB,GA+B/C,YAAqBhhK,GAEjB,OAAO0tB,GAjwWX,cACI,OAAO4sH,GAAiBC,OAAOI,aA+vWV0yB,GAt/XH,GAu/XwBrtK,GAgJ9C,YAAgC5gB,GAC5B,OAAIA,EAAKnB,OAAS,EAGP,KAff,YAA8BmB,GAC1B,MAAMqrG,EAAM,GACZ,QAASzjG,EAAI,EAAGA,EAAI5H,EAAKnB,SAAU+I,EAAG,CAClC,GAAIyjG,EAAI9oG,QAAQvC,EAAK4H,KAAM,EACvByjG,SAAI7qG,KAAKR,EAAK4H,IACPyjG,EAEXA,EAAI7qG,KAAKR,EAAK4H,IAElB,OAAOyjG,EAKe6iF,CADoBluL,EAAKkZ,QAAQ2+E,WACxB/1F,IAAIq+D,GAAK5L,EAAU4L,EAAEhtD,QACxBm7C,KAAK,QAAU,IAEpC,GAEX,YAAwBhzB,EAAUv5B,EAAKosL,EAA2B7U,GAC9D,MAAMt5K,EAAO,CAAC+B,GACRi7F,EAASmxF,EAA0BnuL,GACnC89B,EAASw7I,EAxyLnB,YAAsB79G,EAAS69G,GAC3B,MAAM9lB,EAAO,GAAE/3F,gBAAsB69G,aAAyB/iI,MAAQ+iI,EAAc79G,QAAU69G,IACxFx7I,EAAQyY,MAAMi9G,GACpB11H,SAAMs7I,IAAwBE,EACvBx7I,EAoyLwBswJ,CAAapxF,EAAQs8E,GAAiB/iI,MAAMymD,GAC3El/D,SAAMuwJ,OAASA,GACfvwJ,EAAM99B,KAAOA,EACb89B,EAAMwwJ,UAAY,CAAChzJ,GACnBwC,EAAMqwJ,0BAA4BA,EAClCrwJ,EAAMs7I,IAAwBE,EACvBx7I,EAEX,YAAgBxC,EAAUv5B,GACtB+K,KAAKwhL,UAAU9tL,KAAK86B,GACpBxuB,KAAK9M,KAAKQ,KAAKuB,GAEf+K,KAAK2uD,QAAU3uD,KAAKqhL,0BAA0BrhL,KAAK9M,MA0HvD,YAA2B8oK,EAAYngK,GACnC,MAAM4lL,EAAY,GAClB,QAAS3mL,EAAI,EAAGkjI,EAAKniI,EAAO9J,OAAQ+I,EAAIkjI,EAAIljI,IAAK,CAC7C,MAAMgkG,EAAYjjG,EAAOf,GAKrB2mL,EAAU/tL,KAJTorG,GAAiC,GAApBA,EAAU/sG,OAIT+sG,EAAU9pG,IAAIyyD,GAAWjG,KAAK,KAH9B,IAG8B,CAGrD,OAAO/X,MAAM,sCAAyCge,EAAUu0G,GAAc,KAC1EylB,EAAUjgI,KAAK,MAAQ,2GAEvBiG,EAAUu0G,GAAc,mCAkChC,YAAuD0lB,EAAWC,GAC9D,OAAOl4I,MAAO,0DAAyDi4I,KAAaC,KA4BxF,SAII7hL,YAAYuG,EAAO4M,GAGf,GAFAjT,KAAKqG,MAAQA,EACbrG,KAAKiT,GAAKA,GACL5M,EACD,MAAM,IAAIojC,MAAM,0BAEpBzpC,KAAKu7C,YAAckM,EAAUznD,KAAKqG,kBAK3BA,GACP,OAAOu7K,GAAmBvsL,IAAIkjK,EAAkBlyJ,IAKzCw7K,0BACP,OAAOD,GAAmBC,cAGlC,SACI/hL,cACIE,KAAK8hL,SAAW,IAAI1sL,IAExBC,IAAIgR,GACA,GAAIA,aAAiB07K,GACjB,OAAO17K,EACX,GAAIrG,KAAK8hL,SAASziL,IAAIgH,GAClB,OAAOrG,KAAK8hL,SAASzsL,IAAIgR,GAE7B,MAAM27K,EAAS,IAAID,GAAc17K,EAAO07K,GAAcF,cACtD,YAAKC,SAASxsL,IAAI+Q,EAAO27K,GAClBA,EAEPH,mBACA,OAAO7hL,KAAK8hL,SAASvhL,MAG7B,MAAMqhL,GAAqB,IAAIK,GAa/B,SACIniL,YAAYoiL,GACRliL,KAAKkiL,uBAAyBA,EAElCC,mBAAmBC,GACfpiL,KAAKkiL,uBAAyBE,EAElCtpL,QAAQoE,GACJ,OAAO8C,KAAKkiL,uBAAuBppL,QAAQoE,GAE/CohG,WAAW09D,GACP,OAAOh8J,KAAKkiL,uBAAuB5jF,WAAW09D,GAElDC,YAAYD,GACR,OAAOh8J,KAAKkiL,uBAAuBjmB,YAAYD,GAEnDI,aAAaJ,GACT,OAAOh8J,KAAKkiL,uBAAuB9lB,aAAaJ,GAEpDQ,iBAAiBt/J,EAAMu/J,GACnB,OAAOz8J,KAAKkiL,uBAAuB1lB,iBAAiBt/J,EAAMu/J,GAE9DE,OAAO57J,GACH,OAAOf,KAAKkiL,uBAAuBvlB,OAAO57J,GAE9C67J,OAAO77J,GACH,OAAOf,KAAKkiL,uBAAuBtlB,OAAO77J,GAE9Cm+I,OAAOn+I,GACH,OAAOf,KAAKkiL,uBAAuBhjC,OAAOn+I,GAE9C+7J,UAAU5/J,GACN,OAAO8C,KAAKkiL,uBAAuBplB,UAAU5/J,GAEjD8/J,YAAY9/J,GACR,OAAO8C,KAAKkiL,uBAAuBllB,YAAY9/J,GAEnD+/J,kBAAkBl8J,EAAMm8J,EAAWC,EAASC,GACxC,OAAOp9J,KAAKkiL,uBAAuBjlB,kBAAkBl8J,EAAMm8J,EAAWC,EAASC,GAEnFC,YAAY79D,EAAYz+F,GACpB,OAAOf,KAAKkiL,uBAAuB7kB,YAAY79D,EAAYz+F,IAenE,MAAMshL,GAAY,IAAIC,GAAU,IAAIC,IAapC,SACIziL,YAAY7K,EAAKuR,EAAUg8K,GACvBxiL,KAAK/K,IAAMA,EACX+K,KAAKwG,SAAWA,EAChBxG,KAAKwiL,WAAaA,iBAEPvtL,GACX,OAAO,IAAIwtL,GAAqBxtL,GAAK,EAAO,OAGpD,MAAMytL,GAAc,GACpB,SACI5iL,YAAY7K,EAAK0tL,EAAmBC,GAChC5iL,KAAK/K,IAAMA,EACX+K,KAAK2iL,kBAAoBA,EACzB3iL,KAAK4iL,cAAgBA,EACrB5iL,KAAK6iL,gBAAkB7iL,KAAK2iL,kBAAkB,IAOtD,SACI7iL,YAIAhH,EAIAmuG,GACIjnG,KAAKlH,QAAUA,EACfkH,KAAKinG,aAAeA,GAM5B,YAAkC+zE,GAC9B,IAAI8H,EACAr/E,EACJ,GAAIu3E,EAAS3uJ,SAAU,CACnB,MAAMA,EAAWksI,EAAkByiB,EAAS3uJ,UAC5Cy2J,EAAYT,GAAUvpL,QAAQuzB,GAC9Bo3E,EAAes/E,GAAiB12J,QAE3B2uJ,EAAS9zE,aACd47E,EAAaE,GAAkBA,EAC/Bv/E,EAAe,CAACg/E,GAAqBQ,QAAQlB,GAAc1sL,IAAI2lL,EAAS9zE,gBAEvE7yG,EAAak4B,YACdu2J,EAAY9H,EAASzuJ,WACrBk3E,EA6ER,YAA+Bu4D,EAAY/0D,GACvC,GAAKA,EAGA,CACD,MAAMprG,EAASorG,EAAajyG,IAAI2wF,GAAK,CAACA,IACtC,OAAOshB,EAAajyG,IAAI2wF,GAAKu9F,GAAclnB,EAAYr2E,EAAG9pF,IAJ1D,OAAOknL,GAAiB/mB,GA/ETmnB,CAAsBnI,EAASzuJ,WAAYyuJ,EAASruJ,QAGnEm2J,EAAY,IAAM9H,EAAShuJ,SAC3By2E,EAAei/E,IAEnB,OAAO,IAAIU,GAA0BN,EAAWr/E,GAQpD,YAAmCu3E,GAC/B,OAAO,IAAIqI,GAA4BtB,GAAc1sL,IAAI2lL,EAAS5uJ,SAAU,CAACk3J,GAAyBtI,IAAYA,EAAS9kL,QAAS,GAKxI,YAAoCq3B,GAEhC,MACMg2J,EAOV,YAA0Ch2J,EAAWi2J,GACjD,QAAS1oL,EAAI,EAAGA,EAAIyyB,EAAUx7B,OAAQ+I,IAAK,CACvC,MAAMkgL,EAAWztJ,EAAUzyB,GACrByiJ,EAAWimC,EAAuBnuL,IAAI2lL,EAAS/lL,IAAIge,IACzD,GAAIsqI,EAAU,CACV,GAAIy9B,EAAS4H,gBAAkBrlC,EAASqlC,cACpC,MAAMa,GAA8ClmC,EAAUy9B,GAElE,GAAIA,EAAS4H,cACT,QAAS/hK,EAAI,EAAGA,EAAIm6J,EAAS2H,kBAAkB5wL,OAAQ8uB,IACnD08H,EAASolC,kBAAkBjvL,KAAKsnL,EAAS2H,kBAAkB9hK,SAI/D2iK,EAAuBluL,IAAI0lL,EAAS/lL,IAAIge,GAAI+nK,OAG/C,CACD,IAAI0I,EAEAA,EADA1I,EAAS4H,cACU,IAAIS,GAA4BrI,EAAS/lL,IAAK+lL,EAAS2H,kBAAkBv2K,QAAS4uK,EAAS4H,eAG3F5H,EAEvBwI,EAAuBluL,IAAI0lL,EAAS/lL,IAAIge,GAAIywK,IAGpD,OAAOF,EAnCqBG,CADXxnF,GADsB5uE,EAAW,IACtBv4B,IAAI4uL,IACuC,IAAIxuL,KAC3E,OAAOyB,MAAMC,KAAKysL,EAAoBrhL,UAoC1C,YAA6BqrB,EAAWgxE,GACpChxE,SAAU36B,QAAQskB,IACd,GAAIA,aAAaw6D,GACb6sB,EAAI7qG,KAAK,CAAE04B,QAASlV,EAAGmV,SAAUnV,YAE5BA,GAAiB,iBAALA,QAA+BtiB,IAAdsiB,EAAEkV,QACpCmyE,EAAI7qG,KAAKwjB,YAEJrgB,MAAM4E,QAAQyb,GAInB,MAzWZ,YAA8B8jK,GAC1B,OAAOvxI,MAAO,4EAA2EuxI,KAwW3E6I,CAAqB3sK,GAH3B4sK,GAAoB5sK,EAAGqnF,EAGIrnF,IAG5BqnF,EAWX,YAA0By9D,GACtB,MAAMngK,EAASwmL,GAAU/jF,WAAW09D,GACpC,IAAKngK,EACD,MAAO,GACX,GAAIA,EAAOuH,KAAKiX,GAAU,MAALA,GACjB,MAAM0pK,GAAkB/nB,EAAYngK,GAExC,OAAOA,EAAO7G,IAAIqlB,GAAK6oK,GAAclnB,EAAY3hJ,EAAGxe,IAExD,YAAuBmgK,EAAYt8J,EAAU7D,GACzC,IAAIwK,EAAQ,KACRG,GAAW,EACf,IAAK3P,MAAM4E,QAAQiE,GACf,OACWskL,GADPtkL,aAAoBg/J,GACKh/J,EAAS2G,MAGT3G,EAHgB8G,EAAU,MAM3D,IAAIg8K,EAAa,KACjB,QAAS1nL,EAAI,EAAGA,EAAI4E,EAAS3N,SAAU+I,EAAG,CACtC,MAAMmpL,EAAgBvkL,EAAS5E,GAC3BmpL,aAAyBvyG,GACzBrrE,EAAQ49K,EAEPC,aAA6BxlB,GAC9Br4J,EAAQ49K,EAAc59K,MAErB69K,aAA6Bx8B,GAC9BlhJ,GAAW,EAEV09K,aAA6B18B,IAAQy8B,aAAyBx8B,GAC/D+6B,EAAayB,EAERA,aAAyB/3J,KAC9B7lB,EAAQ49K,GAIhB,GADA59K,EAAQkyJ,EAAkBlyJ,GACb,MAATA,EACA,OAAO29K,GAAkB39K,EAAOG,EAAUg8K,GAG1C,MAAMuB,GAAkB/nB,EAAYngK,GAG5C,YAA2BwK,EAAOG,EAAUg8K,GACxC,OAAO,IAAIC,GAAqBV,GAAc1sL,IAAIgR,GAAQG,EAAUg8K,GAWxE,MAAM2B,GAAY,GAwClB,SAAyB/2J,eAkCNG,GACX,OAAO62J,GAA2B72J,2BAyBdA,EAAWn3B,GAC/B,MAAMiuL,EAA8BC,GAAmBznK,QAAQ0Q,GAC/D,OAAO+2J,GAAmBC,sBAAsBF,EAA6BjuL,gCAyBpDm3B,EAAWn3B,GACpC,OAAO,IAAIouL,GAAoBj3J,EAAWn3B,QAG5CouL,SAAN,QAII1kL,YAAY2kL,EAAYC,GAEpB1kL,KAAK2kL,qBAAuB,EAC5B3kL,KAAKykL,WAAaA,EAClBzkL,KAAK5J,OAASsuL,GAAW,KACzB,MAAM5tE,EAAM2tE,EAAW1yL,OACvBiO,KAAK4kL,OAAS,GACd5kL,KAAK6kL,KAAO,GACZ,QAAS/pL,EAAI,EAAGA,EAAIg8G,EAAKh8G,IACrBkF,KAAK4kL,OAAO9pL,GAAK2pL,EAAW3pL,GAAG7F,IAAIge,GACnCjT,KAAK6kL,KAAK/pL,GAAKqpL,GAGvB9uL,IAAIgR,EAAOyhJ,EAAgB6V,IACvB,OAAO39J,KAAK8kL,UAAU/C,GAAc1sL,IAAIgR,GAAQ,KAAMyhJ,GAE1Di9B,sBAAsBx3J,GAClB,MAAM82J,EAA8BC,GAAmBznK,QAAQ0Q,GAC/D,OAAOvtB,KAAKglL,wBAAwBX,GAExCW,wBAAwBz3J,GACpB,MAAM03J,EAAM,IAAIT,EAAoBj3J,GACpC03J,SAAI7uL,OAAS4J,KACNilL,EAEXC,sBAAsBlK,GAClB,OAAOh7K,KAAKmlL,oBAAoBb,GAAmBznK,QAAQ,CAACm+J,IAAW,IAE3EmK,oBAAoBnK,GAChB,OAAOh7K,KAAKolL,qBAAqBpK,GAErCqK,mBAAmBvxK,GACf,GAAIA,EAAQ,GAAKA,GAAS9T,KAAKykL,WAAW1yL,OACtC,MA1hBZ,YAA0B+hB,GACtB,OAAO21B,MAAO,SAAQ31B,uBAyhBRwxK,CAAiBxxK,GAE3B,OAAO9T,KAAKykL,WAAW3wK,GAG3ByxK,KAAKvK,GACD,GAAIh7K,KAAK2kL,uBAAyB3kL,KAAKwlL,yBACnC,MAlpBZ,YAA+Bh3J,EAAUv5B,GACrC,OAAOwwL,GAAej3J,EAAUv5B,EAAK,SAAU/B,GAC3C,MAAQ,wCAAuCwyL,GAAuBxyL,OAgpB5DyyL,CAAsB3lL,KAAMg7K,EAAS/lL,KAE/C,OAAO+K,KAAKolL,qBAAqBpK,GAErCwK,yBACI,OAAOxlL,KAAK6kL,KAAK9yL,OAErBqzL,qBAAqBpK,GACjB,GAAIA,EAAS4H,cAAe,CACxB,MAAMrkF,EAAM,GACZ,QAASzjG,EAAI,EAAGA,EAAIkgL,EAAS2H,kBAAkB5wL,SAAU+I,EACrDyjG,EAAIzjG,GAAKkF,KAAK4lL,aAAa5K,EAAUA,EAAS2H,kBAAkB7nL,IAEpE,OAAOyjG,EAGP,OAAOv+F,KAAK4lL,aAAa5K,EAAUA,EAAS2H,kBAAkB,IAGtEiD,aAAa5K,EAAUoI,GACnB,MAAMtqL,EAAUsqL,EAA0BtqL,QAC1C,IAAI6zB,EAWAnyB,EAVJ,IACImyB,EACIy2J,EAA0Bn8E,aAAajyG,IAAI6wL,GAAO7lL,KAAK8lL,2BAA2BD,GAMhFxxL,CANgFwxL,MAEnFxxL,GACH,MAAIA,EAAEktL,QACFltL,EAAEktL,OAAOvhL,KAAMg7K,EAAS/lL,KAEtBZ,EAGV,IACImG,EAAM1B,KAAW6zB,EAGmC13B,CAHnC03B,MAEdt4B,GACH,MAvpBZ,YAA4Bm6B,EAAUu3J,EAAmBC,EAAe/wL,GACpE,OAAOwwL,GAAej3J,EAAUv5B,EAAK,SAAU/B,GAC3C,MAAMmtC,EAAQonB,EAAUv0D,EAAK,GAAGmT,OAChC,MAAQ,GAAE0/K,EAAkBp3H,0CAA0CtuB,KAASqlJ,GAAuBxyL,OACvG6yL,GAmpBWE,CAAmBjmL,KAAM3L,EAAGA,EAAS2mL,EAAS/lL,KAExD,OAAOuF,EAEXsrL,2BAA2BD,GACvB,OAAO7lL,KAAK8kL,UAAUe,EAAI5wL,IAAK4wL,EAAIrD,WAAYqD,EAAIr/K,SAAW,KAAOm3J,IAEzEmnB,UAAU7vL,EAAKutL,EAAY16B,GACvB,OAAI7yJ,IAAQuvL,EAAoB0B,aACrBlmL,KAEPwiL,aAAsBh7B,GACfxnJ,KAAKmmL,cAAclxL,EAAK6yJ,GAGxB9nJ,KAAKomL,iBAAiBnxL,EAAK6yJ,EAAe06B,GAGzD6D,eAAeC,GACX,QAASxrL,EAAI,EAAGA,EAAIkF,KAAK4kL,OAAO7yL,OAAQ+I,IACpC,GAAIkF,KAAK4kL,OAAO9pL,KAAOwrL,EACnB,OAAItmL,KAAK6kL,KAAK/pL,KAAOqpL,KACjBnkL,KAAK6kL,KAAK/pL,GAAKkF,KAAKulL,KAAKvlL,KAAKykL,WAAW3pL,KAEtCkF,KAAK6kL,KAAK/pL,GAGzB,OAAOqpL,GAGXoC,aAAatxL,EAAK6yJ,GACd,GAAIA,IAAkB6V,GAClB,OAAO7V,EAGP,MAjvBZ,YAAyBt5H,EAAUv5B,GAC/B,OAAOwwL,GAAej3J,EAAUv5B,EAAK,SAAU/B,GAE3C,MAAQ,mBADMu0D,EAAUv0D,EAAK,GAAGmT,UACGq/K,GAAuBxyL,OA8uBhDszL,CAAgBxmL,KAAM/K,GAIpCkxL,cAAclxL,EAAK6yJ,GACf,MAAMttJ,EAAMwF,KAAKqmL,eAAepxL,EAAIge,IACpC,OAAQzY,IAAQ2pL,GAAa3pL,EAAMwF,KAAKumL,aAAatxL,EAAK6yJ,GAG9Ds+B,iBAAiBnxL,EAAK6yJ,EAAe06B,GACjC,IAAIyC,EAOJ,IALIA,EADJtpJ,aAA0B8rH,GAChBznJ,KAAK5J,OAGL4J,KAEHilL,aAAeT,GAAqB,CACvC,MAAMiC,EAAOxB,EACPzqL,EAAMisL,EAAKJ,eAAepxL,EAAIge,IACpC,GAAIzY,IAAQ2pL,GACR,OAAO3pL,EACXyqL,EAAMwB,EAAKrwL,OAEf,OAAY,OAAR6uL,EACOA,EAAI5vL,IAAIJ,EAAIoR,MAAOyhJ,GAGnB9nJ,KAAKumL,aAAatxL,EAAK6yJ,GAGlCvsG,kBAGA,MAAQ,kCAOhB,YAAuB/sB,EAAUpe,GAC7B,MAAMmuF,EAAM,GACZ,QAASzjG,EAAI,EAAGA,EAAI0zB,EAASi2J,WAAW1yL,SAAU+I,EAC9CyjG,EAAIzjG,GAAKsV,EAAGoe,EAAS62J,mBAAmBvqL,IAE5C,OAAOyjG,EAdemoF,CAAc1mL,KAAOkX,GAAM,KAAOA,EAAEjiB,IAAIsmD,YAAc,MACnEiG,KAAK,UAGd5vD,WACI,OAAOoO,KAAKu7C,aAGpBipI,SAAoB0B,aAAgCnE,GAAc1sL,IAAIsoL,IA5JhE6G,MA4LN,YAA2Bn+K,EAAOmlB,EAAQ87H,GAAYhgH,SAClD,MAAMomH,EAAQsI,KAGd,OAAc,OAAVtI,EAGOzpB,GAAS59H,EAAOmlB,GAGpB0sI,GADOnC,KACsBrI,EAAO6K,EAAkBlyJ,GAAQmlB,GAczE,cAEI,MAAM,IAAIie,MADiF,UAC3Ei9G,CA4BpB,YAAoByS,EAAUhkK,EAAOstE,GACjC,MAAMirF,EAAQsI,KAQd,OANI0pB,GAAehyB,EADEoyB,KACmB3qL,IAGpCwxL,GAFcpX,KACA0Q,KACwBvyB,EAAOyL,EAAUhkK,EAAOu4J,EArjarD,IAqjasEjrF,GAAW,GAGvFmkH,GAMX,YAA+C77B,EAAOyB,EAAOkB,EAAOv4J,EAAO0xL,GACvE,MACMniK,EAAWmiK,EAAe,QAAU,QAE1C5Q,GAAqBlrB,EAAO2C,EAHblB,EAAMpsB,OAGqB17G,GAAWA,EAAUvvB,GA4CnE,YAAwB2e,EAAO/S,EAAMu/K,EAAYC,GAC7C,MAAM7yB,EAAQsI,KACRjL,EAAQwkB,KACRiR,EAhmaY,GAgmaoB1sK,EAIhCgV,EAAW4kI,EArnaJ,IAsnaPloD,GAASkoD,EAAM8yB,GAAiBsG,EAAkBh+J,EAAU/nB,EA7gYtE,cACI,OAAOqtJ,GAAiBC,OAAO6B,iBA4gYyC62B,IAClEv6B,GAAQzB,EAAM2I,gBA3CxB,YAAqC5/I,EAAOi3I,EAAO2C,EAAOloD,EAAQzkG,EAAMu/K,EAAYC,GAGhF,MAAME,EAAc11B,EAAMhB,OAEpByC,GAAQk0B,GAAiB31B,EAAOj3I,EAAO,EAAiB/S,EADhD4/K,GAAYF,EAAaH,IAIvC,OAFsBM,GAAkB71B,EAAO2C,EAAOlB,GAAOm0B,GAAYF,EAAaF,IAElE,OAAhB/zB,GAAM2F,OACN60B,GAAqBx6B,GAAOA,GAAM2F,OAAO,GAEnB,OAAtB3F,GAAMokB,aACNoW,GAAqBx6B,GAAOA,GAAMokB,aAAa,GAE7B,OAAlB7lB,EAAMqqB,SACNrqB,EAAMqqB,QAAQ6R,aAAal8B,EAAOyB,IAE/BA,GA2BH06B,CAA4B1G,EAAez1B,EAAO2C,EAAOloD,EAAQzkG,EAAMu/K,EAAYC,GACnFx1B,EAAMj2J,KAAK0rL,GACflQ,GAAgB9jB,IAAO,GACvB,MAAMokB,GAAcpkB,GAAMokB,YACN,OAAhBA,IACAuW,GAAgBr+J,EAAU08E,GAAQorE,IAEtC,MAAMlY,GAAUlM,GAAMkM,QACN,OAAZA,IACA0uB,GAAiBt+J,EAAU08E,GAAQkzD,IAEvC,MAAMh+J,GAAS8xJ,GAAM9xJ,OACrB,OAAe,OAAXA,IACA2sL,GAAiBv+J,EAAU08E,GAAQ9qG,IAEK,KAAzB,GAAd8xJ,GAAMhhI,QAGPZ,GAAYmgI,EAAO2C,EAAOloD,GAAQgnD,IAKP,IA1/YnC,cACI,OAAO4B,GAAiBC,OAAO4B,kBAy/Y3Bq3B,IACAziB,GAAgBr/D,GAAQkoD,GAx/YhC,cACIU,GAAiBC,OAAO4B,oBAy/YxBs3B,GACIvG,GAAgBx0B,MAChBy0B,GAA0Bl2B,EAAO2C,EAAOlB,IACxCg7B,GAAsBz8B,EAAOyB,GAAOkB,IAEjB,OAAnB6yB,GACAW,GAAyBxzB,EAAOlB,IAE7Bi7B,GAQX,cACI,IAAI94B,EAAeoH,KAEfwa,KACAmX,MAIA/4B,EAAeA,EAAav4J,OAC5Bk6K,GAAgB3hB,GAAc,IAElC,MAAMnC,EAAQmC,GAlhZlB,cACIP,GAAiBC,OAAO4B,oBAmhZxB03B,GACA,MAAM58B,EAAQwkB,KACd,OAAIxkB,EAAM2I,kBACNoqB,GAAuB/yB,EAAO4D,GAC1BulB,GAAmBvlB,IACnB5D,EAAMqqB,QAAQwS,WAAWj5B,IAGD,MAA5BnC,EAAM0kB,oBAvrXd,YAAuB1kB,GACnB,OAAkD,IAA5B,GAAdA,EAAMhhI,MAAoC,CAsrXVq8J,CAAcr7B,IAClDs7B,GAAsC/8B,EAAOyB,EAAOwJ,KAAYxJ,EAAM0kB,oBAAoB,GAE/D,MAA3B1kB,EAAMwkB,mBAlqXd,YAAuBxkB,GACnB,OAAkD,IAA5B,GAAdA,EAAMhhI,MAAoC,CAiqXXu8J,CAAcv7B,IACjDs7B,GAAsC/8B,EAAOyB,EAAOwJ,KAAYxJ,EAAMwkB,mBAAmB,GAEtFgX,GAaX,YAAmBl0K,EAAO/S,EAAMu/K,EAAYC,GACxCkH,UAAe3zK,EAAO/S,EAAMu/K,EAAYC,GACxCyH,KACOC,GA4FX,YAAiCn0K,EAAOwsK,EAAYC,GAChD,MAAM7yB,EAAQsI,KACRjL,EAAQwkB,KACRiR,EAAgB1sK,EA3xaJ,GA+xaZ04I,EAAQzB,EAAM2I,gBAvCxB,YAA8C5/I,EAAOi3I,EAAO2C,EAAO4yB,EAAYC,GAE3E,MAAME,EAAc11B,EAAMhB,OACpBoI,EAAQwuB,GAAYF,EAAaH,GACjC9zB,EAAQk0B,GAAiB31B,EAAOj3I,EAAO,EAA0B,eAAgBq+I,GAOvFyuB,OAJc,OAAVzuB,GACA60B,GAAqBx6B,EAAO2F,GAAO,GAGvCyuB,GAAkB71B,EAAO2C,EAAOlB,EADdm0B,GAAYF,EAAaF,IAErB,OAAlBx1B,EAAMqqB,SACNrqB,EAAMqqB,QAAQ6R,aAAal8B,EAAOyB,GAE/BA,EAyBH07B,CAAqC1H,EAAez1B,EAAO2C,EAAO4yB,EAAYC,GAC9Ex1B,EAAMj2J,KAAK0rL,GACflQ,GAAgB9jB,GAAO,GAEvB,MAAMhnD,EAASkoD,EAAM8yB,GACjB9yB,EAtzaS,IAszaOhjI,cAA2C,IAC/DE,UAAYmgI,EAAO2C,EAAOloD,EAAQgnD,GAClCqY,GAAgBr/D,EAAQkoD,GACpBszB,GAAgBx0B,KAChBy0B,GAA0Bl2B,EAAO2C,EAAOlB,GACxCg7B,GAAsBz8B,EAAOyB,EAAOkB,IAElB,MAAlB6yB,GACAW,GAAyBxzB,EAAOlB,GAE7B27B,GAQX,cACI,IAAIx5B,EAAeoH,KACnB,MAAMhL,EAAQwkB,KACd,OAAIgB,KACAmX,MAIA/4B,EAAeA,EAAav4J,OAC5Bk6K,GAAgB3hB,GAAc,IAG9B5D,EAAM2I,kBACNoqB,GAAuB/yB,EAAO4D,GAC1BulB,GAAmBvlB,IACnB5D,EAAMqqB,QAAQwS,WAAWj5B,IAG1By5B,GAaX,YAA4Bt0K,EAAOwsK,EAAYC,GAC3C4H,UAAwBr0K,EAAOwsK,EAAYC,GAC3C6H,KACOC,GAYX,cACI,OAAOryB,KAaX,YAAmBx7J,GAGf,QAASA,GAA2B,mBAAbA,EAAIwvB,IAAS,CAKxC,YAAwBxvB,GACpB,QAASA,GAAgC,mBAAlBA,EAAI6pF,SAAc,CAW7C,MAAMikG,GAAeC,GAuBrB,YAAoBz0L,EAAW00L,EAAYC,EAAYC,GACnD,MAAMh7B,EAAQsI,KACRjL,EAAQwkB,KACR/iB,EAAQuJ,KACd4yB,OA+DJ,YAA0B59B,EAAO2C,EAAO5kI,EAAU0jI,EAAO14J,EAAW00L,EAAYC,EAAYC,GACxF,MAAME,GAAuB5H,GAAgBx0B,GAEvC4V,GAAW1O,EADaA,iBACMgiB,GAAwB3qB,GACtD9tJ,GAAUywJ,EAz/aJ,GA6/aN4U,GAAWmT,GAAwB/nB,GAEzC,IAAIm7B,IAAiB,EAKrB,GAAkB,EAAbr8B,EAAMtvJ,MAA4BwrL,EAAqB,CACxD,MAAMljF,GAASo9D,GAAiBpW,EAAOkB,GACjC/hJ,GAAS+8K,EAAsBA,EAAoBljF,IAAUA,GAC7DsjF,GAAgBxmB,GAASvwK,OACzBywK,GAAoBkmB,EACrBzwB,IAAWywB,EAAoB/6B,GAAYsK,GAAOzL,EAAM14I,SACzD04I,EAAM14I,MAGV,GAAIu+I,GAAqBvpI,GAAW,CAWhC,IAAIigK,GAAmB,KAUvB,IAHKL,GAAuBE,KACxBG,GApEhB,YAA8Bh+B,EAAO2C,EAAO55J,EAAWk1L,GACnD,MAAM5mB,EAAWrX,EAAMsX,QACvB,GAAgB,MAAZD,EACA,QAAStnK,EAAI,EAAGA,EAAIsnK,EAASrwK,OAAS,EAAG+I,GAAK,EAAG,CAC7C,MAAMmuL,EAAmB7mB,EAAStnK,GAClC,GAAImuL,IAAqBn1L,GAAasuK,EAAStnK,EAAI,KAAOkuL,EAAU,CAIhE,MAAM1mB,EAAW5U,EAt+ajB,GAu+aMw7B,GAAwB9mB,EAAStnK,EAAI,GAC3C,OAAOwnK,EAASvwK,OAASm3L,GAAwB5mB,EAAS4mB,IAAyB,KAOvD,iBAArBD,IACPnuL,GAAK,GAIjB,OAAO,KA6CwBquL,CAAqBp+B,EAAO2C,EAAO55J,EAAW04J,EAAM14I,QAElD,OAArBi1K,IAKuBA,GAAiBK,sBAAwBL,IACjDM,qBAAuBb,EACtCO,GAAiBK,qBAAuBZ,EACxCK,IAAiB,MAEhB,CACDL,EAAac,GAAa98B,EAAOkB,EAAOzwJ,GAASurL,GAAY,GAC7D,MAAMhT,GAAY1sJ,EAAS9U,OAAOrI,GAAQ7X,EAAW00L,GAErDlmB,GAAS5uK,KAAK80L,EAAYhT,IAC1BpT,IAAYA,GAAS1uK,KAAKI,EAAW0uK,GAAmBsmB,GAAeA,GAAgB,SAI3FN,EAAac,GAAa98B,EAAOkB,EAAOzwJ,GAASurL,GAAY,GAC7D78K,GAAO6a,iBAAiB1yB,EAAW00L,EAAYC,GAE/CnmB,GAAS5uK,KAAK80L,GACdpmB,IAAYA,GAAS1uK,KAAKI,EAAW0uK,GAAmBsmB,GAAeL,QAM3ED,EAAac,GAAa98B,EAAOkB,EAAOzwJ,GAASurL,GAAY,GAGjE,MAAMn+B,GAAUmC,EAAMnC,QACtB,IAAI58I,GACJ,GAAIo7K,IAA8B,OAAZx+B,KAAqB58I,GAAQ48I,GAAQv2J,IAAa,CACpE,MAAMy1L,GAAc97K,GAAM1b,OAC1B,GAAIw3L,GACA,QAASzuL,GAAI,EAAGA,GAAIyuL,GAAazuL,IAAK,EAAG,CACrC,MAQMw3H,GAAek3D,EARP/7K,GAAM3S,KAEC2S,GAAM3S,GAAI,IAMHupF,UAAUmkG,GAChC55F,GAAM0zE,GAASvwK,OACrBuwK,GAAS5uK,KAAK80L,EAAYl2D,IAC1B8vC,IAAYA,GAAS1uK,KAAKI,EAAW04J,EAAM14I,MAAO86E,KAAOA,GAAM,MA7J3E+5F,CAAiB59B,EAAO2C,EAAOA,EAn7alB,IAm7amClB,EAAO14J,EAAW00L,IAAcC,EAAYC,GACrFe,GAiKX,YAA0C/7B,EAAOzwJ,EAASurL,EAAYn0L,GAClE,IACIq1L,OAEyB,IAAlBlB,EAAWn0L,EAOmBm0L,CAPZ,MAEtBx3J,GACHq8E,UAAYqgD,EAAO18H,IACZ,EAG8Bw3J,CAa7C,YAAsBh8B,EAAOkB,EAAOzwJ,EAASurL,EAAYmB,GAGrD,OAAO,WAAmDt1L,GAGtD,GAAIA,IAAM8/F,SACN,OAAOq0F,EAIX,MAAMt1B,EAA0B,EAAd1G,EAAMhhI,MACpB+oJ,GAAyB/nB,EAAM14I,MAAO45I,GACtCA,EAE2C,IAA3B,GAAfA,EArobC,KAsobFk8B,GAAc12B,GAElB,IAAI37J,GAASsyL,GAAiCn8B,EAAOzwJ,EAASurL,EAAYn0L,GAGtEy1L,GAAiBC,EAA0CV,qBAC/D,KAAOS,IAEHvyL,GAASsyL,GAAiCn8B,EAAOzwJ,EAAS6sL,GAAgBz1L,IAAMkD,GAChFuyL,GAAiBA,GAAeT,qBAEpC,OAAIM,IAAqC,IAAXpyL,KAC1BlD,EAAEwpE,iBAEFxpE,EAAE21L,aAAc,GAEbzyL,IA+Bf,YAAuB0yL,EAAQ,GAC3B,OAlpZJ,YAAyBA,GAGrB,OAFqB77B,GAAiBC,OAAOI,aAIjD,YAAqBy7B,EAAc74B,GAC/B,KAAO64B,EAAe,GAGlB74B,EAAcA,EA/hCG,IAgiCjB64B,IAEJ,OAAO74B,EAVH84B,CAAYF,EAAO77B,GAAiBC,OAAOI,eAhiCnC,EAiiCQC,CA+oZb07B,CAAgBH,GAkB3B,YAAqCz9B,EAAO69B,GACxC,IAAIC,EAAyB,KAC7B,MAAMC,EAryNV,YAA+B/9B,GAC3B,MAAMkhB,EAAYlhB,EAAM2F,MACxB,GAAiB,MAAbub,EAAmB,CACnB,MAAM8c,EAAqB9c,EAAUj4K,QAAQ,GAG7C,GAAiC,IAAP,EAArB+0L,GACD,OAAO9c,EAAU8c,EAAqB,GAG9C,OAAO,KA2xNoBC,CAAsBj+B,GACjD,QAAS1xJ,EAAI,EAAGA,EAAIuvL,EAAgBt4L,OAAQ+I,IAAK,CAC7C,MAAMgzJ,EAAYu8B,EAAgBvvL,GAGlC,GAAkB,MAAdgzJ,GAMJ,GAA2B,OAAvBy8B,EACA9T,GAA2BjqB,EAAOsB,GAAkC,GACpE48B,GAAyBH,EAAoBz8B,GAC7C,OAAOhzJ,OARPwvL,EAAyBxvL,CAQlBA,CAGf,OAAOwvL,EA2BX,YAAyBD,GACrB,MAAM/kB,EAAgBtP,KAxubS,IAXpB,GAovbX,IAAKsP,EAAcnB,WAAY,CAG3B,MACMwmB,EAAkBrlB,EAAcnB,WAClCjJ,GAFuBmvB,EAAkBA,EAAgBt4L,OAAS,EAErC,MAC3B64L,EAAQD,EAAgBv+K,QAC9B,IAAIy+K,EAAiBvlB,EAAcvV,MACnC,KAA0B,OAAnB86B,GAAyB,CAC5B,MAAMC,EAAYT,EAAkBU,GAA4BF,EAAgBR,GAAmB,EACjF,OAAdS,IACIF,EAAME,GACNF,EAAME,GAAW5lB,eAAiB2lB,EAGlCF,EAAgBG,GAAaD,EAEjCD,EAAME,GAAaD,GAEvBA,EAAiBA,EAAepuL,OAe5C,YAAsBmxJ,EAAWo9B,EAAgB,EAAG74B,GAChD,MAAMzE,EAAQsI,KACRjL,EAAQwkB,KACRpK,EAAkBub,GAAiB31B,EAnwbvB,GAmwb8C6C,EAAW,GAAqB,KAAMuE,GAAS,MAE5E,OAA/BgT,EAAgBhB,aAChBgB,EAAgBhB,WAAa6mB,GAEjCtD,KACsD,KAAzB,GAAxBviB,EAAgB35I,QApoRzB,YAAyBu/H,EAAO2C,EAAOyX,GAKnCF,GAJiBvX,EAvpKJ,IA2pKsB,EAAgBA,EAAOyX,EAHtC7B,GAAkBvY,EAAOoa,EAAiBzX,GAE7C8V,GADG2B,EAAgB/uK,QAAUs3J,EA9pKnC,GA+pK2CyX,EAAiBzX,GACiBkS,CAioRpFqrB,CAAgBlgC,EAAO2C,EAAOyX,GAiCtC,YAA+BhM,EAAUinB,EAAI39G,GACzCyoH,UAAuB/xB,EAAU,GAAIinB,EAAI,GAAI39G,GACtC0oH,GA8BX,YAAgChyB,EAAUgnB,EAAQC,EAAIC,EAAQ59G,GAC1D,MAAMirF,EAAQsI,KACRo1B,EAAoBC,GAAe39B,EAAOyyB,EAAQC,EAAIC,GAQ5D,OAPI+K,IAAsBhc,IAGtBuX,GAFcpX,KACA0Q,KACwBvyB,EAAOyL,EAAUiyB,EAAmB19B,EAn2bjE,IAm2bkFjrF,GAAW,GAInGyoH,GA4tBX,YAAwBh0B,EAAOo0B,EAAax3K,EAAOy3K,EAAWC,GAC1D,MAAMC,EAAkBv0B,EAAMpjJ,EAAQ,GAChC43K,EAAwB,OAAhBJ,EACd,IAAIK,EAASJ,EAAYK,GAAqBH,GAAmBI,GAAqBJ,GAClFK,IAAiB,EAMrB,KAAkB,IAAXH,KAAoC,IAAnBG,IAA4BJ,IAAQ,CAExD,MACMK,GAAsB70B,EAAMy0B,EAAS,GACvCK,GAF0B90B,EAAMy0B,GAEML,KACtCQ,IAAiB,EACjB50B,EAAMy0B,EAAS,GAAKJ,EAAYU,GAA8BF,IAC1DG,GAA8BH,KAEtCJ,EAASJ,EAAYK,GAAqBG,IACtCF,GAAqBE,IAEzBD,KAEA50B,EAAMpjJ,EAAQ,GAAKy3K,EAAYW,GAA8BT,GACzDQ,GAA8BR,IAqB1C,YAAwBU,EAAmBb,GAGvC,OAA0B,OAAtBa,GAEe,MAAfb,IAECz0L,MAAM4E,QAAQ0wL,GAAqBA,EAAkB,GAAKA,KACvDb,MAICz0L,MAAM4E,QAAQ0wL,IAA6C,iBAAhBb,IAGzCnxB,GAAqBgyB,EAAmBb,IAC3C,CAED,CAWX,MAAMc,GAAc,CAChBC,QAAS,EACTp3L,IAAK,EACLq3L,OAAQ,EACRn3L,MAAO,EACPo3L,SAAU,GAMd,YAA0B90I,GACtB,OAAOA,EAAK/hD,UAAU02L,GAAYn3L,IAAKm3L,GAAYE,QAyCvD,YAA4B70I,EAAM3jC,GAC9B,MAAMsW,EAAMgiK,GAAYC,QACxB,OAAIjiK,IAAQtW,GACD,GAEXA,EAAQs4K,GAAYE,OAmFxB,YAA2B70I,EAAMt9C,EAAY28J,GACzC,KAAO38J,EAAa28J,GAAYr/G,EAAK6+D,WAAWn8G,GAAc,IAC1DA,IAEJ,OAAOA,EAvFsBqyL,CAAkB/0I,EAAM20I,GAAYn3L,IAAM6e,EAAOsW,GACvEqiK,GAAkBh1I,EAAM3jC,EAAOsW,IAoE1C,YAA2BqtB,EAAMt9C,EAAY28J,GACzC,KAAO38J,EAAa28J,GAAYr/G,EAAK6+D,WAAWn8G,IAAe,IAC3DA,IAEJ,OAAOA,EAwJX,YAAqBhH,EAAMgC,EAAOkrL,GAC9BqM,UAAqBv5L,EAAMgC,EAAOkrL,GAAQ,GACnCsM,GAiBX,YAAqBxuK,EAAWhpB,GAC5Bu3L,UAAqBvuK,EAAWhpB,EAAO,MAAM,GACtCy3L,GAwDX,YAAoBl0B,GAChBm0B,GAAgBC,GAAkBC,GAAmBr0B,GAAS,GAWlE,YAA2BwB,EAAeziH,GACtC,QAAS38C,EAnVb,YAAwB28C,GACpBu1I,OA4EJ,YAA0Bv1I,GACtB20I,GAAYn3L,IAAM,EAClBm3L,GAAYE,OAAS,EACrBF,GAAYj3L,MAAQ,EACpBi3L,GAAYG,SAAW,EACvBH,GAAYC,QAAU50I,EAAK1lD,OAjF3Bi7L,CAAiBv1I,GACVw1I,GAAmBx1I,EAAMg1I,GAAkBh1I,EAAM,EAAG20I,GAAYC,UAiV1Da,CAAez1I,GAAO38C,GAAK,EAAGA,EAAImyL,GAAmBx1I,EAAM38C,GACpEgyL,GAAiB5yB,EAAeizB,GAAiB11I,IAAO,GAWhE,YAA8BtkD,EAAMgC,EAAOkrL,EAAQwG,GAC/C,MAAMn5B,EAAQsI,KACRjL,EAAQwkB,KAIRvgB,EAAeo+B,GAAsB,GACvCriC,EAAM6oB,iBACNyZ,GAAuBtiC,EAAO53J,EAAM67J,EAAc63B,GAElD1xL,IAAUi6K,IAAasQ,GAAehyB,EAAOsB,EAAc75J,IAE3Dm4L,GAAcviC,EADAA,EAAMj2J,KAAK06K,MACG9hB,EAAOA,EA3he1B,IA2he2Cv6J,EAAMu6J,EAAMsB,EAAe,GAmmBvF,YAAyB75J,EAAOkrL,GAC5B,OAAa,MAATlrL,IAGuB,iBAAXkrL,EACZlrL,GAAgBkrL,EAEM,iBAAVlrL,IACZA,EAAQsyD,EAAUukH,GAAgB72K,MAE/BA,EA7mBiFo4L,CAAgBp4L,EAAOkrL,GAASwG,EAAc73B,GAa1I,YAAyB89B,EAAkBU,EAAcr4L,EAAO0xL,GAC5D,MAAM97B,EAAQwkB,KACRvgB,EAAeo+B,GAAsB,GACvCriC,EAAM6oB,iBACNyZ,GAAuBtiC,EAAO,KAAMiE,EAAc63B,GAEtD,MAAMn5B,EAAQsI,KACd,GAAI7gK,IAAUi6K,IAAasQ,GAAehyB,EAAOsB,EAAc75J,GAAQ,CAGnE,MAAMq3J,EAAQzB,EAAMj2J,KAAK06K,MACzB,GAAIie,GAAsBjhC,EAAOq6B,KAAkB6G,GAAiB3iC,EAAOiE,GAAe,CActF,IAAI2+B,GAAe9G,EAAer6B,EAAM0kB,mBAAqB1kB,EAAMwkB,kBAG9C,OAAjB2c,KAEAx4L,EAAQ6kL,EAAuB2T,GAAcx4L,GAAgB,KAIjE2yL,GAAsC/8B,EAAOyB,EAAOkB,EAAOv4J,EAAO0xL,QAyX9E,YAA0B97B,EAAOyB,EAAOkB,EAAO5kI,EAAU8kK,EAAkBC,EAAkBhH,EAAc73B,GACnG4+B,IAAqBxe,KAErBwe,EAAmB7kC,IAEvB,IAAI+kC,GAAW,EACXC,GAAW,EACXC,GAAS,EAAIJ,EAAiB77L,OAAS67L,EAAiB,GAAK,KAC7D5L,GAAS,EAAI6L,EAAiB97L,OAAS87L,EAAiB,GAAK,KACjE,KAAkB,OAAXG,IAA8B,OAAXhM,IAAiB,CAGvC,MAAMp/J,GAAWkrK,GAAWF,EAAiB77L,OAAS67L,EAAiBE,GAAW,QAAKl5L,EACjFyhJ,GAAW03C,GAAWF,EAAiB97L,OAAS87L,EAAiBE,GAAW,QAAKn5L,EACvF,IACI82B,GADAuiK,GAAS,KAETD,KAAWhM,IAEX8L,IAAY,EACZC,IAAY,EACRnrK,KAAayzH,KACb43C,GAASjM,GACTt2J,GAAW2qH,KAGC,OAAf63C,IAAkC,OAAXF,IAAmBA,GAAShM,IAKpD8L,IAAY,EACZG,GAASD,KAOTD,IAAY,EACZE,GAASjM,GACTt2J,GAAW2qH,IAEA,OAAX43C,IACAX,GAAcviC,EAAOyB,EAAOkB,EAAO5kI,EAAUmlK,GAAQviK,GAAUm7J,EAAc73B,GAEjFg/B,GAASF,GAAWF,EAAiB77L,OAAS67L,EAAiBE,IAAY,KAC3E9L,GAAS+L,GAAWF,EAAiB97L,OAAS87L,EAAiBE,IAAY,MApavEI,CAAiBpjC,EAAOyB,EAAOkB,EAAOA,EA7kejC,IA6kekDA,EAAMsB,EAAe,GAAItB,EAAMsB,EAAe,GA8TjH,YAAgC89B,EAAkBU,EAAcr4L,GAC5D,GAAa,MAATA,GAAuD,KAAVA,EAC7C,OAAO4zJ,GACX,MAAMqlC,EAAqB,GACrBC,EAAiBriB,GAAgB72K,GACvC,GAAI0B,MAAM4E,QAAQ4yL,GACd,QAASvzL,EAAI,EAAGA,EAAIuzL,EAAet8L,OAAQ+I,IACvCgyL,EAAiBsB,EAAoBC,EAAevzL,IAAI,WAG7B,iBAAnBuzL,EACZ,UAAWp5L,KAAOo5L,EACVA,EAAev0L,eAAe7E,IAC9B63L,EAAiBsB,EAAoBn5L,EAAKo5L,EAAep5L,QAIlC,iBAAnBo5L,GACZb,EAAaY,EAAoBC,GAMrC,OAAOD,EAtV2GE,CAAuBxB,EAAkBU,EAAcr4L,GAAQ0xL,EAAc73B,IAUnM,YAA0BjE,EAAOiE,GAE7B,OAAOA,GAAgBjE,EAAMsqB,kBAWjC,YAAgCtqB,EAAOugC,EAAat8B,EAAc63B,GAE9D,MAAM3vB,EAAQnM,EAAMj2J,KACpB,GAAgC,OAA5BoiK,EAAMlI,EAAe,GAAa,CAMlC,MAAMxC,EAAQ0K,EAAMsY,MAEd+e,EAAiBb,GAAiB3iC,EAAOiE,GAC3Cy+B,GAAsBjhC,EAAOq6B,IAAiC,OAAhByE,IAAyBiD,IAKvEjD,GAAc,GAElBA,EAkBR,YAAgCp0B,EAAO1K,EAAOgiC,EAAY3H,GACtD,MAAM4H,EApzcV,YAAgCv3B,GAC5B,MAAM/H,EAAwBf,GAAiBC,OAAOc,sBACtD,OAAiC,IAA1BA,EAA+B,KAAO+H,EAAM/H,GAkzc1Bu/B,CAAuBx3B,GAChD,IAAIy3B,EAAW9H,EAAer6B,EAAM2kB,gBAAkB3kB,EAAMykB,eAC5D,GAAyB,OAArBwd,EAK2G,KAA9D5H,EAAer6B,EAAM4kB,cAAgB5kB,EAAM6kB,iBAMpFmd,EAAaI,GADbJ,EAAaK,GAA6B,KAAM33B,EAAO1K,EAAOgiC,EAAY3H,GACxBr6B,EAAM2F,MAAO00B,GAE/D8H,EAAW,UAGd,CAGD,MAAMje,EAAuBlkB,EAAMkkB,qBAEnC,IADwE,IAAzBA,GAA+BxZ,EAAMwZ,KAA0B+d,EAI1G,GAFAD,EACIK,GAA6BJ,EAAkBv3B,EAAO1K,EAAOgiC,EAAY3H,GAC5D,OAAb8H,EAAmB,CAOnB,IAAIG,GAuCpB,YAAoC53B,EAAO1K,EAAOq6B,GAC9C,MAAMkI,EAAWlI,EAAer6B,EAAM4kB,cAAgB5kB,EAAM6kB,cAC5D,GAAuC,IAAnCwa,GAAqBkD,GAIzB,OAAO73B,EAAM00B,GAAqBmD,IA7CGC,CAA2B93B,EAAO1K,EAAOq6B,QACvCjyL,IAAvBk6L,IAAoCj4L,MAAM4E,QAAQqzL,MAIlDA,GAAqBD,GAA6B,KAAM33B,EAAO1K,EAAOsiC,GAAmB,GAAkCjI,GAC3HiI,GACIF,GAAyBE,GAAoBtiC,EAAM2F,MAAO00B,GA4FlF,YAAoC3vB,EAAO1K,EAAOq6B,EAAcyE,GAI5Dp0B,EAAM00B,GAHW/E,EAAer6B,EAAM4kB,cAAgB5kB,EAAM6kB,gBAGpBia,EA/FxB2D,CAA2B/3B,EAAO1K,EAAOq6B,EAAciI,UAS3DH,EAkGhB,YAAyBz3B,EAAO1K,EAAOq6B,GACnC,IAAI8H,EACJ,MAAMn+B,EAAehE,EAAMgE,aAK3B,QAAS11J,EAAI,EAAI0xJ,EAAMkkB,qBAAsB51K,EAAI01J,EAAc11J,IAE3D6zL,EAAWC,GAAyBD,EADtBz3B,EAAMp8J,GAAGqvJ,UAC8B08B,GAEzD,OAAO+H,GAAyBD,EAAUniC,EAAM2F,MAAO00B,GA7GhCqI,CAAgBh4B,EAAO1K,EAAOq6B,GAIrD,YAAiBjyL,IAAb+5L,IACA9H,EAAgBr6B,EAAM2kB,gBAAkBwd,EAAaniC,EAAMykB,eAAiB0d,GAEzEH,EA5EWW,CAAuBj4B,EAAO1K,EAAO8+B,EAAazE,GAntBxE,YAA+B3vB,EAAO1K,EAAO4iC,EAAuBt7K,EAAOu7K,EAAe7D,GAEtF,IAAI8D,EAAY9D,EAAiBh/B,EAAM4kB,cAAgB5kB,EAAM6kB,cACzDke,EAAW3D,GAAqB0D,GAChCE,GAAW3D,GAAqByD,GACpCp4B,EAAMpjJ,GAASs7K,EACf,IACI9D,GADAmE,IAAyB,EAE7B,GAAI54L,MAAM4E,QAAQ2zL,GAAwB,CAEtC,MAAMM,GAAsBN,EAC5B9D,GAAcoE,GAAoB,IAEd,OAAhBpE,IACAnxB,GAAqBu1B,GAAqBpE,IAAe,KAEzDmE,IAAyB,QAI7BnE,GAAc8D,EAElB,GAAIC,EAMA,GAHyC,IAAbG,GAGH,CAErB,MAAMzmL,GAAe6iL,GAAqB10B,EAAMq4B,EAAW,IAC3Dr4B,EAAMpjJ,EAAQ,GAAK67K,GAAgB5mL,GAAcwmL,GAG5B,IAAjBxmL,KAEAmuJ,EAAMnuJ,GAAe,GACjB6mL,GAAqB14B,EAAMnuJ,GAAe,GAAI+K,IAGtDojJ,EAAMq4B,EAAW,GApwO7B,YAA8B1f,EAAehoB,GAGzC,OAAyB,OAAhBgoB,EACJhoB,GAAY,GAgwOagoC,CAAqB34B,EAAMq4B,EAAW,GAAIz7K,QAGhEojJ,EAAMpjJ,EAAQ,GAAK67K,GAAgBJ,EAAU,GAG5B,IAAbA,IAEAr4B,EAAMq4B,EAAW,GAAKK,GAAqB14B,EAAMq4B,EAAW,GAAIz7K,IAGpEy7K,EAAWz7K,OAMfojJ,EAAMpjJ,EAAQ,GAAK67K,GAAgBH,GAAU,GAG5B,IAAjBtL,EACIqL,EAAWz7K,EAIXojJ,EAAMs4B,GAAW,GAAKI,GAAqB14B,EAAMs4B,GAAW,GAAI17K,GAEpE07K,GAAW17K,EAIX27K,KACAv4B,EAAMpjJ,EAAQ,GAAKo4K,GAA8Bh1B,EAAMpjJ,EAAQ,KAEnEg8K,GAAe54B,EAAOo0B,GAAax3K,GAAO,GAC1Cg8K,GAAe54B,EAAOo0B,GAAax3K,GAAO,GAoB9C,YAAwC04I,EAAO8+B,EAAap0B,EAAOpjJ,EAAO03K,GACtE,MAAMmD,EAAWnD,EAAiBh/B,EAAM2kB,gBAAkB3kB,EAAMykB,eAChD,MAAZ0d,GAA6D,iBAAfrD,GAC9CnxB,GAAqBw0B,EAAUrD,IAAgB,IAE/Cp0B,EAAMpjJ,EAAQ,GAAKm4K,GAA8B/0B,EAAMpjJ,EAAQ,KAxBnEi8K,CAA+BvjC,EAAO8+B,GAAap0B,EAAOpjJ,EAAO03K,GACjE8D,EAAYK,GAAgBJ,EAAUC,IACtCr/D,EACIq8B,EAAM4kB,cAAgBke,EAGtB9iC,EAAM6kB,cAAgBie,EAkoBtBU,CAAsB94B,EAAO1K,EAAO8+B,EAAat8B,EAAcu/B,EAAgB1H,IA+LvF,YAAsC4H,EAAkBv3B,EAAO1K,EAAOgiC,EAAY3H,GAG9E,IAAIoJ,EAAmB,KACvB,MAAMz/B,EAAehE,EAAMgE,aAC3B,IAAIkgB,EAAuBlkB,EAAMkkB,qBAOjC,KAN6B,IAA7BwT,EACIxT,EAAuBlkB,EAAM+D,eAG7BmgB,IAEGA,EAAuBlgB,IAC1By/B,EAAmB/4B,EAAMwZ,GAEzB8d,EAAaI,GAAyBJ,EAAYyB,EAAiB9lC,UAAW08B,GAC1EoJ,IAAqBxB,IAEzB/d,IAEJ,OAAyB,OAArB+d,IAIAjiC,EAAMkkB,qBAAuBA,GAE1B8d,EASX,YAAkCA,EAAYr8B,EAAO00B,GACjD,MAAMqJ,EAAgBrJ,EAAe,EAAkB,EACvD,IAAIsJ,GAAgB,EACpB,GAAc,OAAVh+B,EACA,QAASr3J,EAAI,EAAGA,EAAIq3J,EAAMpgK,OAAQ+I,IAAK,CACnC,MAAMC,EAAOo3J,EAAMr3J,GACC,iBAATC,EACPo1L,EAAgBp1L,EAGZo1L,IAAkBD,IACbr5L,MAAM4E,QAAQ+yL,KACfA,OAA4B55L,IAAf45L,EAA2B,GAAK,CAAC,GAAIA,IAEtD1B,GAAiB0B,EAAYzzL,IAAM8rL,GAAsB10B,IAAQr3J,KAKjF,YAAsBlG,IAAf45L,EAA2B,KAAOA,EAwJ7C,YAAuBzjC,EAAOyB,EAAOkB,EAAO5kI,EAAU31B,EAAMgC,EAAO0xL,EAAc73B,GAC7E,KAAmB,EAAbxC,EAAMtvJ,MAGR,OAEJ,MAAMg6J,GAAQnM,EAAMj2J,KACds7L,GAASl5B,GAAMlI,EAAe,GAI/BqhC,GApzQT,YAAuCxgB,GAEnC,OACI,IADoB,EAAhBA,EACJ,CA8yQwBygB,CAA8BF,IACtDG,GAAiBr5B,GAAO1K,EAAOkB,EAAOv6J,EAAM04L,GAAqBuE,IAASvJ,QAC1EjyL,KAGKy7L,GAAsBl7L,IA/0QnC,YAAuC06K,GAEnC,OACI,IADoB,EAAhBA,EACJ,CA80QQ2gB,CAA8BJ,MAE9Bj7L,EAAQo7L,GAAiBr5B,GAAO,KAAMxJ,EAAOv6J,EAAM67J,EAAc63B,IAvyUjF,YAAsB/9J,EAAU+9J,EAAc/mB,EAAO3sK,EAAMgC,GACvD,MAAMs7L,EAAep+B,GAAqBvpI,GAC1C,GAAI+9J,EAEK1xL,EAWDg7H,EACIrnG,EAAS5S,SAAS4pJ,EAAO3sK,GAIzB2sK,EAAM/iJ,UAAU/a,IAAI7O,GAdxBg9H,EACIrnG,EAASjR,YAAYioJ,EAAO3sK,GAG5B2sK,EAAM/iJ,UAAU0G,OAAOtwB,OAc9B,CACD,IAAIq4B,GAA8B,IAAtBr4B,EAAKsC,QAAQ,UAAcb,EAAYiqK,GAAoBE,SACvE,GAAa,MAAT5pK,EAEIs7L,EACA3nK,EAAS2C,YAAYq0I,EAAO3sK,EAAMq4B,GAGlCs0I,EAAMxoK,MAAMo5L,eAAev9L,OAG9B,CAGD,MAAMw9L,EAA+B,iBAAVx7L,GAAqBA,EAAMgvD,SAAS,cAC3DwsI,IAEAx7L,EAAQA,EAAMiX,MAAM,GAAG,IACvBof,GAASqzI,GAAoBC,WAGjC3uC,EACIrnG,EAASyC,SAASu0I,EAAO3sK,EAAMgC,EAAOq2B,GAItCs0I,EAAMxoK,MAAMyxB,YAAY51B,EAAMgC,EAAOw7L,EAAc,YAAc,MAyvUzEC,CAAa9nK,EAAU+9J,EADThN,GAAiBrK,KAAoB9hB,GACPv6J,EAAMgC,IA+B1D,YAA0B+hK,EAAO1K,EAAOkB,EAAOv6J,EAAM2gB,EAAO+yK,GAMxD,MAAMgK,EAA4B,OAAVrkC,EACxB,IAAIr3J,EACJ,KAAO2e,EAAQ,GAAG,CACd,MAAMg9K,GAAS55B,EAAMpjJ,GACfi9K,GAAkBl6L,MAAM4E,QAAQq1L,IAEhC77L,GAAM87L,GAAkBD,GAAO,GAAKA,GACpCE,GAAuB,OAAR/7L,GACrB,IAAIg8L,GAAoBvjC,EAAM55I,EAAQ,GAClCm9K,KAAsB7hB,KAQtB6hB,GAAoBD,GAAejoC,QAAcn0J,GAErD,IAAIyqE,GAAe2xH,GAAeE,GAAiBD,GAAmB99L,GAClE8B,KAAQ9B,EAAO89L,QAAoBr8L,EAIvC,GAHIm8L,KAAoBV,GAAsBhxH,MAC1CA,GAAe6xH,GAAiBJ,GAAQ39L,IAExCk9L,GAAsBhxH,MACtBlqE,EAAQkqE,GACJwxH,GACA,OAAO17L,EAGf,MAAMi7L,GAASl5B,EAAMpjJ,EAAQ,GAC7BA,EAAQ+8K,EAAkBjF,GAAqBwE,IAAUvE,GAAqBuE,IAElF,GAAc,OAAV5jC,EAAgB,CAGhB,IAAImiC,GAAW9H,EAAer6B,EAAM2kB,gBAAkB3kB,EAAMykB,eAC5C,MAAZ0d,KACAx5L,EAAQ+7L,GAAiBvC,GAAUx7L,IAG3C,OAAOgC,EAQX,YAA+BA,GAK3B,YAAiBP,IAAVO,CAAUP,CA8BrB,YAA+B43J,EAAOq6B,GAClC,OAA4F,IAApFr6B,EAAMhhI,OAASq7J,EAAe,GAAyB,IAA6B,CAkBhG,YAAgB/yK,EAAO3e,EAAQ,IAC3B,MAAMu4J,EAAQsI,KACRjL,EAAQwkB,KACRiR,EAAgB1sK,EAxpfJ,GA4pfZ04I,EAAQzB,EAAM2I,gBAChBgtB,GAAiB31B,EAAOy1B,EAAe,EAAcrrL,EAAO,MAC5D41J,EAAMj2J,KAAK0rL,GACT2Q,EAAazjC,EAAM8yB,GAAiBlgB,GAAe5S,EAhrf5C,IAgrf6Dv4J,GAC1Ey1B,GAAYmgI,EAAO2C,EAAOyjC,EAAY3kC,GAEtC8jB,GAAgB9jB,GAAO,GA8B3B,YAA2B4zB,GACvBgR,UAAmB,GAAIhR,EAAI,IACpBiR,GAqBX,YAA4BlR,EAAQC,EAAIC,GACpC,MAAM3yB,EAAQsI,KACRs7B,EAAejG,GAAe39B,EAAOyyB,EAAQC,EAAIC,GACvD,OAAIiR,IAAiBliB,IACjBmiB,GAAoB7jC,EAAO8hB,KAAoB8hB,GAE5CF,GAqBX,YAA4BjR,EAAQC,EAAIvnL,EAAI24L,EAAInR,GAC5C,MAAM3yB,EAAQsI,KACRs7B,EAvyIV,YAAwB5jC,EAAOyyB,EAAQC,EAAIvnL,EAAI24L,EAAInR,GAC/C,MACMZ,EAAYI,GAAgBnyB,EADb+jC,KACkCrR,EAAIoR,GAC3DpE,UAAsB,GACf3N,EAAYU,EAAS95B,GAAgB+5B,GAAMvnL,EAAKwtJ,GAAgBmrC,GAAMnR,EAASjR,GAmyIjEsiB,CAAehkC,EAAOyyB,EAAQC,EAAIvnL,EAAI24L,EAAInR,GAC/D,OAAIiR,IAAiBliB,IACjBmiB,GAAoB7jC,EAAO8hB,KAAoB8hB,GAE5CK,GAyOX,YAAgCxR,EAAQC,EAAIC,GAGxCwM,GAAgBC,GAAkBC,GADR1B,GADZr1B,KACkCmqB,EAAQC,EAAIC,IACY,GAyF5E,YAAgCF,EAAQC,EAAIvnL,EAAI24L,EAAIlnK,EAAI8S,EAAI8+C,EAAI01G,EAAIvR,IAGhEwM,GAAgBC,GAAkBC,GA/lJtC,YAAwBr/B,EAAOyyB,EAAQC,EAAIvnL,EAAI24L,EAAIlnK,EAAI8S,EAAI8+C,EAAI01G,GAAIvR,IAC/D,MACMZ,GAAYoS,GAAgBnkC,EADb+jC,KACkCrR,EAAIoR,EAAIp0J,EAAIw0J,IACnExE,UAAsB,GACf3N,GAAYU,EAAS95B,GAAgB+5B,GAAMvnL,EAAKwtJ,GAAgBmrC,GAAMlnK,EACzE+7H,GAAgBjpH,GAAM8+C,EAAKmqE,GAAgBurC,IAAMvR,GACjDjR,GAwlJsB0iB,CADZ97B,KACkCmqB,EAAQC,EAAIvnL,EAAI24L,EAAIlnK,EAAI8S,EAAI8+C,EAAI01G,EAAIvR,KACZ,GA22B5E,YAAwBlnB,EAAUhkK,EAAOstE,GACrC,MAAMirF,EAAQsI,KAQd,OANI0pB,GAAehyB,EADEoyB,KACmB3qL,IAGpCwxL,GAFcpX,KACA0Q,KACwBvyB,EAAOyL,EAAUhkK,EAAOu4J,EAl8hBrD,IAk8hBsEjrF,GAAW,GAGvFsvH,GAqEX,MAAMriK,QAAI96B,EAOV,IAAIo9L,GAAW,CAAC,KAAM,CAAC,CAAC,IAAK,KAAM,CAAC,KAAM,MAAOtiK,IAAI,CAAC,CAAC,KAAM,MAAOA,GAAGA,IAAI,CAAC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQA,GAAG,CAAC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAAcA,GAAG,CAAC,CAAC,IAAK,KAAM,CAAC,KAAM,MAAO,CAAC,gBAAiB,gBAAiB,EAAG,CAAC,EAAG,GAAI,CAAC,SAAU,WAAY,YAAa,mBAAoB,CAAC,SAAU,YAAa,cAAe,kBAAmB,CAAC,WAAYA,GAAG,eAAgBA,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAK,SAAK,SAAK,MAAO,KAAM,CAAC,YAAa,SAAU,eAAa,OAAQ,MAAO,IAAK,YAAa,GAAI,MANl6B,YAAgBliB,GACZ,MAAe1S,EAAIgI,KAAKkpH,MAAMlpH,KAAK6H,IAAI6C,IAAOnK,EAAImK,EAAI5b,WAAWsK,QAAQ,YAAa,IAAInK,OAC1F,OAAU,IAAN+I,GAAiB,IAANuI,EACJ,EACJ,IAcX,IAAI4uL,GAAc,GA0BlB,YAAwBhpD,GACpB,MAAMipD,EAyFV,YAAyBjpD,GACrB,OAAOA,EAAOnsI,cAAcZ,QAAQ,KAAM,KA1FjBi2L,CAAgBlpD,GACzC,IAAIzvI,EAAQ44L,GAAcF,GAC1B,GAAI14L,EACA,OAAOA,EAGX,MAAM64L,EAAeH,EAAiB7zL,MAAM,KAAK,GAEjD,GADA7E,EAAQ44L,GAAcC,GAClB74L,EACA,OAAOA,EAEX,GAAqB,OAAjB64L,EACA,OAAOL,GAEX,MAAM,IAAIvoJ,MAAO,uCAAsCw/F,OAuB3D,YAA6BA,GAEzB,OAAOn0I,GADqBm0I,GAChBqpD,GAAgBC,YAMhC,YAAuBL,GACnB,OAAMA,KAAoBD,KACtBA,GAAYC,GAAoBrpC,GAAQ2pC,IAAM3pC,GAAQ2pC,GAAGC,QAAU5pC,GAAQ2pC,GAAGC,OAAOC,SACjF7pC,GAAQ2pC,GAAGC,OAAOC,QAAQR,IAE3BD,GAAYC,GAWvB,IAAII,GAAe,OAAfA,OAAe,IAECA,GAAgBK,SAAc,GAAK,WACnDL,GAAgBA,GAAgBM,iBAAsB,GAAK,mBAC3DN,GAAgBA,GAAgBO,qBAA0B,GAAK,uBAC/DP,GAAgBA,GAAgBQ,WAAgB,GAAK,aACrDR,GAAgBA,GAAgBS,eAAoB,GAAK,iBACzDT,GAAgBA,GAAgBU,aAAkB,GAAK,eACvDV,GAAgBA,GAAgBW,iBAAsB,GAAK,mBAC3DX,GAAgBA,GAAgB3nD,KAAU,GAAK,OAC/C2nD,GAAgBA,GAAgBY,eAAoB,GAAK,iBACzDZ,GAAgBA,GAAgBa,aAAkB,GAAK,eACvDb,GAAgBA,GAAgBc,WAAgB,IAAM,aACtDd,GAAgBA,GAAgBe,WAAgB,IAAM,aACtDf,GAAgBA,GAAgBgB,eAAoB,IAAM,iBAC1DhB,GAAgBA,GAAgBiB,cAAmB,IAAM,gBACzDjB,GAAgBA,GAAgBkB,cAAmB,IAAM,gBACzDlB,GAAgBA,GAAgBmB,aAAkB,IAAM,eACxDnB,GAAgBA,GAAgBoB,eAAoB,IAAM,iBAC1DpB,GAAgBA,GAAgBqB,aAAkB,IAAM,eACxDrB,GAAgBA,GAAgBsB,WAAgB,IAAM,aACtDtB,GAAgBA,GAAgBuB,eAAoB,IAAM,iBAC1DvB,GAAgBA,GAAgBC,WAAgB,IAAM,aACtDD,GAAgBA,GAAgBwB,UAAe,IAAM,YAvBrDxB,IAAe,GAuCnB,MAAMyB,GAAgB,CAAC,OAAQ,MAAO,MAAO,MAAO,QAY9CC,GAAoB,QAmBpBC,GAAiB,CACnBthC,OAAQ,WAONuhC,GAAa,CACfvhC,OAAQ,OAKZ,IAAIwhC,GAAgB,OAAhBA,OAAgB,IAMCA,GAAiBC,MAAW,GAAK,QAIlDD,GAAiBA,GAAiBE,eAAoB,GAAK,iBAI3DF,GAAiBA,GAAiBG,QAAa,GAAK,UAdpDH,IAAgB,GAgCpB,IAAII,GAAcP,GAwClB,YAAyC1kC,EAAaX,EAAcjB,GAChE,MAAM8mC,EAAyB7lC,EAAa8hB,kBACtCA,EAAoB55K,MAAM4E,QAAQ+4L,GAA0BA,EAAuB,GAAKA,EAC9F,OAA0B,OAAtB/jB,EACOzN,GAAkC1T,EAAaX,EAAcjB,GAI7DC,GAAYD,EAAM+iB,IAQjC,YAAiC3nJ,EAAUs6I,EAAY1V,EAAOyV,EAAYjD,GACtE,MAAMs0B,EAAyBpxB,EAAWqN,kBAC1C,GAAI55K,MAAM4E,QAAQ+4L,GAAyB,CAOvC,IAAIC,EAAatxB,EACbuxB,EAAc,KAKlB,GAJwB,EAAlBtxB,EAAWlmK,OACbw3L,EAAcD,EACdA,EAAav0B,GAEE,OAAfu0B,GAAwE,IAA7B,EAAnBrxB,EAAW53I,OACnC,QAAS1wB,GAAI,EAAGA,GAAI05L,EAAuBziM,OAAQ+I,KAI/CklK,GAAmBl3I,EAAU2rK,EADX/mC,EAAM8mC,EAAuB15L,KACK45L,GAAa,IA2CjF,YAA4CC,EAAgBC,GAKxD,GADAD,EAAejhM,KAAKkhM,GAChBD,EAAe5iM,OAAS,EACxB,QAAS+I,EAAI65L,EAAe5iM,OAAS,EAAG+I,GAAK,EAAGA,IAAK,CACjD,MAAM+5L,EAAgBF,EAAe75L,GAGhCg6L,GAAWD,IACRE,GAAwBF,EAAeD,IACC,OAAxCI,GAAqBH,IAGrBI,GAAqBJ,EAAeD,EAAS9gL,QAMjE,YAAoB04I,GAChB,QAAsB,GAAbA,EAAMtvJ,KAAO,CAE1B,YAAiC23L,EAAeD,GAC5C,OAAOE,GAAWF,IAAaC,EAAc/gL,MAAQ8gL,EAAS9gL,MAElE,YAA8B04I,GAC1B,MAAM14I,EAAQ04I,EAAMikB,kBACpB,OAAO55K,MAAM4E,QAAQqY,GAASA,EAAM,GAAKA,EAE7C,YAA8B04I,EAAOr3J,GACjC,MAAM2e,EAAQ04I,EAAMikB,kBAChB55K,MAAM4E,QAAQqY,GAEdA,EAAM,GAAK3e,GAGX+/L,GAAgBjyB,GAAiCC,IACjD1W,EAAMikB,kBAAoBt7K,GAwBlC,YAAiB41J,EAAOj3I,GACpB,MAAM3e,EAAQ41J,EAAMj2J,KAAKgf,GACzB,OAAc,OAAV3e,GAAmC,iBAAVA,EAClB,KASEA,EAAM2E,eAAe,yBAA2B3E,EACzDA,EAAMA,MAqDd,YAAgC41J,EAAO4pC,EAAgB7gL,GACnD,MAAM04I,EAAQ4jB,GAAmBrlB,EAAOj3I,EAAO,GAAsB,KAAM,MAC3EqhL,UAAmCR,EAAgBnoC,GAC5CA,EAUX,YAAgC4oC,EAAM1nC,GAClC,MAAM2nC,EAAc3nC,EAAM0nC,EAAKE,uBAC/B,OAAuB,OAAhBD,EAAuBA,EAAeA,EAAc,GAAKA,EAAcA,EAElF,YAAsCE,GAClC,OAAOA,IAAe,GAE1B,YAAmCA,GAC/B,OAAqB,OAAbA,KAAwC,EA+BpD,IAAIC,GAAa,EAMbC,GAAoB,EAkExB,YAA6B1qC,EAAO2qC,EAAgBhoC,EAAOgnC,GAEvD,MAAM5rK,EAAW4kI,EA/ljBJ,IAimjBb,IAMIioC,EANAC,EAAU,KAOd,QAAS96L,EAAI,EAAGA,EAAI46L,EAAe3jM,OAAQ+I,IAAK,CAC5C,MAAMs4K,GAASsiB,EAAe56L,GAC9B,GAAqB,iBAAVs4K,GAAoB,CAC3B,MAAMyiB,GAAgBH,IAAiB56L,GACV,OAAzB4yJ,EAAMmoC,MAGNnoC,EAAMmoC,IAAiBv1B,GAAex3I,EAAUsqJ,aAG9B,iBAAVA,GACZ,OAAiB,EAATA,IAAS,KACR,EACD,MAAM0iB,GAAYC,GAA6B3iB,IAQ/C,IAAI4iB,GACA3yB,GAUJ,GAlBgB,OAAZuyB,IAIAA,EAAUE,GACVH,EAAYlxB,GAAiB37I,EAAU4rK,IAI3Cv9K,KAAkBy+K,GACdI,GAAkBtB,EAClBrxB,GAAcsyB,IAGdK,GAAkB,KAClB3yB,GAAc1V,GAAYD,EAAMooC,MAGhB,OAAhBzyB,GAAsB,CAMtB,MAAM4yB,GAASC,GAA0B9iB,IAMzCpT,GAAmBl3I,EAAUu6I,GAFf3V,EAAMuoC,IAE6BD,IAAiB,GAClE,MAAMZ,GAAOe,GAAQprC,EAAOkrC,IAC5B,GAAa,OAATb,IAAiC,iBAATA,GAAmB,CAI3C,MAAMgB,GAAYC,GAAuBjB,GAAM1nC,GAC7B,OAAd0oC,IACAE,GAAoBvrC,EAAOqqC,GAAKroL,OAAOqpL,IAAY1oC,EAAOA,EAAM0nC,GAAKmB,aAIjF,WACC,EACD,MACMhkC,GAAWmjC,IAAiB56L,GAC5Bo0K,GAAYwmB,IAAiB56L,GAGnCilL,GAAoBj3J,EAAU+wJ,GALLzG,KAAW,EAK6B1lB,GAAQ,KAAM,KAAM6E,GAAU2c,GAAW,WASlH,OAAQkE,SACC8gB,GACD,MAAMsC,GAAed,IAAiB56L,GAChC27L,GAAmBf,IAAiB56L,GACV,OAA5B4yJ,EAAM+oC,KAQN5xB,GAHqBnX,EAAM+oC,IACvBC,EAAkB5tK,EAAU0tK,IAEF9oC,GAElC,WACCumC,GACD,MAAMnqB,GAAU4rB,IAAiB56L,GAC3B67L,GAAmBjB,IAAiB56L,GACV,OAA5B4yJ,EAAMipC,KAQN9xB,GAHqBnX,EAAMipC,IACvB7P,EAAkBh+J,EAAUghJ,GAAS,MAEXpc,GAElC,EAkBpB,YAA4B3C,EAAO2C,EAAOkpC,EAAeC,EAAoBrB,GACzE,QAAS16L,EAAI,EAAGA,EAAI87L,EAAc7kM,OAAQ+I,IAAK,CAE3C,MAAMg8L,EAAWF,EAAc97L,GAEzBi8L,EAAYH,IAAgB97L,GAClC,GAAIg8L,EAAWtB,EAAY,CAEvB,IAAIrgM,GAAQ,GACZ,QAAS0rB,GAAI/lB,EAAI,EAAG+lB,IAAM/lB,EAAIi8L,EAAYl2K,KAAK,CAC3C,MAAMuyJ,GAASwjB,EAAc/1K,IAC7B,GAAqB,iBAAVuyJ,GACPj+K,IAASi+K,WAEa,iBAAVA,GACZ,GAAIA,GAAS,EAETj+K,IAASkxJ,GAAgBqH,EAAMmpC,EAAqBzjB,SAEnD,CACD,MAAMxlB,GAAawlB,KAAW,EAC9B,OAAiB,EAATA,IAAS,KACR,EACD,MAAMja,GAAWy9B,IAAgB/1K,IAC3Bm2K,GAAaJ,IAAgB/1K,IAC7Bo2K,GAAiBlsC,EAAMj2J,KAAK84J,IAEJ,iBAAnBqpC,GAIPlX,GAAoBryB,EA7vjBvC,IA6vjBwDA,EAAME,IAAY,KAAMqpC,GAAgB99B,GAAUhkK,GAAO6hM,IAG9FrQ,GAAwB57B,EAAOksC,GAAgBvpC,EAAOyL,GAAUhkK,GAAOu4J,EAhwjB1F,IAgwjB2GspC,IAAY,GAExG,WACC,EACD,MAAME,GAAQxpC,EAAME,IACV,OAAVspC,IAAkBpd,EAAepsB,EArwjBhD,IAqwjBiEwpC,GAAO/hM,IACzD,WACC,EACDgiM,GAAmBpsC,EAAOorC,GAAQprC,EAAO6C,IAAYF,EAAOv4J,IAC5D,WACC,EACDiiM,GAAmBrsC,EAAOorC,GAAQprC,EAAO6C,IAAYipC,EAAoBnpC,GACzE,OAMnB,CACD,MAAM0lB,GAASwjB,EAAc97L,EAAI,GACjC,GAAIs4K,GAAS,GAAwC,IAAzB,EAATA,IAAqD,CAKpE,MACMgiB,GAAOe,GAAQprC,EADFqoB,KAAW,GAG1Bp/B,EADuBohD,GAAKE,uBACb,GACf8B,GAAmBrsC,EAAOqqC,GAAMyB,EAAoBnpC,IAIhE5yJ,GAAKi8L,GAWb,YAA4BhsC,EAAOqqC,EAAMyB,EAAoBnpC,GAEzD,IAAI2pC,EAAkB3pC,EAAM0nC,EAAKE,uBACjC,GAAwB,OAApB+B,EAA0B,CAC1B,IAAIziC,EAAO4gC,GACP6B,EAAkB,IAGlBA,EAAkB3pC,EAAM0nC,EAAKE,wBAA0B+B,EAEvDziC,GAAO,GAEX0iC,GAAmBvsC,EAAO2C,EAAO0nC,EAAKlhI,OAAOmjI,GAAkBR,EAAoBjiC,IAa3F,YAA4B7J,EAAOqqC,EAAM1nC,EAAOv4J,GAE5C,MAAMihM,EAgDV,YAAsBmB,EAAeC,GACjC,IAAI1jL,EAAQyjL,EAAcE,MAAMhiM,QAAQ+hM,GACxC,IAAc,IAAV1jL,EACA,OAAQyjL,EAAcr6L,WACb,EAAgB,CACjB,MAAMw6L,EA5tBtB,YAAuBviM,EAAO8zI,GAC1B,MAAM0uD,EAASC,GAAoB3uD,EAApB2uD,CAA4BliG,SAASvgG,EAAO,KACrDoC,EAASw8L,GAAc4D,GAC7B,YAAmB/iM,IAAX2C,EAAwBA,EAAS,QAytBRsgM,CAAcL,EAhoBnD,cACI,OAAOjD,GA+nBsD3nD,IACjD94H,EAAQyjL,EAAcE,MAAMhiM,QAAQiiM,IACtB,IAAV5jL,GAAiC,UAAjB4jL,IAChB5jL,EAAQyjL,EAAcE,MAAMhiM,QAAQ,UAExC,WAEC,EACDqe,EAAQyjL,EAAcE,MAAMhiM,QAAQ,SAKhD,OAAiB,IAAVqe,EAAe,KAAOA,EAlEXgkL,CAAa1C,EAAMjgM,GAErC,GAAIkiM,GADyCjC,EAAM1nC,KAC3B0oC,IACpB2B,GAAyBhtC,EAAOqqC,EAAM1nC,GACtCA,EAAM0nC,EAAKE,uBAAuC,OAAdc,EAAqB,MAAQA,EAC/C,OAAdA,GAAoB,CAEpB,MAAM1B,EAAchnC,EAAM0nC,EAAKmB,WAC3B7B,GAEA4B,GAAoBvrC,EAAOqqC,EAAKroL,OAAOqpL,GAAY1oC,EAAOgnC,IAc1E,YAAkC3pC,EAAOqqC,EAAM1nC,GAC3C,IAAI2pC,EAAkBhB,GAAuBjB,EAAM1nC,GACnD,GAAwB,OAApB2pC,EAA0B,CAC1B,MAAMW,EAAc5C,EAAK3xK,OAAO4zK,GAChC,QAASv8L,EAAI,EAAGA,EAAIk9L,EAAYjmM,OAAQ+I,IAAK,CACzC,MAAMm9L,EAAiBD,EAAYl9L,GACnC,GAAIm9L,EAAiB,EAAG,CAEpB,MAAMn4B,EAAQ+Z,GAAiBoe,EAAgBvqC,GACrC,OAAVoS,GAAkBG,GAAiBvS,EAx2jBlC,IAw2jBmDoS,QAIpDi4B,GAAyBhtC,EAAOorC,GAAQprC,GAAQktC,GAAiBvqC,KAuCjF,cACI,MAAMwqC,EAAS,GACf,IACIjgC,EACAkgC,EAFAC,GAAS,EA2Bb,WAAkBhD,EAAM1nC,IACpB0qC,EAAS,EACT,MAAM/C,GAAcgB,GAAuBjB,EAAM1nC,IAG7CyqC,EAFgB,OAAhB9C,GAEWD,EAAK3xK,OAAO4xK,IAGZtsC,GAGnB,aACI,GAAIqvC,EAASD,EAASpmM,OAAQ,CAC1B,MAAMsmM,EAAeF,EAASC,KAE9B,OAAIC,EAAe,EACDpgC,EAAOogC,IAKrBH,EAAOxkM,KAAK0kM,EAAQD,GAKpBG,EAFargC,EAl9jBf,GAk9jB6BnjK,MADRujM,GAGJpgC,GACRsgC,KAIX,OAAsB,IAAlBL,EAAOnmM,OACA,MAGPomM,EAAWD,EAAO1jI,MAClB4jI,EAASF,EAAO1jI,MACT+jI,KAInB,OAjDA,WAAmCl5B,EAAmB3R,IAElD,IADAuK,EAASvK,GACFwqC,EAAOnmM,QACVmmM,EAAO1jI,MAEX8jI,SAASj5B,EAAkBlqK,MAAOu4J,IAC3B6qC,EA2CJC,CA+NX,MAAMC,GAAiB,2BAEjBC,GAAa,oBACbC,GAAmB,uDAEnBC,GAAqB,+BACrBC,GAAY,kCAQZC,GAAsB,UAmG5B,YAAiC/tC,EAAOguC,EAAWC,EAAgBtrC,EAAOurC,EAAexhJ,EAAMyhJ,GAC3F,MAAMC,EAAcjiB,GAAansB,EAAO2C,EAAO,EAAG,MAClD,IAAI0lB,GAAS+lB,GAAehF,GAAiBC,MACzC9kC,GAAc+gB,KACd0oB,IAAczpC,KAIdA,GAAc,MAEE,OAAhBA,KAKA8jB,IAAU+gB,GAAiBE,gBAE3B6E,IACA9lB,IAAU+gB,GAAiBG,QA/gcnC,YAAyC8E,QACRxkM,IAAzBwqK,KAGAA,GAAuBg6B,KA4gcvBC,CAAgCC,KAEpCL,EAAcvlM,KAAK0/K,GAAiB,OAAT37H,EAAgB,GAAKA,GAGhD,MAAM+0G,GAAQ4jB,GAAmBrlB,EAAOouC,EAAaD,EAAQ,GAAe,EAAuB,OAATzhJ,EAAuC,GAAMA,EAAM,MAC7I09I,GAAmC6D,EAAgBxsC,IACnD,MAAMw8B,GAAWx8B,GAAM14I,MACvBw8J,UAAgB9jB,IAAO,GACH,OAAhB8C,IAAwBypC,IAAczpC,IAt3B9C,YAAmC9C,EAAO14I,GAEtC,IAAI28J,EAAoBjkB,EAAMikB,kBACJ,OAAtBA,GACAykB,GAAgBjyB,GAAiCC,IACjDuN,EAAoBjkB,EAAMikB,kBACtB,CAAC,KAA2C38J,KA52kBxD,YAAqB6yI,EAAQC,EAAUF,GAC7BC,GAAUC,GACZ2yC,GAAW7yC,EAAKC,EAAQC,EAAU,MA62kBlC4yC,CAAY3iM,MAAM4E,QAAQg1K,IAAoB,EAAM,wBACpDA,EAAkB/8K,KAAKogB,IA+2BvB2lL,CAA0BnqC,GAAa05B,IAEpCx8B,GAqBX,YAAiDzB,EAAOguC,EAAWC,EAAgBC,EAAerC,EAAelpC,EAAOj2G,GACpH,MAAMiiJ,EAAajiJ,EAAKj+C,MAAMi/L,IACxBjsC,GAAQmtC,GAAwB5uC,EAAOguC,EAAWC,EAAgBtrC,EAAOurC,EAAeS,EAAa,KAAOjiJ,GAAM,GACpHiiJ,GACAE,GAA6BhD,EAAen/I,EAAM+0G,GAAM14I,MAAO,KAAM,EAAG,MA+ChF,YAAsC8iL,EAAe36L,EAAK49L,EAAiBtnC,EAAUunC,EAAc9C,GAG/F,MAAM+C,EAAYnD,EAAc7kM,OAC1BioM,EAAYD,EAAY,EAC9BnD,EAAcljM,KAAK,KAAM,MACzB,MAAMyG,GAAa4/L,EAAY,EAIzBE,GAAYh+L,EAAIoC,MAAMo6L,IAC5B,IAAI7jC,GAAO,EACX,QAAS/zI,GAAI,EAAGA,GAAIo5K,GAAUloM,OAAQ8uB,KAAK,CACvC,MAAMq5K,GAAYD,GAAUp5K,IAC5B,GAAQ,EAAJA,GAAO,CAEP,MAAMmuI,GAAe8qC,EAAepkG,SAASwkG,GAAW,IACxDtD,EAAcljM,MAAK,EAAKs7J,IACxB4F,IAAculC,GAAUnrC,QAEL,KAAdkrC,IAELtD,EAAcljM,KAAKwmM,IAG3BtD,SAAcljM,KAAKmmM,GAAmB,GACjCtnC,EAAW,EAAe,IAC3BA,GACAqkC,EAAcljM,KAAK6+J,EAAUykC,GAEjCJ,EAAcmD,GAAanlC,GAC3BgiC,EAAcoD,GAAapD,EAAc7kM,OAASoI,GAC3Cy6J,GAgCX,YAAmB5F,GACf,OAAO,GAAKlsJ,KAAKstF,IAAI4+D,EAAc,IAQvC,YAAwCrgG,GACpC,IAAIn1D,EAIA4gM,EAHA77F,EAAM,GACNzqF,EAAQ,EACRumL,GAAa,EAEjB,KAAsD,QAA9C7gM,EAAQo/L,GAAmB98L,KAAK6yD,KAC/B0rI,EAMG7gM,EAAM,KAAQ,WAAa4gM,YAC3BtmL,EAAQta,EAAMsa,MACdumL,GAAa,IAPjB97F,GAAO5vC,EAAQj5D,UAAUoe,EAAOta,EAAMsa,MAAQta,EAAM,GAAGzH,QACvDqoM,EAAa5gM,EAAM,GACnB6gM,GAAa,GAWrB97F,UAAO5vC,EAAQh5D,OAAOme,GACfyqF,EAqCX,YAAkBwsD,EAAO2C,EAAOkpC,EAAed,EAAWyB,EAAehB,GAErE,IAAI+D,EAAc,EAClB,MAAMlF,EAAO,CACTl4L,KAAMq6L,EAAcr6L,KACpBo4L,sBAAuBpe,GAAansB,EAAO2C,EAAO,EAAG,MACrD6oC,YACAkB,MAAO,GACP1qL,OAAQ,GACR0W,OAAQ,GACRywC,OAAQ,KAqOhB,YAA4BA,EAAQqjI,EAAezjL,GAC/CogD,EAAOxgE,KAAKymM,GAAU5C,EAAcgD,aAAc,GAAG,EAAKhD,EAAcgD,YAAazmL,GAAS,EAAoB,IApOlH0mL,CAAmB5D,EAAeW,EAAehB,GApmCrD,YAAiBxrC,EAAOj3I,EAAOshL,GAC3B,MAAM5oC,EAAQzB,EAAMj2J,KAAKgf,GAGX,OAAV04I,EACAzB,EAAMj2J,KAAKgf,GAASshL,EAIpB5oC,EAAMr3J,MAAQigM,EA4lClBqF,CAAQ1vC,EAAOwrC,EAAWnB,GAC1B,MAAMlzL,GAASq1L,EAAcr1L,OAC7B,QAASpH,GAAI,EAAGA,GAAIoH,GAAOnQ,OAAQ+I,KAAK,CAEpC,MAAM4/L,GAAWx4L,GAAOpH,IAClB6/L,GAAa,GACnB,QAAS95K,GAAI,EAAGA,GAAI65K,GAAS3oM,OAAQ8uB,KAAK,CACtC,MAAM1rB,GAAQulM,GAAS75K,IACvB,GAAqB,iBAAV1rB,GAAoB,CAE3B,MAAMylM,GAAWD,GAAWjnM,KAAKyB,IAAS,EAE1CulM,GAAS75K,IAAM,gBAAO+5K,kBAG9BN,EAAcO,GAAa9vC,EAAOqqC,EAAM1nC,EAAOkpC,EAAed,EAAWyB,EAAcE,MAAM38L,IAAI4/L,GAASl5I,KAAK,IAAKm5I,IAChHL,EAEJA,GAmNR,YAA4BpmI,EAAQomI,EAAaxmL,GAC7CogD,EAAOxgE,KAAK4mM,EAAa,EAAGxmL,GAAS,EAAoB,GAnNrDgnL,CAAmBlE,EAAe0D,EAAa/D,GAUvD,YAAuB5vG,GACnB,MAAM8wG,EAAQ,GACRv1L,EAAS,GACf,IAAI64L,EAAU,EACVR,EAAc,EAWlB,MAAMp7G,EAAQ67G,GAVdr0G,EAAUA,EAAQzqF,QAAQy8L,GAAkB,SAAU18L,EAAKg/L,EAAS/9L,IAChE,OACI69L,EADS,WAAT79L,GACU,EAGA,EAEdq9L,EAAc7kG,SAASulG,EAAQtlM,OAAO,GAAI,IACnC,MAIX,QAAS0mJ,EAAM,EAAGA,EAAMl9D,EAAMptF,QAAS,CACnC,IAAIkD,EAAMkqF,EAAMk9D,KAAOhtI,OACP,IAAZ0rL,IAEA9lM,EAAMA,EAAIiH,QAAQ,oBAAqB,OAEvCjH,EAAIlD,QACJ0lM,EAAM/jM,KAAKuB,GAEf,MAAMimM,GAASF,GAA6B77G,EAAMk9D,MAC9Co7C,EAAM1lM,OAASmQ,EAAOnQ,QACtBmQ,EAAOxO,KAAKwnM,IAIpB,MAAO,CAAEh+L,KAAM69L,EAASR,YAAaA,EAAa9C,QAAOv1L,UAY7D,YAAsCykF,GAClC,IAAKA,EACD,MAAO,GAEX,IAAIw0G,EAAU,EACd,MAAMC,EAAa,GACblvL,EAAU,GACVmvL,EAAS,QAGf,IAAI7hM,EACJ,IAFA6hM,EAAOt/L,UAAY,EAEZvC,EAAQ6hM,EAAOv/L,KAAK6qF,IAAU,CACjC,MAAM01D,EAAM7iJ,EAAMsa,MAClB,GAAgB,KAAZta,EAAM,IAEN,GADA4hM,EAAW5mI,MACc,GAArB4mI,EAAWrpM,OAAa,CAExB,MAAMu9C,GAAQq3C,EAAQjxF,UAAUylM,EAAS9+C,GACrCs8C,GAAiB9xG,KAAKv3C,IACtBpjC,EAAQxY,KAAK4nM,GAAchsJ,KAG3BpjC,EAAQxY,KAAK47C,IAEjB6rJ,EAAU9+C,EAAM,OAGnB,CACD,GAAyB,GAArB++C,EAAWrpM,OAAa,CACxB,MAAM2D,GAAYixF,EAAQjxF,UAAUylM,EAAS9+C,GAC7CnwI,EAAQxY,KAAKgC,IACbylM,EAAU9+C,EAAM,EAEpB++C,EAAW1nM,KAAK,MAGxB,MAAMgC,EAAYixF,EAAQjxF,UAAUylM,GACpCjvL,SAAQxY,KAAKgC,GACNwW,EAMX,YAAsB6+I,EAAOqqC,EAAM1nC,EAAOkpC,EAAed,EAAWyF,EAAUC,EAAgBb,GAC1F,MAAM5tL,GAAS,GACT0W,GAAS,GACTywC,GAAS,GAMfkhI,EAAKqC,MAAM/jM,KAAK6nM,GAChBnG,EAAKroL,OAAOrZ,KAAKqZ,IACjBqoL,EAAK3xK,OAAO/vB,KAAK+vB,IACjB2xK,EAAKlhI,OAAOxgE,KAAKwgE,IAEjB,MAAMwzG,GAAmBgD,GADkBjd,MACF4Z,oBAAoBm0B,GAEvDC,GAAgBxwB,GAAmBvD,KAAqBA,GAC9D,OAAI+zB,GACOC,GAAY3wC,EAAOqqC,EAAM1nC,EAAOkpC,EAAe7pL,GAAQ0W,GAAQywC,GAAQunI,GAAe3F,EAAW6E,EAAY,GAG7G,EAGf,YAAqB5vC,EAAOqqC,EAAM1nC,EAAOiuC,EAAqB5uL,EAAQ0W,EAAQywC,EAAQ79D,EAAYy/L,GAAW6E,GAAYpmI,IACrH,IAAI+lI,GAAc,EACdsB,GAAcvlM,EAAWu5J,WAC7B,KAAOgsC,IAAa,CAChB,MAAM7N,GAAW7W,GAAansB,EAAO2C,EAAO,EAAG,MAC/C,OAAQkuC,GAAY59L,eACXmqK,KAAKC,aACN,MAAMh2K,GAAUwpM,GACV9xB,GAAU13K,GAAQ03K,QAAQhtK,cAChC,GAAIisK,GAAejvK,eAAegwK,IAAU,CACxC+xB,GAAuB9uL,EAAQknL,GAAgBnqB,GAASgsB,GAAW/H,IACnEhjC,EAAMj2J,KAAKi5L,IAAYjkB,GACvB,MAAM/B,GAAU31K,GAAQ41K,WACxB,QAASltK,GAAI,EAAGA,GAAIitK,GAAQh2K,OAAQ+I,KAAK,CACrC,MAAM2zK,GAAO1G,GAAQhtK,KAAKD,IACpBghM,GAAgBrtB,GAAK1tK,KAAKjE,cACX2xK,GAAKt5K,MAAMqE,MAAMi/L,IAG9BvvB,GAAYpvK,eAAegiM,KAEvBlC,GAA6B1lI,EAAQu6G,GAAKt5K,MAAO44L,GAAUtf,GAAK1tK,KAAM,EADtEioK,GAAU8yB,IAC+DtzB,GAExEuzB,GAAiBD,IACuD5xB,GAGA,MAWjF8xB,GAAmBjvL,EAAQghL,GAAUtf,IAI7C6rB,GAAcoB,GAAY3wC,EAAOqqC,EAAM1nC,EAAOiuC,EAAqB5uL,EAAQ0W,EAAQywC,EAAQ0nI,GAAa7N,GAAU4M,GAAYpmI,GAAQ,GAClI+lI,GACJ2B,GAAcx4K,EAAQsqK,GAAUx5H,IAEpC,WACC4zG,KAAKsB,UACN,MAAMt0K,GAAQymM,GAAYr7B,aAAe,GACnCm5B,GAAavkM,GAAMqE,MAAMi/L,IAC/BoD,GAAuB9uL,EAAQ,KAAM2sL,GAAa,GAAKvkM,GAAO2gM,GAAW/H,IACzEkO,GAAcx4K,EAAQsqK,GAAUx5H,IAC5BmlI,KACAY,GACIV,GAA6B1lI,EAAQ/+D,GAAO44L,GAAU,KAAM,EAAG,MAAQuM,IAE/E,WACCnyB,KAAK+zB,aAEN,MAAMC,GAAczD,GAAW58L,KAAK8/L,GAAYr7B,aAAe,IAC/D,GAAI47B,GAAa,CACb,MACM5E,GAAgBoD,GADCjlG,SAASymG,GAAY,GAAI,KAGhDN,GAAuB9uL,EAAQmnL,GAAyD,GAAI4B,GAAW/H,IACvGqO,GAASrxC,EAAO2C,EAAOiuC,EAAqB7F,GAAWyB,GAAexJ,IACtEsO,GAAmB54K,EAAQsqK,GAAUx5H,KAIjDqnI,GAAcA,GAAYxwK,YAE9B,OAAOkvK,GAEX,YAAuB72K,EAAQ3P,EAAOygD,GACpB,IAAVA,GACA9wC,EAAO/vB,KAAKogB,GAGpB,YAA4B2P,EAAQ3P,EAAOygD,GACzB,IAAVA,IACA9wC,EAAO/vB,MAAMogB,GACb2P,EAAO/vB,KAAKogB,IASpB,YAAgC/G,EAAQ4lJ,EAAQl7G,EAAM6kJ,EAAmBC,GACtD,OAAX5pC,GACA5lJ,EAAOrZ,KAAKi/J,GAEhB5lJ,EAAOrZ,KAAK+jD,EAAM8kJ,EApxCtB,YAAyBnpB,EAAQ0iB,EAAWG,GAGxC,OAAO7iB,EAAS0iB,GAAa,GAAwBG,GAAU,EAixChCuG,CAAgB,EAAqBF,EAAmBC,IAE3F,YAA4BxvL,EAAQghL,EAAUtf,GAC1C1hK,EAAOrZ,KAAKq6L,GAAY,EAAoB,EAActf,EAAK1tK,KAAM0tK,EAAKt5K,OAW9E,MACMsnM,GAAqC,yBACrCC,GAAyB,qDACzBC,GAAqB,4CACrBC,GAA6B,kBAC7BC,GAAiB,qCACjBC,GAA2B,OAC3BC,GAAwB,aA0I9B,YAAqBjpL,EAAOkpL,EAAcC,GAAmB,GACzD,MAAMlyC,EAAQwkB,KACR7hB,EAAQsI,KACRwqB,EAh6lBY,GAg6lBoB1sK,EAEhC66C,EAAUgyH,GAAY51B,EAAMhB,OAAQizC,GACpC1tC,EAAc+gB,KAChBtlB,EAAM2I,iBA7tBd,YAAkC3I,EAAOmyC,EAAkBxvC,EAAO55I,EAAO66C,EAASsuI,GAC9E,MAAMlE,EAAY1oB,KACZ4oB,EAAgB,GAChBrC,GAAgB,GAChBuG,GAAqB,CAAC,IAK5BxuI,EAiSJ,YAAmCA,EAASsuI,GACxC,GA9CJ,YAA+BA,GAC3B,OAA4B,IAArBA,CAAqB,CA6CxBG,CAAsBH,GAEtB,OAAOI,GAA+B1uI,GAErC,CAED,MAAMtpC,EAAQspC,EAAQl5D,QAAS,IAAGwnM,WAA+B,EAAIA,EAAiBrrM,WAAWG,OAC3Fq4B,EAAMukC,EAAQqnD,OAAO,IAAIp6G,OAAQ,oBAAsBqhM,YAC7D,OAAOI,GAA+B1uI,EAAQj5D,UAAU2vB,EAAO+E,KA1SzDkzK,CAA0B3uI,EAASsuI,GAC7C,MAAMM,GA3BV,YAAqBpoM,GACjB,OAAOA,EAAM+G,QAAQ48L,GAAqB,KA0BzB0E,CAAY7uI,GAAStwD,MAAMw6L,IAC5C,QAAS/9L,GAAI,EAAGA,GAAIyiM,GAASxrM,OAAQ+I,KAAK,CACtC,IAAI3F,GAAQooM,GAASziM,IACrB,GAAgB,IAAP,EAAJA,IAAc,CAEf,MAAMqkF,GAAQ67G,GAA6B7lM,IAC3C,QAAS0rB,GAAI,EAAGA,GAAIs+D,GAAMptF,OAAQ8uB,KAAK,CACnC,IAAI4qH,GAAOtsD,GAAMt+D,IACjB,GAAgB,IAAP,EAAJA,IAAc,CAEf,MAAM42B,GAAOg0F,GAEA,KAATh0F,IACAgmJ,GAAwC1yC,EAAOguC,EAAWoE,GAAmB,GAAIlE,EAAerC,GAAelpC,EAAOj2G,QAGzH,CAED,MAAM8/I,GAAgB9rD,GAOtB,GAA6B,iBAAlB8rD,GACP,MAAM,IAAI9tJ,MAAO,sCAAqCklB,eAM1DytI,GAASrxC,EAAO2C,EAAOkpC,GAAesG,EAAkB3F,GAHnCmG,GAD6B3yC,EAAOguC,EAAWoE,GAAmB,GAAIzvC,EAAOurC,EAAyE,IAAI,GACxInlL,MAGgC6pL,OAI9E,CAGD,MAAMC,GAAoC,KAAxBzoM,GAAMmhH,WAAW,GAG7BxiG,IAFO3e,GAAMmhH,WAAWsnF,GAAY,EAAI,GAzvkBpC,GA2vkBoBppK,OAAOkhE,SAASvgG,GAAMO,UAAWkoM,GAAY,EAAI,KAC/E,GAAIA,GACAT,GAAmBvtI,QACnB0gH,GAAgBD,MAAyB,OAExC,CACD,MAAM7jB,GAAQqxC,GAAuB9yC,EAAOoyC,GAAmB,GAAIrpL,IACnEqpL,GAAmBxhL,QAAQ,IAC3B20J,GAAgB9jB,IAAO,KAInCzB,EAAMj2J,KAAKgf,GAAS,CAChB/G,OAAQksL,EACR/kI,OAAQ0iI,IA4pBRkH,CAAyB/yC,EAAuB,OAAhBuE,EAAuB,EAAIA,EAAYx7I,MAAO45I,EAAO8yB,EAAe7xH,EAASsuI,GAEjH,MAAMc,GAAQhzC,EAAMj2J,KAAK0rL,GAEnBnd,GAAcV,GAAmB5X,EADXuE,IAAgB5B,EA97lBjC,GA87lBiD,KAAO4B,EACA5B,IAz3CvE,YAA4BA,EAAOurC,EAAe51B,EAAa2yB,GAC3D,MAAMltK,EAAW4kI,EAlkjBJ,IAmkjBb,QAAS5yJ,EAAI,EAAGA,EAAIm+L,EAAclnM,OAAQ+I,IAAK,CAC3C,MAAMs4K,EAAS6lB,EAAcn+L,KACvB28C,EAAOwhJ,EAAcn+L,GACrBkjM,IAAa5qB,EAAS+gB,GAAiBG,WAAaH,GAAiBG,QACrE2J,IAAa7qB,EAAS+gB,GAAiBE,kBAAoBF,GAAiBE,eAC5EvgL,GAAQs/J,IAAW+gB,GAAiBC,MAC1C,IAAIt0B,GAAQpS,EAAM55I,IACJ,OAAVgsJ,KAGAA,GAAQpS,EAAM55I,IACVkqL,GAAYl1K,EAAS4B,cAAc+sB,GAAQ6oH,GAAex3I,EAAU2uB,IAExEwmJ,IAA6B,OAAhB56B,GACbrD,GAAmBl3I,EAAUu6I,EAAavD,GAAOk2B,GAAiB,KA+2C1EkI,CAAmBxwC,EAAOqwC,GAAMhxL,OAAQs2J,GAHhB/T,GAAmC,EAAnBA,EAAYpyJ,KAChDwwJ,EAAM4B,EAAYx7I,OAClB,MAEJqqL,IAAe,GAQnB,cACIA,IAAe,GA4BnB,YAAgBrqL,EAAOkpL,EAAcC,GACjCmB,GAAYtqL,EAAOkpL,EAAcC,GACjCoB,KA0BJ,YAAmBlpM,GAEfmpM,OAj+CJ,YAAoBC,GACZA,IACA/I,IAA2B,GAAK1yL,KAAKstF,IAAIqlG,GAAmB,KAEhEA,KA69CA6I,CAAW5e,GADG1pB,KACmB8pB,KAAoB3qL,IAC9CqpM,GAUX,YAAqB1qL,IAt+CrB,YAAmBi3I,EAAO2C,EAAO55I,GAC7B,GAAI2hL,GAAoB,EAAG,CAEvB,MAAMsI,EAAQhzC,EAAMj2J,KAAKgf,GAIzBwjL,GAAmBvsC,EAAO2C,EAFJ72J,MAAM4E,QAAQsiM,GAASA,EAAQA,EAAM7pI,OAChCu9H,KAAoBgE,GAAoB,EACCD,IAGxEA,GAAa,EACbC,GAAoB,EA49CpBgJ,CAAUlvB,KAAYvZ,KAAYliJ,EA//lBhB,GA+/lBwB4qL,CAsB9C,YAA2B/vI,EAASgwI,EAAe,IAC/C,OA9OJ,YAAyBhwI,EAASgwI,EAAe,IAW7C,IAAIpnM,EAASo3D,EACb,GAAI8tI,GAAmC51G,KAAKl4B,GAAU,CAClD,MAAMp1D,EAAU,GACVqlM,EAAmB,CA1CR,GA2CjBrnM,EAASA,EAAO2E,QAAQwgM,GAAwB,CAAC7/L,EAAGgiM,EAAKC,KACrD,MAAM1zB,GAAUyzB,GAAOC,EACjBC,GAAexlM,EAAQ6xK,KAAY,GAUzC,GATK2zB,GAAahtM,SACdq5K,GAAQ/sK,MAAM,KAAKzL,QAAS4iH,KACxB,MAAMh8G,GAAQg8G,GAAYh8G,MAAMujM,IAC1BiC,GAAaxlM,GAAQk8F,SAASl8F,GAAM,GAAI,IAjDzC,EAkDCylM,GAAqBnC,GAAyBj2G,KAAK2uB,IACzDupF,GAAarrM,KAAK,CAACsrM,GAAYC,GAAoBzpF,OAEvDj8G,EAAQ6xK,IAAW2zB,KAElBA,GAAahtM,OACd,MAAM,IAAI03C,MAAO,6CAA4C2hI,MAEjE,MAAM8zB,GAAoBN,EAAiBA,EAAiB7sM,OAAS,GACrE,IAAI68F,GAAM,EAEV,QAAS9zF,GAAI,EAAGA,GAAIikM,GAAahtM,OAAQ+I,KACrC,GAAIikM,GAAajkM,IAAG,KAAOokM,GAAmB,CAC1CtwG,GAAM9zF,GACN,MAIR,MAAOkkM,GAAYC,GAAoBzpF,IAAeupF,GAAanwG,IACnE,OAAIqwG,GACAL,EAAiBpqI,MAEZ0qI,KAAsBF,IAC3BJ,EAAiBlrM,KAAKsrM,IAG1BD,GAAazkM,OAAOs0F,GAAK,GAClB4mB,KAIf,OAAKviH,OAAOC,KAAKyrM,GAAc5sM,SAM/BwF,EAASA,EAAO2E,QAAQygM,GAAoB,CAACnjM,EAAO6rB,EAAOpwB,EAAKkqM,EAAOC,EAAMh1K,KAClEu0K,EAAa7kM,eAAe7E,GAAQ,GAAEowB,IAAQs5K,EAAa1pM,KAAOm1B,KAAQ5wB,GAKrFjC,EAASA,EAAO2E,QAAQ0gM,GAA4B,CAACpjM,EAAOvE,IACjD0pM,EAAa7kM,eAAe7E,GAAO0pM,EAAa1pM,GAAOuE,GAMlEjC,EAASA,EAAO2E,QAAQ2gM,GAAgB,CAACrjM,EAAOvE,KAC5C,GAAI0pM,EAAa7kM,eAAe7E,GAAM,CAClC,MAAMupJ,EAAOmgD,EAAa1pM,GAC1B,IAAKupJ,EAAKzsJ,OACN,MAAM,IAAI03C,MAAO,qCAAoCjwC,eAAmBvE,KAE5E,OAAOupJ,EAAK5uF,QAEhB,OAAOp2D,KAEJjC,EA4JA8nM,CAAgB1wI,EAASgwI,GAiDpC,YAAyB3jB,EAAUtkB,EAAc4oC,EAAuBz/B,EAAa/N,GAEjF,GADAkpB,EAAWziB,EAAkByiB,GACzBnkL,MAAM4E,QAAQu/K,GAId,QAASlgL,EAAI,EAAGA,EAAIkgL,EAASjpL,OAAQ+I,IACjCykM,GAAgBvkB,EAASlgL,GAAI47J,EAAc4oC,EAAuBz/B,EAAa/N,OAGlF,CACD,MAAM/G,EAAQwkB,KACR7hB,EAAQsI,KACd,IAAI3vJ,EAAQo2K,GAAezB,GAAYA,EAAWziB,EAAkByiB,EAAS5uJ,SACzEozK,GAAkB7iB,GAAkB3B,GACxC,MAAMxuB,GAAQuJ,KACR0pC,GAAqC,QAAxBjzC,GAAMiK,gBACnBK,GAAWtK,GAAM+D,eACjBsG,GAAwBrK,GAAMiK,iBAAmB,GACvD,GAAIgmB,GAAezB,KAAcA,EAAS9kL,MAAO,CAE7C,MAAM4C,GAAU,IAAIq+J,EAAoBqoC,GAAiB1tC,EAAgB4tC,IACnEC,GAAuBlqM,GAAQ4Q,EAAOqwJ,EAAc5E,EAAiB2tC,GAAaA,GAAa5oC,GAAuBC,KAC/F,IAAzB6oC,IACAjpB,GAAmBtC,GAA+B5nB,GAAOkB,GAAQ3C,EAAO1kJ,GACxEu5L,GAAgC70C,EAAOiwB,EAAUtkB,EAAa3kK,QAC9D2kK,EAAahjK,KAAK2S,GAClBmmJ,GAAM+D,iBACN/D,GAAMgE,eACFsB,IACAtF,GAAMiK,iBAAmB,SAE7B6oC,EAAsB5rM,KAAKoF,IAC3B40J,EAAMh6J,KAAKoF,MAGXwmM,EAAsBK,IAAwB7mM,GAC9C40J,EAAMiyC,IAAwB7mM,QAGjC,CAqBD,MAAM+mM,GAAgCpqM,GAAQ4Q,EAAOqwJ,EAAc+oC,GAAa5oC,GAAuBC,IACjGgpC,GAAoCrqM,GAAQ4Q,EAAOqwJ,EAAc+oC,GAAYA,GAAa5oC,IAC1FkpC,GAA4BF,IAAiC,GAC/DP,EAAsBO,IACpBG,GAAgCF,IAAqC,GACvER,EAAsBQ,IAC1B,GAAIhuC,IAAmBkuC,KAClBluC,IAAmBiuC,GAA2B,CAE/CrpB,GAAmBtC,GAA+B5nB,GAAOkB,GAAQ3C,EAAO1kJ,GACxE,MAAMvN,GAgItB,YAAsBgqL,EAAWhvK,EAAOg+I,EAAgB+N,EAAartJ,GACjE,MAAM1Z,EAAU,IAAIq+J,EAAoB2rB,EAAWhxB,EAAgB4tC,IACnE5mM,SAAQ5C,MAAQ,GAChB4C,EAAQgb,MAAQA,EAChBhb,EAAQmnM,mBAAqB,EAC7BC,GAAgBpnM,EAAS0Z,EAAGqtJ,IAAgB/N,GACrCh5J,EAtIqBqnM,CAAaruC,EAAiBsuC,GAAoCC,GAA+Bf,EAAsBvtM,OAAQ+/J,EAAgB+N,EAAa2/B,KACvK1tC,GAAkBkuC,KACnBV,EAAsBQ,IAAmCN,gBAAkB1mM,IAE/E8mM,GAAgC70C,EAAOiwB,EAAUtkB,EAAa3kK,OAAQ,GACtE2kK,EAAahjK,KAAK2S,GAClBmmJ,GAAM+D,iBACN/D,GAAMgE,eACFsB,IACAtF,GAAMiK,iBAAmB,SAE7B6oC,EAAsB5rM,KAAKoF,IAC3B40J,EAAMh6J,KAAKoF,SAMX8mM,GAAgC70C,EAAOiwB,EAAU6kB,IAAgC,EAAKA,GAClFC,GAHmBI,GAAgBZ,EAAsBxtC,EAAiBguC,GAC1ED,IAAgCL,IAAkB1tC,GAAkB+N,KAIvE/N,GAAkB+N,GAAemgC,IAClCV,EAAsBQ,IAAmCG,uBAazE,YAAyCl1C,EAAOiwB,EAAUslB,EAAcC,GACpE,MAAMC,EAAyB/jB,GAAezB,GACxCylB,EAh8RV,YAAyBtrM,GACrB,QAASA,EAAMk3B,SA+7RiBq0K,CAAgB1lB,GAChD,GAAIwlB,GAA0BC,EAAyB,CAInD,MAAMz0K,IAFay0K,EAA0BloC,EAAkByiB,EAAS3uJ,UAAY2uJ,GACvDvwF,UACCz+D,YAC9B,GAAIA,GAAa,CACb,MAAMugF,GAAQw+C,EAAMmG,eAAiBnG,EAAMmG,aAAe,IAC1D,IAAKsvC,GAA0BxlB,EAAS9kL,MAAO,CAG3C,MAAMyqM,GAAyBp0F,GAAM92G,QAAQ6qM,IACd,IAA3BK,GACAp0F,GAAM74G,KAAK4sM,EAAc,CAACC,EAAgBv0K,KAG1CugF,GAAMo0F,GAAyB,GAAGjtM,KAAK6sM,EAAgBv0K,SAI3DugF,GAAM74G,KAAK4sM,EAAct0K,MASzC,YAAyBm0K,EAAcrnM,EAAS8nM,GAC5C,OAAIA,GACAT,EAAaF,qBAEVE,EAAajqM,MAAMxC,KAAKoF,GAAW,EAK9C,YAAiBiC,EAAMyB,EAAKstB,EAAOM,GAC/B,QAAStvB,EAAIgvB,EAAOhvB,EAAIsvB,EAAKtvB,IACzB,GAAI0B,EAAI1B,KAAOC,EACX,OAAOD,EAEf,OAAO,EAKX,YAAuCqB,EAAG+6J,EAAO2pC,EAAOr0C,GACpD,OAAOs0C,GAAa9gM,KAAK9J,MAAO,IAOpC,YAA2CiG,EAAG+6J,EAAOxJ,EAAOlB,GACxD,MAAMu0C,EAAY/gM,KAAK9J,MACvB,IAAIqB,EACJ,GAAIyI,KAAKw/L,gBAAiB,CACtB,MAAMwB,EAAiBhhM,KAAKw/L,gBAAgBS,mBACtCgB,EAAiB5qC,GAAkB3I,EAAOA,EA3wmB1C,GA2wmBwD1tJ,KAAKw/L,gBAAgB1rL,MAAO04I,GAE1Fj1J,EAAS0pM,EAAe70L,MAAM,EAAG40L,GAEjCF,GAAaC,EAAWxpM,GAExB,QAASuD,GAAIkmM,EAAgBlmM,GAAImmM,EAAelvM,OAAQ+I,KACpDvD,EAAO7D,KAAKutM,EAAenmM,UAI/BvD,EAAS,GAETupM,GAAaC,EAAWxpM,GAE5B,OAAOA,EAKX,YAAsBwpM,EAAWxpM,GAC7B,QAASuD,EAAI,EAAGA,EAAIimM,EAAUhvM,OAAQ+I,IAElCvD,EAAO7D,MAAKoF,EADIioM,EAAUjmM,OAG9B,OAAOvD,EA8CX,YAA4Bg2B,EAAW2zK,EAAgB,IACnD,OAAQzkG,IACJA,EAAWmtD,kBACP,CAAC1oJ,EAAKigM,IAhQlB,YAA2BjgM,EAAKqsB,EAAW2zK,GACvC,MAAMn2C,EAAQwkB,KACd,GAAIxkB,EAAM2I,gBAAiB,CACvB,MAAMmM,EAAc5I,GAAe/1J,GAEnCq+L,GAAgB2B,EAAen2C,EAAMj2J,KAAMi2J,EAAM8I,UAAWgM,GAAa,GAEzE0/B,GAAgBhyK,EAAWw9H,EAAMj2J,KAAMi2J,EAAM8I,UAAWgM,GAAa,IA0PtDjW,CAAkB1oJ,EACzBigM,EAAqBA,EAAmB5zK,GAAaA,EACrD2zK,IAiChB,UAmBA,SACIE,wBAAwB7tK,GACpB,MAXR,YAAiCA,GAC7B,MAAMvC,EAAQyY,MAAO,kCAAiCge,EAAUl0B,oDAChEvC,SAAMqwK,YAAmB9tK,EAClBvC,EAQGswK,CAAwB/tK,QAkBhCguK,SAAN,gBAEAA,EAA2B1jB,KAAwB,IAAI2jB,GAFjDD,MAgBN,cACI,OAAOE,GAAiB1rC,KAAmBC,MAS/C,YAA0BxJ,EAAOkB,GAC7B,OAAO,IAAIg0C,GAAW9+B,GAAiBpW,EAAOkB,QAiB5Cg0C,SAAN,QACI5hM,YAAYqvC,GACRnvC,KAAKmvC,cAAgBA,GAO7BuyJ,SAAWn4C,kBAAoBo4C,GATzBD,MAgBN,YAA0BvsM,GACtB,OAAOA,aAAiBusM,GAAavsM,EAAMg6C,cAAgBh6C,EAgB/D,cAiBMysM,SAAN,SAMAA,SAAUr4C,kBAAoB,IAU9B,cAGI,MAAMmE,EAAQsI,KAER6rC,EAActtB,GADNxe,KACqCjiJ,MAAO45I,GAC1D,OAdJ,YAA8BA,GAK1B,OAJiBA,EA7/mBJ,GA6/mBUo0C,CAahBC,CAAqBh0C,GAAQ8zC,GAAeA,EAAcn0C,GAhBjCs0C,GAN9BJ,MAqCAK,SAAN,gBAGAA,EAAUrpM,WAAQkhK,GAAmB,CACjCzzJ,MAAO47L,EACP79D,WAAY,OACZtrI,QAAS,IAAM,OANbmpM,MAqBN,SACIniM,YAAYoiM,GACRliM,KAAKkiM,KAAOA,EACZliM,KAAKmiM,MAAQD,EAAK7jM,MAAM,KAAK,GAC7B2B,KAAKoiM,MAAQF,EAAK7jM,MAAM,KAAK,GAC7B2B,KAAK0xC,MAAQwwJ,EAAK7jM,MAAM,KAAK+N,MAAM,GAAGo1C,KAAK,MAMnD,MAAM6gJ,GAAU,IAAIC,GAAQ,UA0BtBC,GAAwC,GAS9C,YAA4Bx3C,EAAO2C,EAAOlB,EAAOj1J,EAAQotK,GAAe,GACpE,KAAiB,OAAVnY,GAAgB,CAGnB,MAAMg2C,EAAQ90C,EAAMlB,EAAM14I,OAO1B,GANc,OAAV0uL,GACAjrM,EAAO7D,KAAKi6J,GAAY60C,IAKxBljC,GAAakjC,GACb,QAAS1nM,EAlonBW,GAkonBkBA,EAAI0nM,EAAMzwM,OAAQ+I,IAAK,CACzD,MAAM2nM,GAAoBD,EAAM1nM,GAC1B4nM,GAAuBD,GApnnB/B,GAonnBwD7yC,WACzB,OAAzB8yC,IACAC,GAAmBF,GAtnnBzB,GAsnnBmDA,GAAmBC,GAAsBnrM,GAIlG,MAAMmsK,EAAYlX,EAAMtvJ,KACxB,GAAgB,EAAZwmK,EACAi/B,GAAmB53C,EAAO2C,EAAOlB,EAAMuD,MAAOx4J,WAE7B,GAAZmsK,EAA0B,CAC/B,MAAMqB,EAAYC,GAAoBxY,EAAOkB,GAC7C,IAAIoS,GACJ,KAAOA,GAAQiF,KACXxtK,EAAO7D,KAAKosK,YAGC,GAAZ4D,EAAiC,CACtC,MAAMk/B,EAAc5+B,GAAmBtW,EAAOlB,GAC9C,GAAI31J,MAAM4E,QAAQmnM,GACdrrM,EAAO7D,QAAQkvM,OAEd,CACD,MAAMvvC,GAAa4Q,GAAevW,EA3nnBf,KA6nnBnBi1C,GAAmBtvC,GA7onBrB,GA6onBwCA,GAAYuvC,EAAarrM,GAAQ,IAG/Ei1J,EAAQmY,EAAenY,EAAM0Y,eAAiB1Y,EAAM/vJ,KAExD,OAAOlF,EAUX,SACIuI,YAYAm4J,EAOA4qC,GACI7iM,KAAKi4J,OAASA,EACdj4J,KAAK6iM,oBAAsBA,EAC3B7iM,KAAK8iM,QAAU,KACf9iM,KAAK+iM,0BAA2B,EAEhCC,gBACA,MAAMt1C,EAAQ1tJ,KAAKi4J,OACblN,EAAQ2C,EAxrnBR,GAyrnBN,OAAOi1C,GAAmB53C,EAAO2C,EAAO3C,EAAM6E,WAAY,IAE1D3yJ,cACA,OAAO+C,KAAKi4J,OArrnBJ,EAqrnBWvJ,CAEnBzxJ,YAAQ9H,GACR6K,KAAKi4J,OAxrnBG,GAwrnBe9iK,EAEvB4kB,gBACA,OAAsD,MAAzB,IAArB/Z,KAAKi4J,OAjsnBP,GAisnBgD,CAE1DrkJ,UACI,GAAI5T,KAAK8iM,QACL9iM,KAAK8iM,QAAQnhC,WAAW3hK,cAEnBA,KAAK+iM,yBAA0B,CACpC,MAAM3sM,EAAS4J,KAAKi4J,OAvsnBjB,GAwsnBH,GAAIqH,GAAalpK,GAAS,CACtB,MAAM6sM,EAAW7sM,EAnunBf,GAounBI0d,EAAQmvL,EAAWA,EAASxtM,QAAQuK,OAAQ,EAC9C8T,GAAQ,IAGR6tJ,GAAWvrK,EAAQ0d,GACnB0tJ,GAAgByhC,EAAUnvL,IAGlC9T,KAAK+iM,0BAA2B,EAEpCG,GAAaljM,KAAKi4J,OAttnBZ,GAstnB2Bj4J,KAAKi4J,QAE1C7jK,UAAUJ,GACNmvM,GAAwBnjM,KAAKi4J,OAztnBvB,GAytnBsCj4J,KAAKi4J,OAAQ,KAAMjkK,GAiCnE0kJ,eACIkxC,GAAc5pL,KAAK6iM,qBAAuB7iM,KAAKi4J,QAuDnDmrC,SACIpjM,KAAKi4J,OAlznBC,KAkznBgB,IA0D1BorC,WACIrjM,KAAKi4J,OA72nBC,IA62nBgB,IAuB1BqrC,iBAp2UJ,YAA+Bv4C,EAAO2C,EAAOzwJ,GACzC,MAAMizK,EAAkBxiB,EAzhTH,IA0hTjBwiB,EAAgBpmJ,OAChBomJ,EAAgBpmJ,QACpB,IACImpJ,GAAYloB,EAAO2C,EAAO3C,EAAMjB,SAAU7sJ,EAQtBmtB,CARsBntB,MAEvC+zB,GACHq8E,SAAYqgD,EAAO18H,GACbA,UAGFk/I,EAAgB9lJ,KAChB8lJ,EAAgB9lJ,OAw1UpBm5K,CAAsBvjM,KAAKi4J,OAt4nBrB,GAs4nBoCj4J,KAAKi4J,OAAQj4J,KAAK/C,SAQhEumM,iBAAiB,CAKjBC,2BACI,GAAIzjM,KAAK8iM,QAEL,MAAM,IAAIt8C,GAAa,IAD4E,IAGvGxmJ,KAAK+iM,0BAA2B,EAEpCW,mBACI1jM,KAAK8iM,QAAU,KA/4evB,WAA0B/3C,EAAO2C,GAC7B0S,GAAUrV,EAAO2C,EAAOA,EAngJX,IAmgJ4B,EAAgB,KAAM,MA+4e3Di2C,CAAiB3jM,KAAKi4J,OA55nBhB,GA45nB+Bj4J,KAAKi4J,QAE9C2rC,eAAeC,GACX,GAAI7jM,KAAK+iM,yBAEL,MAAM,IAAIv8C,GAAa,IADgE,IAG3FxmJ,KAAK8iM,QAAUe,GAIvB,iBAA0BC,GACtBhkM,YAAYy6B,GACRjsB,MAAMisB,GACNv6B,KAAKu6B,MAAQA,EAEjB+oK,gBACIS,GAAwB/jM,KAAKu6B,OAEjCipK,iBAAiB,CAKbvmM,cACA,OAAO,MAWf,iBAAuCskM,GAInCzhM,YAAYwtB,GACRhf,QACAtO,KAAKstB,SAAWA,EAEpB8zK,wBAAwB7tK,GAEpB,MAAMywK,EAAex4C,GAAgBj4H,GACrC,OAAO,IAAI0wK,GAAiBD,EAAchkM,KAAKstB,WAGvD,YAAoBt4B,GAChB,MAAM05F,EAAQ,GACd,QAASw1G,KAAelvM,EAChBA,EAAI8E,eAAeoqM,IAEnBx1G,EAAMh7F,KAAK,CAAEylK,SADInkK,EAAIkvM,GACYC,aAAcD,IAGvD,OAAOx1G,EA0BX,iBAA+B01G,GAK3BtkM,YAAYkkM,EAAc12K,GACtBhf,QACAtO,KAAKgkM,aAAeA,EACpBhkM,KAAKstB,SAAWA,EAChBttB,KAAKqkM,cAAgBL,EAAa9mM,KAClC8C,KAAK/J,SAp9Zb,YAAkCquM,GAC9B,OAAOA,EAAatvM,IAAIuvM,IAAsB/iJ,KAAK,KAm9Z/BgjJ,CAAyBR,EAAa51K,WACtDpuB,KAAKgqJ,mBACDg6C,EAAah6C,mBAAqBg6C,EAAah6C,mBAAqB,GACxEhqJ,KAAKykM,kBAAoBn3K,EAEzB8yG,aACA,OAAOskE,GAAW1kM,KAAKgkM,aAAa5jE,QAEpCiqB,cACA,OAAOq6C,GAAW1kM,KAAKgkM,aAAa35C,SAExCt9I,OAAOyhB,EAAUm2K,EAAkBC,EAAoBt3K,GAEnD,MAAMu3K,GADNv3K,EAAWA,GAAYttB,KAAKstB,UA1CpC,YAA+Bu3K,EAAkB/vC,GAC7C,MAAO,CACHz/J,IAAK,CAACgR,EAAOyhJ,EAAet8H,KACxB,MAAMr2B,EAAQ0vM,EAAiBxvM,IAAIgR,EAAOk8L,GAAuC/2K,GACjF,OAAIr2B,IAAUotM,IACVz6C,IAAkBy6C,GAMXptM,EAEJ2/J,EAAez/J,IAAIgR,EAAOyhJ,EAAet8H,KA8BhBs5K,CAAsBt2K,EAAUlB,EAASkB,UAAYA,EACnF0hJ,EAAkB20B,EAAiBxvM,IAAIo3B,GAAkB8gI,IACzD9qF,EAAYoiI,EAAiBxvM,IAAI4sM,GAAW,MAC5C8C,GAAe70B,EAAgBjoJ,eAAe,KAAMjoB,KAAKgkM,cAGzDgB,GAAchlM,KAAKgkM,aAAa51K,UAAU,GAAG,IAAM,MACnD62K,GAAYL,EAhgX1B,YAA2B97K,EAAUo8K,EAAmBh9K,GACpD,GAAImqI,GAAqBvpI,GAGrB,OAAOA,EAASmC,kBAAkBi6K,EADVh9K,IAAkBkgI,GAAoBG,WAGlE,IAAI48C,EAAwC,iBAAtBD,EAClBp8K,EAAS7xB,cAAciuM,GACvBA,EAMJC,SAAS5kC,YAAc,GAChB4kC,EAk/WCC,CAAkBL,GAAcH,EAAoB5kM,KAAKgkM,aAAa97K,eACtE4+J,EAAkB5W,EAAgBjoJ,eAAe,KAAMjoB,KAAKgkM,cAAegB,GAxDvF,YAAsBA,GAClB,MAAMjkM,EAAOikM,EAAYloM,cACzB,MAAgB,QAATiE,EA/lnBW,MA+lnBgC,SAATA,EA7lnBnB,OA6lnByD,KAsDiBskM,CAAaL,KACnGM,GAAYtlM,KAAKgkM,aAAaz5C,OAAS,IACzC,IACE8uB,GAxkSd,YAA2BzhD,EAAW2tE,GAClC,MAAO,CACHtzB,WAAY,GACZr6C,UAAWA,GAAam1C,GACxBy4B,MAAO7rB,GACP4rB,cAAeA,GAAiB,KAChC/5K,MAAO,GAkkSai6K,GAEdC,GAAY1wB,GAAY,EAAc,KAAM,KAAM,EAAG,EAAG,KAAM,KAAM,KAAM,KAAM,MAChF2wB,GAAY/sB,GAAY,KAAM8sB,GAAWrsB,GAAaisB,GAAW,KAAM,KAAMp1B,EAAiB60B,GAActiI,EAAWoiI,GAO7H,IAAItxK,GACAqyK,GAFJl0B,GAAUi0B,IAGV,IACI,MAAMzhC,GAnpSlB,YAAiCpE,EAAO5+J,EAAK0gK,EAAUsO,EAAiB60B,EAActiI,GAClF,MAAMsoF,EAAQ6W,EA94VJ,GAi5VVA,EAt3VkB,IAs3VA9B,EAIlB,MAAMtT,GAAQk0B,GAAiB31B,EA13Vb,GA03V2B,EAAiB,QAAS,MACjE6lB,GAAcpkB,GAAMokB,YAAc1vK,EAAIipJ,UACxB,OAAhBymB,KACAoW,GAAqBx6B,GAAOokB,IAAa,GAC3B,OAAV9Q,IACAqnB,GAAgB4d,EAAcjlC,EAAO8Q,IACf,OAAlBpkB,GAAMkM,SACN0uB,GAAiB2d,EAAcjlC,EAAOtT,GAAMkM,SAE3B,OAAjBlM,GAAM9xJ,QACN2sL,GAAiB0d,EAAcjlC,EAAOtT,GAAM9xJ,UAIxD,MAAMmrM,GAAe31B,EAAgBjoJ,eAAe63I,EAAO5+J,GACrDgjK,GAAgB0U,GAAYhX,EAAU8W,GAA0Bx3K,GAAM,KAAMA,EAAIqpJ,OAAS,GAAiB,GAAsBqX,EAz4VpH,IAy4VqIpV,GAAO0jB,EAAiB21B,GAAcpjI,GAAa,KAAM,MAChN,OAAIsoF,EAAM2I,kBACNgjB,GAAmBtC,GAA+B5nB,GAAOoV,GAAW7W,EAAO7pJ,EAAIhE,MAC/E05K,GAAoB7rB,EAAOyB,IAC3BuqB,GAAevqB,GAAOoV,EAAS7vK,OAAQ,IAE3C4mL,GAAc/W,EAAUsC,IAEjBtC,EAj5VW,IAi5VOsC,GAonSK4hC,CAAwBb,GAAWjlM,KAAKgkM,aAAc2B,GAAWz1B,EAAiB60B,IACxG,GAAIE,GACA,GAAIL,EACAzd,GAAgB4d,GAAcE,GAAW,CAAC,aAAc5C,GAAQH,WAE/D,CAID,MAAQ/vC,SAAOuG,YAt/ZnC,YAA4CziK,GACxC,MAAMk8J,EAAQ,GACRuG,EAAU,GAChB,IAAI59J,EAAI,EACJ89F,EAAO,EACX,KAAO99F,EAAI7E,EAASlE,QAAQ,CACxB,IAAIk9K,EAAgBh5K,EAAS6E,GAC7B,GAA6B,iBAAlBm0K,EACM,IAATr2E,EACsB,KAAlBq2E,GACA9c,EAAMz+J,KAAKu7K,EAAeh5K,IAAW6E,IAG3B,IAAT89F,GACL8/D,EAAQhlK,KAAKu7K,OAGhB,CAID,IAAKlB,GAAWn1E,GACZ,MACJA,EAAOq2E,EAEXn0K,IAEJ,MAAO,CAAEq3J,QAAOuG,WA29Z2BqtC,CAAmC/lM,KAAKgkM,aAAa51K,UAAU,IACtF+jI,IACAg1B,GAAgB4d,GAAcE,GAAW9yC,IAEzCuG,IAAWA,GAAQ3mK,OAAS,GAC5Bq1L,GAAiB2d,GAAcE,GAAWvsC,GAAQl3G,KAAK,MAKnE,GADAokJ,GAAet1C,GAASo1C,GAvhoBd,SAwhoBe9wM,IAArB+vM,EAAgC,CAChC,MAAMxgC,GAAayhC,GAAazhC,WAAa,GAC7C,QAASrpK,GAAI,EAAGA,GAAIkF,KAAKgqJ,mBAAmBj4J,OAAQ+I,KAAK,CACrD,MAAMkrM,GAAerB,EAAiB7pM,IAMtCqpK,GAAWzwK,KAAqB,MAAhBsyM,GAAuBnvM,MAAMC,KAAKkvM,IAAgB,OAM1EzyK,GAhpSZ,YAA6B2wI,EAAe8/B,EAAc2B,EAAWtsB,EAAa4sB,GAC9E,MAAMl7C,EAAQ46C,EAn7VJ,GAq7VJpyK,EAlkEV,YAAkCw3H,EAAO2C,EAAOxsJ,GAC5C,MAAM63L,EAAYhjC,KACdhL,EAAM2I,kBACFxyJ,EAAI0oJ,mBACJ1oJ,EAAI0oJ,kBAAkB1oJ,GAI1Bk2K,GAA2BrsB,EAAOguC,EAAWrrC,EAHtBwpB,GAAansB,EAAO2C,EAAO,EAAG,MAGexsJ,IAExE,MAAMywJ,EAAY0E,GAAkB3I,EAAO3C,EAAOguC,EAAUxoC,eAAgBwoC,GAC5El0B,GAAgBlT,EAAWjE,GAC3B,MAAMloD,EAASo9D,GAAiBm2B,EAAWrrC,GAC3C,OAAIloD,GACAq/D,GAAgBr/D,EAAQkoD,GAErBiE,EAkjEWu0C,CAAyBn7C,EAAO46C,EAAW3B,GAM7D,GALA3qB,EAAYpH,WAAWv+K,KAAK6/B,GAC5B2wI,EAh7VY,GAg7Va3wI,EACzB0yK,GAAgBA,EAAarzM,QAASs4J,IAAYA,GAAQ33H,EAAWywK,IAGjEA,EAAa55C,eAAgB,CAC7B,MAAMoC,GAAQuJ,KAEdiuC,EAAa55C,eAAe,EAAgB72H,EAAWi5H,GAAM+D,gBAEjE,MAAMwoC,EAAYhjC,KASlB,OAPIhL,EAAM2I,iBACyB,OAA9BswC,EAAa/5C,cAAoD,OAA3B+5C,EAAa75C,YACpDylB,GAAiBmpB,EAAUjlL,OAE3B2kK,GADkBktB,EAr8VZ,GAs8VgC5M,EAAW4M,EAAW5M,EAAUxoC,eAAgBwoC,EAAUvoC,aAAcwzC,GAC9GpvB,GAAiCovB,EAAczwK,IAE5CA,EAynSa4yK,CAAoBjiC,GAAelkK,KAAKgkM,aAAc2B,GAAWtsB,GAAa,CAAC+sB,KAC3FryB,GAAW2xB,GAAWC,GAAW,KAGjCtzB,CAHiC,QAGjCA,KAEJ,OAAO,IAAIg0B,GAAarmM,KAAKqkM,cAAe9wK,GAAWkuK,GAAiBmE,GAAcD,IAAYA,GAAWC,KAsBrH,iBAnvBA,WAovBI9lM,YAAYukM,EAAetiE,EAAU/uG,EAAUszK,EAAYtuC,GACvD1pJ,QACAtO,KAAKgzB,SAAWA,EAChBhzB,KAAKsmM,WAAaA,EAClBtmM,KAAKg4J,OAASA,EACdh4J,KAAK+hI,SAAWA,EAChB/hI,KAAK6tJ,SAAW7tJ,KAAKumM,kBAAoB,IAAIC,GAAYF,GACzDtmM,KAAKqkM,cAAgBA,EAErB71K,eACA,OAAO,IAAIsnI,GAAa91J,KAAKg4J,OAAQh4J,KAAKsmM,YAE9C1yL,UACI5T,KAAK6tJ,SAASj6I,UAElBxf,UAAUJ,GACNgM,KAAK6tJ,SAASz5J,UAAUJ,IAiEhC,UAaA,UAeA,MAAMyyM,GAAU,IAAIrxM,IA6DpB,iBAA0BsxM,GACtB5mM,YAAY08K,EAAckI,GACtBp2K,QACAtO,KAAK0kL,QAAUA,EAEf1kL,KAAK2mM,qBAAuB,GAC5B3mM,KAAKwuB,SAAWxuB,KAChBA,KAAK4mM,WAAa,GAOlB5mM,KAAK6mM,yBAA2B,IAAIC,GAAyB9mM,MAC7D,MAAMusJ,EAAcw6C,GAAevqB,GAGnCx8K,KAAK2mM,qBAAuBK,GAAcz6C,EAAYz8H,WACtD9vB,KAAKinM,YAAcxsB,GAAuC+B,EAAckI,EAAS,CAC7E,CAAEt4J,QAASs6K,GAAe15K,SAAUhtB,MAAQ,CACxCosB,QAASm1K,GACTv0K,SAAUhtB,KAAK6mM,2BAEpBp/I,EAAU+0H,IAIbx8K,KAAKinM,YAAYvsB,2BACjB16K,KAAK+hI,SAAW/hI,KAAK3K,IAAImnL,GAE7BnnL,IAAIgR,EAAOyhJ,EAAgB61B,GAAShgB,mBAAoBupC,EAAc5/C,GAAYhgH,SAC9E,OAAIjhC,IAAUs3K,IAAYt3K,IAAUqgM,IAAiBrgM,IAAU4zK,GACpDj6K,KAEJA,KAAKinM,YAAY5xM,IAAIgR,EAAOyhJ,EAAeo/C,GAEtDtzL,UAEI,MAAM4a,EAAWxuB,KAAKinM,aACrBz4K,EAASzU,WAAayU,EAAS5a,UAChC5T,KAAK4mM,WAAWh0M,QAAQwd,GAAMA,KAC9BpQ,KAAK4mM,WAAa,KAEtBxyM,UAAUJ,GAENgM,KAAK4mM,WAAWlzM,KAAKM,IAG7B,iBAA8BmzM,GAC1BrnM,YAAYsnM,GACR94L,QACAtO,KAAKonM,WAAaA,EAEE,OAAhB76C,GAD+B66C,IAnG3C,YAA8B5qB,GAC1B,MAAM6qB,EAAU,IAAIroM,KAEpB,WAAiBw9K,GAGb,MAAMt7K,EAAM6lM,GAAevqB,GAAkC,GACvDvpK,EAAK/R,EAAI+R,GACJ,OAAPA,IAbZ,YAAiCA,EAAI/V,EAAMoqM,GACvC,GAAIpqM,GAAQA,IAASoqM,EACjB,MAAM,IAAI79J,MAAO,mCAAkCx2B,OAAQw0C,EAAUvqD,SAAYuqD,EAAUvqD,EAAK6D,SAa5FwmM,CAAwBt0L,EADPwzL,GAAQpxM,IAAI4d,GACSupK,GACtCiqB,GAAQnxM,IAAI2d,EAAIupK,IAEpB,MAAM9uJ,EAAUs5K,GAAc9lM,EAAIwsB,SAClC,UAAW5yB,KAAK4yB,EACP25K,EAAQhoM,IAAIvE,KACbusM,EAAQrlM,IAAIlH,GACZ0sM,EAAQ1sM,IAfpB0sM,CAAQhrB,EAeY1hL,CA2GZ2sM,CAAqBL,GAG7Br6L,OAAO26L,GACH,OAAO,IAAIC,GAAY3nM,KAAKonM,WAAYM,IA0DhD,YAAyBE,EAAYC,EAAQt2M,EAAKykI,GAC9C,OAAO8xE,GAAsB9xC,KAAY+xC,KAAkBH,EAAYC,EAAQt2M,EAAKykI,GAexF,YAAyB4xE,EAAYC,EAAQtoB,EAAMC,EAAMxpD,GACrD,OAAOgyE,GAAsBhyC,KAAY+xC,KAAkBH,EAAYC,EAAQtoB,EAAMC,EAAMxpD,GAgB/F,YAAyB4xE,EAAYC,EAAQtoB,EAAMC,EAAMG,EAAM3pD,GAC3D,OAAOiyE,GAAsBjyC,KAAY+xC,KAAkBH,EAAYC,EAAQtoB,EAAMC,EAAMG,EAAM3pD,GAiBrG,YAAyB4xE,EAAYC,EAAQtoB,EAAMC,EAAMG,EAAMC,EAAM5pD,GACjE,OAmNJ,YAA+B03B,EAAOw6C,EAAaN,EAAYC,EAAQtoB,EAAMC,EAAMG,EAAMC,EAAM5pD,IAC3F,MAAMg5B,GAAek5C,EAAcN,EACnC,OAAO/V,GAAgBnkC,EAAOsB,GAAcuwB,EAAMC,EAAMG,EAAMC,GAC1DuoB,GAAcz6C,EAAOsB,GAAe,EAAGh5B,GAAU6xE,EAAOh2M,KAAKmkI,GAASupD,EAAMC,EAAMG,EAAMC,GAAQioB,EAAOtoB,EAAMC,EAAMG,EAAMC,IACzHwoB,GAA2B16C,EAAOsB,GAAe,GAvN9Cq5C,CAAsBryC,KAAY+xC,KAAkBH,EAAYC,EAAQtoB,EAAMC,EAAMG,EAAMC,EAAM5pD,GAqI3G,YAAoC03B,EAAO46C,GAEvC,MAAMC,EAAkB76C,EAAM46C,GAC9B,OAAOC,IAAoBn5B,QAAYx6K,EAAY2zM,EAcvD,YAA+B76C,EAAOw6C,EAAaN,EAAYC,EAAQt2M,EAAKykI,GACxE,MAAMg5B,EAAek5C,EAAcN,EACnC,OAAOloB,GAAehyB,EAAOsB,EAAcz9J,GACvC42M,GAAcz6C,EAAOsB,EAAe,EAAGh5B,EAAU6xE,EAAOh2M,KAAKmkI,EAASzkI,GAAOs2M,EAAOt2M,IACpF62M,GAA2B16C,EAAOsB,EAAe,GAezD,YAA+BtB,EAAOw6C,EAAaN,EAAYC,EAAQtoB,EAAMC,EAAMxpD,GAC/E,MAAMg5B,EAAek5C,EAAcN,EACnC,OAAO/nB,GAAgBnyB,EAAOsB,EAAcuwB,EAAMC,GAC9C2oB,GAAcz6C,EAAOsB,EAAe,EAAGh5B,EAAU6xE,EAAOh2M,KAAKmkI,EAASupD,EAAMC,GAAQqoB,EAAOtoB,EAAMC,IACjG4oB,GAA2B16C,EAAOsB,EAAe,GAgBzD,YAA+BtB,EAAOw6C,EAAaN,EAAYC,EAAQtoB,EAAMC,EAAMG,EAAM3pD,GACrF,MAAMg5B,GAAek5C,EAAcN,EACnC,OA/vSJ,YAAyBl6C,EAAOsB,EAAcuwB,EAAMC,EAAMG,GACtD,MAAMF,EAAYI,GAAgBnyB,EAAOsB,EAAcuwB,EAAMC,GAC7D,OAAOE,GAAehyB,EAAOsB,EAAe,EAAG2wB,IAASF,EA6vSjD+oB,CAAgB96C,EAAOsB,GAAcuwB,EAAMC,EAAMG,GACpDwoB,GAAcz6C,EAAOsB,GAAe,EAAGh5B,EAAU6xE,EAAOh2M,KAAKmkI,EAASupD,EAAMC,EAAMG,GAAQkoB,EAAOtoB,EAAMC,EAAMG,IAC7GyoB,GAA2B16C,EAAOsB,GAAe,GAiEzD,YAAgBl7I,EAAO20L,GACnB,MAAM19C,EAAQwkB,KACd,IAAIljB,EACJ,MAAMm0B,EAAgB1sK,EAnrpBJ,GAorpBdi3I,EAAM2I,iBAGNrH,EAkCR,YAAoBtrJ,EAAMq/F,GACtB,GAAIA,EACA,QAAStlG,EAAIslG,EAASruG,OAAS,EAAG+I,GAAK,EAAGA,IAAK,CAC3C,MAAMuxJ,EAAUjsD,EAAStlG,GACzB,GAAIiG,IAASsrJ,EAAQtrJ,KACjB,OAAOsrJ,GAvCLq8C,CAAWD,EAAU19C,EAAMwqB,cACrCxqB,EAAMj2J,KAAK0rL,GAAiBn0B,EACxBA,EAAQj4J,YACP22J,EAAMmG,eAAiBnG,EAAMmG,aAAe,KAAKx9J,KAAK8sL,EAAen0B,EAAQj4J,YAIlFi4J,EAAUtB,EAAMj2J,KAAK0rL,GAEzB,MAAMmoB,EAAct8C,EAAQvzJ,UAAYuzJ,EAAQvzJ,QAAU0/J,GAAcnM,EAAQnvJ,OAC1E63J,EAA+BC,GAAwB0qC,IAC7D,IAGI,MAAMnoC,EAA+BC,IAAwB,GACvDoxC,GAAeD,IACrBnxC,UAAwBD,GAruRhC,YAAexM,EAAO2C,EAAO55I,EAAO3e,GAG5B2e,GAASi3I,EAAMj2J,KAAK/C,SACpBg5J,EAAMj2J,KAAKgf,GAAS,KACpBi3I,EAAM8I,UAAU//I,GAAS,MAE7B45I,EAAM55I,GAAS3e,EA+tRX6vD,CAAM+lG,EAAOiL,KAAYwqB,EAAeooB,IACjCA,EAKiB7zC,CALjB6zC,QAKP5zC,GAAwBD,IAwChC,YAAqBjhJ,EAAO8zL,EAAYpW,GACpC,MAAMhR,EAAgB1sK,EAvvpBJ,GAwvpBZ45I,EAAQsI,KACR4yC,EAAepnK,GAAKksH,EAAO8yB,GACjC,OAAOqoB,GAAOn7C,EAAO8yB,GACjBsnB,GAAsBp6C,EAAOq6C,KAAkBH,EAAYgB,EAAarzK,UAAWi8J,EAAIoX,GACvFA,EAAarzK,UAAUi8J,GAe/B,YAAqB19K,EAAO8zL,EAAYpW,EAAIp0J,GACxC,MAAMojJ,EAAgB1sK,EA5wpBJ,GA6wpBZ45I,EAAQsI,KACR4yC,EAAepnK,GAAKksH,EAAO8yB,GACjC,OAAOqoB,GAAOn7C,EAAO8yB,GACjBwnB,GAAsBt6C,EAAOq6C,KAAkBH,EAAYgB,EAAarzK,UAAWi8J,EAAIp0J,EAAIwrK,GAC3FA,EAAarzK,UAAUi8J,EAAIp0J,GAgBnC,YAAqBtpB,EAAO8zL,EAAYpW,EAAIp0J,EAAIw0J,GAC5C,MAAMpR,EAAgB1sK,EAlypBJ,GAmypBZ45I,EAAQsI,KACR4yC,EAAepnK,GAAKksH,EAAO8yB,GACjC,OAAOqoB,GAAOn7C,EAAO8yB,GACjBynB,GAAsBv6C,EAAOq6C,KAAkBH,EAAYgB,EAAarzK,UAAWi8J,EAAIp0J,EAAIw0J,EAAIgX,GAC/FA,EAAarzK,UAAUi8J,EAAIp0J,EAAIw0J,GA4CvC,YAAgBlkC,EAAO55I,GACnB,OAAO45I,EA/2pBG,GA+2pBU54J,KAAKgf,GAAOg8B,KA6CpC,YAAwB1/B,GACpB,OAAQjb,IACJ8xD,WAAW72C,OAAIxb,EAAWO,IAMlC,MAAMgoD,GA3CN,iBAA4B80E,IACxBnyH,YAAYgpM,GAAU,GAClBx6L,QACAtO,KAAK+oM,UAAYD,EAErBvrJ,KAAKpoD,GACDmZ,MAAM7R,KAAKtH,GAEfkvF,UAAU0uC,EAAgB/hG,EAAOgiG,GAC7B,IAAIl2G,EAAI+L,EAAI4S,EACZ,IAAIutK,EAASj2E,EACTk2E,GAAUj4K,GAAU,KAAM,MAC1Bk4K,GAAal2E,EACjB,GAAID,GAA4C,iBAAnBA,EAA6B,CACtD,MAAMiC,GAAWjC,EACjBi2E,EAAkC,QAAxBlsL,EAAKk4G,GAASv4H,YAAyB,IAAPqgB,OAAgB,EAASA,EAAG8uC,KAAKopE,IAC3Ei0E,GAAoC,QAAzBpgL,EAAKmsG,GAAShkG,aAA0B,IAAPnI,OAAgB,EAASA,EAAG+iC,KAAKopE,IAC7Ek0E,GAA0C,QAA5BztK,EAAKu5F,GAAShC,gBAA6B,IAAPv3F,OAAgB,EAASA,EAAGmwB,KAAKopE,IAEnFh1H,KAAK+oM,YACLE,GAAUE,GAAeF,IACrBD,IACAA,EAASG,GAAeH,IAExBE,KACAA,GAAaC,GAAeD,MAGpC,MAAM11E,GAAOllH,MAAM+1E,UAAU,CAAE5nF,KAAMusM,EAAQh4K,MAAOi4K,GAASj2E,SAAUk2E,KACvE,OAAIn2E,aAA0BoC,MAC1BpC,EAAe/wH,IAAIwxH,IAEhBA,KAoBf,cACI,OAAOxzH,KAAKopM,SAAS3nE,QA4BzB,SAMI3hI,YAAYupM,GAA2B,GACnCrpM,KAAKqpM,yBAA2BA,EAChCrpM,KAAKspM,OAAQ,EACbtpM,KAAKopM,SAAW,GAChBppM,KAAKupM,kBAAmB,EACxBvpM,KAAKwpM,SAAW,KAChBxpM,KAAKjO,OAAS,EACdiO,KAAKqgC,WAAQzrC,EACboL,KAAK21G,UAAO/gH,EAKZ,MAAM00I,EAAS7H,KACTgoE,EAAQC,GAAUj/G,UACnBg/G,EAAMngE,KACPmgE,EAAMngE,GAAUqgE,IAKpBxqI,cACA,OAAOn/D,KAAKwpM,WAAaxpM,KAAKwpM,SAAW,IAAIrsJ,IAKjD9nD,IAAIye,GACA,OAAO9T,KAAKopM,SAASt1L,GAMzB9e,IAAIob,GACA,OAAOpQ,KAAKopM,SAASp0M,IAAIob,GAM7BhI,OAAOgI,GACH,OAAOpQ,KAAKopM,SAAShhM,OAAOgI,GAMhChK,KAAKgK,GACD,OAAOpQ,KAAKopM,SAAShjM,KAAKgK,GAM9BwuD,OAAOxuD,EAAIqE,GACP,OAAOzU,KAAKopM,SAASxqI,OAAOxuD,EAAIqE,GAMpC7hB,QAAQwd,GACJpQ,KAAKopM,SAASx2M,QAAQwd,GAM1BhN,KAAKgN,GACD,OAAOpQ,KAAKopM,SAAShmM,KAAKgN,GAK9Bw5L,UACI,OAAO5pM,KAAKopM,SAASh9L,QAEzBxa,WACI,OAAOoO,KAAKopM,SAASx3M,WAczB0iB,MAAMu1L,EAAaC,GAGf,MAAMj2I,EAAO7zD,KACb6zD,EAAKy1I,OAAQ,EACb,MAAMS,EAAgB/vC,GAAQ6vC,IAC1B7pM,KAAKupM,kBAzrkBjB,YAAqBtyL,EAAGC,EAAG4yL,GACvB,GAAI7yL,EAAEllB,SAAWmlB,EAAEnlB,OACf,OAAO,EACX,QAAS+I,EAAI,EAAGA,EAAImc,EAAEllB,OAAQ+I,IAAK,CAC/B,IAAIkvM,EAAS/yL,EAAEnc,GACXmvM,EAAS/yL,EAAEpc,GAKf,GAJIgvM,IACAE,EAASF,EAAiBE,GAC1BC,EAASH,EAAiBG,IAE1BA,IAAWD,EACX,OAAO,EAGf,OAAO,EA2qkB0BE,CAAYr2I,EAAKu1I,SAAUW,EAAeD,MACnEj2I,EAAKu1I,SAAWW,EAChBl2I,EAAK9hE,OAASg4M,EAAch4M,OAC5B8hE,EAAK8hD,KAAOo0F,EAAc/pM,KAAKjO,OAAS,GACxC8hE,EAAKxzB,MAAQ0pK,EAAc,IAMnCI,kBACQnqM,KAAKwpM,WAAaxpM,KAAKupM,mBAAqBvpM,KAAKqpM,2BACjDrpM,KAAKwpM,SAASjsJ,KAAKv9C,MAG3BoqM,WACIpqM,KAAKspM,OAAQ,EAGjB11L,UACI5T,KAAKm/D,QAAQ6zD,WACbhzH,KAAKm/D,QAAQrM,eAGrBw4D,WA2BMn9F,SAAN,SAMAA,SAAYo7H,kBAAoB8gD,GAN1Bl8K,MAON,MAAMm8K,GAAwBn8K,GAGxBo8K,GAAgB,cAA0BD,GAC5CxqM,YAAY0qM,EAAmBC,EAAwBC,GACnDp8L,QACAtO,KAAKwqM,kBAAoBA,EACzBxqM,KAAKyqM,uBAAyBA,EAC9BzqM,KAAK0qM,WAAaA,EAEtBx2D,mBAAmBj3I,GACf,MAAM81K,EAAgB/yK,KAAKyqM,uBAAuB15B,OAC5C+B,EAAgB8F,GAAY54K,KAAKwqM,kBAAmBz3B,EAAe91K,EAAS,GAAsB,KAAM81K,EAAc1jB,UAAW,KAAM,KAAM,KAAM,MAGzJyjB,EA3mqBuB,IAymqBO9yK,KAAKwqM,kBAAkBxqM,KAAKyqM,uBAAuB32L,OAGjF,MAAM62L,EAA0B3qM,KAAKwqM,kBA1mqB7B,IA2mqBR,OAAgC,OAA5BG,IACA73B,EA5mqBI,IA4mqBqB63B,EAAwBz2D,mBAAmB6+B,IAExEgB,GAAWhB,EAAeD,EAAe71K,GAClC,IAAI6mM,GAAUhxB,KAQ7B,cACI,OAAO83B,GAAkB70C,KAAmBC,MAShD,YAA2BqiB,EAAWnG,GAClC,OAAqB,EAAjBmG,EAAUn7K,KAEH,IAAIqtM,GAAcr4B,EAAWmG,EAAWopB,GAAiBppB,EAAWnG,IAExE,SAyBL24B,SAAN,SAMAA,SAAiBthD,kBAAoBuhD,GAN/BD,MAaN,cAEI,OAAOE,GADeh1C,KACmBC,MAE7C,MAAMg1C,GAAsBH,GAGtBI,GAAqB,cAA+BD,GACtDlrM,YAAYorM,EAAaC,EAAYC,GACjC98L,QACAtO,KAAKkrM,YAAcA,EACnBlrM,KAAKmrM,WAAaA,EAClBnrM,KAAKorM,WAAaA,EAElBh5M,cACA,OAAOqvM,GAAiBzhM,KAAKmrM,WAAYnrM,KAAKorM,YAE9C58K,eACA,OAAO,IAAIsnI,GAAa91J,KAAKmrM,WAAYnrM,KAAKorM,YAG9C1D,qBACA,MAAMz0C,EAAiBc,GAA0B/zJ,KAAKmrM,WAAYnrM,KAAKorM,YACvE,GAAIp3C,EAAkBf,GAAiB,CACnC,MAAMI,EAAac,EAAsBlB,EAAgBjzJ,KAAKorM,YACxDz3C,EAAgBO,EAAuBjB,GAG7C,OAAO,IAAI6C,GADSzC,EA1tqBlB,GA0tqBoCv+J,KAAK6+J,EAAgB,GACtBN,GAGrC,OAAO,IAAIyC,GAAa,KAAM91J,KAAKorM,YAG3ChkM,QACI,KAAOpH,KAAKjO,OAAS,GACjBiO,KAAKyjB,OAAOzjB,KAAKjO,OAAS,GAGlCsD,IAAIye,GACA,MAAMmvL,EAAWoI,GAAYrrM,KAAKkrM,aAClC,OAAoB,OAAbjI,GAAqBA,EAASnvL,IAAU,KAE/C/hB,aACA,OAAOiO,KAAKkrM,YAAYn5M,OA3vqBA,EA2vqBSu5M,CAErCp3D,mBAAmBS,EAAa13I,EAAS6W,GACrC,MAAMygI,EAAUI,EAAYT,mBAAmBj3I,GAAW,IAC1D,YAAKsuM,OAAOh3D,EAASzgI,GACdygI,EAEXi3D,gBAAgBC,EAAwBC,EAAgBl9K,EAAUm2K,EAAkBgH,GAChF,MAAMC,EAAqBH,IAA2B5vC,GAAO4vC,GAC7D,IAAI33L,EAMJ,GAAI83L,EAQA93L,EAAQ43L,MAEP,CASD,MAAMnqM,GAAWmqM,GAAkB,GACnC53L,EAAQvS,GAAQuS,MAChB0a,EAAWjtB,GAAQitB,SACnBm2K,EAAmBpjM,GAAQojM,iBAC3BgH,EAAcpqM,GAAQoqM,YAE1B,MAAME,GAAmBD,EACrBH,EACA,IAAIxH,GAAiBz4C,GAAgBigD,IACnCK,GAAkBt9K,GAAYxuB,KAAK0nM,eAEzC,IAAKiE,GAA4C,MAA7BE,GAAiBv+K,SAAkB,CAqBnD,MAAM/1B,IAJYq0M,EAAqBE,GAAkB9rM,KAAK0nM,gBAIrCryM,IAAIqxM,GAAe,MACxCnvM,KACAo0M,EAAcp0M,IAGtB,MAAMw0M,GAAeF,GAAiB9+L,OAAO++L,GAAiBnH,OAAkB/vM,EAAW+2M,GAC3F,YAAKJ,OAAOQ,GAAal+C,SAAU/5I,GAC5Bi4L,GAEXR,OAAOh3D,EAASzgI,GACZ,MAAM45I,EAAQnZ,EAAQ0jB,OAChBlN,EAAQ2C,EAxzqBR,GA4zqBN,GA7tpBR,YAAiCpzH,GAC7B,OAAOglI,GAAahlI,EA9lBT,GA8lBc6zH,CA4tpBjB69C,CAAwBt+C,GAAQ,CAEhC,MAAMu+C,GAAUjsM,KAAKvK,QAAQ8+I,GAK7B,IAAgB,IAAZ03D,GACAjsM,KAAKojM,OAAO6I,QAEX,CACD,MAAMC,GAAiBx+C,EAr0qBxB,GA00qBOy+C,GAAY,IAAIlB,GAAmBiB,GAAgBA,GAv0qB1D,GAu0qBkFA,GA10qBlF,IA20qBCC,GAAU/I,OAAO+I,GAAU12M,QAAQ8+I,KAI3C,MAAM63D,EAAcpsM,KAAKqsM,aAAav4L,GAChCm6I,EAAajuJ,KAAKkrM,aAnwhBhC,WAAoBngD,EAAO2C,EAAOO,EAAYn6I,GAG1C,MAAMqtJ,EAlmJsB,GAkmJuBrtJ,EAC7Cw4L,EAAkBr+C,EAAWl8J,OAC/B+hB,EAAQ,IAERm6I,EAAWkT,EAAmB,GAnlJzB,GAmlJoCzT,GAE7CnoG,EAAY+mJ,EAxmJgB,IAymJxB5+C,EAtlJK,GAslJSO,EAAWkT,GACzBorC,GAAWt+C,EA1mJa,GA0mJyBn6I,EAAO45I,KAGxDO,EAAWv6J,KAAKg6J,GAChBA,EA3lJK,GA2lJS,MAElBA,EA9lJW,GA8lJKO,EAEhB,MAAMoT,EAAwB3T,EAjlJH,IAklJG,OAA1B2T,GAAkCpT,IAAeoT,GAezD,WAAwBR,EAAsBnT,GAG1C,MAAMoT,EAAaD,EA5oJH,GAmpJZ2rC,EA5mJ2B,MAwmJAC,EAtnJpB,MAcoB,MAgnJ3B5rC,EA9pJuB,IA8pJwB,GAEhC,OAAnBl7E,EACIk7E,EA1pJY,GA0pJwB,CAACnT,GAGrCoT,EAAWptK,KAAKg6J,GAlChBg/C,CAAerrC,EAAuB3T,GAG1C,MAAMgU,EAAWhU,EAplJL,IAqlJK,OAAbgU,GACAA,EAASirC,WAAW5hD,GAGxB2C,EA3mJU,IA2mJM,IAuuhBZi/C,CAAW5hD,EAAO2C,EAAOO,EAAYm+C,GAErC,MAAMxsC,EAAa+D,EAAqByoC,EAAan+C,GAC/CnlI,GAAW4kI,EA50qBR,IA60qBH2V,GAAcoB,GAAiB37I,GAAUmlI,EAh3qBxC,IAi3qBP,OAAoB,OAAhBoV,IAv1hBZ,WAA4BtY,EAAOuE,EAAaxmI,EAAU4kI,EAAOk/C,EAAkBhtC,GAC/ElS,EAngJS,GAmgJKk/C,EACdl/C,EA9/IW,GA8/IK4B,EAChB8Q,GAAUrV,EAAO2C,EAAO5kI,EAAU,EAAgB8jL,EAAkBhtC,GAq1hB5DitC,CAAmB9hD,EAAOkD,EAp1qBvB,GAo1qB2CnlI,GAAU4kI,EAAO2V,GAAazD,GAEhFrrB,EAAQkvD,2BACR8I,GAAWO,GAAoB7+C,GAAam+C,EAAa73D,GAClDA,EAEXH,KAAKG,EAASw5C,GAIV,OAAO/tL,KAAKurM,OAAOh3D,EAASw5C,GAEhCt4L,QAAQ8+I,GACJ,MAAMw4D,EAAc1B,GAAYrrM,KAAKkrM,aACrC,OAAuB,OAAhB6B,EAAuBA,EAAYt3M,QAAQ8+I,IAAW,EAEjE9wH,OAAO3P,GACH,MAAMs4L,EAAcpsM,KAAKqsM,aAAav4L,GAAO,GACvCk5L,EAAerrC,GAAW3hK,KAAKkrM,YAAakB,GAC9CY,IAOAxrC,GAAgBsrC,GAAoB9sM,KAAKkrM,aAAckB,GACvDlJ,GAAa8J,EAp3qBX,GAo3qBgCA,IAG1C5J,OAAOtvL,GACH,MAAMs4L,EAAcpsM,KAAKqsM,aAAav4L,GAAO,GACvCwmB,EAAOqnI,GAAW3hK,KAAKkrM,YAAakB,GAE1C,OAAOa,GAD4F,MAAvEzrC,GAAgBsrC,GAAoB9sM,KAAKkrM,aAAckB,GAC9D,IAAItI,GAAUxpK,GAAQ,KAE/C+xK,aAAav4L,EAAO87C,EAAQ,GACxB,OAAa,MAAT97C,EACO9T,KAAKjO,OAAS69D,EAOlB97C,IAGf,YAAqBm6I,GACjB,OAAOA,EAl6qBO,EAk6qBIi/C,CAEtB,YAA6Bj/C,GACzB,OAAQA,EAr6qBM,KAq6qBoBA,EAr6qBpB,GAq6qB4C,IAW9D,YAA4BoqB,EAAWnG,GAEnC,IAAIjkB,EACJ,MAAMH,EAAYokB,EAAUmG,EAAUvkK,OACtC,GAAIwrJ,GAAaxR,GAEbG,EAAaH,MAEZ,CACD,IAAIq/C,EAKJ,GAAqB,EAAjB90B,EAAUn7K,KACViwM,EAAcx/C,GAAYG,OAEzB,CAID,MAAMhlI,EAAWopJ,EAn6qBZ,IAq6qBLi7B,EAAcrkL,EAAS4B,cAAwC,IAC/D,MAAMquJ,EAAanW,GAAiByV,EAAWnG,GAE/ClS,GAAmBl3I,EADQ27I,GAAiB37I,EAAUiwJ,GACLo0B,EA9+gB7D,YAA2BrkL,EAAU9rB,GACjC,OAAOq1J,GAAqBvpI,GAAYA,EAASsC,YAAYpuB,GAAQA,EAAKouB,YA6+gBJgiL,CAAkBtkL,EAAUiwJ,IAAa,GAE3G7G,EAAUmG,EAAUvkK,OAASm6I,EACzB8yB,GAAiBjzB,EAAWokB,EAAWi7B,EAAa90B,GACxDM,GAAczG,EAAWjkB,GAE7B,OAAO,IAAIg9C,GAAmBh9C,EAAYoqB,EAAWnG,GAiCzD,SACIpyK,YAAYutM,GACRrtM,KAAKqtM,UAAYA,EACjBrtM,KAAKzG,QAAU,KAEnBilG,QACI,OAAO,IAAI8uG,GAAQttM,KAAKqtM,WAE5BjD,WACIpqM,KAAKqtM,UAAUjD,YAGvB,SACItqM,YAAYs1K,EAAU,IAClBp1K,KAAKo1K,QAAUA,EAEnBlhC,mBAAmB6W,GACf,MAAMwiD,EAAWxiD,EAAMqqB,QACvB,GAAiB,OAAbm4B,EAAmB,CACnB,MAAMC,EAAgD,OAAzBziD,EAAMX,eAA0BW,EAAMX,eAAe,GAAKmjD,EAASx7M,OAC1F07M,EAAe,GAKrB,QAAS3yM,EAAI,EAAGA,EAAI0yM,EAAsB1yM,IAAK,CAC3C,MAAM4yM,EAASH,EAASI,WAAW7yM,GAEnC2yM,EAAa/5M,KADQsM,KAAKo1K,QAAQs4B,EAAOE,wBACVpvG,SAEnC,OAAO,IAAIqvG,GAAUJ,GAEzB,OAAO,KAEXd,WAAW5hD,GACP/qJ,KAAK8tM,wBAAwB/iD,GAEjC4W,WAAW5W,GACP/qJ,KAAK8tM,wBAAwB/iD,GAEjC+iD,wBAAwB/iD,GACpB,QAASjwJ,EAAI,EAAGA,EAAIkF,KAAKo1K,QAAQrjL,OAAQ+I,IACD,OAAhCizM,GAAUhjD,EAAOjwJ,GAAGvB,SACpByG,KAAKo1K,QAAQt6K,GAAGsvM,YAKhC,SACItqM,YAAYg7D,EAAWtvC,EAAO0uF,EAAO,MACjCl6G,KAAK86D,UAAYA,EACjB96D,KAAKwrB,MAAQA,EACbxrB,KAAKk6G,KAAOA,GAGpB,SACIp6G,YAAYs1K,EAAU,IAClBp1K,KAAKo1K,QAAUA,EAEnB6R,aAAal8B,EAAOyB,GAGhB,QAAS1xJ,EAAI,EAAGA,EAAIkF,KAAKo1K,QAAQrjL,OAAQ+I,IACrCkF,KAAKo1K,QAAQt6K,GAAGmsL,aAAal8B,EAAOyB,GAG5Co7B,WAAWp7B,GACP,QAAS1xJ,EAAI,EAAGA,EAAIkF,KAAKo1K,QAAQrjL,OAAQ+I,IACrCkF,KAAKo1K,QAAQt6K,GAAG8sL,WAAWp7B,GAGnCumB,cAAcvmB,GACV,IAAIwhD,EAAwB,KAC5B,QAASlzM,EAAI,EAAGA,EAAIkF,KAAKjO,OAAQ+I,IAAK,CAClC,MAAMmzM,EAA4C,OAA1BD,EAAiCA,EAAsBj8M,OAAS,EAClFm8M,EAAcluM,KAAK2tM,WAAW7yM,GAAGi4K,cAAcvmB,EAAOyhD,GACxDC,IACAA,EAAYN,uBAAyB9yM,EACP,OAA9B6qF,EACIqoH,EAAsBt6M,KAAKw6M,GAG3BF,EAAwB,CAACE,IAIrC,OAAiC,OAA1BF,EAAiC,IAAIG,GAAUH,GAAyB,KAEnFlkD,SAASiB,EAAOyB,GAGZ,QAAS1xJ,EAAI,EAAGA,EAAIkF,KAAKo1K,QAAQrjL,OAAQ+I,IACrCkF,KAAKo1K,QAAQt6K,GAAGgvJ,SAASiB,EAAOyB,GAGxCmhD,WAAW75L,GAEP,OAAO9T,KAAKo1K,QAAQthK,GAEpB/hB,aACA,OAAOiO,KAAKo1K,QAAQrjL,OAExBq8M,MAAMC,GACFruM,KAAKo1K,QAAQ1hL,KAAK26M,IAG1B,SACIvuM,YAAYJ,EAAUkuJ,GAAY,GAC9B5tJ,KAAKN,SAAWA,EAChBM,KAAKzG,QAAU,KACfyG,KAAK4tM,wBAAyB,EAC9B5tM,KAAKsuM,mBAAoB,EAMzBtuM,KAAKuuM,oBAAqB,EAC1BvuM,KAAKwuM,sBAAwB5gD,EAEjCq5B,aAAal8B,EAAOyB,GACZxsJ,KAAKyuM,iBAAiBjiD,IACtBxsJ,KAAK0uM,WAAW3jD,EAAOyB,GAG/Bo7B,WAAWp7B,GACHxsJ,KAAKwuM,wBAA0BhiD,EAAM14I,QACrC9T,KAAKuuM,oBAAqB,GAGlCzkD,SAASiB,EAAOyB,GACZxsJ,KAAKinL,aAAal8B,EAAOyB,GAE7BumB,cAAcvmB,EAAOyhD,GACjB,OAAIjuM,KAAKyuM,iBAAiBjiD,IACtBxsJ,KAAKsuM,mBAAoB,EAGzBtuM,KAAK2uM,UAAUniD,EAAM14I,MAAOm6L,GACrB,IAAIW,GAAQ5uM,KAAKN,WAErB,KAEX+uM,iBAAiBjiD,GACb,GAAIxsJ,KAAKuuM,oBAC2C,IAAzB,EAAtBvuM,KAAKN,SAAS8rB,OAAsD,CACrE,MAAMqjL,EAAqB7uM,KAAKwuM,sBAChC,IAAIp4M,EAASo2J,EAAMp2J,OAWnB,KAAkB,OAAXA,GAAkC,EAAdA,EAAO8G,MAC9B9G,EAAO0d,QAAU+6L,GACjBz4M,EAASA,EAAOA,OAEpB,OAAOy4M,KAAmC,OAAXz4M,EAAkBA,EAAO0d,OAAQ,GAEpE,OAAO9T,KAAKuuM,mBAEhBG,WAAW3jD,EAAOyB,GACd,MAAM1xF,EAAY96D,KAAKN,SAASo7D,UAChC,GAAIjkE,MAAM4E,QAAQq/D,GACd,QAAShgE,EAAI,EAAGA,EAAIggE,EAAU/oE,OAAQ+I,IAAK,CACvC,MAAMiG,EAAO+5D,EAAUhgE,GACvBkF,KAAK8uM,yBAAyB/jD,EAAOyB,EAAOuiD,GAAyBviD,EAAOzrJ,IAE5Ef,KAAK8uM,yBAAyB/jD,EAAOyB,EAAO2J,GAA0B3J,EAAOzB,EAAOhqJ,GAAM,GAAO,SAIjG+5D,IAAc3sC,GACG,EAAbq+H,EAAMtvJ,MACN8C,KAAK8uM,yBAAyB/jD,EAAOyB,GAAO,GAIhDxsJ,KAAK8uM,yBAAyB/jD,EAAOyB,EAAO2J,GAA0B3J,EAAOzB,EAAOjwF,GAAW,GAAO,IAIlHg0I,yBAAyB/jD,EAAOyB,EAAOwiD,GACnC,GAAqB,OAAjBA,EAAuB,CACvB,MAAM90F,EAAOl6G,KAAKN,SAASw6G,KAC3B,GAAa,OAATA,EACA,GAAIA,IAASwnF,IAAcxnF,IAAS2wF,IAChC3wF,IAAS/rF,IAA6B,EAAbq+H,EAAMtvJ,KAC/B8C,KAAK2uM,SAASniD,EAAM14I,OAAO,OAE1B,CACD,MAAMm7L,EAAyB94C,GAA0B3J,EAAOzB,EAAO7wC,GAAM,GAAO,GACrD,OAA3B+0F,GACAjvM,KAAK2uM,SAASniD,EAAM14I,MAAOm7L,QAKnCjvM,KAAK2uM,SAASniD,EAAM14I,MAAOk7L,IAIvCL,SAAS3lB,EAAUkmB,GACM,OAAjBlvM,KAAKzG,QACLyG,KAAKzG,QAAU,CAACyvL,EAAUkmB,GAG1BlvM,KAAKzG,QAAQ7F,KAAKs1L,EAAUkmB,IAYxC,YAAkC1iD,EAAOv2J,GACrC,MAAM46K,EAAarkB,EAAMqkB,WACzB,GAAmB,OAAfA,EACA,QAAS/1K,EAAI,EAAGA,EAAI+1K,EAAW9+K,OAAQ+I,GAAK,EACxC,GAAI+1K,EAAW/1K,KAAO7E,EAClB,OAAO46K,EAAW/1K,EAAI,GAIlC,OAAO,KAWX,YAA6B4yJ,EAAOlB,EAAO2iD,EAAaj1F,GACpD,OAAoB,IAAhBi1F,EAVR,YAAiC3iD,EAAO6E,GACpC,OAAkB,GAAd7E,EAAMtvJ,KACCukM,GAAiBj1C,EAAO6E,GAEb,EAAb7E,EAAMtvJ,KACJ0tM,GAAkBp+C,EAAO6E,GAE7B,KAKI+9C,CAAwB5iD,EAAOkB,IAEjB,IAAhByhD,EASb,YAA4BzhD,EAAOlB,EAAOtyC,GACtC,OAAIA,IAASwnF,GACFD,GAAiBj1C,EAAOkB,GAE1BxzC,IAAS/rF,GACPy8K,GAAkBp+C,EAAOkB,GAE3BxzC,IAAS2wF,GAEPE,GAAmBv+C,EAAOkB,QAFhC,CAEgCA,CAhB1B2hD,CAAmB3hD,EAAOlB,EAAOtyC,GAIjCm8C,GAAkB3I,EAAOA,EAxtrB1B,GAwtrBwCyhD,EAAa3iD,GAwBnE,YAAgCzB,EAAO2C,EAAOggD,EAAQ4B,GAClD,MAAMC,EAAS7hD,EA9trBH,IA8trBkB0nB,QAAQk6B,GACtC,GAAuB,OAAnBC,EAAOh2M,QAAkB,CACzB,MAAMg+K,EAAYxsB,EAAMj2J,KAClB06M,EAAgB9B,EAAOn0M,QACvBhC,EAAS,GACf,QAASuD,GAAI,EAAGA,GAAI00M,EAAcz9M,OAAQ+I,IAAK,EAAG,CAC9C,MAAM20M,GAAiBD,EAAc10M,IAKjCvD,EAAO7D,KAJP+7M,GAAiB,EAIL,KAKAC,GAAoBhiD,EADlB6pB,EAAUk4B,IACsBD,EAAc10M,GAAI,GAAI4yM,EAAOhuM,SAASw6G,OAG5Fq1F,EAAOh2M,QAAUhC,EAErB,OAAOg4M,EAAOh2M,QAMlB,YAA6BwxJ,EAAO2C,EAAO4hD,EAAY/3M,GACnD,MAAMm2M,EAAS3iD,EAAMqqB,QAAQu4B,WAAW2B,GAClCE,EAAgB9B,EAAOn0M,QAC7B,GAAsB,OAAlBi2M,EAAwB,CACxB,MAAMG,EAAeC,GAAuB7kD,EAAO2C,EAAOggD,EAAQ4B,GAClE,QAASx0M,EAAI,EAAGA,EAAI00M,EAAcz9M,OAAQ+I,GAAK,EAAG,CAC9C,MAAMkuL,GAAWwmB,EAAc10M,GAC/B,GAAIkuL,GAAW,EACXzxL,EAAO7D,KAAKi8M,EAAa70M,EAAI,QAE5B,CACD,MAAMmzM,GAAkBuB,EAAc10M,EAAI,GACpCumK,GAAwB3T,GAAOs7B,IAGrC,QAASluL,GA3yrBO,GA2yrBsBA,GAAIumK,GAAsBtvK,OAAQ+I,KAAK,CACzE,MAAMg4K,GAAgBzR,GAAsBvmK,IACxCg4K,GA5wrBO,MA4wrBmCA,GA3xrBnD,IA4xrBS+8B,GAAoB/8B,GA9xrB9B,GA8xrBoDA,GAAem7B,GAAiB12M,GAKlF,GAA2C,OAAvC8pK,GA1zrBA,GA0zrB6C,CAC7C,MAAMyuC,GAAiBzuC,GA3zrBvB,GA4zrBA,QAASvmK,GAAI,EAAGA,GAAIg1M,GAAe/9M,OAAQ+I,KAAK,CAC5C,MAAMg4K,GAAgBg9B,GAAeh1M,IACrC+0M,GAAoB/8B,GAvyrB9B,GAuyrBoDA,GAAem7B,GAAiB12M,OAM9F,OAAOA,EAWX,YAAwB81M,GACpB,MAAM3/C,EAAQsI,KACRjL,EAAQwkB,KACR+/B,EAAaS,KACnB//B,GAAqBs/B,EAAa,GAClC,MAAM5B,EAASK,GAAUhjD,EAAOukD,GAChC,GAAIjC,EAAU/D,OACTx1B,GAAepmB,MACoC,IAAtB,EAAxBggD,EAAOhuM,SAAS8rB,QAAkD,CACxE,GAAuB,OAAnBkiL,EAAOn0M,QACP8zM,EAAU/4L,MAAM,QAEf,CACD,MAAM/c,EAASm2M,EAAOY,kBAClBuB,GAAoB9kD,EAAO2C,EAAO4hD,EAAY,IAC9CM,GAAuB7kD,EAAO2C,EAAOggD,EAAQ4B,GACjDjC,EAAU/4L,MAAM/c,EAAQy4M,IACxB3C,EAAUlD,kBAEd,OAAO,EAEX,OAAO,EAWX,YAAqBrvI,EAAWtvC,EAAO0uF,GAEnC,MAAM6wC,EAAQwkB,KACVxkB,EAAM2I,kBACNu8C,GAAallD,EAAO,IAAImlD,GAAgBp1I,EAAWtvC,EAAO0uF,IAAO,GAC9B,IAAtB,EAAR1uF,KACDu/H,EAAMinB,mBAAoB,IAGlCm+B,GAAaplD,EAAOiL,KAAYxqI,GAcpC,YAAwBisI,EAAgB38F,EAAWtvC,EAAO0uF,GAEtD,MAAM6wC,EAAQwkB,KACd,GAAIxkB,EAAM2I,gBAAiB,CACvB,MAAMlH,EAAQuJ,KACdk6C,GAAallD,EAAO,IAAImlD,GAAgBp1I,EAAWtvC,EAAO0uF,GAAOsyC,EAAM14I,OAkC/E,YAA2Ci3I,EAAO0M,GAC9C,MAAM24C,EAAsBrlD,EAAMX,iBAAmBW,EAAMX,eAAiB,IAExEqN,KAD4B24C,EAAoBr+M,OAASq+M,EAAoBA,EAAoBr+M,OAAS,IAAK,IAE/Gq+M,EAAoB18M,KAAKq3J,EAAMqqB,QAAQrjL,OAAS,EAAG0lK,GArCnD44C,CAAkCtlD,EAAO0M,GACN,IAAtB,EAARjsI,KACDu/H,EAAM+mB,sBAAuB,GAGrCq+B,GAAaplD,EAAOiL,KAAYxqI,GAOpC,cACI,OAEJ,YAA2BkiI,EAAO4hD,GAI9B,OAAO5hD,EAr3rBK,IAq3rBU0nB,QAAQk6B,GAAYjC,UANnCiD,CAAkBt6C,KAAY+5C,MAQzC,YAAsBhlD,EAAO2C,EAAOliI,GAChC,MAAM6hL,EAAY,IAAI3D,GAAwD,IAArC,EAARl+K,IACjC23K,GAAwBp4C,EAAO2C,EAAO2/C,EAAWA,EAAUz5L,SACpC,OAAnB85I,EA13rBQ,MA23rBRA,EA33rBQ,IA23rBS,IAAImgD,IACzBngD,EA53rBY,IA43rBG0nB,QAAQ1hL,KAAK,IAAI45M,GAAQD,IAE5C,YAAsBtiD,EAAOrrJ,EAAUkuJ,GACb,OAAlB7C,EAAMqqB,UACNrqB,EAAMqqB,QAAU,IAAI+4B,IACxBpjD,EAAMqqB,QAAQg5B,MAAM,IAAIQ,GAAQlvM,EAAUkuJ,IAS9C,YAAmB7C,EAAOj3I,GAEtB,OAAOi3I,EAAMqqB,QAAQu4B,WAAW75L,GAgBpC,YAAgC04I,EAAOkB,GACnC,OAAOk9C,GAAkBp+C,EAAOkB,GAqoCpC,eAAiBv5I,GAAM,CAevB,MAwEMwd,GAAkB,IAAIzF,GAAe,+BAMrCqkL,SAAN,QACIzwM,YAAY0wM,GACRxwM,KAAKwwM,SAAWA,EAChBxwM,KAAK6c,QAAUi3E,GACf9zF,KAAKmuD,OAAS2lC,GACd9zF,KAAKywM,aAAc,EACnBzwM,KAAKtD,MAAO,EACZsD,KAAK0wM,YAAc,IAAI9zL,QAAQ,CAAC2hF,EAAKoyG,KACjC3wM,KAAK6c,QAAU0hF,EACfv+F,KAAKmuD,OAASwiJ,IAItBC,kBACI,GAAI5wM,KAAKywM,YACL,OAEJ,MAAMI,EAAoB,GACpB79E,EAAW,KACbhzH,KAAKtD,MAAO,EACZsD,KAAK6c,WAET,GAAI7c,KAAKwwM,SACL,QAAS11M,EAAI,EAAGA,EAAIkF,KAAKwwM,SAASz+M,OAAQ+I,IAAK,CAC3C,MAAMg2M,EAAa9wM,KAAKwwM,SAAS11M,KACjC,GAAI2xF,GAAUqkH,GACVD,EAAkBn9M,KAAKo9M,WAElBxoB,GAAawoB,GAAa,CAC/B,MAAMC,EAAsB,IAAIn0L,QAAQ,CAACC,EAASsxC,MAC9C2iJ,EAAWzsH,UAAU,CAAE2uC,SAAUn2G,EAASmU,MAAOm9B,OAErD0iJ,EAAkBn9M,KAAKq9M,IAInCn0L,QAAQy5C,IAAIw6I,GACP7mL,KAAK,KACNgpG,MAECliG,MAAMz8B,IACP2L,KAAKmuD,OAAO95D,KAEiB,IAA7Bw8M,EAAkB9+M,QAClBihI,IAEJhzH,KAAKywM,aAAc,GAG3BF,SAAsB53M,UAAO,SAAuCgtF,GAAK,OAAO,IAAKA,GAAK4qH,GAAuBtsE,GAAStyG,GAAiB,KAC3I4+K,EAAsB33M,WAAsBkhK,GAAmB,CAAEzzJ,MAAOkqM,EAAuBz3M,QAASy3M,EAAsB53M,UAAMyrI,WAAY,SAlD1ImsE,MAmFN,MAAMS,GAAS,IAAI9kL,GAAe,QAAS,CACvCk4G,WAAY,OACZtrI,QAEJ,cACI,MAAQ,GAAEm4M,OAAgBA,OAAgBA,UAW9C,cACI,OAAOjkH,OAAOkkH,aAAa,GAAKpuM,KAAKkpH,MAAsB,GAAhBlpH,KAAKquM,UAAW,CAM/D,MAAMC,GAAuB,IAAIllL,GAAe,wBAK1C04H,GAAc,IAAI14H,GAAe,cAAe,CAClDk4G,WAAY,WACZtrI,QAAS,IAAM,YAYbu4M,GAAyB,IAAInlL,GAAe,4BAe5ColL,SAAN,QACIj/K,IAAIs8B,GAEA1/B,QAAQoD,IAAIs8B,GAGhBwuH,KAAKxuH,GAED1/B,QAAQkuJ,KAAKxuH,IAGrB2iJ,SAAQ34M,UAAO,SAAyBgtF,GAAK,OAAO,IAAKA,GAAK2rH,IAC9DA,EAAQ14M,WAAsBkhK,GAAmB,CAAEzzJ,MAAOirM,EAASx4M,QAASw4M,EAAQ34M,UAAMyrI,WAAY,aAZhGktE,MA4EN,MAAMthL,GAAY,IAAI9D,GAAe,WAAY,CAC7Ck4G,WAAY,OACZtrI,QAAS,IAAMulK,GAAOruI,GAAWs3H,GAAYI,SAAWJ,GAAYG,WA7CxE,cAkBQ,MAA6B,oBAAd3tH,WAA6BA,UAAUmvG,QAAW+qD,GA2BYud,KAwC/EC,GAAwB,IAAItlL,GAAe,sBAAuB,CACpEk4G,WAAY,OACZtrI,QAAS,IA/tMa,QA+zM1B,SACIgH,YAAY2xM,EAAiBC,GACzB1xM,KAAKyxM,gBAAkBA,EACvBzxM,KAAK0xM,mBAAqBA,OAmB5BC,SAAN,QAKIC,kBAAkBxK,GACd,OAAO,IAAIyK,GAAgBzK,GAK/B0K,mBAAmB1K,GACf,OAAOxqL,QAAQC,QAAQ7c,KAAK4xM,kBAAkBxK,IAKlD2K,kCAAkC3K,GAC9B,MAAMqK,EAAkBzxM,KAAK4xM,kBAAkBxK,GAEzCsK,EAAqB1K,GADTD,GAAeK,GACkBx7C,cAC9ChtF,OAAO,CAACmiI,EAAWiR,KACpB,MAAMhO,GAAex4C,GAAgBwmD,GACrChO,WAAgBjD,EAAUrtM,KAAK,IAAIuwM,GAAiBD,KAC7CjD,GACR,IACH,OAAO,IAAIkR,GAA6BR,EAAiBC,GAK7DQ,mCAAmC9K,GAC/B,OAAOxqL,QAAQC,QAAQ7c,KAAK+xM,kCAAkC3K,IAKlE+K,aAAa,CAIbC,cAAcl1M,GAAM,CAIpBm1M,YAAYjL,GAAY,EAI5BuK,SAASh5M,UAAO,SAA0BgtF,GAAK,OAAO,IAAKA,GAAKgsH,IAChEA,EAAS/4M,WAAsBkhK,GAAmB,CAAEzzJ,MAAOsrM,EAAU74M,QAAS64M,EAASh5M,UAAMyrI,WAAY,SAlDnGutE,MAmFN,MAAMloL,GAAW,KAAM7M,QAAQC,QAAQ,GAAtB,GACjB,YAA2BzM,GACH,oBAATkiM,KAEP7oL,GAAQO,KAAK,KACT5Z,GAAMA,EAAGs6E,MAAM,KAAM,QAIzB4nH,KAAKhrJ,QAAQ27E,kBAAkB,oBAAqB7yH,GA8G5D,SACItQ,aAAcyyM,wBAAuB,EAAOC,sCAAqC,EAAOC,oCAAmC,IA2BvH,GA1BAzyM,KAAK0yM,sBAAuB,EAC5B1yM,KAAK2yM,sBAAuB,EAI5B3yM,KAAK4yM,UAAW,EAIhB5yM,KAAK6yM,WAAa,IAAI11J,IAAa,GAMnCn9C,KAAK8yM,iBAAmB,IAAI31J,IAAa,GAMzCn9C,KAAK+yM,SAAW,IAAI51J,IAAa,GAIjCn9C,KAAK+tD,QAAU,IAAI5Q,IAAa,GACb,oBAARm1J,KACP,MAAM,IAAI7oK,MAAO,kDAErB6oK,KAAKU,oBACL,MAAMn/I,EAAO7zD,KACb6zD,EAAKo/I,SAAW,EAChBp/I,EAAKq/I,OAASr/I,EAAKs/I,OAASb,KAAKhrJ,QAC7BgrJ,KAAKc,uBACLv/I,EAAKs/I,OAASt/I,EAAKs/I,OAAOvnM,KAAK,IAAI0mM,KAAKc,uBAExCb,GAAwBD,KAAKe,yBAC7Bx/I,EAAKs/I,OAASt/I,EAAKs/I,OAAOvnM,KAAK0mM,KAAKe,yBAIxCx/I,EAAK2+I,oCACAC,GAAoCD,EACzC3+I,EAAK4+I,iCAAmCA,EACxC5+I,EAAKy/I,6BAA8B,EACnCz/I,EAAK0/I,4BAlJb,cACI,IAAIA,EAA8B1qD,GAAQmkB,sBACtCwmC,EAA6B3qD,GAAQ4qD,qBACzC,GAAoB,oBAATnB,MAAwBiB,GAA+BC,EAA4B,CAG1F,MAAME,EAAiCH,EAA4BjB,KAAKqB,WAAW,qBAC/ED,IACAH,EAA8BG,GAElC,MAAME,EAAgCJ,EAA2BlB,KAAKqB,WAAW,qBAC7EC,IACAJ,EAA6BI,GAGrC,MAAO,CAAEL,8BAA6BC,8BAmICK,GAAiCN,4BAyJ5E,YAA0C7mL,GACtC,MAAMonL,EAAwC,MAzClD,YAAuCpnL,GAc/BA,EAAKqnL,uBAA6D,IAArCrnL,EAAK4mL,8BAGtC5mL,EAAK4mL,4BAA8B5mL,EAAK6mL,4BAA4B1hN,KAAKg3J,GAAS,KAUzEn8H,EAAKsnL,mBACNtnL,EAAKsnL,iBAAmB1B,KAAKp0L,KAAK+1L,kBAAkB,mBAAoB,KACpEvnL,EAAK4mL,6BAA8B,EACnCY,GAAsBxnL,GACtBA,EAAKqnL,sBAAuB,EAC5BI,GAAYznL,GACZA,EAAKqnL,sBAAuB,QAC7Bn/M,EAAW,OAAW,SAE7B83B,EAAKsnL,iBAAiBrsF,WAE1BusF,GAAsBxnL,IAIlB0nL,CAA8B1nL,IAElCA,EAAKymL,OAASzmL,EAAKymL,OAAOvnM,KAAK,CAC3B7K,KAAM,UACN4M,WAAY,CAAE0mM,eAAiB,GAC/BC,aAAc,CAACprL,EAAUo+B,EAAS37C,EAAQ4oM,EAAMC,EAAWC,KACvD,IACI3gL,UAAQpH,GACDxD,EAASwrL,WAAW/oM,EAAQ4oM,EAAMC,EAAWC,EAO5C/nL,CAP4C+nL,SAG/C/nL,EAAK8lL,oCAAoD,cAAd+B,EAAKr3M,MACjDwvB,EAAK+lL,mCACLqB,IAEJa,GAAQjoL,KAGhBkoL,SAAU,CAAC1rL,EAAUo+B,EAAS37C,EAAQ3X,EAAUwgN,EAAWC,EAAW1vK,MAClE,IACIjR,UAAQpH,GACDxD,EAASy+F,OAAOh8G,EAAQ3X,EAAUwgN,EAAWC,EAAW1vK,GAMvDrY,CANuDqY,QAG3DrY,EAAK+lL,kCACLqB,IAEJa,GAAQjoL,KAGhBmoL,UAAW,CAAC3rL,EAAUo+B,EAAS37C,EAAQmpM,KACnC5rL,EAAS6rL,QAAQppM,EAAQmpM,GACrBxtJ,IAAY37C,IAGe,aAAvBmpM,EAAaE,QACbtoL,EAAKuoL,sBAAwBH,EAAaI,UAC1ChB,GAAsBxnL,GACtBynL,GAAYznL,IAEgB,aAAvBooL,EAAaE,SAClBtoL,EAAKgmL,qBAAuBoC,EAAaK,aAIrDC,cAAe,CAAClsL,EAAUo+B,EAAS37C,EAAQqlB,KACvC9H,EAASmkF,YAAY1hG,EAAQqlB,GAC7BtE,EAAKrC,kBAAkB,IAAMqC,EAAKqhC,QAAQxQ,KAAKvsB,KACxC,KA1MXqkL,CAAiCxhJ,4BAIjC,MAAuB,oBAATy+I,OAA8D,IAAtCA,KAAKhrJ,QAAQjyD,IAAI,gBAAqB,8BAG5E,IAAKw3B,GAAOyoL,kBACR,MAAM,IAAI7rK,MAAM,kFAIpB,GAAI5c,GAAOyoL,kBACP,MAAM,IAAI7rK,MAAM,kDAexBtf,IAAI/Z,EAAIokM,EAAWC,GACf,OAAOz0M,KAAKmzM,OAAOhpL,IAAI/Z,EAAIokM,EAAWC,GAc1Cc,QAAQnlM,EAAIokM,EAAWC,EAAW1zM,GAC9B,MAAM2rB,EAAO1sB,KAAKmzM,OACZoB,EAAO7nL,EAAKunL,kBAAkB,gBAAkBlzM,EAAMqP,EAAIolM,GAAe1hH,GAAMA,IACrF,IACI,OAAOpnE,EAAK6oL,QAAQhB,EAAMC,EAAWC,EAGrBF,CAHqBE,QAGrC/nL,EAAK+oL,WAAWlB,IAOxBmB,WAAWtlM,EAAIokM,EAAWC,GACtB,OAAOz0M,KAAKmzM,OAAOuC,WAAWtlM,EAAIokM,EAAWC,GAejDpqL,kBAAkBja,GACd,OAAOpQ,KAAKkzM,OAAO/oL,IAAI/Z,IAG/B,MAAMolM,GAAgB,GACtB,YAAqB9oL,GAgBjB,GAAqB,GAAjBA,EAAKumL,WAAkBvmL,EAAKimL,uBAAyBjmL,EAAKkmL,SAC1D,IACIlmL,EAAKumL,WACLvmL,EAAKomL,iBAAiBv1J,KAAK,KASH,CATG,QAI3B,GADA7wB,EAAKumL,YACAvmL,EAAKimL,qBACN,IACIjmL,EAAKrC,kBAAkB,IAAMqC,EAAKqmL,SAASx1J,KAAK,MAGhC,CAHgC,QAGhD7wB,EAAKkmL,UAAW,IAoGpC,YAA+BlmL,GAIvBA,EAAKimL,wBAHLjmL,EAAKuoL,wBACHvoL,EAAK8lL,oCAAsC9lL,EAAK+lL,oCACT,IAArC/lL,EAAK4mL,4BAImB,CAGpC,YAAiB5mL,GACbA,EAAKumL,WACDvmL,EAAKkmL,WACLlmL,EAAKkmL,UAAW,EAChBlmL,EAAKmmL,WAAWt1J,KAAK,OAG7B,YAAiB7wB,GACbA,EAAKumL,WACLkB,GAAYznL,GAMhB,SACI5sB,cACIE,KAAK2yM,sBAAuB,EAC5B3yM,KAAK0yM,sBAAuB,EAC5B1yM,KAAK4yM,UAAW,EAChB5yM,KAAK6yM,WAAa,IAAI11J,GACtBn9C,KAAK8yM,iBAAmB,IAAI31J,GAC5Bn9C,KAAK+yM,SAAW,IAAI51J,GACpBn9C,KAAK+tD,QAAU,IAAI5Q,GAEvBhzB,IAAI/Z,EAAIokM,EAAWC,GACf,OAAOrkM,EAAGs6E,MAAM8pH,EAAWC,GAE/BiB,WAAWtlM,EAAIokM,EAAWC,GACtB,OAAOrkM,EAAGs6E,MAAM8pH,EAAWC,GAE/BpqL,kBAAkBja,GACd,OAAOA,IAEXmlM,QAAQnlM,EAAIokM,EAAWC,EAAW1zM,GAC9B,OAAOqP,EAAGs6E,MAAM8pH,EAAWC,QAiB7BkB,SAAN,QACI71M,YAAY81M,GACR51M,KAAK41M,QAAUA,EACf51M,KAAK61M,cAAgB,EACrB71M,KAAK81M,eAAgB,EAOrB91M,KAAK+1M,UAAW,EAChB/1M,KAAKg2M,WAAa,GAClBh2M,KAAKi2M,iBAAmB,KACxBj2M,KAAKk2M,sBACLN,EAAQzrL,IAAI,KACRnqB,KAAKi2M,iBACc,oBAAR3D,KAAsB,KAAOA,KAAKhrJ,QAAQjyD,IAAI,sBAGjE6gN,sBACIl2M,KAAK41M,QAAQ/C,WAAWxuH,UAAU,CAC9B5nF,KAAM,KACFuD,KAAK+1M,UAAW,EAChB/1M,KAAK81M,eAAgB,KAG7B91M,KAAK41M,QAAQvrL,kBAAkB,KAC3BrqB,KAAK41M,QAAQ7C,SAAS1uH,UAAU,CAC5B5nF,KAAM,KACFowB,GAAOspL,yBACPlzE,GAAkB,KACdjjI,KAAK81M,eAAgB,EACrB91M,KAAKo2M,8BAUzBC,8BACI,YAAKR,eAAiB,EACtB71M,KAAK+1M,UAAW,EACT/1M,KAAK61M,cAMhBS,8BAEI,GADAt2M,KAAK61M,eAAiB,EAClB71M,KAAK61M,cAAgB,EACrB,MAAM,IAAIpsK,MAAM,qCAEpB,YAAK2sK,uBACEp2M,KAAK61M,cAKhBjD,WACI,OAAO5yM,KAAK81M,eAAwC,IAAvB91M,KAAK61M,gBAAwB71M,KAAK41M,QAAQlD,qBAE3E0D,uBACI,GAAIp2M,KAAK4yM,WAEL3vE,GAAkB,KACd,KAAkC,IAA3BjjI,KAAKg2M,WAAWjkN,QAAc,CACjC,IAAIy7F,EAAKxtF,KAAKg2M,WAAWxhJ,MACzBs0B,aAAa0E,EAAGzE,WAChByE,EAAG+oH,OAAOv2M,KAAK+1M,UAEnB/1M,KAAK+1M,UAAW,QAGnB,CAED,IAAIziG,EAAUtzG,KAAKw2M,kBACnBx2M,KAAKg2M,WAAah2M,KAAKg2M,WAAW5tM,OAAQolF,IAClCA,EAAGipH,WAAYjpH,EAAGipH,SAASnjG,KAC3BxqB,aAAa0E,EAAGzE,YACT,IAIf/oF,KAAK+1M,UAAW,GAGxBS,kBACI,OAAKx2M,KAAKi2M,iBAIHj2M,KAAKi2M,iBAAiBS,WAAW1hN,IAAK2wF,IAClC,CACH5gD,OAAQ4gD,EAAE5gD,OAGV4xK,iBAAkBhxH,EAAEgxH,iBACpB7hN,KAAM6wF,EAAE7wF,QATL,GAaf8hN,YAAYppH,EAAIizC,EAASg2E,GACrB,IAAI1tH,GAAY,EACZ03C,GAAWA,EAAU,IACrB13C,EAAY9hC,WAAW,KACnBjnD,KAAKg2M,WAAah2M,KAAKg2M,WAAW5tM,OAAQolF,GAAOA,EAAGzE,YAAcA,GAClEyE,EAAGxtF,KAAK+1M,SAAU/1M,KAAKw2M,oBACxB/1E,IAEPzgI,KAAKg2M,WAAWtiN,KAAK,CAAE6iN,OAAQ/oH,EAAIzE,UAAWA,EAAW0tH,SAAUA,IAcvEI,WAAWN,EAAQ91E,EAASg2E,GACxB,GAAIA,IAAaz2M,KAAKi2M,iBAClB,MAAM,IAAIxsK,MAAM,8HAIpBzpC,KAAK42M,YAAYL,EAAQ91E,EAASg2E,GAClCz2M,KAAKo2M,uBAMTU,yBACI,OAAO92M,KAAK61M,cAQhBkB,cAAcC,EAAOh8B,EAAUi8B,GAE3B,MAAO,IAGftB,SAAYh9M,UAAO,SAA6BgtF,GAAK,OAAO,IAAKA,GAAKgwH,GAAa1xE,GAASp3G,MAC5F8oL,EAAY/8M,WAAsBkhK,GAAmB,CAAEzzJ,MAAOsvM,EAAa78M,QAAS68M,EAAYh9M,YA5J1Fg9M,MAsKAuB,SAAN,QACIp3M,cAEIE,KAAKm3M,cAAgB,IAAI/hN,IACzBgiN,GAAmBC,YAAYr3M,MAOnCs3M,oBAAoBjxM,EAAOkxM,GACvBv3M,KAAKm3M,cAAc7hN,IAAI+Q,EAAOkxM,GAMlCC,sBAAsBnxM,GAClBrG,KAAKm3M,cAAcl/L,OAAO5R,GAK9BoxM,4BACIz3M,KAAKm3M,cAAc/vM,QAMvBswM,eAAe1gN,GACX,OAAOgJ,KAAKm3M,cAAc9hN,IAAI2B,IAAS,KAK3C2gN,sBACI,OAAO9gN,MAAMC,KAAKkJ,KAAKm3M,cAAcj1M,UAKzC01M,qBACI,OAAO/gN,MAAMC,KAAKkJ,KAAKm3M,cAAcjkN,QAQzC2kN,sBAAsB7gN,EAAM8gN,GAAkB,GAC1C,OAAOV,GAAmBS,sBAAsB73M,KAAMhJ,EAAM8gN,IAGpEZ,SAAoBv+M,UAAO,SAAqCgtF,GAAK,OAAO,IAAKA,GAAKuxH,IACtFA,EAAoBt+M,WAAsBkhK,GAAmB,CAAEzzJ,MAAO6wM,EAAqBp+M,QAASo+M,EAAoBv+M,UAAMyrI,WAAY,aAzDpI8yE,MAgEN,SACIG,YAAYj3G,GAAU,CACtBy3G,sBAAsBz3G,EAAUppG,EAAM8gN,GAClC,OAAO,MAOf,YAA8Bn7C,GAC1By6C,GAAqBz6C,EAEzB,IAAIy6C,GAAqB,IAAIW,GASzBC,GAAoB,KAKxB,MAAMC,GAA2B,IAAI/rL,GAAe,sBAO9CgsL,GAAsB,IAAIhsL,GAAe,qBAwF/C,YAA+BisL,EAAuBp3M,EAAMwsB,EAAY,IACpE,MAAM6qL,EAAQ,aAAYr3M,IACpB4xJ,EAAS,IAAIzmI,GAAeksL,GAClC,MAAO,CAACC,EAAiB,MACrB,IAAI/zD,EAAWg0D,KACf,IAAKh0D,GAAYA,EAAS91H,SAASn5B,IAAI4iN,IAA0B,GAAQ,CACrE,MAAMM,EAAoB,IACnBhrL,KACA8qL,EACH,CAAEjsL,QAASumI,EAAQ3lI,UAAU,IAE7BmrL,EACAA,EAAsBI,GAtCtC,YAAwB/pL,GACpB,GAAIwpL,KAAsBA,GAAkB3iN,IAAI4iN,IAA0B,GAItE,MAAM,IAAIzxD,GAAa,IADnB,IAIRwxD,GAAoBxpL,EACpB,MAAM81H,EAAW91H,EAASn5B,IAAImjN,IACxBC,EAAQjqL,EAASn5B,IAAI+7M,GAAsB,MAC7CqH,GACAA,EAAM7lN,QAAQ8lN,GAAUA,IACrBp0D,CA4BKq0D,CA2BhB,YAAgCprL,EAAY,GAAIxsB,GAC5C,OAAO48K,GAAS5wK,OAAO,CACnBhM,OACAwsB,UAAW,CACP,CAAEnB,QAAS8tJ,GAAgBltJ,SAAU,YACrC,CAAEZ,QAAS8rL,GAAqBlrL,SAAU,IAAMgrL,GAAoB,SACjEzqL,KAjCgBqrL,CAAuBL,EAAmBH,IAGjE,OAQR,YAAwBS,GACpB,MAAMv0D,EAAWg0D,KACjB,IAAKh0D,EAED,MAAM,IAAIkC,GAAa,IADwE,IAOnG,OAAOlC,EAlBIw0D,EAAenmD,EAiD9B,cACI,IAAI71I,EACJ,OAA2H,QAAnHA,EAA2B,MAAtBk7L,QAA6D,EAASA,GAAkB3iN,IAAImjN,WAAiC,IAAP17L,EAAgBA,EAAK,SAWtJ07L,SAAN,QAEI14M,YAAYmlG,GACRjlG,KAAKilG,UAAYA,EACjBjlG,KAAK+4M,SAAW,GAChB/4M,KAAKg5M,kBAAoB,GACzBh5M,KAAK+lB,YAAa,EAQtBkzL,uBAAuBC,EAAe33M,GAKlC,MAGM43M,EAyHd,YAAmBC,EAAc5qH,GAC7B,IAAI2qH,EACJ,OACIA,EADiB,SAAjBC,EACS,IAAIC,IAGc,YAAjBD,OAA6BxkN,EAAYwkN,IAAiB,IAAIvsL,GAAO,CAC3E0lL,sBAAiE,EACjEC,sCAAiD,MAAVhkH,OAAqC,EAASA,EAAM8qH,uBAC3F7G,oCAA+C,MAAVjkH,OAAqC,EAASA,EAAM+qH,uBAG1FJ,EArIYK,CAHMj4M,EAAUA,EAAQ43M,YAASvkN,EAGT,CAAE0kN,sBAFV/3M,GAAWA,EAAQ+3M,wBAA0B,EAEZC,oBADnCh4M,GAAWA,EAAQg4M,sBAAwB,IAElEhsL,GAAY,CAAC,CAAEnB,QAASS,GAAQG,SAAUmsL,IAKhD,OAAOA,EAAOhvL,IAAI,KACd,MAAMsvL,GAAiB97B,GAAS5wK,OAAO,CAAEwgB,UAAWA,GAAWn3B,OAAQ4J,KAAKwuB,SAAUztB,KAAMm4M,EAAc9R,WAAWrmM,OAC/G24M,GAAYR,EAAcnsM,OAAO0sM,IACjCE,GAAmBD,GAAUlrL,SAASn5B,IAAIukL,GAAc,MAC9D,IAAK+/B,GAID,MAAM,IAAInzD,GAAa,IADnB,IAGR2yD,SAAO9uL,kBAAkB,KACrB,MAAMioG,GAAe6mF,EAAOprJ,QAAQs2B,UAAU,CAC1C5nF,KAAOu0B,KACH2oL,GAAiBtsG,YAAYr8E,OAGrC0oL,GAAUtlN,UAAU,KAChBqvB,GAAOzjB,KAAK+4M,SAAUW,IACtBpnF,GAAax/D,kBA+GjC,YAAsCq0D,EAAcgyF,EAAQnlN,GACxD,IACI,MAAMuD,EAASvD,IACf,OAAIy4F,GAAUl1F,GACHA,EAAOu5B,MAAOz8B,IACjB8kN,QAAO9uL,kBAAkB,IAAM88F,EAAa9Z,YAAYh5G,IAElDA,IAGPkD,CAKDlD,CALCkD,MAEJlD,GACH8kN,QAAO9uL,kBAAkB,IAAM88F,EAAa9Z,YAAYh5G,IAElDA,GA3HKulN,CAA6BD,GAAkBR,EAAQ,KAC1D,MAAMU,GAAaH,GAAUlrL,SAASn5B,IAAIk7M,IAC1CsJ,UAAWjJ,kBACJiJ,GAAWnJ,YAAY1mL,KAAK,KA3vOnD,YAAqBkG,IA3lkBrB,YAAuBy2H,EAAQD,GACb,MAAVC,GACA4yC,GAAW7yC,EAAKC,EAAQ,KAAM,OA0lkBlCmzD,CAAc5pL,EAAW,mCACD,iBAAbA,IACPqkK,GAAcrkK,EAASpzB,cAAcZ,QAAQ,KAAM,MA2vOvC69M,CADiBL,GAAUlrL,SAASn5B,IAAI26B,GAAWgkK,KAC3BA,IACxBh0L,KAAKg6M,mBAAmBN,IACjBA,SAqBvB7oL,gBAAgBu2K,EAAY6S,EAAkB,IAC1C,MAAM14M,EAAU24M,GAAe,GAAID,GACnC,OAvPR,YAAgCzrL,EAAUjtB,EAAS6lM,GAE/C,MAAM8R,EAAgB,IAAIrH,GAAgBzK,GAGtC,OAAOxqL,QAAQC,QAAQq8L,GAkPhBiB,CAAuBn6M,EAAeuB,EAAS6lM,GACjDp9K,KAAKkvL,GAAiBl5M,KAAKi5M,uBAAuBC,EAAe33M,IAE1Ey4M,mBAAmBN,GACf,MAAM7V,EAAS6V,EAAUlrL,SAASn5B,IAAI+kN,IACtC,GAAIV,EAAU/S,qBAAqB50M,OAAS,EACxC2nN,EAAU/S,qBAAqB/zM,QAAQ4f,GAAKqxL,EAAO/zK,UAAUtd,aAExDknM,EAAU33E,SAASs4E,cASxB,MAAM,IAAI7zD,GAAa,IADnB,IAPJkzD,EAAU33E,SAASs4E,cAAcxW,EAQgCtsD,CAErEv3I,KAAK+4M,SAASrlN,KAAKgmN,GAKvBtlN,UAAUJ,GACNgM,KAAKg5M,kBAAkBtlN,KAAKM,GAM5Bw6B,eACA,OAAOxuB,KAAKilG,UAMhBrxF,UACI,GAAI5T,KAAK+lB,WAIL,MAAM,IAAIygI,GAAa,IADnB,IAGRxmJ,KAAK+4M,SAAS3sM,QAAQxZ,QAAQs4H,GAAUA,EAAOt3G,WAC/C5T,KAAKg5M,kBAAkBpmN,QAAQqmB,GAAYA,KAC3C,MAAMqhM,EAAkBt6M,KAAKilG,UAAU5vG,IAAI6iN,GAAqB,MAC5C,MAApBoC,GAAkEA,IAClEt6M,KAAK+lB,YAAa,EAElBhM,gBACA,OAAO/Z,KAAK+lB,YAGpByyL,SAAY7/M,UAAO,SAA6BgtF,GAAK,OAAO,IAAKA,GAAK6yH,GAAav0E,GAAS05C,MAC5F66B,EAAY5/M,WAAsBkhK,GAAmB,CAAEzzJ,MAAOmyM,EAAa1/M,QAAS0/M,EAAY7/M,UAAMyrI,WAAY,aAxI5Go0E,MA+KN,YAAwB5lD,EAAKiyB,GACzB,OAAIhuL,MAAM4E,QAAQopL,GACRA,EAAKjmH,OAAOs7I,GAAgBtnD,GAG5B3/J,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIshJ,GAAMiyB,EAEzCjyB,KA+FLwnD,SAAN,QAEIt6M,YAAYqpB,EAAO87E,EAAWs1G,EAAmBC,GAC7Cx6M,KAAKmpB,MAAQA,EACbnpB,KAAKilG,UAAYA,EACjBjlG,KAAKu6M,kBAAoBA,EACzBv6M,KAAKw6M,YAAcA,EAEnBx6M,KAAKy6M,oBAAsB,GAC3Bz6M,KAAK06M,OAAS,GACd16M,KAAK26M,cAAe,EACpB36M,KAAK46M,SAAU,EAKf56M,KAAK66M,eAAiB,GAItB76M,KAAKiyK,WAAa,GAClBjyK,KAAK86M,8BAAgC96M,KAAKmpB,MAAM2pL,iBAAiBzuH,UAAU,CACvE5nF,KAAM,KACFuD,KAAKmpB,MAAMgB,IAAI,KACXnqB,KAAK+6M,YAIjB,MAAMC,EAAoB,IAAIroF,IAAYqC,KACtCh1H,KAAK46M,QAAU56M,KAAKmpB,MAAMypL,WAAa5yM,KAAKmpB,MAAMupL,uBAC7C1yM,KAAKmpB,MAAMwpL,qBAChB3yM,KAAKmpB,MAAMkB,kBAAkB,KACzB2qG,GAASv4H,KAAKuD,KAAK46M,SACnB5lF,GAAShC,eAGX4/E,EAAW,IAAIjgF,IAAYqC,KAG7B,IAAIimF,GACJj7M,KAAKmpB,MAAMkB,kBAAkB,KACzB4wL,GAAYj7M,KAAKmpB,MAAM4pL,SAAS1uH,UAAU,KACtCx3D,GAAOspL,yBAGPlzE,GAAkB,MACTjjI,KAAK46M,UAAY56M,KAAKmpB,MAAMupL,uBAC5B1yM,KAAKmpB,MAAMwpL,uBACZ3yM,KAAK46M,SAAU,EACf5lF,GAASv4H,MAAK,UAK9B,MAAMy+M,GAAcl7M,KAAKmpB,MAAM0pL,WAAWxuH,UAAU,KAChDx3D,GAAOsuL,sBACHn7M,KAAK46M,UACL56M,KAAK46M,SAAU,EACf56M,KAAKmpB,MAAMkB,kBAAkB,KACzB2qG,GAASv4H,MAAK,QAI1B,MAAO,KACHw+M,GAAUnoJ,cACVooJ,GAAYpoJ,iBAGpB9yD,KAAK4yM,UACDwI,QAAQJ,EAAmBpI,EAASxyK,MAAKi7K,WAuCjDvrL,UAAUwrL,EAAoB1W,GAC1B,IAAK5kM,KAAKw6M,YAAY99M,KAKlB,MAAM,IAAI8pJ,GAAa,IADnB,IAGR,IAAIqlD,EAEAA,EADAyP,aAA8BlX,GACXkX,EAIAC,KADGt2G,UAAU5vG,IAAIksM,IACRH,wBAAwBka,GAExDt7M,KAAK66M,eAAennN,KAAKm4M,EAAiBxH,eAE1C,MAAM/2K,EAjhBd,YAAyBkuL,GACrB,OAAOA,EAAG/W,gBAghBWA,CAAgBoH,QAAoBj3M,EAAYoL,KAAKilG,UAAU5vG,IAAIqxM,IAE9E+U,EAAU5P,EAAiB9+L,OAAO4wK,GAASE,KAAM,GADhC+mB,GAAsBiH,EAAiB51M,SACaq3B,GACrE6hB,GAAgBssK,EAAQzoL,SAASmc,cACjCooK,GAAckE,EAAQjtL,SAASn5B,IAAIsgN,GAAa,MAChD+F,GAAsBnE,IAAekE,EAAQjtL,SAASn5B,IAAI6hN,IAChE,OAAIK,IAAemE,IACfA,GAAoBpE,oBAAoBnoK,GAAeooK,IAE3DkE,EAAQrnN,UAAU,KACd4L,KAAK2hK,WAAW85C,EAAQ5tD,UACxBpqI,GAAOzjB,KAAKiyK,WAAYwpC,GACpBC,IACAA,GAAoBlE,sBAAsBroK,MAGlDnvC,KAAK27M,eAAeF,GAKbA,EAYXV,OACI,GAAI/6M,KAAK26M,aAIL,MAAM,IAAIn0D,GAAa,IADnB,IAGR,IACIxmJ,KAAK26M,cAAe,EACpB,QAASrgL,KAAQt6B,KAAK06M,OAClBpgL,EAAKgpK,eAaW,CAbXA,MAQNjvM,GAEH2L,KAAKmpB,MAAMkB,kBAAkB,IAAMrqB,KAAKu6M,kBAAkBltG,YAAYh5G,YAGtE2L,KAAK26M,cAAe,GAQ5BiB,WAAWrnE,GACP,MAAMj6G,EAAOi6G,EACbv0I,KAAK06M,OAAOhnN,KAAK4mC,GACjBA,EAAKspK,eAAe5jM,MAKxB2hK,WAAWptB,GACP,MAAMj6G,EAAOi6G,EACb9wH,GAAOzjB,KAAK06M,OAAQpgL,GACpBA,EAAKopK,mBAETiY,eAAe5P,GACX/rM,KAAK47M,WAAW7P,EAAal+C,UAC7B7tJ,KAAK+6M,OACL/6M,KAAKiyK,WAAWv+K,KAAKq4M,GAGrBv1L,KADuByuF,UAAU5vG,IAAIg8M,GAAwB,IAAIxsL,OAAO7kB,KAAKy6M,qBACnE7nN,QAASqmB,GAAaA,EAAS8yL,IAG7C//K,cACIhsB,KAAK06M,OAAOtuM,QAAQxZ,QAAS0nC,GAASA,EAAK1mB,WAC3C5T,KAAK86M,8BAA8BhoJ,cAKnC+oJ,gBACA,OAAO77M,KAAK06M,OAAO3oN,QAG3BqoN,SAAezhN,UAAO,SAAgCgtF,GAAK,OAAO,IAAKA,GAAKy0H,GAAgBn2E,GAASp3G,IAASo3G,GAAS05C,IAAW15C,GAAS21C,IAAe31C,GAASssE,MACnK6J,EAAexhN,WAAsBkhK,GAAmB,CAAEzzJ,MAAO+zM,EAAgBthN,QAASshN,EAAezhN,UAAMyrI,WAAY,SAhOrHg2E,MAuON,YAAgB57D,EAAMnzH,GAClB,MAAMvX,EAAQ0qI,EAAK/oJ,QAAQ41B,GACvBvX,GAAQ,GACR0qI,EAAKlkJ,OAAOwZ,EAAO,GA8B3B,IAAIgoM,IAAW,EAwBf,cASIA,IAAW,MA2GTC,SAAN,SAMAA,SAAkBxyD,kBAAoByyD,GANhCD,MAQN,YAAiCvwL,GAC7B,OAUJ,YAAuBghI,EAAOkB,EAAOuuD,GACjC,GAAI7lD,GAAgB5J,KAAWyvD,EAAQ,CAGnC,MAAM/3C,EAAgBqQ,GAAyB/nB,EAAM14I,MAAO45I,GAC5D,OAAO,IAAIo2C,GAAU5/B,EAAeA,UAEjB,GAAd1X,EAAMtvJ,KAIJ,IAAI4mM,GADep2C,EAxnyBC,IAynyBaA,GAErC,KAvBAwuD,CAAcnmD,KAAmBC,KAA2C,KAAtB,GAARxqI,GAA8B,CA6rBvF,SACI1rB,cAAc,CACdq8M,SAAS3hN,GACL,OAAO4hN,GAAmB5hN,GAE9BuS,OAAOsvM,GACH,OAAO,IAAIC,GAAsBD,IAGzC,MAAME,GAAkB,CAACzoM,EAAO/Y,IAASA,EAKzC,SACI+E,YAAYu8M,GACRr8M,KAAKjO,OAAS,EAEdiO,KAAKw8M,eAAiB,KAEtBx8M,KAAKy8M,iBAAmB,KACxBz8M,KAAK08M,gBAAkB,KACvB18M,KAAK28M,QAAU,KACf38M,KAAK48M,QAAU,KACf58M,KAAK68M,eAAiB,KACtB78M,KAAK88M,eAAiB,KACtB98M,KAAK+8M,WAAa,KAClB/8M,KAAKg9M,WAAa,KAClBh9M,KAAKi9M,cAAgB,KACrBj9M,KAAKk9M,cAAgB,KAErBl9M,KAAKm9M,qBAAuB,KAC5Bn9M,KAAKo9M,qBAAuB,KAC5Bp9M,KAAK0zI,WAAa2oE,GAAaE,GAEnCc,YAAYjtM,GACR,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK28M,QAAoB,OAAXpqE,EAAiBA,EAASA,EAAO3c,MACzDxlH,EAAGmiI,GAGXuB,iBAAiB1jI,GACb,IAAIktM,EAASt9M,KAAK28M,QACdY,EAAav9M,KAAKi9M,cAClBO,EAAkB,EAClBC,EAAc,KAClB,KAAOH,GAAUC,GAAY,CAGzB,MAAMhrE,GAAUgrE,GACZD,GACIA,EAAOtpE,aACH0pE,GAAiBH,EAAYC,EAAiBC,GACtDH,EACAC,EACEI,EAAmBD,GAAiBnrE,EAAQirE,EAAiBC,GAC7DzpE,GAAezB,EAAOyB,aAE5B,GAAIzB,IAAWgrE,EACXC,IACAD,EAAaA,EAAWK,qBAGxBN,EAASA,EAAO1nF,MACY,MAAxB2c,EAAO0B,cACPupE,QAEC,CAEIC,IACDA,EAAc,IAClB,MAAMI,GAAyBF,EAAmBH,EAC5CM,GAAoB9pE,GAAewpE,EACzC,GAAIK,IAA0BC,GAAmB,CAC7C,QAAShjN,GAAI,EAAGA,GAAI+iN,GAAwB/iN,KAAK,CAC7C,MAAMhI,GAASgI,GAAI2iN,EAAY1rN,OAAS0rN,EAAY3iN,IAAM2iN,EAAY3iN,IAAK,EACrEgZ,GAAQhhB,GAASgI,GACnBgjN,IAAqBhqM,IAASA,GAAQ+pM,KACtCJ,EAAY3iN,IAAKhI,GAAS,GAIlC2qN,EADsBlrE,EAAO0B,eACA6pE,GAAoBD,IAIzDF,IAAqB3pE,IACrB5jI,EAAGmiI,EAAQorE,EAAkB3pE,KAIzC+pE,oBAAoB3tM,GAChB,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK08M,gBAA4B,OAAXnqE,EAAiBA,EAASA,EAAOyrE,cACjE5tM,EAAGmiI,GAGXD,iBAAiBliI,GACb,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK68M,eAA2B,OAAXtqE,EAAiBA,EAASA,EAAO0rE,WAChE7tM,EAAGmiI,GAGX2rE,iBAAiB9tM,GACb,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK+8M,WAAuB,OAAXxqE,EAAiBA,EAASA,EAAO4rE,WAC5D/tM,EAAGmiI,GAGXG,mBAAmBtiI,GACf,IAAImiI,EACJ,IAAKA,EAASvyI,KAAKi9M,cAA0B,OAAX1qE,EAAiBA,EAASA,EAAOqrE,aAC/DxtM,EAAGmiI,GAGXiC,sBAAsBpkI,GAClB,IAAImiI,EACJ,IAAKA,EAASvyI,KAAKm9M,qBAAiC,OAAX5qE,EAAiBA,EAASA,EAAO6rE,oBACtEhuM,EAAGmiI,GAGXp+E,KAAKo7B,GAGD,GAFkB,MAAdA,IACAA,EAAa,KACZ6sH,GAAmB7sH,GAIpB,MAAM,IAAIi3D,GAAa,IADnB,IAGR,OAAIxmJ,KAAKq+M,MAAM9uH,GACJvvF,KAGA,KAGf5L,YAAY,CACZiqN,MAAM9uH,GACFvvF,KAAKs+M,SACL,IAEIxqM,EACA/Y,EACAwjN,EAJAhsE,EAASvyI,KAAK28M,QACd6B,GAAa,EAIjB,GAAI3nN,MAAM4E,QAAQ8zF,GAAa,CAC3BvvF,KAAKjO,OAASw9F,EAAWx9F,OACzB,QAAS+hB,EAAQ,EAAGA,EAAQ9T,KAAKjO,OAAQ+hB,IACrC/Y,EAAOw0F,EAAWz7E,GAClByqM,EAAcv+M,KAAK0zI,WAAW5/H,EAAO/Y,GACtB,OAAf4qF,GAAwB1yF,OAAOu4F,GAAG+mD,EAAOksE,UAAWF,IAK5CC,IAEAjsE,EAASvyI,KAAK0+M,mBAAmBnsE,EAAQx3I,EAAMwjN,EAAazqM,IAE3D7gB,OAAOu4F,GAAG+mD,EAAOx3I,KAAMA,IACxBiF,KAAK2+M,mBAAmBpsE,EAAQx3I,KATpCw3I,EAASvyI,KAAK4+M,UAAUrsE,EAAQx3I,EAAMwjN,EAAazqM,GACnD0qM,GAAa,GAUjBjsE,EAASA,EAAO3c,WAIpB9hH,EAAQ,EAjqdpB,YAAyBtZ,EAAK4V,GAC1B,GAAIvZ,MAAM4E,QAAQjB,GACd,QAASM,EAAI,EAAGA,EAAIN,EAAIzI,OAAQ+I,IAC5BsV,EAAG5V,EAAIM,QAGV,CACD,MAAMyB,EAAW/B,EAAIinI,QACrB,IAAI1mI,EACJ,OAAUA,EAAOwB,EAASE,QAAQC,MAC9B0T,EAAGrV,EAAK5F,QAwpdR0pN,CAAgBtvH,EAAax0F,IACzBwjN,EAAcv+M,KAAK0zI,WAAW5/H,EAAO/Y,GACtB,OAAf4qF,GAAwB1yF,OAAOu4F,GAAG+mD,EAAOksE,UAAWF,IAK5CC,IAEAjsE,EAASvyI,KAAK0+M,mBAAmBnsE,EAAQx3I,EAAMwjN,EAAazqM,IAE3D7gB,OAAOu4F,GAAG+mD,EAAOx3I,KAAMA,IACxBiF,KAAK2+M,mBAAmBpsE,EAAQx3I,KATpCw3I,EAASvyI,KAAK4+M,UAAUrsE,EAAQx3I,EAAMwjN,EAAazqM,GACnD0qM,GAAa,GAUjBjsE,EAASA,EAAO3c,MAChB9hH,MAEJ9T,KAAKjO,OAAS+hB,EAElB,YAAKgrM,UAAUvsE,GACfvyI,KAAKuvF,WAAaA,EACXvvF,KAAK49D,QAKZA,cACA,OAA+B,OAAxB59D,KAAK68M,gBAA+C,OAApB78M,KAAK+8M,YACjB,OAAvB/8M,KAAKi9M,eAAwD,OAA9Bj9M,KAAKm9M,oBAAyB,CAUrEmB,SACI,GAAIt+M,KAAK49D,QAAS,CACd,IAAI20E,EACJ,IAAKA,EAASvyI,KAAK08M,gBAAkB18M,KAAK28M,QAAoB,OAAXpqE,EAAiBA,EAASA,EAAO3c,MAChF2c,EAAOyrE,cAAgBzrE,EAAO3c,MAElC,IAAK2c,EAASvyI,KAAK68M,eAA2B,OAAXtqE,EAAiBA,EAASA,EAAO0rE,WAChE1rE,EAAO0B,cAAgB1B,EAAOyB,aAGlC,IADAh0I,KAAK68M,eAAiB78M,KAAK88M,eAAiB,KACvCvqE,EAASvyI,KAAK+8M,WAAuB,OAAXxqE,EAAiBA,EAASA,EAAO4rE,WAC5D5rE,EAAO0B,cAAgB1B,EAAOyB,aAElCh0I,KAAK+8M,WAAa/8M,KAAKg9M,WAAa,KACpCh9M,KAAKi9M,cAAgBj9M,KAAKk9M,cAAgB,KAC1Cl9M,KAAKm9M,qBAAuBn9M,KAAKo9M,qBAAuB,MAehEwB,UAAUrsE,EAAQx3I,EAAMwjN,EAAazqM,GAEjC,IAAIirM,EACJ,OAAe,OAAXxsE,EACAwsE,EAAiB/+M,KAAK48M,SAGtBmC,EAAiBxsE,EAAOysE,MAExBh/M,KAAKi/M,QAAQ1sE,IAIF,QADfA,EAAmC,OAA1BvyI,KAAKy8M,iBAA4B,KAAOz8M,KAAKy8M,iBAAiBpnN,IAAIkpN,EAAa,QAI/EtrN,OAAOu4F,GAAG+mD,EAAOx3I,KAAMA,IACxBiF,KAAK2+M,mBAAmBpsE,EAAQx3I,GACpCiF,KAAKk/M,eAAe3sE,EAAQwsE,EAAgBjrM,IAK7B,QADfy+H,EAAiC,OAAxBvyI,KAAKw8M,eAA0B,KAAOx8M,KAAKw8M,eAAennN,IAAIkpN,EAAazqM,KAK3E7gB,OAAOu4F,GAAG+mD,EAAOx3I,KAAMA,IACxBiF,KAAK2+M,mBAAmBpsE,EAAQx3I,GACpCiF,KAAKm/M,WAAW5sE,EAAQwsE,EAAgBjrM,IAIxCy+H,EACIvyI,KAAKo/M,UAAU,IAAIC,GAAsBtkN,EAAMwjN,GAAcQ,EAAgBjrM,GAGlFy+H,EA6BXmsE,mBAAmBnsE,EAAQx3I,EAAMwjN,EAAazqM,GAC1C,IAAIwrM,EAA2C,OAA1Bt/M,KAAKy8M,iBAA4B,KAAOz8M,KAAKy8M,iBAAiBpnN,IAAIkpN,EAAa,MACpG,OAAuB,OAAnBe,EACA/sE,EAASvyI,KAAKk/M,eAAeI,EAAgB/sE,EAAOysE,MAAOlrM,GAEtDy+H,EAAOyB,cAAgBlgI,IAC5By+H,EAAOyB,aAAelgI,EACtB9T,KAAKu/M,YAAYhtE,EAAQz+H,IAEtBy+H,EASXusE,UAAUvsE,GAEN,KAAkB,OAAXA,GAAiB,CACpB,MAAMitE,EAAajtE,EAAO3c,MAC1B51H,KAAKy/M,eAAez/M,KAAK0/M,QAAQntE,IACjCA,EAASitE,EAEiB,OAA1Bx/M,KAAKy8M,kBACLz8M,KAAKy8M,iBAAiBr1M,QAEE,OAAxBpH,KAAK88M,iBACL98M,KAAK88M,eAAemB,WAAa,MAEb,OAApBj+M,KAAKg9M,aACLh9M,KAAKg9M,WAAWmB,WAAa,MAEZ,OAAjBn+M,KAAK48M,UACL58M,KAAK48M,QAAQhnF,MAAQ,MAEE,OAAvB51H,KAAKk9M,gBACLl9M,KAAKk9M,cAAcU,aAAe,MAEJ,OAA9B59M,KAAKo9M,uBACLp9M,KAAKo9M,qBAAqBgB,oBAAsB,MAIxDc,eAAe3sE,EAAQotE,EAAY7rM,GACD,OAA1B9T,KAAKy8M,kBACLz8M,KAAKy8M,iBAAiBh5L,OAAO8uH,GAEjC,MAAM/nC,EAAO+nC,EAAOqtE,aACdnjN,EAAO81I,EAAOqrE,aACpB,OAAa,OAATpzG,EACAxqG,KAAKi9M,cAAgBxgN,EAGrB+tG,EAAKozG,aAAenhN,EAEX,OAAb0zH,EACInwH,KAAKk9M,cAAgB1yG,EAGrB/tG,EAAKmjN,aAAep1G,EAExBxqG,KAAK6/M,aAAattE,EAAQotE,EAAY7rM,GACtC9T,KAAKu/M,YAAYhtE,EAAQz+H,GAClBy+H,EAGX4sE,WAAW5sE,EAAQotE,EAAY7rM,GAC3B,YAAK4rM,QAAQntE,GACbvyI,KAAK6/M,aAAattE,EAAQotE,EAAY7rM,GACtC9T,KAAKu/M,YAAYhtE,EAAQz+H,GAClBy+H,EAGX6sE,UAAU7sE,EAAQotE,EAAY7rM,GAC1B,YAAK+rM,aAAattE,EAAQotE,EAAY7rM,GAIlC9T,KAAK88M,eAHmB,OAA5B98M,KAAS88M,eAGiB98M,KAAK68M,eAAiBtqE,EAMtBvyI,KAAK88M,eAAemB,WAAa1rE,EAEpDA,EAGXstE,aAAattE,EAAQotE,EAAY7rM,GAK7B,MAAMrX,EAAsB,OAAfkjN,EAAsB3/M,KAAK28M,QAAUgD,EAAW/pF,MAI7D2c,SAAO3c,MAAQn5H,EACf81I,EAAOysE,MAAQW,EACF,OAAbhkL,EACI37B,KAAK48M,QAAUrqE,EAGf91I,EAAKuiN,MAAQzsE,EAEE,OAAnB5sD,EACI3lF,KAAK28M,QAAUpqE,EAGfotE,EAAW/pF,MAAQ2c,EAEK,OAAxBvyI,KAAKw8M,iBACLx8M,KAAKw8M,eAAiB,IAAIsD,IAE9B9/M,KAAKw8M,eAAez6D,IAAIxP,GACxBA,EAAOyB,aAAelgI,EACfy+H,EAGX0sE,QAAQ1sE,GACJ,OAAOvyI,KAAKy/M,eAAez/M,KAAK0/M,QAAQntE,IAG5CmtE,QAAQntE,GACwB,OAAxBvyI,KAAKw8M,gBACLx8M,KAAKw8M,eAAe/4L,OAAO8uH,GAE/B,MAAM/nC,EAAO+nC,EAAOysE,MACdviN,EAAO81I,EAAO3c,MAIpB,OAAa,OAATprB,EACAxqG,KAAK28M,QAAUlgN,EAGf+tG,EAAKorB,MAAQn5H,EAEJ,OAAb8oD,EACIvlD,KAAK48M,QAAUpyG,EAGf/tG,EAAKuiN,MAAQx0G,EAEV+nC,EAGXgtE,YAAYhtE,EAAQwtE,GAGhB,OAAIxtE,EAAO0B,gBAAkB8rE,IAMzB//M,KAAKg9M,WAHe,OAApBh9M,KAAKg9M,WAGah9M,KAAK+8M,WAAaxqE,EAKlBvyI,KAAKg9M,WAAWmB,WAAa5rE,GAE5CA,EAEXktE,eAAeltE,GACX,OAA8B,OAA1BvyI,KAAKy8M,mBACLz8M,KAAKy8M,iBAAmB,IAAIqD,IAEhC9/M,KAAKy8M,iBAAiB16D,IAAIxP,GAC1BA,EAAOyB,aAAe,KACtBzB,EAAOqrE,aAAe,KACK,OAA3B59M,KAASk9M,eAGLl9M,KAAKk9M,cAAgBl9M,KAAKi9M,cAAgB1qE,EAC1CA,EAAOqtE,aAAe,OAMtBrtE,EAAOqtE,aAAe5/M,KAAKk9M,cAC3Bl9M,KAAKk9M,cAAgBl9M,KAAKk9M,cAAcU,aAAerrE,GAEpDA,EAGXosE,mBAAmBpsE,EAAQx3I,GACvBw3I,SAAOx3I,KAAOA,EAEViF,KAAKo9M,qBADyB,OAAlCp9M,KAASo9M,qBACuBp9M,KAAKm9M,qBAAuB5qE,EAG5BvyI,KAAKo9M,qBAAqBgB,oBAAsB7rE,EAEzEA,GAGf,SACIzyI,YAAY/E,EAAM0jN,GACdz+M,KAAKjF,KAAOA,EACZiF,KAAKy+M,UAAYA,EACjBz+M,KAAKg0I,aAAe,KACpBh0I,KAAKi0I,cAAgB,KAErBj0I,KAAKg+M,cAAgB,KAErBh+M,KAAKg/M,MAAQ,KAEbh/M,KAAK41H,MAAQ,KAEb51H,KAAKggN,SAAW,KAEhBhgN,KAAKigN,SAAW,KAEhBjgN,KAAK4/M,aAAe,KAEpB5/M,KAAK49M,aAAe,KAEpB59M,KAAKi+M,WAAa,KAElBj+M,KAAKm+M,WAAa,KAElBn+M,KAAKo+M,oBAAsB,MAInC,SACIt+M,cAEIE,KAAKkgN,MAAQ,KAEblgN,KAAKmgN,MAAQ,KAOjBn+M,IAAIuwI,GACmB,OAAfvyI,KAAKkgN,OACLlgN,KAAKkgN,MAAQlgN,KAAKmgN,MAAQ5tE,EAC1BA,EAAO0tE,SAAW,KAClB1tE,EAAOytE,SAAW,OAMlBhgN,KAAKmgN,MAAMF,SAAW1tE,EACtBA,EAAOytE,SAAWhgN,KAAKmgN,MACvB5tE,EAAO0tE,SAAW,KAClBjgN,KAAKmgN,MAAQ5tE,GAKrBl9I,IAAIopN,EAAW2B,GACX,IAAI7tE,EACJ,IAAKA,EAASvyI,KAAKkgN,MAAkB,OAAX3tE,EAAiBA,EAASA,EAAO0tE,SACvD,IAAwB,OAAnBG,GAA2BA,GAAkB7tE,EAAOyB,eACrD/gJ,OAAOu4F,GAAG+mD,EAAOksE,UAAWA,GAC5B,OAAOlsE,EAGf,OAAO,KAOX9uH,OAAO8uH,GASH,MAAM/nC,EAAO+nC,EAAOytE,SACdvjN,EAAO81I,EAAO0tE,SACpB,OAAa,OAATz1G,EACAxqG,KAAKkgN,MAAQzjN,EAGb+tG,EAAKy1G,SAAWxjN,EAEP,OAAb8oD,EACIvlD,KAAKmgN,MAAQ31G,EAGb/tG,EAAKujN,SAAWx1G,EAEE,OAAfxqG,KAAKkgN,KAAU,EAG9B,SACIpgN,cACIE,KAAKhL,IAAM,IAAII,IAEnB2sJ,IAAIxP,GACA,MAAMt9I,EAAMs9I,EAAOksE,UACnB,IAAI4B,EAAargN,KAAKhL,IAAIK,IAAIJ,GACzBorN,IACDA,EAAa,IAAIC,GACjBtgN,KAAKhL,IAAIM,IAAIL,EAAKorN,IAEtBA,EAAWr+M,IAAIuwI,GASnBl9I,IAAIopN,EAAW2B,GACX,MACMG,EAAavgN,KAAKhL,IAAIK,IADhBopN,GAEZ,OAAO8B,EAAaA,EAAWlrN,IAAIopN,EAAW2B,GAAkB,KAOpE38L,OAAO8uH,GACH,MAAMt9I,EAAMs9I,EAAOksE,UAGnB,OAAI8B,KAFoBvrN,IAAIK,IAAIJ,GAEjBwuB,OAAO8uH,IAClBvyI,KAAKhL,IAAIijB,OAAOhjB,GAEbs9I,EAEP7uI,cACA,OAAyB,IAAlB1D,KAAKhL,IAAIuL,IAAS,CAE7B6G,QACIpH,KAAKhL,IAAIoS,SAGjB,YAA0BrM,EAAMyiN,EAAiBC,GAC7C,MAAMxpE,EAAgBl5I,EAAKk5I,cAC3B,GAAsB,OAAlBA,EACA,OAAOA,EACX,IAAIusE,EAAa,EACjB,OAAI/C,GAAexpE,EAAgBwpE,EAAY1rN,SAC3CyuN,EAAa/C,EAAYxpE,IAEtBA,EAAgBupE,EAAkBgD,EAU7C,SACI1gN,cAAc,CACdq8M,SAAS3hN,GACL,OAAOA,aAAepF,KAAOkqL,GAAW9kL,GAE5CuS,SACI,OAAO,IAAI0zM,IAGnB,SACI3gN,cACIE,KAAK0gN,SAAW,IAAItrN,IACpB4K,KAAK2gN,SAAW,KAEhB3gN,KAAK4gN,aAAe,KACpB5gN,KAAK6gN,iBAAmB,KACxB7gN,KAAK8gN,aAAe,KACpB9gN,KAAK+gN,aAAe,KACpB/gN,KAAK68M,eAAiB,KACtB78M,KAAK88M,eAAiB,KACtB98M,KAAKi9M,cAAgB,KACrBj9M,KAAKk9M,cAAgB,KAErBt/I,cACA,OAA+B,OAAxB59D,KAAK68M,gBAAiD,OAAtB78M,KAAK8gN,cACjB,OAAvB9gN,KAAKi9M,aAAkB,CAE/BI,YAAYjtM,GACR,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK2gN,SAAqB,OAAXpuE,EAAiBA,EAASA,EAAO3c,MAC1DxlH,EAAGmiI,GAGXwrE,oBAAoB3tM,GAChB,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK6gN,iBAA6B,OAAXtuE,EAAiBA,EAASA,EAAOyrE,cAClE5tM,EAAGmiI,GAGXE,mBAAmBriI,GACf,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK8gN,aAAyB,OAAXvuE,EAAiBA,EAASA,EAAOyuE,aAC9D5wM,EAAGmiI,GAGXD,iBAAiBliI,GACb,IAAImiI,EACJ,IAAKA,EAASvyI,KAAK68M,eAA2B,OAAXtqE,EAAiBA,EAASA,EAAO0rE,WAChE7tM,EAAGmiI,GAGXG,mBAAmBtiI,GACf,IAAImiI,EACJ,IAAKA,EAASvyI,KAAKi9M,cAA0B,OAAX1qE,EAAiBA,EAASA,EAAOqrE,aAC/DxtM,EAAGmiI,GAGXp+E,KAAKn/D,GACD,GAAKA,GACSI,KAEHJ,aAAeI,KAAOkqL,GAAWtqL,IAIxC,MAAM,IAAIwxJ,GAAa,IADnB,SALJxxJ,EAAM,IAAII,IAQd,OAAO4K,KAAKq+M,MAAMrpN,GAAOgL,KAAO,KAEpC5L,YAAY,CAKZiqN,MAAMrpN,GACFgL,KAAKs+M,SACL,IAAItiM,EAAehc,KAAK2gN,SAcxB,GAbA3gN,KAAK4gN,aAAe,KACpB5gN,KAAKihN,SAASjsN,EAAK,CAACG,EAAOF,KACvB,GAAI+mB,GAAgBA,EAAa/mB,MAAQA,EACrC+K,KAAKkhN,mBAAmBllM,EAAc7mB,GACtC6K,KAAK4gN,aAAe5kM,EACpBA,EAAeA,EAAa45G,UAE3B,CACD,MAAM2c,EAASvyI,KAAKmhN,yBAAyBlsN,EAAKE,GAClD6mB,EAAehc,KAAKohN,sBAAsBplM,EAAcu2H,MAI5Dv2H,EAAc,CACVA,EAAagjM,QACbhjM,EAAagjM,MAAMppF,MAAQ,MAE/B51H,KAAKi9M,cAAgBjhM,EACrB,QAASu2H,EAASv2H,EAAyB,OAAXu2H,EAAiBA,EAASA,EAAOqrE,aACzDrrE,IAAWvyI,KAAK2gN,WAChB3gN,KAAK2gN,SAAW,MAEpB3gN,KAAK0gN,SAASzoM,OAAOs6H,EAAOt9I,KAC5Bs9I,EAAOqrE,aAAerrE,EAAO3c,MAC7B2c,EAAO3zH,cAAgB2zH,EAAOlzE,aAC9BkzE,EAAOlzE,aAAe,KACtBkzE,EAAOysE,MAAQ,KACfzsE,EAAO3c,MAAQ,KAIvB,OAAI51H,KAAK+gN,eACL/gN,KAAK+gN,aAAaC,aAAe,MACjChhN,KAAK88M,iBACL98M,KAAK88M,eAAemB,WAAa,MAC9Bj+M,KAAK49D,QAUhBwjJ,sBAAsBv7D,EAAQtT,GAC1B,GAAIsT,EAAQ,CACR,MAAMr7C,EAAOq7C,EAAOm5D,MACpBzsE,SAAO3c,MAAQiwB,EACftT,EAAOysE,MAAQx0G,EACfq7C,EAAOm5D,MAAQzsE,EACX/nC,IACAA,EAAKorB,MAAQ2c,GAEbsT,IAAW7lJ,KAAK2gN,WAChB3gN,KAAK2gN,SAAWpuE,GAEpBvyI,KAAK4gN,aAAe/6D,EACbA,EAEX,OAAI7lJ,KAAK4gN,cACL5gN,KAAK4gN,aAAahrF,MAAQ2c,EAC1BA,EAAOysE,MAAQh/M,KAAK4gN,cAGpB5gN,KAAK2gN,SAAWpuE,EAEpBvyI,KAAK4gN,aAAeruE,EACb,KAEX4uE,yBAAyBlsN,EAAKE,GAC1B,GAAI6K,KAAK0gN,SAASrhN,IAAIpK,GAAM,CACxB,MAAMs9I,EAASvyI,KAAK0gN,SAASrrN,IAAIJ,GACjC+K,KAAKkhN,mBAAmB3uE,EAAQp9I,GAChC,MAAMq1G,EAAO+nC,EAAOysE,MACdviN,EAAO81I,EAAO3c,MACpB,OAAIprB,IACAA,EAAKorB,MAAQn5H,GAEbA,IACAA,EAAKuiN,MAAQx0G,GAEjB+nC,EAAO3c,MAAQ,KACf2c,EAAOysE,MAAQ,KACRzsE,EAEX,MAAMA,EAAS,IAAI8uE,GAAsBpsN,GACzC,YAAKyrN,SAASprN,IAAIL,EAAKs9I,GACvBA,EAAOlzE,aAAelqE,EACtB6K,KAAKshN,gBAAgB/uE,GACdA,EAGX+rE,SACI,GAAIt+M,KAAK49D,QAAS,CACd,IAAI20E,EAGJ,IADAvyI,KAAK6gN,iBAAmB7gN,KAAK2gN,SACxBpuE,EAASvyI,KAAK6gN,iBAA6B,OAAXtuE,EAAiBA,EAASA,EAAO3c,MAClE2c,EAAOyrE,cAAgBzrE,EAAO3c,MAIlC,IAAK2c,EAASvyI,KAAK8gN,aAAyB,OAAXvuE,EAAiBA,EAASA,EAAOyuE,aAC9DzuE,EAAO3zH,cAAgB2zH,EAAOlzE,aAElC,IAAKkzE,EAASvyI,KAAK68M,eAA0B,MAAVtqE,EAAgBA,EAASA,EAAO0rE,WAC/D1rE,EAAO3zH,cAAgB2zH,EAAOlzE,aAElCr/D,KAAK8gN,aAAe9gN,KAAK+gN,aAAe,KACxC/gN,KAAK68M,eAAiB78M,KAAK88M,eAAiB,KAC5C98M,KAAKi9M,cAAgB,MAI7BiE,mBAAmB3uE,EAAQ8D,GAClBpjJ,OAAOu4F,GAAG6qD,EAAU9D,EAAOlzE,gBAC5BkzE,EAAO3zH,cAAgB2zH,EAAOlzE,aAC9BkzE,EAAOlzE,aAAeg3E,EACtBr2I,KAAKuhN,cAAchvE,IAG3B+uE,gBAAgB/uE,GACgB,OAAxBvyI,KAAK68M,eACL78M,KAAK68M,eAAiB78M,KAAK88M,eAAiBvqE,GAG5CvyI,KAAK88M,eAAemB,WAAa1rE,EACjCvyI,KAAK88M,eAAiBvqE,GAG9BgvE,cAAchvE,GACgB,OAAtBvyI,KAAK8gN,aACL9gN,KAAK8gN,aAAe9gN,KAAK+gN,aAAexuE,GAGxCvyI,KAAK+gN,aAAaC,aAAezuE,EACjCvyI,KAAK+gN,aAAexuE,GAI5B0uE,SAASzmN,EAAK4V,GACN5V,aAAepF,IACfoF,EAAI5H,QAAQwd,GAGZnd,OAAOC,KAAKsH,GAAK5H,QAAQygE,GAAKjjD,EAAG5V,EAAI64D,GAAIA,KAIrD,SACIvzD,YAAY7K,GACR+K,KAAK/K,IAAMA,EACX+K,KAAK4e,cAAgB,KACrB5e,KAAKq/D,aAAe,KAEpBr/D,KAAKg+M,cAAgB,KAErBh+M,KAAK41H,MAAQ,KAEb51H,KAAKg/M,MAAQ,KAEbh/M,KAAKi+M,WAAa,KAElBj+M,KAAK49M,aAAe,KAEpB59M,KAAKghN,aAAe,MAW5B,cACI,OAAO,IAAIQ,GAAgB,CAAC,IAAIC,SAO9BD,SAAN,QACI1hN,YAAYihM,GACR/gM,KAAK+gM,UAAYA,gBAEPA,EAAW3qM,GACrB,GAAc,MAAVA,EAAgB,CAChB,MAAMsrN,EAAStrN,EAAO2qM,UAAU30L,QAChC20L,EAAYA,EAAUl8K,OAAO68L,GAEjC,OAAO,IAAIF,EAAgBzgB,iBAsBjBA,GACV,MAAO,CACH30K,QAASo1L,EACTj1L,WAAan2B,GAIForN,EAAgBz0M,OAAOg0L,EAAW3qM,GAAUurN,MAGvDh1L,KAAM,CAAC,CAAC60L,EAAiB,IAAI/5D,GAAY,IAAIC,MAGrDthJ,KAAKk1H,GACD,MAAMxiI,EAAUkH,KAAK+gM,UAAU36L,KAAKoM,GAAKA,EAAE2pM,SAAS7gF,IACpD,GAAe,MAAXxiI,EACA,OAAOA,EAMP,MAAM,IAAI0tJ,GAAa,IADnB,GAC2DjP,EAK3EiqE,SAAgB5oN,WAAQkhK,GAAmB,CAAEzzJ,MAAOm7M,EAAiBp9E,WAAY,OAAQtrI,QAAS6oN,KA1D5FH,MAsEN,cACI,OAAO,IAAII,GAAgB,CAAC,IAAIC,SAO9BD,SAAN,QACI9hN,YAAYihM,GACR/gM,KAAK+gM,UAAYA,gBAEPA,EAAW3qM,GACrB,GAAIA,EAAQ,CACR,MAAMsrN,EAAStrN,EAAO2qM,UAAU30L,QAChC20L,EAAYA,EAAUl8K,OAAO68L,GAEjC,OAAO,IAAIE,EAAgB7gB,iBAsBjBA,GACV,MAAO,CACH30K,QAASw1L,EACTr1L,WAAan2B,GAIFwrN,EAAgB70M,OAAOg0L,EAAW3qM,GAAU0rN,MAGvDn1L,KAAM,CAAC,CAACi1L,EAAiB,IAAIn6D,GAAY,IAAIC,MAGrDthJ,KAAK27M,GACD,MAAMjpN,EAAUkH,KAAK+gM,UAAU36L,KAAKoM,GAAKA,EAAE2pM,SAAS4F,IACpD,GAAIjpN,EACA,OAAOA,EAKX,MAAM,IAAI0tJ,GAAa,IADnB,GAC2DjP,SAIvEqqE,EAAgBhpN,WAAQkhK,GAAmB,CAAEzzJ,MAAOu7M,EAAiBx9E,WAAY,OAAQtrI,QAASgpN,KAxD5FF,MAoEN,MA4BMI,GAAeC,GAAsB,KAAM,OAAQ,QASnDC,SAAN,QAEIpiN,YAAY+jM,GAAQ,EAExBqe,SAAkBvpN,UAAO,SAAmCgtF,GAAK,OAAO,IAAKA,GAAKu8H,GAAmBj+E,GAASm2E,MAC9G8H,EAAkB10L,UAAqB20L,GAAiB,CAAEjlN,KAAMglN,IAChEA,EAAkBz0L,UAAqB20L,GAAiB,IANlDF,KAsHyF16G,6TC7o4BzF66G,QAAN,SACIviN,YAAYkoB,GAAWs6L,IACnBtiN,KAAKgoB,UAAYA,GACjBhoB,KAAKsiN,YAAcA,GAMnBtiN,KAAK6/G,SAAY1jH,OAKjB6D,KAAKuiN,UAAY,MAAM,CAO3Bx5L,YAAY9zB,GAAKE,IACb6K,KAAKgoB,UAAUe,YAAY/oB,KAAKsiN,YAAYnzK,cAAel6C,GAAKE,IAMpEqtN,kBAAkBpyM,IACdpQ,KAAKuiN,UAAYnyM,GAMrBqyM,iBAAiBryM,IACbpQ,KAAK6/G,SAAWzvG,GAMpBsyM,iBAAiBC,IACb3iN,KAAK+oB,YAAY,WAAY45L,KAGrCN,UAAyB1pN,UAAzB,4BAAqH0pN,IAAVxpN,MAAoDA,OAApDA,MAA6EA,SACxLwpN,GAAyBxvE,UADkFh6I,MAC3G,MAAyGwpN,KA/CnGA,OA4DAO,QAAN,iBAA0CP,GAE1CO,UAA4BjqN,UAA5B,qDAhB2GE,MAgBa+pN,MAAxHC,IAAwHD,KAAxH,GACAA,GAA4B/vE,UAjB+Eh6I,MAiB3G,MAA4G+pN,GAA5Gh4D,UAjB2G/xJ,SAcrG+pN,OAcN,MAAME,GAAoB,IAAI52L,MAAe,mBASvC62L,GAA0B,CAC5B32L,QAAS02L,GACT57G,eAAa++C,OAAW,IAAM+8D,IAC9B9sN,OAAO,OAyBL8sN,SAAN,iBAA2CJ,EAKvCK,WAAW9tN,IACP6K,KAAK+oB,YAAY,UAAW5zB,KAGpC6tN,UAA6BrqN,UAA7B,qDA1E2GE,MA0EcmqN,MAAzHH,IAAyHG,KAAzH,GACAA,GAA6BnwE,UA3E8Eh6I,MA2E3G,MAA6GmqN,GAA7G50L,sLA3E2Gv1B,MA2E3G,6BAA6GgqN,gCA3EFhqN,CA2E3G,yBAA6GgqN,kBAA7Gj4D,UA3E2G/xJ,MA2E2P,CAACkqN,KA3E5PlqN,SAiErGmqN,OA2BN,MAAME,EAAyB,CAC3B92L,QAAS02L,GACT57G,eAAa++C,OAAW,IAAMk9D,GAC9BjtN,OAAO,GAgBLktN,GAA0B,IAAIl3L,MAAe,4BAoC7Ci3L,QAAN,iBAAmCd,EAC/BviN,YAAYgpB,GAAU4hL,GAAY2Y,IAC9B/0M,MAAMwa,GAAU4hL,IAChB1qM,KAAKqjN,iBAAmBA,GAExBrjN,KAAKsjN,YAAa,EACW,MAAzBtjN,KAAKqjN,mBACLrjN,KAAKqjN,kBArDjB,cACI,MAAME,IAAYC,UAAYA,SAAUC,eAAiB,GACzD,MAAO,gBAAgB58H,KAAK08H,GAAUzmN,eAmDL4mN,IAOjCT,WAAW9tN,IAEP6K,KAAK+oB,YAAY,QADgB,MAAT5zB,GAAgB,GAAKA,GACnB9B,CAG9BswN,aAAaxuN,MACJ6K,KAAKqjN,kBAAqBrjN,KAAKqjN,mBAAqBrjN,KAAKsjN,aAC1DtjN,KAAK6/G,SAAS1qH,IAItByuN,oBACI5jN,KAAKsjN,YAAa,EAGtBO,gBAAgB1uN,IACZ6K,KAAKsjN,YAAa,EAClBtjN,KAAKqjN,kBAAoBrjN,KAAK6/G,SAAS1qH,KAG/CguN,UAAqBxqN,UAArB,4BAAiHwqN,IArLNtqN,MAqL4CA,OArL5CA,MAqLqEA,OArLrEA,MAqL+FuqN,GAA1M,KACAD,GAAqBtwE,UAtLsFh6I,MAsL3G,MAAqGsqN,GAArG/0L,iTAtL2Gv1B,MAsL3G,4BAAqGgqN,kCAtLMhqN,CAsL3G,yBAAqGgqN,gBAtLMhqN,CAsL3G,qCAAqGgqN,wBAtLMhqN,CAsL3G,qCAAqGgqN,uCAArGj4D,UAtL2G/xJ,MAsLyd,CAACqqN,IAtL1drqN,SAmJrGsqN,OAmEN,WAA2BhuN,IAEvB,OAAgB,MAATA,IAAkC,IAAjBA,GAAMpD,MAAW,CAkC7C,MAAM+xN,GAAgB,IAAI53L,MAAe,gBA8BnC63L,GAAsB,IAAI73L,MAAe,qBAiW/C,WAA2B83L,IACvB,OAAOC,EAAkBD,GAAQ7uN,OAAS,CAAE+uN,UAAY,GAAS,KAiFrE,YAAuBF,IACnB,OAAO,KAEX,YAAmBvhK,IACf,OAAY,MAALA,EAAK,CAEhB,YAAsB8C,IAClB,MAAM01E,IAAMsd,SAAWhzF,KAAKzuD,OAAKyuD,IAAKA,GAClC,OAAE4+J,SAAclpF,IAGbA,GAEX,YAAqBmpF,IACjB,IAAI7lH,GAAM,GAGV6lH,UAAcxxN,QAASJ,KACnB+rG,GAAgB,MAAV/rG,GAAiBS,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIitF,IAAM/rG,IAAU+rG,KAExC,IAA5BtrG,OAAOC,KAAKqrG,IAAKxsG,OAAe,KAAOwsG,GAElD,YAA2BylH,GAASrrJ,IAChC,OAAOA,GAAW3jE,IAAIo7C,IAAaA,GAAU4zK,KAajD,WAA6BrrJ,IACzB,OAAOA,GAAW3jE,IAAIo7C,IAZ1B,YAAuBA,IACnB,OAAQA,GAAUnB,SAYPo1K,CAAcj0K,IACjBA,GACE+Z,IAAM/Z,GAAUnB,SAASkb,KAsBvC,YAA2BwO,IACvB,OAAqB,MAAdA,GAhBX,YAAiBA,IACb,IAAKA,GACD,OAAO,KACX,MAAM2rJ,GAAoB3rJ,GAAWvwD,OAAOm8M,IAC5C,OAAgC,GAA5BD,GAAkBvyN,OACX,KACJ,SAAUiyN,IACb,OAAOQ,GAAYC,GAAkBT,GAASM,MAStBx5H,CAAQ45H,EAAoB/rJ,KAAe,KAsB3E,YAAgCA,IAC5B,OAAqB,MAAdA,GAjBX,YAAsBA,IAClB,IAAKA,GACD,OAAO,KACX,MAAM2rJ,GAAoB3rJ,GAAWvwD,OAAOm8M,IAC5C,OAAgC,GAA5BD,GAAkBvyN,OACX,KACJ,SAAUiyN,IAEb,OCz1BD,cAAqB7vM,IACxB,MAAM2jH,IAAiBC,QAAkB5jH,KACjCA,KAAM+nH,GAAShpI,UAAS+kI,OAAqB9jH,IAC/C5c,GAAS,IAAIo7H,KAAYN,KAC3B,MAAQtgI,WAAWmqI,GACnB,IAAKnqI,GAED,YADAsgI,GAAWW,WAGf,MAAM9wH,GAAS,IAAIrL,MAAM9E,IACzB,IAAI4yN,GAAuB5yN,GACvB6yN,GAAqB7yN,GACzB,QAAS8yN,GAAc,EAAGA,GAAc9yN,GAAQ8yN,KAAe,CAC3D,IAAIvnF,IAAW,GACfrE,QAAUiD,GAAQ2oF,KAAcxgI,WAAUi0C,OAAyBjG,GAAal9H,KACvEmoI,KACDA,IAAW,EACXsnF,MAEJ1iN,GAAO2iN,IAAe1vN,IACvB,IAAMwvN,UAAwB/vN,EAAW,OACnC+vN,KAAyBrnF,MACrBsnF,IACDvyF,GAAW51H,KAAKvJ,IAAOslI,OAAatlI,GAAMgP,IAAUA,IAExDmwH,GAAWW,kBAK3B,OAAO8E,GAAiBvgI,GAAO6oC,MAAKq4F,OAAiBX,KAAmBvgI,GD2zB7DutN,CADaL,GAAkBT,GAASM,IAAmBtvN,IAAI+vN,KACzC3kL,MAAKprC,OAAIwvN,MASdQ,CAAaN,EAAoB/rJ,KACzD,KAMR,YAAyBssJ,GAAmBC,IACxC,OAA0B,OAAtBD,GACO,CAACC,IACLruN,MAAM4E,QAAQwpN,IAAqB,IAAIA,GAAmBC,IAC7D,CAACD,GAAmBC,IAqB5B,YAA6BvsJ,IACzB,OAAKA,GAEE9hE,MAAM4E,QAAQk9D,IAAcA,GAAa,CAACA,IADtC,GAUf,YAAsBA,GAAYvoB,IAC9B,OAAOv5C,MAAM4E,QAAQk9D,IAAcA,GAAW1uB,SAASmG,IAAauoB,KAAevoB,GASvF,YAAuBuoB,GAAYwsJ,IAC/B,MAAM79J,GAAU89J,GAAoBD,IAEpCE,OADwBD,GAAoBzsJ,IAC5B/lE,QAASyQ,KAKhB81D,GAAa7R,GAASjkD,KACvBikD,GAAQ5zD,KAAK2P,MAGdikD,GAEX,YAA0BqR,GAAYwsJ,IAClC,OAAOC,GAAoBD,IAAmB/8M,OAAO/E,KAAM81D,GAAaR,GAAYt1D,KAkBxF,SACIvD,cAKIE,KAAKslN,eAAiB,GAMtBtlN,KAAKulN,oBAAsB,GAI3BvlN,KAAKwlN,oBAAsB,GAM3BrwN,YACA,OAAO6K,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ7uN,MAAQ,KAQ3CwqG,YACA,OAAO3/F,KAAKgkN,QAAUhkN,KAAKgkN,QAAQrkH,MAAQ,KAO3ClN,cACA,OAAOzyF,KAAKgkN,QAAUhkN,KAAKgkN,QAAQvxH,QAAU,KAQ7C6gB,cACA,OAAOtzG,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ1wG,QAAU,KAQ7Cz+G,eACA,OAAOmL,KAAKgkN,QAAUhkN,KAAKgkN,QAAQnvN,SAAW,KAO9C2gG,cACA,OAAOx1F,KAAKgkN,QAAUhkN,KAAKgkN,QAAQxuH,QAAU,KAM7ChjG,aACA,OAAOwN,KAAKgkN,QAAUhkN,KAAKgkN,QAAQxxN,OAAS,KAO5CizN,eACA,OAAOzlN,KAAKgkN,QAAUhkN,KAAKgkN,QAAQyB,SAAW,KAO9Cnc,YACA,OAAOtpM,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ1a,MAAQ,KAO3Coc,cACA,OAAO1lN,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ0B,QAAU,KAQ7C5mL,aACA,OAAO9+B,KAAKgkN,QAAUhkN,KAAKgkN,QAAQllL,OAAS,KAO5C6mL,gBACA,OAAO3lN,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ2B,UAAY,KAO/CC,oBACA,OAAO5lN,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ4B,cAAgB,KAQnDC,mBACA,OAAO7lN,KAAKgkN,QAAUhkN,KAAKgkN,QAAQ6B,aAAe,KAOlD5kL,WACA,OAAO,KAMX6kL,eAAentJ,IACX34D,KAAKslN,eAAiB3sJ,IAAc,GACpC34D,KAAK+lN,qBAAuBC,GAAkBhmN,KAAKslN,gBAMvDW,oBAAoBttJ,IAChB34D,KAAKulN,oBAAsB5sJ,IAAc,GACzC34D,KAAKkmN,0BAA4BC,GAAuBnmN,KAAKulN,qBAO7Dn1K,gBACA,OAAOpwC,KAAK+lN,sBAAwB,KAOpCK,qBACA,OAAOpmN,KAAKkmN,2BAA6B,KAO7CG,mBAAmBj2M,IACfpQ,KAAKwlN,oBAAoB9xN,KAAK0c,IAOlCk2M,4BACItmN,KAAKwlN,oBAAoB5yN,QAAQwd,IAAMA,MACvCpQ,KAAKwlN,oBAAsB,GAM/BlxM,MAAMnf,IACE6K,KAAKgkN,SACLhkN,KAAKgkN,QAAQ1vM,MAAMnf,IAgC3Bq9H,SAAS+zF,GAAWtlL,IAChB,QAAOjhC,KAAKgkN,SAAUhkN,KAAKgkN,QAAQxxF,SAAS+zF,GAAWtlL,GAAQ,CA6BnEulL,SAASD,GAAWtlL,IAChB,OAAOjhC,KAAKgkN,QAAUhkN,KAAKgkN,QAAQwC,SAASD,GAAWtlL,IAAQ,MAkBvE,iBAAwBwlL,GACpB3mN,cACIwO,SAASi8E,WAOTvqF,KAAK0kL,QAAU,KAKf1kL,KAAKe,KAAO,KAKZf,KAAK0mN,cAAgB,MAkB7B,iBAA+BD,GAKvBE,oBACA,OAAO,KAMP1lL,WACA,OAAO,UAyET2lL,SAAN,iBA9DA,SACI9mN,YAAY+mN,IACR7mN,KAAK8mN,IAAMD,GAEfr7H,GAAG1sD,IACC,IAAIhiB,GAAI+L,GAAI4S,GAOZ,MAAe,cAAXqD,MAG8B,QAAnBhiB,GAAK9c,KAAK8mN,WAAwB,IAAPhqM,QAAgB,EAASA,GAAGiqM,cAEe,QAA1EtrL,GAAyB,QAAnB5S,GAAK7oB,KAAK8mN,WAAwB,IAAPj+L,QAAgB,EAASA,GAAGm7L,eAA4B,IAAPvoL,QAAgB,EAASA,GAAGqD,OA8C7Hh/B,YAAY+mN,IACRv4M,MAAMu4M,KAGdD,UAAgBjuN,UAAhB,4BAA4GiuN,IA7wCD/tN,MA6wCkCmuN,GAA7I,KACAJ,GAAgB/zE,UA9wC2Fh6I,MA8wC3G,MAAgG+tN,GAAhGx4L,6HA9wC2Gv1B,MA8wC3G,kCA9wC2GA,CA8wC3G,8BA9wC2GA,CA8wC3G,gCA9wC2GA,CA8wC3G,0BA9wC2GA,CA8wC3G,0BA9wC2GA,CA8wC3G,8BA9wC2GA,CA8wC3G,0CA9wC2GA,SAwwCrG+tN,OAkNN,YAAsB5C,GAASvvE,KA+E/B,YAAyBuvE,GAASvvE,IAC9B,MAAM97E,GAzvBV,YAA8BqrJ,IAC1B,OAAOA,GAAQsB,eAwvBI2B,CAAqBjD,IAClB,OAAlBvvE,GAAIrkG,UACJ4zK,GAAQkD,cAAcC,GAAgBxuJ,GAAY87E,GAAIrkG,YAE3B,mBAAfuoB,IAQZqrJ,GAAQkD,cAAc,CAACvuJ,KAE3B,MAAMyuJ,GAjwBV,YAAmCpD,IAC/B,OAAOA,GAAQuB,oBAgwBS8B,CAA0BrD,IACvB,OAAvBvvE,GAAI2xE,eACJpC,GAAQsD,mBAAmBH,GAAgBC,GAAiB3yE,GAAI2xE,iBAEhC,mBAApBgB,IACZpD,GAAQsD,mBAAmB,CAACF,KAGhC,MAAMG,GAAoB,IAAMvD,GAAQwD,yBACxCC,GAA0BhzE,GAAI6wE,eAAgBiC,IAC9CE,GAA0BhzE,GAAI8wE,oBAAqBgC,KAjGnDG,CAAgB1D,GAASvvE,IACzBA,GAAIiyE,cAAczD,WAAWe,GAAQ7uN,OA2IzC,YAAiC6uN,GAASvvE,IACtCA,GAAIiyE,cAAcjE,iBAAkBpsE,KAChC2tE,GAAQ2D,cAAgBtxE,GACxB2tE,GAAQ4D,gBAAiB,EACzB5D,GAAQ6D,eAAgB,EACC,WAArB7D,GAAQ8D,UACRC,GAAc/D,GAASvvE,MAhJ/BuzE,CAAwBhE,GAASvvE,IAmKrC,YAAkCuvE,GAASvvE,IACvC,MAAM50B,GAAW,CAACw2B,GAAU4xE,MAExBxzE,GAAIiyE,cAAczD,WAAW5sE,IAEzB4xE,IACAxzE,GAAIyzE,kBAAkB7xE,KAE9B2tE,GAAQvB,iBAAiB5iG,IAGzB40B,GAAI4xE,mBAAmB,KACnBrC,GAAQmE,oBAAoBtoG,MA9KhCuoG,CAAyBpE,GAASvvE,IAkJtC,YAA2BuvE,GAASvvE,IAChCA,GAAIiyE,cAAclE,kBAAkB,KAChCwB,GAAQqE,iBAAkB,EACD,SAArBrE,GAAQ8D,UAAuB9D,GAAQ4D,gBACvCG,GAAc/D,GAASvvE,IACF,WAArBuvE,GAAQ8D,UACR9D,GAAQsE,kBAvJhBC,CAAkBvE,GAASvvE,IAgD/B,YAAoCuvE,GAASvvE,IACzC,GAAIA,GAAIiyE,cAAchE,iBAAkB,CACpC,MAAM8F,GAAoB7F,KACtBluE,GAAIiyE,cAAchE,iBAAiBC,KAEvCqB,GAAQyE,yBAAyBD,IAGjC/zE,GAAI4xE,mBAAmB,KACnBrC,GAAQ0E,4BAA4BF,OAxD5CG,CAA2B3E,GAASvvE,IAkCxC,YAAmC97E,GAAYknD,IAC3ClnD,GAAW/lE,QAASw9C,KACZA,GAAUq3K,2BACVr3K,GAAUq3K,0BAA0B5nG,MAoHhD,YAAuBmkG,GAASvvE,IACxBuvE,GAAQ6D,eACR7D,GAAQ4E,cACZ5E,GAAQt4L,SAASs4L,GAAQ2D,cAAe,CAAEkB,uBAAuB,IACjEp0E,GAAIyzE,kBAAkBlE,GAAQ2D,eAC9B3D,GAAQ4D,gBAAiB,EAqH7B,YAAwBppE,GAAMnzH,IAC1B,MAAMvX,GAAQ0qI,GAAK/oJ,QAAQ41B,IACvBvX,IAAQ,GACR0qI,GAAKlkJ,OAAOwZ,GAAO,GAqB3B,MAMMg1M,GAAQ,QAMRh3H,GAAU,UAQVi3H,GAAU,UAQVC,GAAW,WA8BjB,YAAwBC,IACpB,OAAQC,GAAaD,IAAmBA,GAAgBtwJ,WAAaswJ,KAAoB,KAK7F,YAA2B74K,IACvB,OAAOv5C,MAAM4E,QAAQ20C,IAAa41K,GAAkB51K,IAAaA,IAAa,KAKlF,YAA6Bg2K,GAAgB6C,IACzC,OAAQC,GAAaD,IAAmBA,GAAgB7B,gBAAkBhB,KAAmB,KAKjG,YAAgCA,IAC5B,OAAOvvN,MAAM4E,QAAQ2qN,IAAkBD,GAAuBC,IAC1DA,IAAkB,KAE1B,YAAsB6C,IAClB,OAA0B,MAAnBA,KAA4BpyN,MAAM4E,QAAQwtN,KAClB,iBAApBA,EAAoB,CAEnC,MACME,GAAenF,IAAYA,cAAmBoF,GAEpD,YAAqBpF,IACjB,MAJmBA,KAAYA,cAAmBqF,GAI3CC,CAActF,IAAWA,GAAQ7uN,MAAQ6uN,GAAQuF,cAE5D,YAA8BnzN,GAAQnB,IAClC,MAAMu0N,GAAUL,GAAY/yN,IACtBqzN,GAAWrzN,GAAOqzN,SAExB,KADmBD,GAAUv2N,OAAOC,KAAKu2N,IAAYA,IACrC13N,OACZ,MAAM,IAAIP,MAAc,IAAiE,IAE7F,IAAKi4N,GAASx0N,IACV,MAAM,IAAIzD,MAAc,KAA8E,IAG9G,YAAgCwyN,GAAS7uN,IACrBg0N,GAAYnF,IAC5BA,GAAQ0F,cAAc,CAACvtN,GAAGlH,MACtB,QAAmBL,IAAfO,GAAMF,IACN,MAAM,IAAIzD,MAAc,KAAyF,MAkB7H,SASIsO,YAAY64D,GAAYyuJ,IAEpBpnN,KAAK6nN,eAAgB,EAMrB7nN,KAAK2pN,8BAA+B,EAEpC3pN,KAAKqoN,iBAAkB,EAEvBroN,KAAK4pN,oBAAsB,OAC3B5pN,KAAK0kL,QAAU,KAQf1kL,KAAKylN,UAAW,EAOhBzlN,KAAK0lN,SAAU,EAEf1lN,KAAK6pN,kBAAoB,GACzB7pN,KAAKslN,eAAiB3sJ,GACtB34D,KAAKulN,oBAAsB6B,GAC3BpnN,KAAK+lN,qBAAuB+D,GAAkB9pN,KAAKslN,gBACnDtlN,KAAKkmN,0BAA4B6D,GAAuB/pN,KAAKulN,qBAO7Dn1K,gBACA,OAAOpwC,KAAK+lN,qBAEZ31K,cAAU45K,IACVhqN,KAAKslN,eAAiBtlN,KAAK+lN,qBAAuBiE,GAOlD5D,qBACA,OAAOpmN,KAAKkmN,0BAEZE,mBAAe6D,IACfjqN,KAAKulN,oBAAsBvlN,KAAKkmN,0BAA4B+D,GAK5D7zN,aACA,OAAO4J,KAAK0kL,QAUZ/kF,YACA,OAAO3/F,KAAK8+B,SAAWgqL,GAUvBr2H,cACA,OAAOzyF,KAAK8+B,SAAWgzD,GAUvBwhB,cACA,OAAOtzG,KAAK8+B,QAAUiqL,GAatBl0N,eACA,OAAOmL,KAAK8+B,SAAWkqL,GAWvBxzH,cACA,OAAOx1F,KAAK8+B,SAAWkqL,GASvB1f,YACA,OAAQtpM,KAAKylN,SAQbE,gBACA,OAAQ3lN,KAAK0lN,QAQboC,eACA,OAAO9nN,KAAKkqN,UAAYlqN,KAAKkqN,UAAalqN,KAAK5J,OAAS4J,KAAK5J,OAAO0xN,SAAW,SAYnFZ,cAAcvuJ,IACV34D,KAAKslN,eAAiB3sJ,GACtB34D,KAAK+lN,qBAAuB+D,GAAkBnxJ,IAYlD2uJ,mBAAmB3uJ,IACf34D,KAAKulN,oBAAsB5sJ,GAC3B34D,KAAKkmN,0BAA4B6D,GAAuBpxJ,IAc5DwxJ,cAAcxxJ,IACV34D,KAAKknN,cAAciD,GAAcxxJ,GAAY34D,KAAKslN,iBAatD8E,mBAAmBzxJ,IACf34D,KAAKsnN,mBAAmB6C,GAAcxxJ,GAAY34D,KAAKulN,sBAa3D8E,iBAAiB1xJ,IACb34D,KAAKknN,cAAcmD,GAAiB1xJ,GAAY34D,KAAKslN,iBAazDgF,sBAAsB3xJ,IAClB34D,KAAKsnN,mBAAmB+C,GAAiB1xJ,GAAY34D,KAAKulN,sBAS9DpsJ,aAAa/oB,IACT,OAAO+oB,GAAan5D,KAAKslN,eAAgBl1K,IAU7Cm6K,kBAAkBn6K,IACd,OAAO+oB,GAAan5D,KAAKulN,oBAAqBn1K,IASlDo6K,kBACIxqN,KAAKowC,UAAY,KASrBq6K,uBACIzqN,KAAKomN,eAAiB,KAe1BkC,cAAcx5H,GAAO,IACjB9uF,KAAK0lN,SAAU,EACX1lN,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQ4jC,cAAcx5H,IAOnC67H,mBACI3qN,KAAKsoN,cAAc,CAAEoC,UAAU,IAC/B1qN,KAAK0pN,cAAe1F,IAAYA,GAAQ2G,oBAiB5CC,gBAAgB97H,GAAO,IACnB9uF,KAAK0lN,SAAU,EACf1lN,KAAKqoN,iBAAkB,EACvBroN,KAAK0pN,cAAe1F,KAChBA,GAAQ4G,gBAAgB,CAAEF,UAAU,MAEpC1qN,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQmmC,eAAe/7H,IAgBpC85H,YAAY95H,GAAO,IACf9uF,KAAKylN,UAAW,EACZzlN,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQkkC,YAAY95H,IAmBjCg8H,eAAeh8H,GAAO,IAClB9uF,KAAKylN,UAAW,EAChBzlN,KAAK6nN,eAAgB,EACrB7nN,KAAK0pN,cAAe1F,KAChBA,GAAQ8G,eAAe,CAAEJ,UAAU,MAEnC1qN,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQqmC,gBAAgBj8H,IAmBrCk8H,cAAcl8H,GAAO,IACjB9uF,KAAK8+B,OAASiqL,IACS,IAAnBj6H,GAAKm8H,WACLjrN,KAAK4lN,cAAcroK,KAAKv9C,KAAK8+B,QAE7B9+B,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQsmC,cAAcl8H,IAoBnCrqE,QAAQqqE,GAAO,IAGX,MAAMo8H,GAAoBlrN,KAAKmrN,mBAAmBr8H,GAAK47H,UACvD1qN,KAAK8+B,OAASkqL,GACdhpN,KAAKxN,OAAS,KACdwN,KAAK0pN,cAAe1F,KAChBA,GAAQv/L,QAAQxxB,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIw9E,IAAO,CAAE47H,UAAU,OAEvE1qN,KAAKorN,gBACkB,IAAnBt8H,GAAKm8H,YACLjrN,KAAK6lN,aAAatoK,KAAKv9C,KAAK7K,OAC5B6K,KAAK4lN,cAAcroK,KAAKv9C,KAAK8+B,SAEjC9+B,KAAKqrN,iBAAiBp4N,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIw9E,IAAO,CAAEo8H,wBAC/DlrN,KAAK6pN,kBAAkBj3N,QAAS04N,IAAaA,IAAS,IAoB1Dx1H,OAAOhH,GAAO,IAGV,MAAMo8H,GAAoBlrN,KAAKmrN,mBAAmBr8H,GAAK47H,UACvD1qN,KAAK8+B,OAASgqL,GACd9oN,KAAK0pN,cAAe1F,KAChBA,GAAQluH,OAAO7iG,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIw9E,IAAO,CAAE47H,UAAU,OAEtE1qN,KAAKwnN,uBAAuB,CAAEkD,UAAU,EAAMO,UAAWn8H,GAAKm8H,YAC9DjrN,KAAKqrN,iBAAiBp4N,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIw9E,IAAO,CAAEo8H,wBAC/DlrN,KAAK6pN,kBAAkBj3N,QAAS04N,IAAaA,IAAS,IAE1DD,iBAAiBv8H,IACT9uF,KAAK0kL,UAAY51F,GAAK47H,WACtB1qN,KAAK0kL,QAAQ8iC,uBAAuB14H,IAC/BA,GAAKo8H,mBACNlrN,KAAK0kL,QAAQqmC,kBAEjB/qN,KAAK0kL,QAAQmmC,kBAMrBU,UAAUn1N,IACN4J,KAAK0kL,QAAUtuL,GAgBnBoxN,uBAAuB14H,GAAO,IAC1B9uF,KAAKwrN,oBACLxrN,KAAKorN,eACDprN,KAAKw1F,UACLx1F,KAAKyrN,8BACLzrN,KAAKxN,OAASwN,KAAK0rN,gBACnB1rN,KAAK8+B,OAAS9+B,KAAK2rN,oBACf3rN,KAAK8+B,SAAWgqL,IAAS9oN,KAAK8+B,SAAWiqL,KACzC/oN,KAAK4rN,mBAAmB98H,GAAKm8H,aAGd,IAAnBn8H,GAAKm8H,YACLjrN,KAAK6lN,aAAatoK,KAAKv9C,KAAK7K,OAC5B6K,KAAK4lN,cAAcroK,KAAKv9C,KAAK8+B,SAE7B9+B,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQ8iC,uBAAuB14H,IAI5C+8H,oBAAoB/8H,GAAO,CAAEm8H,WAAW,IACpCjrN,KAAK0pN,cAAeoC,IAASA,GAAKD,oBAAoB/8H,KACtD9uF,KAAKwnN,uBAAuB,CAAEkD,UAAU,EAAMO,UAAWn8H,GAAKm8H,YAElEO,oBACIxrN,KAAK8+B,OAAS9+B,KAAK+rN,uBAAyB/C,GAAWF,GAE3D4C,gBACI,OAAO1rN,KAAKowC,UAAYpwC,KAAKowC,UAAUpwC,MAAQ,KAEnD4rN,mBAAmBX,IACf,GAAIjrN,KAAKomN,eAAgB,CACrBpmN,KAAK8+B,OAASiqL,GACd/oN,KAAK2pN,8BAA+B,EACpC,MAAM1uF,GAAM8pF,GAAa/kN,KAAKomN,eAAepmN,OAC7CA,KAAKgsN,6BAA+B/wF,GAAI52C,UAAW7xF,KAC/CwN,KAAK2pN,8BAA+B,EAIpC3pN,KAAKisN,UAAUz5N,GAAQ,CAAEy4N,kBAIrCQ,8BACQzrN,KAAKgsN,+BACLhsN,KAAKgsN,6BAA6Bl5J,cAClC9yD,KAAK2pN,8BAA+B,GA0B5CsC,UAAUz5N,GAAQs8F,GAAO,IACrB9uF,KAAKxN,OAASA,GACdwN,KAAKksN,uBAAyC,IAAnBp9H,GAAKm8H,UAAc,CA8BlD51N,IAAI4rC,IACA,OA7rBR,YAAe+iL,GAAS/iL,GAAMkrL,IAM1B,GALY,MAARlrL,KAECpqC,MAAM4E,QAAQwlC,MACfA,GAAOA,GAAK5iC,MAAM8tN,KAElBt1N,MAAM4E,QAAQwlC,KAAyB,IAAhBA,GAAKlvC,QAC5B,OAAO,KAGX,IAAIq6N,GAAgBpI,GACpB/iL,UAAKruC,QAASmO,KAENqrN,GADAjD,GAAYiD,IACIA,GAAc3C,SAAS3vN,eAAeiH,IAClDqrN,GAAc3C,SAAS1oN,IACvB,KA0CKijN,KAAYA,cAAmBqI,GAxCvCC,CAAgBF,KACDA,GAAcG,GAAGxrN,KAGjB,OAGjBqrN,GAqqBII,CAAMxsN,KAAMihC,GAAM,KA6B7BulL,SAASD,GAAWtlL,IAChB,MAAM+iL,GAAU/iL,GAAOjhC,KAAK3K,IAAI4rC,IAAQjhC,KACxC,OAAOgkN,IAAWA,GAAQxxN,OAASwxN,GAAQxxN,OAAO+zN,IAAa,KAgCnE/zF,SAAS+zF,GAAWtlL,IAChB,QAASjhC,KAAKwmN,SAASD,GAAWtlL,IAKlC/iB,WACA,IAAIm5B,GAAIr3C,KACR,KAAOq3C,GAAEqtI,SACLrtI,GAAIA,GAAEqtI,QAEV,OAAOrtI,GAGX60K,sBAAsBjB,IAClBjrN,KAAK8+B,OAAS9+B,KAAK2rN,mBACfV,IACAjrN,KAAK4lN,cAAcroK,KAAKv9C,KAAK8+B,QAE7B9+B,KAAK0kL,SACL1kL,KAAK0kL,QAAQwnC,sBAAsBjB,IAI3CwB,mBACIzsN,KAAK6lN,aAAe,IAAI1oK,MACxBn9C,KAAK4lN,cAAgB,IAAIzoK,MAE7BwuK,mBACI,OAAI3rN,KAAK+rN,uBACE/C,GACPhpN,KAAKxN,OACEs/F,GACP9xF,KAAK2pN,8BAAgC3pN,KAAK0sN,uBAAuB3D,IAC1DA,GACP/oN,KAAK0sN,uBAAuB56H,IACrBA,GACJg3H,GAGX4D,uBAAuB5tL,IACnB,OAAO9+B,KAAK2sN,aAAc3I,IAAYA,GAAQllL,SAAWA,IAG7D8tL,oBACI,OAAO5sN,KAAK2sN,aAAc3I,IAAYA,GAAQ1a,OAGlDujB,sBACI,OAAO7sN,KAAK2sN,aAAc3I,IAAYA,GAAQ0B,SAGlDqF,gBAAgBj8H,GAAO,IACnB9uF,KAAKylN,UAAYzlN,KAAK4sN,oBAClB5sN,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQqmC,gBAAgBj8H,IAIrC+7H,eAAe/7H,GAAO,IAClB9uF,KAAK0lN,QAAU1lN,KAAK6sN,sBAChB7sN,KAAK0kL,UAAY51F,GAAK47H,UACtB1qN,KAAK0kL,QAAQmmC,eAAe/7H,IAIpCg+H,cAAcC,IACV,MAA4B,iBAAdA,IAAwC,OAAdA,IACF,IAAlC95N,OAAOC,KAAK65N,IAAWh7N,QAAgB,UAAWg7N,IAAa,aAAcA,GAGrFC,4BAA4B58M,IACxBpQ,KAAK4pN,oBAAsBx5M,GAG/B68M,mBAAmBn+H,IACXo6H,GAAap6H,KAA0B,MAAjBA,GAAKg5H,WAC3B9nN,KAAKkqN,UAAYp7H,GAAKg5H,UAQ9BqD,mBAAmBT,IAEf,OAAQA,OADY1qN,KAAK0kL,UAAW1kL,KAAK0kL,QAAQ4kB,SACXtpM,KAAK0kL,QAAQkoC,qBAoG3D,iBAA0BM,GActBptN,YAAYitN,GAAY,KAAM9D,GAAiB7C,IAC3C93M,MAAM6+M,GAAelE,IAAkBmE,GAAoBhH,GAAgB6C,KAO3EjpN,KAAK9K,aAAe,KAEpB8K,KAAKqtN,UAAY,GAEjBrtN,KAAK4nN,gBAAiB,EACtB5nN,KAAKstN,gBAAgBP,IACrB/sN,KAAKitN,mBAAmBhE,IACxBjpN,KAAKysN,mBACLzsN,KAAKwnN,uBAAuB,CACxBkD,UAAU,EAKVO,YAAajrN,KAAKomN,iBAElB8C,GAAaD,KAAoBA,GAAgBsE,wBAE7CvtN,KAAK9K,aADL8K,KAAK8sN,cAAcC,IACCA,GAAU53N,MAGV43N,IA2BhCrhM,SAASv2B,GAAOoM,GAAU,IACtBvB,KAAK7K,MAAQ6K,KAAK2nN,cAAgBxyN,GAC9B6K,KAAKqtN,UAAUt7N,SAA4C,IAAlCwP,GAAQsnN,uBACjC7oN,KAAKqtN,UAAUz6N,QAAS04N,IAAaA,GAAStrN,KAAK7K,OAAyC,IAAlCoM,GAAQisN,wBAEtExtN,KAAKwnN,uBAAuBjmN,IAWhCksN,WAAWt4N,GAAOoM,GAAU,IACxBvB,KAAK0rB,SAASv2B,GAAOoM,IAmCzB+S,MAAMy4M,GAAY/sN,KAAK9K,aAAcqM,GAAU,IAC3CvB,KAAKstN,gBAAgBP,IACrB/sN,KAAK8qN,eAAevpN,IACpBvB,KAAK4qN,gBAAgBrpN,IACrBvB,KAAK0rB,SAAS1rB,KAAK7K,MAAOoM,IAC1BvB,KAAK4nN,gBAAiB,EAK1BwD,eAAe,CAIfuB,aAAax3E,IACT,OAAO,EAKX42E,uBACI,OAAO/rN,KAAKnL,SAOhB4tN,iBAAiBryM,IACbpQ,KAAKqtN,UAAU35N,KAAK0c,IAMxB+3M,oBAAoB/3M,IAChBs9M,GAAe1tN,KAAKqtN,UAAWj9M,IAOnCq4M,yBAAyBr4M,IACrBpQ,KAAK6pN,kBAAkBn2N,KAAK0c,IAMhCs4M,4BAA4Bt4M,IACxBs9M,GAAe1tN,KAAK6pN,kBAAmBz5M,IAK3Cs5M,cAAcl8H,IAAI,CAElBmgI,uBACI,QAAsB,WAAlB3tN,KAAK8nN,WACD9nN,KAAK6nN,eACL7nN,KAAK4oN,cACL5oN,KAAKqoN,iBACLroN,KAAKsoN,iBACLtoN,KAAK4nN,kBACL5nN,KAAK0rB,SAAS1rB,KAAK2nN,cAAe,CAAE+C,UAAU,EAAM7B,uBAAuB,IACpE,GAGR,CAEXyE,gBAAgBP,IACR/sN,KAAK8sN,cAAcC,KACnB/sN,KAAK7K,MAAQ6K,KAAK2nN,cAAgBoF,GAAU53N,MAC5C43N,GAAUl4N,SAAWmL,KAAKykB,QAAQ,CAAEimM,UAAU,EAAMO,WAAW,IAC3DjrN,KAAK81F,OAAO,CAAE40H,UAAU,EAAMO,WAAW,KAG7CjrN,KAAK7K,MAAQ6K,KAAK2nN,cAAgBoF,IA4E9C,iBAAwBG,GAcpBptN,YAAY2pN,GAAUR,GAAiB7C,IACnC93M,MAAM6+M,GAAelE,IAAkBmE,GAAoBhH,GAAgB6C,KAC3EjpN,KAAKypN,SAAWA,GAChBzpN,KAAKysN,mBACLzsN,KAAKitN,mBAAmBhE,IACxBjpN,KAAK4tN,iBACL5tN,KAAKwnN,uBAAuB,CACxBkD,UAAU,EAIVO,YAAajrN,KAAKomN,iBAY1ByH,gBAAgB9sN,GAAMijN,IAClB,OAAIhkN,KAAKypN,SAAS1oN,IACPf,KAAKypN,SAAS1oN,KACzBf,KAAKypN,SAAS1oN,IAAQijN,GACtBA,GAAQuH,UAAUvrN,MAClBgkN,GAAQgJ,4BAA4BhtN,KAAK4pN,qBAClC5F,IAiBX8J,WAAW/sN,GAAMijN,GAASziN,GAAU,IAChCvB,KAAK6tN,gBAAgB9sN,GAAMijN,IAC3BhkN,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YACjDjrN,KAAK4pN,sBAcTmE,cAAchtN,GAAMQ,GAAU,IACtBvB,KAAKypN,SAAS1oN,KACdf,KAAKypN,SAAS1oN,IAAMisN,4BAA4B,eAC5ChtN,KAAKypN,SAAS1oN,IACtBf,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YACjDjrN,KAAK4pN,sBAeToE,WAAWjtN,GAAMijN,GAASziN,GAAU,IAC5BvB,KAAKypN,SAAS1oN,KACdf,KAAKypN,SAAS1oN,IAAMisN,4BAA4B,eAC5ChtN,KAAKypN,SAAS1oN,IAClBijN,IACAhkN,KAAK6tN,gBAAgB9sN,GAAMijN,IAC/BhkN,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YACjDjrN,KAAK4pN,sBAYThzN,SAASq3N,IACL,OAAOjuN,KAAKypN,SAAS3vN,eAAem0N,KAAgBjuN,KAAKypN,SAASwE,IAAaz4H,QAqCnF9pE,SAASv2B,GAAOoM,GAAU,IACtB2sN,GAAuBluN,KAAM7K,IAC7BlC,OAAOC,KAAKiC,IAAOvC,QAAQmO,KACvBotN,GAAqBnuN,KAAMe,IAC3Bf,KAAKypN,SAAS1oN,IAAM2qB,SAASv2B,GAAM4L,IAAO,CAAE2pN,UAAU,EAAMO,UAAW1pN,GAAQ0pN,cAEnFjrN,KAAKwnN,uBAAuBjmN,IAiChCksN,WAAWt4N,GAAOoM,GAAU,IAKX,MAATpM,KAEJlC,OAAOC,KAAKiC,IAAOvC,QAAQmO,KACnBf,KAAKypN,SAAS1oN,KACdf,KAAKypN,SAAS1oN,IAAM0sN,WAAWt4N,GAAM4L,IAAO,CAAE2pN,UAAU,EAAMO,UAAW1pN,GAAQ0pN,cAGzFjrN,KAAKwnN,uBAAuBjmN,KA2DhC+S,MAAMnf,GAAQ,GAAIoM,GAAU,IACxBvB,KAAK0pN,cAAc,CAAC1F,GAASjjN,MACzBijN,GAAQ1vM,MAAMnf,GAAM4L,IAAO,CAAE2pN,UAAU,EAAMO,UAAW1pN,GAAQ0pN,cAEpEjrN,KAAK+qN,gBAAgBxpN,IACrBvB,KAAK6qN,eAAetpN,IACpBvB,KAAKwnN,uBAAuBjmN,IAShCgoN,cACI,OAAOvpN,KAAKouN,gBAAgB,GAAI,CAACvhI,GAAKm3H,GAASjjN,MAC3C8rF,GAAI9rF,IAAQwoN,GAAYvF,IACjBn3H,KAIf8gI,uBACI,IAAIU,GAAiBruN,KAAKouN,iBAAgB,EAAO,CAACl7J,GAAS68F,OAChDA,GAAM49D,wBAAgCz6J,IAEjD,OAAIm7J,IACAruN,KAAKwnN,uBAAuB,CAAEkD,UAAU,IACrC2D,GAGX3E,cAAcl8H,IACVv6F,OAAOC,KAAK8M,KAAKypN,UAAU72N,QAAQqC,KAI/B,MAAM+uN,GAAUhkN,KAAKypN,SAASx0N,IAC9B+uN,IAAWx2H,GAAGw2H,GAAS/uN,MAI/B24N,iBACI5tN,KAAK0pN,cAAe1F,KAChBA,GAAQuH,UAAUvrN,MAClBgkN,GAAQgJ,4BAA4BhtN,KAAK4pN,uBAIjDwB,eACIprN,KAAK7K,MAAQ6K,KAAKsuN,eAGtB3B,aAAax3E,IACT,UAAW84E,MAAeh7N,OAAOC,KAAK8M,KAAKypN,UAAW,CAClD,MAAMzF,GAAUhkN,KAAKypN,SAASwE,IAC9B,GAAIjuN,KAAKpJ,SAASq3N,KAAgB94E,GAAU6uE,IACxC,OAAO,EAGf,OAAO,EAGXsK,eACI,OAAOtuN,KAAKouN,gBAAgB,GAAI,CAACvhI,GAAKm3H,GAASjjN,OACvCijN,GAAQxuH,SAAWx1F,KAAKnL,YACxBg4F,GAAI9rF,IAAQijN,GAAQ7uN,OAEjB03F,KAIfuhI,gBAAgBG,GAAWn+M,IACvB,IAAImuF,GAAMgwH,GACV,YAAK7E,cAAc,CAAC1F,GAASjjN,MACzBw9F,GAAMnuF,GAAGmuF,GAAKylH,GAASjjN,MAEpBw9F,GAGXwtH,uBACI,UAAWkC,MAAeh7N,OAAOC,KAAK8M,KAAKypN,UACvC,GAAIzpN,KAAKypN,SAASwE,IAAaz4H,QAC3B,OAAO,EAGf,OAAOviG,OAAOC,KAAK8M,KAAKypN,UAAU13N,OAAS,GAAKiO,KAAKnL,UAmE7D,iBAAwBq4N,GAcpBptN,YAAY2pN,GAAUR,GAAiB7C,IACnC93M,MAAM6+M,GAAelE,IAAkBmE,GAAoBhH,GAAgB6C,KAC3EjpN,KAAKypN,SAAWA,GAChBzpN,KAAKysN,mBACLzsN,KAAKitN,mBAAmBhE,IACxBjpN,KAAK4tN,iBACL5tN,KAAKwnN,uBAAuB,CACxBkD,UAAU,EAKVO,YAAajrN,KAAKomN,iBAQ1BmG,GAAGz4M,IACC,OAAO9T,KAAKypN,SAAS31M,IAYzBpgB,KAAKswN,GAASziN,GAAU,IACpBvB,KAAKypN,SAAS/1N,KAAKswN,IACnBhkN,KAAKwuN,iBAAiBxK,IACtBhkN,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YACjDjrN,KAAK4pN,sBAaTre,OAAOz3L,GAAOkwM,GAASziN,GAAU,IAC7BvB,KAAKypN,SAASnvN,OAAOwZ,GAAO,EAAGkwM,IAC/BhkN,KAAKwuN,iBAAiBxK,IACtBhkN,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YAYrDwD,SAAS36M,GAAOvS,GAAU,IAClBvB,KAAKypN,SAAS31M,KACd9T,KAAKypN,SAAS31M,IAAOk5M,4BAA4B,QACrDhtN,KAAKypN,SAASnvN,OAAOwZ,GAAO,GAC5B9T,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YAarD+C,WAAWl6M,GAAOkwM,GAASziN,GAAU,IAC7BvB,KAAKypN,SAAS31M,KACd9T,KAAKypN,SAAS31M,IAAOk5M,4BAA4B,QACrDhtN,KAAKypN,SAASnvN,OAAOwZ,GAAO,GACxBkwM,KACAhkN,KAAKypN,SAASnvN,OAAOwZ,GAAO,EAAGkwM,IAC/BhkN,KAAKwuN,iBAAiBxK,KAE1BhkN,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,YACjDjrN,KAAK4pN,sBAKL73N,aACA,OAAOiO,KAAKypN,SAAS13N,OAqCzB25B,SAASv2B,GAAOoM,GAAU,IACtB2sN,GAAuBluN,KAAM7K,IAC7BA,GAAMvC,QAAQ,CAACyjJ,GAAUviI,MACrBq6M,GAAqBnuN,KAAM8T,IAC3B9T,KAAKusN,GAAGz4M,IAAO4X,SAAS2qH,GAAU,CAAEq0E,UAAU,EAAMO,UAAW1pN,GAAQ0pN,cAE3EjrN,KAAKwnN,uBAAuBjmN,IAkChCksN,WAAWt4N,GAAOoM,GAAU,IAKX,MAATpM,KAEJA,GAAMvC,QAAQ,CAACyjJ,GAAUviI,MACjB9T,KAAKusN,GAAGz4M,KACR9T,KAAKusN,GAAGz4M,IAAO25M,WAAWp3E,GAAU,CAAEq0E,UAAU,EAAMO,UAAW1pN,GAAQ0pN,cAGjFjrN,KAAKwnN,uBAAuBjmN,KAgDhC+S,MAAMnf,GAAQ,GAAIoM,GAAU,IACxBvB,KAAK0pN,cAAc,CAAC1F,GAASlwM,MACzBkwM,GAAQ1vM,MAAMnf,GAAM2e,IAAQ,CAAE42M,UAAU,EAAMO,UAAW1pN,GAAQ0pN,cAErEjrN,KAAK+qN,gBAAgBxpN,IACrBvB,KAAK6qN,eAAetpN,IACpBvB,KAAKwnN,uBAAuBjmN,IAQhCgoN,cACI,OAAOvpN,KAAKypN,SAASz0N,IAAKgvN,IAAYuF,GAAYvF,KAsCtD58M,MAAM7F,GAAU,IACRvB,KAAKypN,SAAS13N,OAAS,IAE3BiO,KAAK0pN,cAAe1F,IAAYA,GAAQgJ,4BAA4B,SACpEhtN,KAAKypN,SAASnvN,OAAO,GACrB0F,KAAKwnN,uBAAuB,CAAEyD,UAAW1pN,GAAQ0pN,aAGrD0C,uBACI,IAAIU,GAAiBruN,KAAKypN,SAAS7qJ,OAAO,CAAC1L,GAAS68F,OACzCA,GAAM49D,wBAAgCz6J,IAC9C,GACH,OAAIm7J,IACAruN,KAAKwnN,uBAAuB,CAAEkD,UAAU,IACrC2D,GAGX3E,cAAcl8H,IACVxtF,KAAKypN,SAAS72N,QAAQ,CAACoxN,GAASlwM,MAC5B05E,GAAGw2H,GAASlwM,MAIpBs3M,eACIprN,KAAK7K,MACD6K,KAAKypN,SAASrhN,OAAQ47M,IAAYA,GAAQxuH,SAAWx1F,KAAKnL,UACrDG,IAAKgvN,IAAYA,GAAQ7uN,OAGtCw3N,aAAax3E,IACT,OAAOn1I,KAAKypN,SAASrmN,KAAM4gN,IAAYA,GAAQxuH,SAAW2/C,GAAU6uE,KAGxE4J,iBACI5tN,KAAK0pN,cAAe1F,IAAYhkN,KAAKwuN,iBAAiBxK,KAG1D+H,uBACI,UAAW/H,MAAWhkN,KAAKypN,SACvB,GAAIzF,GAAQxuH,QACR,OAAO,EAEf,OAAOx1F,KAAKypN,SAAS13N,OAAS,GAAKiO,KAAKnL,SAE5C25N,iBAAiBxK,IACbA,GAAQuH,UAAUvrN,MAClBgkN,GAAQgJ,4BAA4BhtN,KAAK4pN,sBAofjD,MAAM8E,GAAuB,CACzBtiM,QAAS46L,GACT9/G,eAAa++C,OAAW,IAAM0oE,KAmB5BC,GAAmB,KAAMhyM,QAAQC,QAAQ,MAAtB,OAsFnB8xM,SAAN,iBAAsB3H,GAClBlnN,YAAY1J,GAAQuiE,GAAYyuJ,GAAiByH,GAAgBC,IAC7DxgN,QACAtO,KAAK8uN,mBAAqBA,GAC1B9uN,KAAKgkN,QAAU,IAAIqF,GAEnBrpN,KAAK+uN,aAAc,EAMnB/uN,KAAKk0D,OAAS,IAAI/W,MAClBn9C,KAAK0kL,QAAUtuL,GACf4J,KAAK8lN,eAAentJ,IACpB34D,KAAKimN,oBAAoBmB,IACzBpnN,KAAK0mN,cA5oFb,YAA6BjyE,GAAKo6E,IAC9B,IAAKA,GACD,OAAO,KAGX,IAAIG,GACAC,GACAC,GAgBJ,OApBKr4N,MAAM4E,QAAQozN,IAKnBA,GAAej8N,QAASyQ,KAChBA,GAAEvD,cAAgBqjN,EAClB6L,GAAkB3rN,GA1B9B,YAA2BqjN,IAGvB,OAAOzzN,OAAOu4H,eAAek7F,GAAc5mN,eAAiB8iN,EAyBnDuM,CAAsB9rN,IAGvB4rN,GAAkB5rN,GAKlB6rN,GAAiB7rN,KAGrB6rN,IAEAD,IAEAD,IAKG,KA4mFkBI,CAAoBpvN,EAAM6uN,IAGnD3vJ,YAAYC,IAER,GADAn/D,KAAKqvN,mBACArvN,KAAK+uN,aAAe,SAAU5vJ,GAAS,CACxC,GAAIn/D,KAAK+uN,cACL/uN,KAAKsvN,aACDtvN,KAAK2mN,eAAe,CAKpB,MAAM4I,GAAUpwJ,GAAQp+D,KAAQ6d,cAChC5e,KAAK2mN,cAAcoH,cAAc,CAAEhtN,KAAMwuN,GAAStuL,KAAMjhC,KAAKwvN,SAASD,MAG9EvvN,KAAKyvN,gBAEL,eAAgBtwJ,IAChBn/D,KAAK0vN,gBAAgBvwJ,IAxrFjC,YAA2BA,GAASwwJ,IAChC,IAAKxwJ,GAAQrlE,eAAe,SACxB,OAAO,EACX,MAAMk7M,GAAS71I,GAAQ3L,MACvB,QAAIwhJ,GAAOtoD,kBAEHz5J,OAAOu4F,GAAGmkI,GAAW3a,GAAO31I,cAorF5BuwJ,CAAkBzwJ,GAASn/D,KAAK2vN,aAChC3vN,KAAKorN,aAAaprN,KAAKwzD,OACvBxzD,KAAK2vN,UAAY3vN,KAAKwzD,OAI9BxnC,cACIhsB,KAAK2mN,eAAiB3mN,KAAK2mN,cAAcoH,cAAc/tN,MAOvDihC,WACA,OAAOjhC,KAAKwvN,SAASxvN,KAAKe,MAM1B4lN,oBACA,OAAO3mN,KAAK0kL,QAAU1kL,KAAK0kL,QAAQiiC,cAAgB,KAQvDuB,kBAAkB7xE,IACdr2I,KAAK2vN,UAAYt5E,GACjBr2I,KAAKk0D,OAAO3W,KAAK84F,IAErBo5E,gBACIzvN,KAAKitN,qBACLjtN,KAAK6vN,gBAAkB7vN,KAAK8vN,mBAAqB9vN,KAAK2mN,cAAcmH,WAAW9tN,MAC/EA,KAAK+uN,aAAc,EAEvB9B,qBACQjtN,KAAKuB,SAAoC,MAAzBvB,KAAKuB,QAAQumN,WAC7B9nN,KAAKgkN,QAAQkG,UAAYlqN,KAAKuB,QAAQumN,UAG9C+H,gBACI,OAAQ7vN,KAAK0kL,YAAc1kL,KAAKuB,UAAWvB,KAAKuB,QAAQwuN,YAE5DD,mBACIE,GAAahwN,KAAKgkN,QAAShkN,MAC3BA,KAAKgkN,QAAQwD,uBAAuB,CAAEyD,WAAW,IAErDoE,kBACSrvN,KAAK6vN,iBACN7vN,KAAKiwN,mBAETjwN,KAAKsvN,aAETW,mBAAmB,CAWnBX,aACQtvN,KAAKuB,SAAWvB,KAAKuB,QAAQR,OAC7Bf,KAAKe,KAAOf,KAAKuB,QAAQR,MACxBf,KAAK6vN,eAAyB9uN,CAIvCqqN,aAAaj2N,IACTy5N,GAAgB5kM,KAAK,KACjB,IAAIlN,GACJ9c,KAAKgkN,QAAQt4L,SAASv2B,GAAO,CAAEq4N,uBAAuB,IACnB,QAAlC1wM,GAAK9c,KAAK8uN,0BAAuC,IAAPhyM,IAAyBA,GAAG47H,iBAG/Eg3E,gBAAgBvwJ,IACZ,MAAM+wJ,GAAgB/wJ,GAAQwjJ,WAActjJ,aACtCsjJ,GAA+B,KAAlBuN,IAAyBA,IAAmC,UAAlBA,GAC7DtB,GAAgB5kM,KAAK,KACjB,IAAIlN,GACA6lM,KAAe3iN,KAAKgkN,QAAQnvN,SAC5BmL,KAAKgkN,QAAQv/L,WAEPk+L,IAAc3iN,KAAKgkN,QAAQnvN,UACjCmL,KAAKgkN,QAAQluH,SAEkB,QAAlCh5E,GAAK9c,KAAK8uN,0BAAuC,IAAPhyM,IAAyBA,GAAG47H,iBAG/E82E,SAASvB,IACL,OAAOjuN,KAAK0kL,QA1gGpB,YAAqB3jL,GAAM3K,IACvB,MAAO,IAAIA,GAAO6qC,KAAMlgC,IAygGEovN,CAAYlC,GAAajuN,KAAK0kL,SAAW,CAACupC,KAGxEU,UAAQh2N,UAAR,4BAAoGg2N,IA79IO91N,MA69IkBu3N,GAA7H,GA79I2Gv3N,MA69I2EirN,GAAtL,IA79I2GjrN,MA69IiIkrN,GAA5O,IA79I2GlrN,MA69I6LiqN,GAAxS,IA79I2GjqN,MA69IuPkjN,MAAlW,KACA4S,GAAQ97E,UA99ImGh6I,MA89I3G,MAAwF81N,GAAxFvgM,iQA99I2Gv1B,MA89I+O,CAAC61N,KA99IhP71N,eAm1IrG81N,OA8ON,MAAM0B,GAAwB,CAC1BjkM,QAAS02L,GACT57G,eAAa++C,OAAW,IAAMqqE,IAC9Bp6N,OAAO,OA0BLo6N,SAAN,iBAAkC1N,EAK9BK,WAAW9tN,IAGP6K,KAAK+oB,YAAY,QADgB,MAAT5zB,GAAgB,GAAKA,GACnB9B,CAM9BovN,iBAAiBryM,IACbpQ,KAAK6/G,SAAY1qH,KACbib,GAAY,IAATjb,GAAc,KAAOuE,WAAWvE,OAI/Cm7N,UAAoB33N,UAApB,qDAlnJ2GE,MAknJKy3N,MAAhHzN,IAAgHyN,KAAhH,GACAA,GAAoBz9E,UAnnJuFh6I,MAmnJ3G,MAAoGy3N,GAApGliM,gLAnnJ2Gv1B,MAmnJ3G,4BAAoGgqN,8BAnnJOhqN,CAmnJ3G,yBAAoGgqN,kBAApGj4D,UAnnJ2G/xJ,MAmnJgO,CAACw3N,KAnnJjOx3N,SA8lJrGy3N,OAsCN,MAAMC,GAAuB,CACzBnkM,QAAS02L,GACT57G,eAAa++C,OAAW,IAAMuqE,IAC9Bt6N,OAAO,OAcLu6N,SAAN,UAEAA,UAA2B93N,UAA3B,4BAAuH83N,KACvHA,GAA2BjjM,UAxpJgF30B,MAwpJ3G,MAAwH43N,KACxHA,GAA2BhjM,UAzpJgF50B,MAypJ3G,IAJM43N,OAYAC,SAAN,SACI5wN,cACIE,KAAK2wN,WAAa,GAMtB3uN,IAAIgiN,GAAS4M,IACT5wN,KAAK2wN,WAAWj9N,KAAK,CAACswN,GAAS4M,KAMnCntM,OAAOmtM,IACH,QAAS91N,GAAIkF,KAAK2wN,WAAW5+N,OAAS,EAAG+I,IAAK,IAAKA,GAC/C,GAAIkF,KAAK2wN,WAAW71N,IAAG,KAAO81N,GAE1B,YADA5wN,KAAK2wN,WAAWr2N,OAAOQ,GAAG,EAC1B,CAQZ+1N,OAAOD,IACH5wN,KAAK2wN,WAAW/9N,QAASu3D,KACjBnqD,KAAK8wN,aAAa3mK,GAAGymK,KAAazmK,GAAE,KAAOymK,IAC3CzmK,GAAE,GAAG4mK,YAAYH,GAASz7N,SAItC27N,aAAaE,GAAaJ,IACtB,QAAKI,GAAY,GAAGhN,SAEbgN,GAAY,GAAGtsC,UAAYksC,GAASK,SAASvsC,SAChDssC,GAAY,GAAGjwN,OAAS6vN,GAAS7vN,IAF1B,EAKnB2vN,UAAqB/3N,UAArB,4BAAiH+3N,KACjHA,GAAqB93N,WA3sJsFC,MA2sJ3G,OAAqH63N,GAArH53N,QAAqH43N,GAArH,qBAAuJD,KA1CjJC,OAmEAF,SAAN,iBAAwC5N,EACpC9iN,YAAYgpB,GAAU4hL,GAAYwmB,GAAWjsH,IACzC32F,MAAMwa,GAAU4hL,IAChB1qM,KAAKkxN,UAAYA,GACjBlxN,KAAKilG,UAAYA,GAQjBjlG,KAAK6/G,SAAW,MAAM,CAG1BvtF,WACItyB,KAAKixN,SAAWjxN,KAAKilG,UAAU5vG,IAAI2xN,IACnChnN,KAAKsvN,aACLtvN,KAAKkxN,UAAUlvN,IAAIhC,KAAKixN,SAAUjxN,MAGtCgsB,cACIhsB,KAAKkxN,UAAUztM,OAAOzjB,MAM1BijN,WAAW9tN,IACP6K,KAAKilB,OAAS9vB,KAAU6K,KAAK7K,MAC7B6K,KAAK+oB,YAAY,UAAW/oB,KAAKilB,QAMrCw9L,iBAAiBryM,IACbpQ,KAAKgzF,IAAM5iF,GACXpQ,KAAK6/G,SAAW,KACZzvG,GAAGpQ,KAAK7K,OACR6K,KAAKkxN,UAAUL,OAAO7wN,OAQ9B+wN,YAAY57N,IACR6K,KAAKijN,WAAW9tN,IAEpBm6N,cAKStvN,KAAKe,MAAQf,KAAKmxN,kBACnBnxN,KAAKe,KAAOf,KAAKmxN,kBAG7BX,UAA0B73N,UAA1B,4BAAsH63N,IAhyJX33N,MAgyJsDA,OAhyJtDA,MAgyJ+EA,OAhyJ/EA,MAgyJyG63N,IAhyJzG73N,MAgyJ0IA,SACrP23N,GAA0B39E,UAjyJiFh6I,MAiyJ3G,MAA0G23N,GAA1GpiM,6KAjyJ2Gv1B,MAiyJ3G,2BAA0GgqN,eAjyJChqN,CAiyJ3G,yBAA0GgqN,kBAA1GziF,+EAjyJ2GvnI,MAiyJqS,CAAC03N,KAjyJtS13N,SAouJrG23N,OA0jCN,MAAMY,GAAwB,CAC1BhlM,QAAS02L,GACT57G,eAAa++C,OAAW,IAAMorE,IAC9Bn7N,OAAO,GAEX,YAA6B+c,GAAI9d,IAC7B,OAAU,MAAN8d,GACQ,GAAE9d,MACVA,IAA0B,iBAAVA,KAChBA,GAAQ,UACJ,GAAE8d,OAAO9d,KAAQiX,MAAM,EAAG,SA6DhCilN,SAAN,iBAAyCzO,EACrC9iN,cACIwO,SAASi8E,WAETvqF,KAAKsxN,WAAa,IAAIl8N,IAEtB4K,KAAKuxN,WAAa,EAClBvxN,KAAKwxN,aAAev+N,OAAOu4F,GAO3BimI,gBAAYrhN,IAIZpQ,KAAKwxN,aAAephN,GAMxB6yM,WAAW9tN,IACP6K,KAAK7K,MAAQA,GACb,MACMu8N,GAAcC,GADT3xN,KAAK4xN,aAAaz8N,IACeA,IAC5C6K,KAAK+oB,YAAY,QAAS2oM,IAM9BjP,iBAAiBryM,IACbpQ,KAAK6/G,SAAY6xG,KACb1xN,KAAK7K,MAAQ6K,KAAK6xN,gBAAgBH,IAClCthN,GAAGpQ,KAAK7K,QAIhB28N,kBACI,OAAQ9xN,KAAKuxN,cAAc3/N,WAG/BggO,aAAaz8N,IACT,UAAW8d,MAAMpc,MAAMC,KAAKkJ,KAAKsxN,WAAWp+N,QACxC,GAAI8M,KAAKwxN,aAAaxxN,KAAKsxN,WAAWj8N,IAAI4d,IAAK9d,IAC3C,OAAO8d,GAEf,OAAO,KAGX4+M,gBAAgBH,IACZ,MAAMz+M,GAjHd,YAAsBy+M,IAClB,OAAOA,GAAYrzN,MAAM,KAAK,GAgHf0zN,CAAaL,IACxB,OAAO1xN,KAAKsxN,WAAWjyN,IAAI4T,IAAMjT,KAAKsxN,WAAWj8N,IAAI4d,IAAMy+M,IAGnEL,UAA2B14N,UAA3B,qDA/5L2GE,MA+5LYw4N,MAAvHxO,IAAuHwO,KAAvH,GACAA,GAA2Bx+E,UAh6LgFh6I,MAg6L3G,MAA2Gw4N,GAA3GjjM,mLAh6L2Gv1B,MAg6L3G,6BAA2GgqN,8BAh6LAhqN,CAg6L3G,yBAA2GgqN,kBAA3GziF,6CAh6L2GvnI,MAg6LmS,CAACu4N,KAh6LpSv4N,SAq2LrGw4N,OAgFAW,SAAN,SACIlyN,YAAY7H,GAAU+vB,GAAWiqM,IAC7BjyN,KAAK/H,SAAWA,GAChB+H,KAAKgoB,UAAYA,GACjBhoB,KAAKiyN,QAAUA,GACXjyN,KAAKiyN,UACLjyN,KAAKiT,GAAKjT,KAAKiyN,QAAQH,mBAO3BI,YAAQ/8N,IACY,MAAhB6K,KAAKiyN,UAETjyN,KAAKiyN,QAAQX,WAAWh8N,IAAI0K,KAAKiT,GAAI9d,IACrC6K,KAAKmyN,iBAAiBR,GAAoB3xN,KAAKiT,GAAI9d,KACnD6K,KAAKiyN,QAAQhP,WAAWjjN,KAAKiyN,QAAQ98N,QAOrCA,UAAMA,IACN6K,KAAKmyN,iBAAiBh9N,IAClB6K,KAAKiyN,SACLjyN,KAAKiyN,QAAQhP,WAAWjjN,KAAKiyN,QAAQ98N,OAG7Cg9N,iBAAiBh9N,IACb6K,KAAKgoB,UAAUe,YAAY/oB,KAAK/H,SAASk3C,cAAe,QAASh6C,IAGrE62B,cACQhsB,KAAKiyN,UACLjyN,KAAKiyN,QAAQX,WAAWr5M,OAAOjY,KAAKiT,IACpCjT,KAAKiyN,QAAQhP,WAAWjjN,KAAKiyN,QAAQ98N,SAIjD68N,UAAer5N,UAAf,4BAA2Gq5N,IA/9LAn5N,MA+9LgCA,OA/9LhCA,MA+9L0DA,OA/9L1DA,MA+9LmFw4N,GAA9L,KACAW,GAAen/E,UAh+L4Fh6I,MAg+L3G,MAA+Fm5N,GAA/F5jM,kEA3CM4jM,OAoEN,MAAMI,GAAiC,CACnChmM,QAAS02L,GACT57G,eAAa++C,OAAW,IAAMosE,IAC9Bn8N,OAAO,GAEX,YAA2B+c,GAAI9d,IAC3B,OAAU,MAAN8d,GACQ,GAAE9d,MACO,iBAAVA,KACPA,GAAS,IAAGA,OACZA,IAA0B,iBAAVA,KAChBA,GAAQ,UACJ,GAAE8d,OAAO9d,KAAQiX,MAAM,EAAG,SA2ChCimN,SAAN,iBAAiDzP,EAC7C9iN,cACIwO,SAASi8E,WAETvqF,KAAKsxN,WAAa,IAAIl8N,IAEtB4K,KAAKuxN,WAAa,EAClBvxN,KAAKwxN,aAAev+N,OAAOu4F,GAO3BimI,gBAAYrhN,IAIZpQ,KAAKwxN,aAAephN,GAMxB6yM,WAAW9tN,IAEP,IAAIm9N,GACJ,GAFAtyN,KAAK7K,MAAQA,GAET0B,MAAM4E,QAAQtG,IAAQ,CAEtB,MAAMo9N,GAAMp9N,GAAMH,IAAKqO,IAAMrD,KAAK4xN,aAAavuN,KAC/CivN,GAA4B,CAACE,GAAK/vK,MAC9B+vK,GAAIC,aAAaF,GAAI98N,QAAQgtD,GAAE7wD,aAAc,SAIjD0gO,GAA4B,CAACE,GAAK/vK,MAC9B+vK,GAAIC,cAAa,IAGzBzyN,KAAKsxN,WAAW1+N,QAAQ0/N,IAO5B7P,iBAAiBryM,IACbpQ,KAAK6/G,SAAYztH,KACb,MAAMsgO,GAAW,GACXC,GAAkBvgO,GAAQugO,gBAChC,QAAwB/9N,IAApB+9N,GAA+B,CAC/B,MAAMpxN,GAAUoxN,GAChB,QAAS73N,GAAI,EAAGA,GAAIyG,GAAQxP,OAAQ+I,KAAK,CACrC,MACM0S,GAAMxN,KAAK6xN,gBADLtwN,GAAQzG,IACiB3F,OACrCu9N,GAASh/N,KAAK8Z,SAMjB,CACD,MAAMjM,GAAUnP,GAAQmP,QACxB,QAASzG,GAAI,EAAGA,GAAIyG,GAAQxP,OAAQ+I,KAAK,CACrC,MAAM03N,GAAMjxN,GAAQzG,IACpB,GAAI03N,GAAIE,SAAU,CACd,MAAMllN,GAAMxN,KAAK6xN,gBAAgBW,GAAIr9N,OACrCu9N,GAASh/N,KAAK8Z,MAI1BxN,KAAK7K,MAAQu9N,GACbtiN,GAAGsiN,KAIXZ,gBAAgB38N,IACZ,MAAM8d,IAAMjT,KAAKuxN,cAAc3/N,WAC/B,YAAK0/N,WAAWh8N,IAAI2d,GAAI9d,IACjB8d,GAGX2+M,aAAaz8N,IACT,UAAW8d,MAAMpc,MAAMC,KAAKkJ,KAAKsxN,WAAWp+N,QACxC,GAAI8M,KAAKwxN,aAAaxxN,KAAKsxN,WAAWj8N,IAAI4d,IAAIi/G,OAAQ/8H,IAClD,OAAO8d,GAEf,OAAO,KAGX4+M,gBAAgBH,IACZ,MAAMz+M,GApId,YAAoBy+M,IAChB,OAAOA,GAAYrzN,MAAM,KAAK,GAmIfu0N,CAAWlB,IACtB,OAAO1xN,KAAKsxN,WAAWjyN,IAAI4T,IAAMjT,KAAKsxN,WAAWj8N,IAAI4d,IAAIi/G,OAASw/F,IAG1EW,UAAmC15N,UAAnC,qDA/oM2GE,MA+oMoBw5N,MAA/HxP,IAA+HwP,KAA/H,GACAA,GAAmCx/E,UAhpMwEh6I,MAgpM3G,MAAmHw5N,GAAnHjkM,6KAhpM2Gv1B,MAgpM3G,6BAAmHgqN,wBAhpMRhqN,CAgpM3G,yBAAmHgqN,kBAAnHziF,6CAhpM2GvnI,MAgpM2R,CAACu5N,KAhpM5Rv5N,SAgjMrGw5N,OAqHAQ,SAAN,SACI/yN,YAAY7H,GAAU+vB,GAAWiqM,IAC7BjyN,KAAK/H,SAAWA,GAChB+H,KAAKgoB,UAAYA,GACjBhoB,KAAKiyN,QAAUA,GACXjyN,KAAKiyN,UACLjyN,KAAKiT,GAAKjT,KAAKiyN,QAAQH,gBAAgB9xN,OAQ3CkyN,YAAQ/8N,IACY,MAAhB6K,KAAKiyN,UAETjyN,KAAKkyH,OAAS/8H,GACd6K,KAAKmyN,iBAAiBW,GAAkB9yN,KAAKiT,GAAI9d,KACjD6K,KAAKiyN,QAAQhP,WAAWjjN,KAAKiyN,QAAQ98N,QAOrCA,UAAMA,IACF6K,KAAKiyN,SACLjyN,KAAKkyH,OAAS/8H,GACd6K,KAAKmyN,iBAAiBW,GAAkB9yN,KAAKiT,GAAI9d,KACjD6K,KAAKiyN,QAAQhP,WAAWjjN,KAAKiyN,QAAQ98N,QAGrC6K,KAAKmyN,iBAAiBh9N,IAI9Bg9N,iBAAiBh9N,IACb6K,KAAKgoB,UAAUe,YAAY/oB,KAAK/H,SAASk3C,cAAe,QAASh6C,IAGrEs9N,aAAaC,IACT1yN,KAAKgoB,UAAUe,YAAY/oB,KAAK/H,SAASk3C,cAAe,WAAYujL,IAGxE1mM,cACQhsB,KAAKiyN,UACLjyN,KAAKiyN,QAAQX,WAAWr5M,OAAOjY,KAAKiT,IACpCjT,KAAKiyN,QAAQhP,WAAWjjN,KAAKiyN,QAAQ98N,SAIjD09N,UAAwBl6N,UAAxB,4BAAoHk6N,IAztMTh6N,MAytMkDA,OAztMlDA,MAytM4EA,OAztM5EA,MAytMqGw5N,GAAhN,KACAQ,GAAwBhgF,UA1tMmFh6I,MA0tM3G,MAAwGg6N,GAAxGzkM,kEArDMykM,OAsGN,YAAiB19N,IACb,MAAwB,iBAAVA,GAAqBA,GAAQuE,WAAWvE,QAQpD49N,SAAN,SACIjzN,cACIE,KAAKgzN,WAAaC,GAGtB/zJ,YAAYC,IACR,GAAIn/D,KAAKkzN,aAAa/zJ,GAAS,CAC3B,MAAMviE,GAAQoD,KAAKmzN,eAAeh0J,GAAQn/D,KAAKkzN,WAAW7zJ,cAC1Dr/D,KAAKq1F,SAAWr1F,KAAKw1F,QAAQ54F,IAC7BoD,KAAKgzN,WAAahzN,KAAKq1F,SAAWr1F,KAAKozN,gBAAgBx2N,IAASq2N,GAC5DjzN,KAAKqtN,WACLrtN,KAAKqtN,aAKjBp+K,SAAS+0K,IACL,OAAOhkN,KAAKgzN,WAAWhP,IAG3ByD,0BAA0Br3M,IACtBpQ,KAAKqtN,UAAYj9M,GASrBolF,QAAQ54F,IACJ,OAAgB,MAATA,EAAS,EAGxBm2N,UAA2Bp6N,UAA3B,4BAAuHo6N,KACvHA,GAA2BlgF,UAvzMgFh6I,MAuzM3G,MAA2Gk6N,GAA3GnoE,UAvzM2G/xJ,SAoxMrGk6N,OA2CN,MAAMM,GAAgB,CAClBjnM,QAAS03L,GACT58G,eAAa++C,OAAW,IAAMqtE,IAC9Bp9N,OAAO,OAuBLo9N,SAAN,iBAA2BP,GACvBjzN,cACIwO,SAASi8E,WAETvqF,KAAKkzN,UAAY,MAEjBlzN,KAAKmzN,eAAkBv2N,IAAU22N,GAAQ32N,IAEzCoD,KAAKozN,gBAAmBrwN,IAvvLhC,WAAsBA,IAClB,OAAQihN,KACJ,GAAIC,EAAkBD,GAAQ7uN,QAAU8uN,EAAkBlhN,IACtD,OAAO,KAEX,MAAM5N,GAAQuE,WAAWsqN,GAAQ7uN,OAGjC,OAAQwgG,MAAMxgG,KAAUA,GAAQ4N,GAAM,CAAEA,IAAO,CAAEA,IAAOA,GAAK4jJ,OAAUq9D,GAAQ7uN,QAAY,MA+uL3Dq+N,CAAazwN,KAGrDuwN,UAAa36N,UAAb,qDAp2M2GE,MAo2MFy6N,MAAzGzQ,IAAyGyQ,KAAzG,GACAA,GAAazgF,UAr2M8Fh6I,MAq2M3G,MAA6Fy6N,GAA7FllM,sNAr2M2Gv1B,MAq2M3G,6DAr2M2GA,MAq2M8N,CAACw6N,KAr2M/Nx6N,SAy1MrGy6N,OA2BN,MAAMG,GAAgB,CAClBrnM,QAAS03L,GACT58G,eAAa++C,OAAW,IAAMytE,IAC9Bx9N,OAAO,OAuBLw9N,SAAN,iBAA2BX,GACvBjzN,cACIwO,SAASi8E,WAETvqF,KAAKkzN,UAAY,MAEjBlzN,KAAKmzN,eAAkBv2N,IAAU22N,GAAQ32N,IAEzCoD,KAAKozN,gBAAmBhjI,IA3zLhC,YAAsBA,IAClB,OAAQ4zH,KACJ,GAAIC,EAAkBD,GAAQ7uN,QAAU8uN,EAAkB7zH,IACtD,OAAO,KAEX,MAAMj7F,GAAQuE,WAAWsqN,GAAQ7uN,OAGjC,OAAQwgG,MAAMxgG,KAAUA,GAAQi7F,GAAM,CAAEA,IAAO,CAAEA,IAAOA,GAAKu2D,OAAUq9D,GAAQ7uN,QAAY,MAmzL3Dw+N,CAAavjI,KAGrDsjI,UAAa/6N,UAAb,qDAz5M2GE,MAy5MF66N,MAAzG7Q,IAAyG6Q,KAAzG,GACAA,GAAa7gF,UA15M8Fh6I,MA05M3G,MAA6F66N,GAA7FtlM,sNA15M2Gv1B,MA05M3G,6DA15M2GA,MA05M8N,CAAC46N,KA15M/N56N,SA84MrG66N,OA2BN,MAAME,GAAqB,CACvBxnM,QAAS03L,GACT58G,eAAa++C,OAAW,IAAM4tE,IAC9B39N,OAAO,OA8BL29N,SAAN,iBAAgCd,GAC5BjzN,cACIwO,SAASi8E,WAETvqF,KAAKkzN,UAAY,WAEjBlzN,KAAKmzN,eAAkBv2N,IA9M/B,YAAmBA,IACf,OAAgB,MAATA,KAA2B,IAAVA,IAAkC,SAAd,GAAEA,IAAY,CA6MrBk3N,CAAUl3N,IAE3CoD,KAAKozN,gBAAmBx2N,IAAUm3N,EAGtCv+H,QAAQ54F,IACJ,OAAOA,IAGfi3N,UAAkBl7N,UAAlB,qDAz9M2GE,MAy9MGg7N,MAA9GhR,IAA8GgR,KAA9G,GACAA,GAAkBhhF,UA19MyFh6I,MA09M3G,MAAkGg7N,GAAlGzlM,kOA19M2Gv1B,MA09M3G,wEA19M2GA,MA09MgR,CAAC+6N,KA19MjR/6N,SA08MrGg7N,OA4LN,MAAMG,GAAuB,CACzB5nM,QAAS03L,GACT58G,eAAa++C,OAAW,IAAMguE,IAC9B/9N,OAAO,OAuBL+9N,SAAN,iBAAiClB,GAC7BjzN,cACIwO,SAASi8E,WAETvqF,KAAKkzN,UAAY,YAEjBlzN,KAAKmzN,eAAkBv2N,IA7a/B,YAAmBzH,IACf,MAAwB,iBAAVA,GAAqBA,GAAQugG,SAASvgG,GAAO,IA4atB++N,CAAUt3N,IAE3CoD,KAAKozN,gBAAmBe,IAtgMhC,YAA4Bh+H,IACxB,OAAQ6tH,IAzcZ,YAAwB7uN,IAEpB,OAAgB,MAATA,IAAyC,iBAAjBA,GAAMpD,MAAW,CAwcrCqiO,CAAepQ,GAAQ7uN,QAAU6uN,GAAQ7uN,MAAMpD,OAASokG,GAC3D,CAAEg+H,UAAa,CAAEE,eAAkBl+H,GAAWm+H,aAAgBtQ,GAAQ7uN,MAAMpD,SAC5E,KAkgMkCwiO,CAAmBJ,KAGjEF,UAAmBt7N,UAAnB,qDA3qN2GE,MA2qNIo7N,MAA/GpR,IAA+GoR,KAA/G,GACAA,GAAmBphF,UA5qNwFh6I,MA4qN3G,MAAmGo7N,GAAnG7lM,yKA5qN2Gv1B,MA4qN3G,qFA5qN2GA,MA4qN8N,CAACm7N,KA5qN/Nn7N,SAgqNrGo7N,OAiHAO,SAAN,UAEAA,UAA2B77N,UAA3B,4BAAuH67N,KACvHA,GAA2BhnM,UApxNgF30B,MAoxN3G,MAAwH27N,KAuCxHA,GAA2B/mM,UA3zNgF50B,MA2zN3G,UAA8J,CAAC43N,OA1CzJ+D,OAuEAjkM,SAAN,UAEAA,UAAY53B,UAAZ,4BAAwG43B,KACxGA,GAAY/C,UA31N+F30B,MA21N3G,MAAyG03B,KACzGA,GAAY9C,UA51N+F50B,MA41N3G,UAAgI27N,MAJ1HjkM,MAwLsB,wGEhkO5B,gBAAuCkkM,KACnC30N,cACIwO,SAASi8E,WACTvqF,KAAK00N,mBAAoB,GAkBjC,iBAAgCC,EAAyBvnM,sBAEjDwnM,QAAmB,IAAIC,IAE3BC,YAAYzpM,GAAIsuF,GAAK1gG,IACjBoS,UAAG7E,iBAAiBmzF,GAAK1gG,IAAU,GAG5B,KACHoS,GAAG49D,oBAAoB0wB,GAAK1gG,IAAU,IAG9C87M,cAAc1pM,GAAIsuF,IACdtuF,GAAG0pM,cAAcp7G,IAErBl2F,OAAOzmB,IACCA,GAAK3G,YACL2G,GAAK3G,WAAWqzB,YAAY1sB,IAGpCwtB,cAAcs/I,GAAShiJ,IACnBA,UAAMA,IAAO9nB,KAAKg1N,sBACPxqM,cAAcs/I,IAE7BmrD,qBACI,OAAOvjO,SAAS61K,eAAeC,mBAAmB,aAEtDwtD,qBACI,OAAOtjO,SAEXqqB,cAAc/e,IACV,OAAOA,GAAKgB,WAAamqK,KAAKC,aAElC8sD,aAAal4N,IACT,OAAOA,cAAgBm4N,iBAG3BzwF,qBAAqB58G,GAAKnc,IACtB,MAAe,WAAXA,GACOla,OAEI,aAAXka,GACOmc,GAEI,SAAXnc,GACOmc,GAAI1wB,KAER,KAEXqzH,YAAY3iG,IACR,MAAMwgB,GAcd,aACI8sL,SAAcA,GAAe1jO,SAASuF,cAAc,QAC7Cm+N,EAAcA,EAAYC,aAAa,QAAU,KAhBvCC,GACb,OAAe,MAARhtL,GAAe,KAmB9B,WAAsB/Y,IAClBgmM,EAAiBA,GAAkB7jO,SAAS84B,cAAc,KAC1D+qM,EAAen6N,aAAa,OAAQm0B,IACpC,MAAM6iF,GAAWmjH,EAAe3jH,SAChC,MAA8B,MAAvBQ,GAAS16G,OAAO,GAAa06G,GAAY,IAAGA,KAvBlBojH,CAAaltL,IAE9CmtL,mBACIL,EAAc,KAElB3R,eACI,OAAOhyN,OAAOikO,UAAUnS,UAE5BoS,UAAU50N,IACN,OAAO4jJ,QAAkBjzJ,SAASs/I,OAAQjwI,KAGlD,IAMIw0N,EANAH,EAAc,KAyBlB,MAAMQ,EAAgB,IAAI1pM,MAAe,iBAcnC2pM,EAA8B,CAChC,CACIzpM,QAASuF,MACTpF,WAhBR,WAA+BupM,GAAcpkO,GAAU88B,IACnD,MAAO,KAGHA,GAASn5B,IAAIk7M,OAAuBG,YAAY1mL,KAAK,KACjD,MAAM+rM,IAAMvS,SACN9oN,GAAShJ,GAASqF,iBAAkB,wBAAuB++N,QACjE,QAASh7N,GAAI,EAAGA,GAAIJ,GAAO3I,OAAQ+I,KAC/Bi7N,GAAItyM,OAAO/oB,GAAOI,SAS1B6xB,KAAM,CAACipM,EAAertM,KAAUo1J,OAChCznL,OAAO,IAWf,QAA4Bk3B,eAEpB4oM,SAAqB,IAAIC,GAE7B5e,YAAYj3G,IACR81H,4BAAmC,CAACl/N,GAAM8gN,IAAkB,KACxD,MAAMP,GAAcn3G,GAASy3G,sBAAsB7gN,GAAM8gN,IACzD,GAAmB,MAAfP,GACA,MAAM,IAAI9tK,MAAM,2CAEpB,OAAO8tK,IAEX2e,iCAAwC,IAAM91H,GAASu3G,sBACvDue,gCAAuC,IAAM91H,GAASw3G,qBAgBjDse,6BACDA,2BAAkC,IAEtCA,gCAlBuBliO,KACnB,MAAMmiO,GAAgBD,mCACtB,IAAIhsM,GAAQisM,GAAcpkO,OACtBqkO,IAAU,EACd,MAAMC,GAAY,SAAUC,IACxBF,GAAUA,IAAWE,GACrBpsM,KACa,GAATA,IACAl2B,GAASoiO,KAGjBD,GAAcvjO,QAAQ,SAAU2kN,IAC5BA,GAAYV,WAAWwf,OAMME,CAEzC1e,sBAAsBz3G,GAAUppG,GAAM8gN,IAClC,GAAY,MAAR9gN,GACA,OAAO,KAEX,MAAM2uF,GAAIya,GAASs3G,eAAe1gN,IAClC,OAAS,MAAL2uF,GACOA,GAEDmyH,IAGN0L,SAAU0R,aAAal+N,IAChBgJ,KAAK63M,sBAAsBz3G,GAAUppG,GAAKV,MAAM,GAEpD0J,KAAK63M,sBAAsBz3G,GAAUppG,GAAKw/N,eAAe,GALrD,UAYbC,QAAN,SACI52N,QACI,OAAO,IAAI62N,gBAGnBD,UAAW99N,UAAX,4BAAuG89N,KACvGA,GAAW79N,WADkFC,MAC7F,OAA2G49N,GAA3G39N,QAA2G29N,GAA3G,YANMA,OAuBN,MAAME,EAAwB,IAAIzqM,MAAe,2BAO3C0qM,SAAN,SAII92N,YAAY+2N,GAAS1tM,IACjBnpB,KAAKmpB,MAAQA,GACbnpB,KAAK82N,mBAAqB,IAAI1hO,IAC9ByhO,GAAQjkO,QAAQynB,IAAKA,GAAE08M,QAAU/2N,MACjCA,KAAK2gH,SAAWk2G,GAAQzqN,QAAQ2+E,UAWpCvkE,iBAAiBp0B,GAAS0B,GAAW+kH,IAEjC,OAAOgI,KADam2G,eAAeljO,IACrB0yB,iBAAiBp0B,GAAS0B,GAAW+kH,IAYvDo+G,uBAAuBtrN,GAAQ7X,GAAW+kH,IAEtC,OAAOgI,KADam2G,eAAeljO,IACrBmjO,uBAAuBtrN,GAAQ7X,GAAW+kH,IAK5Dq+G,UACI,OAAOl3N,KAAKmpB,MAGhB6tM,eAAeljO,IACX,MAAM+sH,GAAS7gH,KAAK82N,mBAAmBzhO,IAAIvB,IAC3C,GAAI+sH,GACA,OAAOA,GAEX,MAAMg2G,GAAU72N,KAAK2gH,SACrB,QAAS7lH,GAAI,EAAGA,GAAI+7N,GAAQ9kO,OAAQ+I,KAAK,CACrC,MAAM+lH,GAASg2G,GAAQ/7N,IACvB,GAAI+lH,GAAOs7F,SAASroN,IAChB,YAAKgjO,mBAAmBxhO,IAAIxB,GAAW+sH,IAChCA,GAGf,MAAM,IAAIp3E,MAAO,2CAA0C31C,OAGnE8iO,UAAaj+N,UAAb,4BAAyGi+N,IArFZ/9N,MAqF0C89N,GArF1C99N,MAqF4EA,SACzK+9N,GAAah+N,WAtFgFC,MAsF7F,OAA6G+9N,GAA7G99N,QAA6G89N,GAA7G,YA7DMA,OAsEN,SACI92N,YAAYukI,IACRrkI,KAAKqkI,KAAOA,GAEhB4yF,uBAAuB7kO,GAAS0B,GAAW+kH,IACvC,MAAMltG,IAAS63M,SAAU9+E,qBAAqB1kI,KAAKqkI,KAAMjyI,IACzD,IAAKuZ,GACD,MAAM,IAAI89B,MAAO,4BAA2B99B,gBAAoB7X,MAEpE,OAAOkM,KAAKwmB,iBAAiB7a,GAAQ7X,GAAW+kH,SAWlDs+G,SAAN,SACIr3N,cAEIE,KAAKo3N,WAAa,IAAIp4N,IAE1Bq4N,UAAU38N,IACN,MAAM48N,GAAY,IAAIt4N,IACtBtE,GAAO9H,QAAQ0E,KACN0I,KAAKo3N,WAAW/3N,IAAI/H,MACrB0I,KAAKo3N,WAAWp1N,IAAI1K,IACpBggO,GAAUt1N,IAAI1K,OAGtB0I,KAAKu3N,cAAcD,IAEvBC,cAAcD,IAAW,CACzBE,eACI,OAAO3gO,MAAMC,KAAKkJ,KAAKo3N,aAG/BD,UAAiBx+N,UAAjB,4BAA6Gw+N,KAC7GA,GAAiBv+N,WAxI4EC,MAwI7F,OAAiHs+N,GAAjHr+N,QAAiHq+N,GAAjH,YArBMA,OAyBAM,QAAN,iBAAkCN,GAC9Br3N,YAAYukI,IACR/1H,QACAtO,KAAKqkI,KAAOA,GAEZrkI,KAAK03N,WAAa,IAAItiO,IACtB4K,KAAK03N,WAAWpiO,IAAI+uI,GAAK93C,KAAM,IAEnCorI,iBAAiBj9N,GAAQpE,GAAMshO,IAC3Bl9N,GAAO9H,QAAS0E,KACZ,MAAMugO,GAAU73N,KAAKqkI,KAAK75G,cAAc,SACxCqtM,GAAQt3D,YAAcjpK,GACtBsgO,GAAWlkO,KAAK4C,GAAKs0B,YAAYitM,OAGzCC,QAAQC,IACJ,MAAMH,GAAa,GACnB53N,KAAK23N,iBAAiB33N,KAAKo3N,WAAYW,GAAUH,IACjD53N,KAAK03N,WAAWpiO,IAAIyiO,GAAUH,IAElCI,WAAWD,IACP,MAAMH,GAAa53N,KAAK03N,WAAWriO,IAAI0iO,IACnCH,IACAA,GAAWhlO,QAAQ64B,IAEvBzrB,KAAK03N,WAAWz/M,OAAO8/M,IAE3BR,cAAcD,IACVt3N,KAAK03N,WAAW9kO,QAAQ,CAACglO,GAAYG,MACjC/3N,KAAK23N,iBAAiBL,GAAWS,GAAUH,MAGnD5rM,cACIhsB,KAAK03N,WAAW9kO,QAAQglO,IAAcA,GAAWhlO,QAAQ64B,MAGjEgsM,UAAoB9+N,UAApB,4BAAgH8+N,IAhLnB5+N,MAgLwD0vB,QACrJkvM,GAAoB7+N,WAjLyEC,MAiL7F,OAAoH4+N,GAApH3+N,QAAoH2+N,GAApH,YArCMA,OA8CN,YAAqBQ,KACjBzU,SAAU//L,OAAOw0M,IAUrB,MAAMC,GAAiB,CACnBC,IAAO,6BACPC,MAAS,+BACTC,MAAS,+BACTC,IAAO,uCACPC,MAAS,gCACTC,KAAQ,kCAENC,EAAkB,UAWxB,YAAuBC,GAAQh+N,GAAQiR,IACnC,QAAS7Q,GAAI,EAAGA,GAAIJ,GAAO3I,OAAQ+I,KAAK,CACpC,IAAIxD,GAAQoD,GAAOI,IACfjE,MAAM4E,QAAQnE,IACdiW,GAAcmrN,GAAQphO,GAAOqU,KAG7BrU,GAAQA,GAAM4E,QAAQu8N,EAAiBC,IACvC/sN,GAAOjY,KAAK4D,KAGpB,OAAOqU,GAEX,WAAgCgtN,IAK5B,OAAQ5kO,KAKJ,GAAc,iBAAVA,GACA,OAAO4kO,IAGkB,IAAzBC,GADsC7kO,MAGtCA,GAAM8pE,iBACN9pE,GAAMi2L,aAAc,IAKhC,IACM6uC,QAAN,SACI/4N,YAAYg5N,GAAcC,GAAkBC,IACxCh5N,KAAK84N,aAAeA,GACpB94N,KAAK+4N,iBAAmBA,GACxB/4N,KAAKg5N,MAAQA,GACbh5N,KAAKi5N,iBAAmB,IAAI7jO,IAC5B4K,KAAKk5N,gBAAkB,IAAIC,GAAoBL,IAEnD7wM,eAAe71B,GAAS8K,IACpB,IAAK9K,KAAY8K,GACb,OAAO8C,KAAKk5N,gBAEhB,OAAQh8N,GAAKgrB,oBACJC,eAA4B,CAC7B,IAAIW,GAAW9oB,KAAKi5N,iBAAiB5jO,IAAI6H,GAAK+V,IAC9C,OAAK6V,KACDA,GAAW,IAAIswM,GAAkCp5N,KAAK84N,aAAc94N,KAAK+4N,iBAAkB77N,GAAM8C,KAAKg5N,OACtGh5N,KAAKi5N,iBAAiB3jO,IAAI4H,GAAK+V,GAAI6V,KAEvCA,GAASuwM,YAAYjnO,IACd02B,QAIN,OACAX,gBAUD,OAAO,IAAImxM,GAAkBt5N,KAAK84N,aAAc94N,KAAK+4N,iBAAkB3mO,GAAS8K,YAEhF,IAAK8C,KAAKi5N,iBAAiB55N,IAAInC,GAAK+V,IAAK,CACrC,MAAMvY,GAAS6S,GAAcrQ,GAAK+V,GAAI/V,GAAKxC,OAAQ,IACnDsF,KAAK+4N,iBAAiB1B,UAAU38N,IAChCsF,KAAKi5N,iBAAiB3jO,IAAI4H,GAAK+V,GAAIjT,KAAKk5N,iBAE5C,OAAOl5N,KAAKk5N,iBAIxBpvM,QAAQ,CACRM,MAAM,EAEVyuM,UAAoBlgO,UAApB,4BAAgHkgO,IA7SnBhgO,MA6SwD+9N,IA7SxD/9N,MA6SiF4+N,GA7SjF5+N,MA6SiHm4M,SAC9M6nB,GAAoBjgO,WA9SyEC,MA8S7F,OAAoHggO,GAApH//N,QAAoH+/N,GAApH,YAlDMA,OA2DN,SACI/4N,YAAYg5N,IACR94N,KAAK84N,aAAeA,GACpB94N,KAAKlL,KAAO7B,OAAO8Z,OAAO,MAC1B/M,KAAKuqB,YAAc,KAEvB3W,UAAU,CACV4W,cAAczpB,GAAM0pB,IAChB,OAAIA,GAUO/4B,SAASkvK,gBAAgBs3D,GAAeztM,KAAcA,GAAW1pB,IAErErP,SAAS84B,cAAczpB,IAElC2pB,cAAcv1B,IACV,OAAOzD,SAASg5B,cAAcv1B,IAElCw1B,WAAWx1B,IACP,OAAOzD,SAAS4uK,eAAenrK,IAEnCy1B,YAAYx0B,GAAQy0B,IAChBz0B,GAAOw0B,YAAYC,IAEvB7O,aAAa5lB,GAAQy0B,GAAUC,IACvB10B,IACAA,GAAO4lB,aAAa6O,GAAUC,IAGtCpB,YAAYtzB,GAAQ40B,IACZ50B,IACAA,GAAOszB,YAAYsB,IAG3BC,kBAAkBC,GAAgBC,IAC9B,IAAIE,GAA+B,iBAAnBH,GAA8Bx5B,SAASuF,cAAci0B,IACjEA,GACJ,IAAKG,GACD,MAAM,IAAIoe,MAAO,iBAAgBve,kCAErC,OAAKC,KACDE,GAAGk1I,YAAc,IAEdl1I,GAEXh1B,WAAW2G,IACP,OAAOA,GAAK3G,WAEhB+0B,YAAYpuB,IACR,OAAOA,GAAKouB,YAEhBhwB,aAAaiwB,GAAItqB,GAAM5L,GAAOs1B,IAC1B,GAAIA,GAAW,CACX1pB,GAAO0pB,GAAY,IAAM1pB,GACzB,MAAM2/J,GAAew3D,GAAeztM,IAChCi2I,GACAr1I,GAAGonI,eAAeiO,GAAc3/J,GAAM5L,IAGtCk2B,GAAGjwB,aAAa2F,GAAM5L,SAI1Bk2B,GAAGjwB,aAAa2F,GAAM5L,IAG9Bm2B,gBAAgBD,GAAItqB,GAAM0pB,IACtB,GAAIA,GAAW,CACX,MAAMi2I,GAAew3D,GAAeztM,IAChCi2I,GACAr1I,GAAGkuM,kBAAkB74D,GAAc3/J,IAGnCsqB,GAAGC,gBAAiB,GAAEb,MAAa1pB,WAIvCsqB,GAAGC,gBAAgBvqB,IAG3BmV,SAASmV,GAAItqB,IACTsqB,GAAGtO,UAAU/a,IAAIjB,IAErB8W,YAAYwT,GAAItqB,IACZsqB,GAAGtO,UAAU0G,OAAO1iB,IAExBwqB,SAASF,GAAI/zB,GAAOnC,GAAOq2B,IACnBA,IAASqzI,eAA+BA,iBACxCxzI,GAAG/zB,MAAMyxB,YAAYzxB,GAAOnC,GAAOq2B,GAAQqzI,gBAAgC,YAAc,IAGzFxzI,GAAG/zB,MAAMA,IAASnC,GAG1Bs2B,YAAYJ,GAAI/zB,GAAOk0B,IACfA,GAAQqzI,eACRxzI,GAAG/zB,MAAMo5L,eAAep5L,IAKxB+zB,GAAG/zB,MAAMA,IAAS,GAG1ByxB,YAAYsC,GAAItqB,GAAM5L,IAElBk2B,GAAGtqB,IAAQ5L,GAEfu2B,SAAS1uB,GAAM7H,IACX6H,GAAK2sK,UAAYx0K,GAErB6e,OAAOrI,GAAQ5X,GAAOC,IAElB,MAAsB,iBAAX2X,GACA3L,KAAK84N,aAAa7B,uBAAuBtrN,GAAQ5X,GAAOylO,EAAuBxlO,KAEnFgM,KAAK84N,aAAatyM,iBAAiB7a,GAAQ5X,GAAOylO,EAAuBxlO,MAWxF,iBAAgDmlO,GAC5Cr5N,YAAYg5N,GAAcC,GAAkBxlM,GAAWylM,IACnD1qN,MAAMwqN,IACN94N,KAAKuzB,UAAYA,GACjB,MAAM74B,GAAS6S,GAAcyrN,GAAQ,IAAMzlM,GAAUtgB,GAAIsgB,GAAU74B,OAAQ,IAC3Eq+N,GAAiB1B,UAAU38N,IAC3BsF,KAAKy5N,YAjPb,YAA8BC,IAC1B,MAFkB,oBAEEx9N,QAAQu8N,EAAiBiB,IAgPtBC,CAAqBX,GAAQ,IAAMzlM,GAAUtgB,IAChEjT,KAAK45N,SA/Ob,YAA2BF,IACvB,MANe,iBAMEx9N,QAAQu8N,EAAiBiB,IA8OtBG,CAAkBb,GAAQ,IAAMzlM,GAAUtgB,IAE9DomN,YAAYjnO,IACRkc,MAAMlT,aAAahJ,GAAS4N,KAAK45N,SAAU,IAE/CpvM,cAAcp0B,GAAQ2K,IAClB,MAAMsqB,GAAK/c,MAAMkc,cAAcp0B,GAAQ2K,IACvC,aAAM3F,aAAaiwB,GAAIrrB,KAAKy5N,YAAa,IAClCpuM,IAGf,iBAAgC8tM,GAC5Br5N,YAAYg5N,GAAcC,GAAkBe,GAAQvmM,IAChDjlB,MAAMwqN,IACN94N,KAAK+4N,iBAAmBA,GACxB/4N,KAAK85N,OAASA,GACd95N,KAAK+5N,WAAaD,GAAOE,aAAa,CAAEphI,KAAM,SAC9C54F,KAAK+4N,iBAAiBjB,QAAQ93N,KAAK+5N,YACnC,MAAMr/N,GAAS6S,GAAcgmB,GAAUtgB,GAAIsgB,GAAU74B,OAAQ,IAC7D,QAASI,GAAI,EAAGA,GAAIJ,GAAO3I,OAAQ+I,KAAK,CACpC,MAAM+8N,GAAUnmO,SAAS84B,cAAc,SACvCqtM,GAAQt3D,YAAc7lK,GAAOI,IAC7BkF,KAAK+5N,WAAWnvM,YAAYitM,KAGpCoC,iBAAiBj9N,IACb,OAAOA,KAASgD,KAAK85N,OAAS95N,KAAK+5N,WAAa/8N,GAEpD4W,UACI5T,KAAK+4N,iBAAiBf,WAAWh4N,KAAK+5N,YAE1CnvM,YAAYx0B,GAAQy0B,IAChB,OAAOvc,MAAMsc,YAAY5qB,KAAKi6N,iBAAiB7jO,IAASy0B,IAE5D7O,aAAa5lB,GAAQy0B,GAAUC,IAC3B,OAAOxc,MAAM0N,aAAahc,KAAKi6N,iBAAiB7jO,IAASy0B,GAAUC,IAEvEpB,YAAYtzB,GAAQ40B,IAChB,OAAO1c,MAAMob,YAAY1pB,KAAKi6N,iBAAiB7jO,IAAS40B,IAE5D30B,WAAW2G,IACP,OAAOgD,KAAKi6N,iBAAiB3rN,MAAMjY,WAAW2J,KAAKi6N,iBAAiBj9N,WAWtEk9N,SAAN,iBAA8BC,GAC1Br6N,YAAYgoB,IACRxZ,MAAMwZ,IAIVq0L,SAASroN,IACL,OAAO,EAEX0yB,iBAAiBp0B,GAAS0B,GAAW+kH,IACjCzmH,UAAQo0B,iBAAiB1yB,GAAW+kH,IAAS,GACtC,IAAM74G,KAAKipF,oBAAoB72F,GAAS0B,GAAW+kH,IAE9D5vB,oBAAoBt9E,GAAQ7X,GAAWE,IACnC,OAAO2X,GAAOs9E,oBAAoBn1F,GAAWE,KAGrDkmO,UAAgBvhO,UAAhB,4BAA4GuhO,IAzgBfrhO,MAygBgD0vB,QAC7I2xM,GAAgBthO,WA1gB6EC,MA0gB7F,OAAgHqhO,GAAhHphO,QAAgHohO,GAAhH,YAlBMA,OAsCN,MAAME,GAAgB,CAAC,MAAO,UAAW,OAAQ,SAG3CC,GAAU,CAGZ,KAAM,YACN,KAAM,MACN,OAAQ,SACR,OAAQ,SACRC,IAAO,SACPC,IAAO,SACPC,KAAQ,YACRC,MAAS,aACTC,GAAM,UACNC,KAAQ,YACRC,KAAQ,cACRC,OAAU,aACVC,IAAO,MAKLC,GAAsB,CACxB55K,EAAK,IACL/W,EAAK,IACL+lF,EAAK,IACL/uE,EAAK,IACL45K,EAAK,IACL92C,EAAK,IACL7iI,EAAK,IACL45K,EAAK,IACL7qG,EAAK,IACLh5D,EAAK,IACLlG,EAAK,IACL3zB,EAAK,IACL29L,EAAK,IACLC,EAAK,IACL,IAAQ,IACR,OAAQ,WAKNC,EAAuB,CACzBC,IAAQtnO,IAAUA,GAAMunO,OACxBtX,QAAYjwN,IAAUA,GAAMwnO,QAC5Bh9D,KAASxqK,IAAUA,GAAMynO,QACzB5rK,MAAU77D,IAAUA,GAAM0nO,cAMxBC,SAAN,iBAA8BvB,GAK1Br6N,YAAYgoB,IACRxZ,MAAMwZ,IAOVq0L,SAASroN,IACL,OAAoD,MAA7C4nO,GAAgBC,eAAe7nO,GAAc,CAUxD0yB,iBAAiBp0B,GAAS0B,GAAW+kH,IACjC,MAAM+iH,GAAcF,GAAgBC,eAAe7nO,IAC7C+nO,GAAiBH,GAAgBI,cAAcF,GAAYG,QAAYljH,GAAS74G,KAAK+2N,QAAQG,WACnG,OAAOl3N,KAAK+2N,QAAQG,UAAU7sM,kBAAkB,KACrCm5L,SAAUsR,YAAY1iO,GAASwpO,GAAYI,aAAiBH,2BAGrD/nO,IAClB,MAAMqrF,GAAQrrF,GAAUgJ,cAAcuB,MAAM,KACtC29N,GAAe78I,GAAMvvB,QAC3B,GAAsB,IAAjBuvB,GAAMptF,QAAoC,YAAjBiqO,IAA+C,UAAjBA,GACxD,OAAO,KAEX,MAAM/mO,GAAMymO,GAAgBO,cAAc98I,GAAM3qB,OAChD,IAAIunK,GAAU,GASd,GARA3B,GAAcxnO,QAAQspO,KAClB,MAAMpoN,GAAQqrE,GAAM1pF,QAAQymO,IACxBpoN,IAAQ,IACRqrE,GAAM7kF,OAAOwZ,GAAO,GACpBioN,IAAWG,GAAe,OAGlCH,IAAW9mO,GACS,GAAhBkqF,GAAMptF,QAA8B,IAAfkD,GAAIlD,OAEzB,OAAO,KAKX,MAAMwF,GAAS,GACfA,UAAOykO,aAAkBA,GACzBzkO,GAAOwkO,QAAaA,GACbxkO,0BAEYxD,IACnB,IAAIgoO,GAAU,GACV9mO,GAsDZ,YAAqBlB,IACjB,IAAIkB,GAAMlB,GAAMkB,IAChB,GAAW,MAAPA,GAAa,CAKb,GAJAA,GAAMlB,GAAMooO,cAID,MAAPlnO,GACA,MAAO,eAEPA,GAAIiG,WAAW,QACfjG,GAAM+3F,OAAOkkH,aAAax7G,SAASzgG,GAAIS,UAAU,GAAI,KAnLjC,IAoLhB3B,GAAMi/B,UAAwC+nM,GAAoBjhO,eAAe7E,MAIjFA,GAAM8lO,GAAoB9lO,MAItC,OAAOolO,GAAQplO,KAAQA,GA1ETmnO,CAAYroO,IACtBkB,UAAMA,GAAI6H,cACE,MAAZu/N,GACIpnO,GAAM,QAEO,MAARA,KACLA,GAAM,OAEVmlO,GAAcxnO,QAAQspO,KACdA,IAAgBjnO,IAEZqnO,EADwCJ,IACzBnoO,MACfgoO,IAAWG,GAAe,OAItCH,IAAW9mO,GACJ8mO,wBASUA,GAASljH,GAASnsF,IACnC,OAAQ34B,KACA2nO,GAAgBa,gBAAgBxoO,MAAWgoO,IAC3CrvM,GAAKgpL,WAAW,IAAM78F,GAAQ9kH,2BAKrByoO,IAEjB,MACS,QADDA,GAEO,SAEAA,IAIvBd,UAAgB/iO,UAAhB,4BAA4G+iO,IA7rBf7iO,MA6rBgD0vB,QAC7ImzM,GAAgB9iO,WA9rB6EC,MA8rB7F,OAAgH6iO,GAAhH5iO,QAAgH4iO,GAAhH,YA1GMA,OA6JN,MAWMe,MAAkBxa,OAAsBD,MAAc,UAXhB,CACxC,CAAE51L,QAASw4H,MAAa53H,SAAU0vM,MAClC,CAAEtwM,QAASglL,MAAsBpkL,SAdrC,cACI6nM,GAAkB8H,cAClB1G,EAAsBxhN,QAYqCve,OAAO,GAClE,CAAEk2B,QAAS7D,KAAUgE,WARzB,cAEIqwM,gBAAalrO,UACNA,UAKqCi7B,KAAM,MAShDkwM,GAA2B,CAC7B,CAAEzwM,QAAS0wM,MAAiB9vM,SAAU,QACtC,CAAEZ,QAASwtJ,MAAcrtJ,WAtB7B,cACI,OAAO,IAAIqtJ,OAqBwCjtJ,KAAM,IACzD,CACIP,QAASuqM,EACTtqM,SAAU6tM,GACVhkO,OAAO,EACPy2B,KAAM,CAACpE,KAAUsE,MAAQ+3H,QAE7B,CAAEx4H,QAASuqM,EAAuBtqM,SAAUqvM,GAAiBxlO,OAAO,EAAMy2B,KAAM,CAACpE,OACjF,CACI6D,QAASysM,EACTxsM,SAAUwsM,EACVlsM,KAAM,CAACiqM,GAAca,EAAqBzmB,QAE9C,CAAE5kL,QAASK,MAAkBy6E,YAAa2xH,GAC1C,CAAEzsM,QAAS+qM,GAAkBjwH,YAAauwH,GAC1C,CAAErrM,QAASqrM,EAAqBprM,SAAUorM,EAAqB9qM,KAAM,CAACpE,OACtE,CAAE6D,QAASupL,MAAatpL,SAAUspL,MAAahpL,KAAM,CAACE,QACtD,CAAET,QAASwqM,GAAcvqM,SAAUuqM,GAAcjqM,KAAM,CAACgqM,EAAuB9pM,QAC/E,CAAET,QAAS2wM,KAAY1wM,SAAUoqM,EAAY9pM,KAAM,SAWjDgB,SAAN,SACI7tB,YAAYk9N,IACR,GAAIA,GACA,MAAM,IAAIvzL,MAAO,6LAWG5tC,IACxB,MAAO,CACHyxB,SAAUK,GACVJ,UAAW,CACP,CAAEnB,QAAS4kL,MAAQhkL,SAAUnxB,GAAOm9N,OACpC,CAAE5sM,QAASwpM,EAAe1uH,YAAa8pG,OACvC6kB,KAKhBloM,UAAch1B,UAAd,4BAA0Gg1B,IArzBb90B,MAqzB4C80B,GAAzI,MACAA,GAAcH,UAtzB+E30B,MAszB7F,MAA2G80B,KAC3GA,GAAcF,UAvzB+E50B,MAuzB7F,WAAqIgkO,GAArInvM,SAAyK2B,KAAc6yL,SA3BjLv0L,OA4TwB,oBAAXl8B,QAA0BA,WA2mBvCwrO,SAAN,UAEAA,UAAatkO,UAAb,4BAAyGskO,KACzGA,GAAarkO,WAtsDgFC,MAssD7F,OAA6GokO,GAA7GnkO,sDAA6GmkO,IAtsDhBpkO,MAssDkGqkO,IAA/LC,eAAuI,SAHjIF,OAWAC,SAAN,iBAA+BD,GAC3Bn9N,YAAYukI,IACR/1H,QACAtO,KAAKqkI,KAAOA,GAEhBynC,SAASxiK,GAAKnU,IACV,GAAa,MAATA,GACA,OAAO,KACX,OAAQmU,SACC+hK,WACD,OAAOl2K,QACNk2K,WACD,OAAI+xD,SAAiCjoO,GAAO,SACjCkoO,SAAiBloO,KAErBmoO,SAAet9N,KAAKqkI,KAAMr3C,OAAO73F,KAAQvD,gBAC/Cy5K,YACD,OAAI+xD,SAAiCjoO,GAAO,UACjCkoO,SAAiBloO,IAErBA,QACNk2K,aACD,IAAI+xD,SAAiCjoO,GAAO,UACxC,OAAOkoO,SAAiBloO,IAE5B,MAAM,IAAIs0C,MAAM,8CACf4hI,UAED,OADakyD,SAA2BpoO,KACpCioO,SAAiCjoO,GAAO,QACjCkoO,SAAiBloO,KAErBqoO,SAAcxwI,OAAO73F,UAC3Bk2K,mBACD,IAAI+xD,SAAiCjoO,GAAO,eACxC,OAAOkoO,SAAiBloO,IAE5B,MAAM,IAAIs0C,MAAM,0FAEhB,MAAM,IAAIA,MAAO,8BAA6BngC,0CAG1DumC,wBAAwB16C,IACpB,OAAOsoO,SAA6BtoO,IAExCuoO,yBAAyBvoO,IACrB,OAAOwoO,SAA8BxoO,IAEzCyoO,0BAA0BzoO,IACtB,OAAO0oO,SAA+B1oO,IAE1C2oO,uBAAuB3oO,IACnB,OAAO4oO,SAA4B5oO,IAEvCkuE,+BAA+BluE,IAC3B,OAAO6oO,SAAoC7oO,KAGnD+nO,UAAiBvkO,UAAjB,4BAA6GukO,IAvwDhBrkO,MAuwDkD0vB,QAC/I20M,GAAiBtkO,WAxwD4EC,MAwwD7F,OAAiHqkO,GAAjHpkO,qDA7DA,YAAiC01B,IAC7B,OAAO,IAAI0uM,GAAiB1uM,GAASn5B,IAAIkzB,OA4DsH01M,CAxwDtEplO,MAwwD+G8kL,QAA5Mw/C,eAA+I,SA1DzID,MAuFsB,2JClgErB,WAAegB,GAClB,OAAO,IAAIvrG,IAAYN,KACnB4G,QAAUilG,KAAqB75I,UAAUguC,kBCH1C,WAAa8iB,EAAWgpF,EAAYC,GACvC,OAAOvkH,EAAM,IAAOs7B,IAAcgpF,EAAaC,+CCD5C,YAAuB78I,EAAa88I,EAAMC,EAASC,EAAYC,IAClE,MAAO,CAACz5L,GAAQstF,MACZ,IAAIosG,GAAWH,EACXv6L,GAAQs6L,EACRvqN,GAAQ,EACZixB,GAAOs/C,WAAUi0C,OAAyBjG,GAAal9H,KACnD,MAAM2F,GAAIgZ,KACViwB,GAAQ06L,GAEAl9I,EAAYx9C,GAAO5uC,GAAO2F,KAExB2jO,IAAW,EAAOtpO,IAC5BopO,GAAclsG,GAAW51H,KAAKsnC,KAC/By6L,IACE,MACGC,IAAYpsG,GAAW51H,KAAKsnC,IAC5BsuF,GAAWW,gBCfpB,YAAczxC,EAAa88I,GAC9B,OAAOxlG,OAAQ6lG,GAAcn9I,EAAa88I,EAAM9zI,UAAUx4F,QAAU,GAAG,uJCH3E,8BACA,IACA,iBACA4sO,WAGA,CAHA,MACIC,IAEJ,YADAziO,KACA,CAGA6gC,QACAm+L,MAEAv+M,+BAIe,YAA0Bo+M,GACzC,kBACA,WACA7+N,YACA,kCACA,oBAEA,gBACA2iD,4BAGA,gBACAA,6BAGA+/K,cC/BA,YAAWxqO,EAAEsxF,GAAG,IAAI7qF,EAAE,GAAG,QAAQ2nD,KAAKpuD,EAAEpB,OAAOw3F,UAAU3wF,eAAejI,KAAKwC,EAAEouD,IAAIkjC,EAAElwF,QAAQgtD,GAAG,IAAI3nD,EAAE2nD,GAAGpuD,EAAEouD,IAAI,GAAG,SAAS,mBAAmBxvD,OAAO6rO,sBAAsB,CAAC,IAAI19N,GAAE,EAAE,IAAIqhD,EAAExvD,OAAO6rO,sBAAsBzqO,GAAG+M,GAAEqhD,EAAE1wD,OAAOqP,KAAIukF,EAAElwF,QAAQgtD,EAAErhD,KAAI,GAAGnO,OAAOw3F,UAAUs0I,qBAAqBltO,KAAKwC,EAAEouD,EAAErhD,OAAMtG,EAAE2nD,EAAErhD,KAAI/M,EAAEouD,EAAErhD,MAAK,OAAOtG,EAAE,IAAI6qF,GAAE,oBAAoB8iE,WAAWA,WAAW,oBAAoBh3J,OAAOA,OAAO,oBAAoB27F,OAAOA,OAAO,oBAAoBv5B,KAAKA,KAAK,GAAG,YAAWx/D,GAAG,OAAOA,GAAGA,EAAE2qO,YAAY/rO,OAAOw3F,UAAU3wF,eAAejI,KAAKwC,EAAE,WAAWA,EAAE2jE,QAAQ3jE,EAAE,YAAWA,EAAEsxF,GAAG,OAAOtxF,EAAEsxF,EAAE,CAACwlC,QAAQ,IAAIxlC,EAAEwlC,SAASxlC,EAAEwlC,QAAQ,IAAI/pH,GAAEqhD,GAAG,SAASpuD,EAAEsxF,GAAG1yF,OAAO0nH,eAAeh1B,EAAE,aAAa,CAACxwF,OAAM,IAAK,IAAI2F,EAAE,WAAW,aAAa,IAAIzG,GAAE2L,KAAKA,KAAKi/N,OAAO,IAAI7pO,IAAI4K,KAAKk/N,YAAY,SAASv5I,GAAE7qF,IAAG,IAAI2nD,GAAEpuD,GAAE4qO,OAAO5pO,IAAIswF,SAAG,IAASljC,GAAapuD,GAAE4qO,OAAO3pO,IAAIqwF,QAAxB,OAA0B,GAAmB,CAAC7qF,UAAI,SAAa2nD,GAAE9mC,QAAQ7gB,IAAGzG,GAAE4qO,OAAO3pO,IAAIqwF,GAAEljC,MAAKziD,KAAKm/N,SAAS,SAASx5I,IAAG,OAAOtxF,GAAE4qO,OAAO5/N,IAAIsmF,KAAI3lF,KAAKo/N,KAAK,SAASz5I,IAAG,OAAO,IAAI/oE,QAAS,SAAS9hB,GAAE2nD,IAAGpuD,GAAE8qO,SAASx5I,IAAGtxF,GAAE6qO,YAAYv5I,GAAE7qF,KAAIzG,GAAE6qO,YAAYv5I,IAAG7qF,SAASkF,KAAKq/N,OAAO,SAAS15I,IAAG,IAAI7qF,GAAEzG,GAAE4qO,OAAO5pO,IAAIswF,IAAG,QAAG,QAAY,OAAM5zF,OAAO,CAAC,IAAI0wD,GAAE3nD,GAAE05D,MAAMngE,GAAE4qO,OAAO3pO,IAAIqwF,GAAE7qF,SAAG,QAAYmsD,WAAWxE,GAAE,QAAQpuD,GAAE4qO,OAAOhnN,OAAO0tE,KAAI,OAAOtxF,EAAEirO,YAAY,WAAW,YAAO,MAAWv9F,WAAW1tI,EAAE0tI,SAAS,IAAI1tI,GAAGA,EAAE0tI,UAAU1tI,EAAxnB,GAA6nBsxF,EAAE3tB,QAAQ,WAAW,OAAOl9D,EAAEwkO,iBAAkBxkO,GAAEsG,IAAG,IAAI6V,GAAEnc,GAAE2nD,GAAG,SAASpuD,EAAEyG,GAAG,IAAI2nD,EAAEkjC,IAAGA,GAAE3xD,WAAW,SAAS3/B,GAAEsxF,GAAE7qF,GAAE2nD,IAAG,OAAO,IAAI3nD,KAAIA,GAAE8hB,UAAW,SAASxb,GAAE6V,IAAG,YAAW5iB,IAAG,IAAI81D,GAAE1H,GAAEhmD,KAAKpI,IAAeA,CAAfA,MAAUA,IAAG4iB,GAAE5iB,KAAI,YAAWA,IAAG,IAAI81D,GAAE1H,GAAE88K,MAAMlrO,IAAeA,CAAfA,MAAUA,IAAG4iB,GAAE5iB,KAAI,YAAWA,IAAGA,GAAEqI,KAAK0E,GAAE/M,GAAEc,OAAO,IAAI2F,GAAG,SAAS6qF,IAAGA,GAAEtxF,GAAEc,SAAU60B,KAAKtnB,GAAE6iD,IAAG4E,IAAG1H,GAAEA,GAAEioC,MAAMr2F,GAAEsxF,IAAG,KAAKlpF,WAAYwa,EAAE0uE,IAAGA,GAAE65I,aAAa,SAASnrO,GAAEsxF,IAAG,IAAI7qF,GAAE2nD,GAAErhD,GAAE6V,GAAEvU,GAAE,CAAC+8N,MAAM,EAAEC,KAAK,WAAW,GAAG,EAAEt+N,GAAE,GAAG,MAAMA,GAAE,GAAG,OAAOA,GAAE,IAAIu+N,KAAK,GAAGC,IAAI,IAAI,OAAO3oN,GAAE,CAACxa,KAAK8oD,GAAE,GAAGg6K,MAAMh6K,GAAE,GAAGwmE,OAAOxmE,GAAE,IAAI,mBAAmB+lE,SAASr0G,GAAEq0G,OAAO/uH,UAAU,WAAW,OAAOyD,OAAOiX,GAAE,YAAWA,IAAG,OAAO,SAASsuC,IAAG,OAAO,SAAStuC,IAAG,GAAGnc,GAAE,MAAM,IAAIuuH,UAAU,mCAAmC,KAAK3mH,IAAG,IAAI,GAAG5H,GAAE,EAAE2nD,KAAIrhD,GAAE,EAAE6V,GAAE,GAAGwrC,GAAEspE,OAAO90G,GAAE,GAAGwrC,GAAE88K,SAASn+N,GAAEqhD,GAAEspE,SAAS3qH,GAAEvP,KAAK4wD,IAAG,GAAGA,GAAEhmD,SAAS2E,GAAEA,GAAEvP,KAAK4wD,GAAExrC,GAAE,KAAKva,KAAK,OAAO0E,GAAE,OAAOqhD,GAAE,EAAErhD,KAAI6V,GAAE,CAAC,EAAEA,GAAE,GAAG7V,GAAEjM,QAAQ8hB,GAAE,SAAS,OAAO,EAAE7V,GAAE6V,GAAE,WAAW,EAAE,OAAOvU,GAAE+8N,QAAQ,CAACtqO,MAAM8hB,GAAE,GAAGva,MAAK,QAAS,EAAEgG,GAAE+8N,QAAQh9K,GAAExrC,GAAE,GAAGA,GAAE,CAAC,GAAG,cAAc,EAAEA,GAAEvU,GAAEk9N,IAAIprK,MAAM9xD,GAAEi9N,KAAKnrK,MAAM,iBAAiB,MAAepzD,IAAVA,GAAEsB,GAAEi9N,MAAU5tO,OAAO,GAAGqP,GAAEA,GAAErP,OAAO,KAAK,OAAM,IAAI,OAAM,IAAI,CAAC2Q,GAAE,EAAE,SAAS,GAAG,OAAM,MAAMtB,IAAG6V,GAAE,GAAG7V,GAAE,IAAI6V,GAAE,GAAG7V,GAAE,IAAI,CAACsB,GAAE+8N,MAAMxoN,GAAE,GAAG,MAAM,GAAG,OAAM,IAAIvU,GAAE+8N,MAAMr+N,GAAE,GAAG,CAACsB,GAAE+8N,MAAMr+N,GAAE,GAAGA,GAAE6V,GAAE,MAAM,GAAG7V,IAAGsB,GAAE+8N,MAAMr+N,GAAE,GAAG,CAACsB,GAAE+8N,MAAMr+N,GAAE,GAAGsB,GAAEk9N,IAAIlsO,KAAKujB,IAAG,MAAM7V,GAAE,IAAIsB,GAAEk9N,IAAIprK,MAAM9xD,GAAEi9N,KAAKnrK,MAAM,SAASv9C,GAAE0uE,GAAE9zF,KAAKwC,GAAEqO,GAAoC,CAApCA,MAASrO,IAAG4iB,GAAE,CAAC,EAAE5iB,IAAGouD,GAAE,UAAU3nD,GAAEsG,GAAE,EAAE,GAAG,EAAE6V,GAAE,GAAG,MAAMA,GAAE,GAAG,MAAM,CAAC9hB,MAAM8hB,GAAE,GAAGA,GAAE,QAAG,EAAOva,MAAK,GAAjxB,CAAsxB,CAACua,GAAEsuC,QAAOtyD,OAAO0nH,eAAe7/G,EAAE,aAAa,CAAC3F,OAAM,IAAK,IAAIuN,GAAE,wBAAwB,YAAWrO,IAAG,OAAO,IAAIuoB,QAAS,SAAS+oE,IAAG,OAAO1+B,WAAW0+B,GAAEtxF,MAAM,YAAWA,IAAG,QAAQsxF,GAAE,gEAAgE7qF,GAAE,GAAG2nD,GAAE,EAAEA,GAAEpuD,GAAEouD,KAAK3nD,IAAG6qF,GAAE7iF,KAAKkpH,MAAMlpH,KAAKquM,SAASxrH,GAAE5zF,SAAS,OAAO+I,GAAE,IAAI6gC,GAAE,WAAW,cAAa37B,KAAK6/N,eAAe,IAAI7gO,IAAIgB,KAAKiT,GAAGohB,KAAKyjD,MAAMlmF,WAAWu4D,GAAE,IAAInqD,KAAK8/N,YAAY9/N,KAAK8/N,YAAYl0K,KAAK5rD,MAAMA,KAAKwiI,YAAYxiI,KAAKwiI,YAAY52E,KAAK5rD,MAAMA,KAAK+/N,uBAAuB//N,KAAK+/N,uBAAuBn0K,KAAK5rD,MAAMA,KAAKggO,yBAAyBhgO,KAAKggO,yBAAyBp0K,KAAK5rD,MAAMA,KAAKigO,yBAAyBjgO,KAAKigO,yBAAyBr0K,KAAK5rD,WAAM,OAAWkgO,UAAU7rO,GAAE6rO,QAAQ,IAAI,OAAO7rO,GAAEo2F,UAAUq1I,YAAY,SAASn6I,GAAE7qF,IAAG,YAAO,SAAaA,GAAE,KAAK2nD,EAAEziD,UAAK,OAAO,EAAQ,WAAW,IAAIyiD,GAAErhD,GAAEu6B,GAAEjM,GAAEsT,GAAE6oF,GAAE,OAAO50G,EAAEjX,KAAM,SAASiX,IAAG,OAAOA,GAAEwoN,YAAY,EAAEh9K,GAAEpuB,KAAKyjD,MAAM3tB,GAAE,GAAG/oD,GAAEizB,KAAKyjD,MAAMh9E,GAAE6gC,GAAEj5B,GAAE,IAAIijF,GAAEj2D,GAAEj+B,OAAOgjC,aAAaxd,GAAEwoN,MAAM,OAAO,EAAE,OAAOprM,KAAKyjD,MAAM12E,GAAE,CAAC,EAAEmkD,GAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAOtuC,GAAEyoN,OAAO,UAAShrM,QAAQiH,IAAG,CAAC,EAAE,IAAIqH,GAAEhjC,KAAKiT,GAAG,IAAI0yE,GAAE,IAAIljC,GAAE,CAAC,EAAE8C,GAAEziD,KAAKkpH,MAAM,GAAGlpH,KAAKquM,kBAAkB,EAAE,OAAOl6L,GAAEyoN,OAAOhwM,GAAEyF,QAAQwG,GAAE6rB,KAAKC,UAAU,CAACx0C,GAAGjT,KAAKiT,GAAGktN,IAAI19K,GAAE29K,WAAWp9L,GAAEq9L,aAAahsM,KAAKyjD,MAAMwoJ,cAAcjsM,KAAKyjD,SAAS,CAAC,EAAEvyB,GAAE,UAAU,EAAE,OAAOtuC,GAAEyoN,OAAO,QAAQ7zG,GAAEn8F,GAAEgF,QAAQiH,OAAMkwF,GAAErkE,KAAK2jC,MAAM0gC,KAAI54G,KAAKjT,KAAKiT,IAAI44G,GAAEs0G,MAAM19K,IAAGziD,KAAK6/N,eAAe79N,IAAIygD,IAAGziD,KAAKigO,yBAAyBtkM,GAAE8mB,IAAG,CAAC,GAAE,IAAK,CAAC,EAAE,QAAQ,EAAE,OAAOpuD,GAAEksO,gBAAgB,CAAC,EAAEvgO,KAAKggO,yBAAyB5+N,UAAS,EAAE6V,GAAEyoN,OAAOzoN,GAAEwoN,MAAM,OAAO,EAAE,OAAOh9K,GAAEpuB,KAAKyjD,MAAM3tB,GAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAE,SAAY91D,GAAEo2F,UAAUw1I,yBAAyB,SAAS5rO,GAAEsxF,IAAG,OAAOljC,EAAEziD,UAAK,OAAO,EAAQ,WAAW,IAAIlF,GAAEkF,KAAK,OAAOiX,EAAEjX,KAAM,SAAS0C,IAAG,OAAOukD,WAAY,WAAW,OAAOxE,EAAE3nD,QAAE,OAAO,EAAQ,WAAW,IAAIA,GAAE2nD,GAAE,OAAOxrC,EAAEjX,KAAM,SAASiX,IAAG,OAAOA,GAAEwoN,YAAY,EAAE,MAAM,CAAC,EAAEr+N,GAAE42D,UAAUonK,KAAKz5I,UAAS,EAAE,OAAO1uE,GAAEyoN,OAAO1/N,KAAK6/N,eAAexgO,IAAIsmF,KAAI7qF,GAAErJ,OAAOgjC,aAAa,QAAQguB,GAAE3nD,GAAE45B,QAAQrgC,MAAK+M,GAAE42D,UAAUqnK,OAAO15I,IAAG,CAAC,MAAMljC,GAAE+E,KAAK2jC,MAAM1oC,KAAI69K,cAAcjsM,KAAKyjD,MAAMh9E,GAAEq6B,QAAQ9gC,GAAEmzD,KAAKC,UAAUhF,KAAIrhD,GAAE42D,UAAUqnK,OAAO15I,IAAG3lF,KAAKigO,yBAAyB5rO,GAAEsxF,IAAG,CAAC,MAAMvkF,GAAE42D,UAAUqnK,OAAO15I,IAAG,CAAC,UAAa,KAAK,CAAC,QAAUtxF,GAAEo2F,UAAUu1I,yBAAyB,SAASr6I,IAAG,OAAOljC,EAAEziD,UAAK,OAAO,EAAQ,WAAW,OAAOiX,EAAEjX,KAAM,SAASlF,IAAG,OAAOA,GAAE2kO,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI7iN,QAAS,SAAS9hB,IAAG,IAAI2nD,IAAE,EAAGrhD,GAAEizB,KAAKyjD,MAAM7gE,IAAE,EAAG,cAAa,GAAGA,KAAIxlB,OAAOw3F,oBAAoB,UAAUvmF,IAAGrO,GAAEmsO,kBAAkB99N,IAAGomF,aAAavjC,IAAGtuC,IAAE,IAAKwrC,GAAE,CAACA,IAAE,EAAG,IAAIkjC,GAAE,IAAItxD,KAAKyjD,MAAM12E,IAAGukF,GAAE,EAAE1+B,WAAWnsD,GAAE6qF,IAAG7qF,MAAKrJ,OAAO+0B,iBAAiB,UAAU9jB,IAAGrO,GAAEosO,aAAa/9N,IAAG,IAAI6iD,GAAE0B,WAAWvkD,GAAEI,KAAKC,IAAI,EAAE4iF,GAAEtxD,KAAKyjD,gBAAiB,EAAE,OAAOh9E,GAAE4kO,OAAO,CAAC,SAAWrrO,GAAEosO,aAAa,SAAS96I,IAAG3lF,KAAKwgO,kBAAkB76I,SAAG,OAAWu6I,SAAS7rO,GAAE6rO,QAAQxsO,KAAKiyF,KAAItxF,GAAEmsO,kBAAkB,SAAS76I,SAAG,IAAStxF,GAAE6rO,UAAU7rO,GAAE6rO,QAAQ7rO,GAAE6rO,QAAQ93N,OAAQ,SAAS/T,IAAG,OAAOA,KAAIsxF,OAAOtxF,GAAEqsO,cAAc,gBAAW,IAASrsO,GAAE6rO,SAAS7rO,GAAE6rO,QAAQ9zN,QAAQxZ,QAAS,SAASyB,IAAG,OAAOA,QAAQA,GAAEo2F,UAAU+3C,YAAY,SAASnuI,IAAG,OAAOouD,EAAEziD,UAAK,OAAO,EAAQ,WAAW,OAAOiX,EAAEjX,KAAM,SAAS2lF,IAAG,OAAOA,GAAE85I,YAAY,EAAE,MAAM,CAAC,EAAEz/N,KAAK+/N,uBAAuB1rO,UAAS,EAAE,MAAM,CAAC,EAAEsxF,GAAE+5I,cAAgBrrO,GAAEo2F,UAAUs1I,uBAAuB,SAASp6I,IAAG,OAAOljC,EAAEziD,UAAK,OAAO,EAAQ,WAAW,IAAIlF,GAAE2nD,GAAE8C,GAAE,OAAOtuC,EAAEjX,KAAM,SAASiX,IAAG,OAAOA,GAAEwoN,YAAY,EAAE,OAAO3kO,GAAErJ,OAAOgjC,aAAuB,QAAQ8wB,GAAEzqD,GAAE45B,QAAtB+tB,GAAE//C,GAAE,IAAIijF,KAA0B,CAAC,IAAIpgC,GAAEiC,KAAK2jC,MAAM5lC,KAAItyC,KAAKjT,KAAKiT,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE7R,GAAE42D,UAAUonK,KAAK75K,GAAE46K,WAAW,EAAElpN,GAAEyoN,OAAO1/N,KAAK6/N,eAAe5nN,OAAOstC,GAAE46K,KAAKrlO,GAAEs6B,WAAWqtB,IAAGrhD,GAAE42D,UAAUqnK,OAAO95K,GAAE46K,KAAK9rO,GAAEqsO,gBAAgBzpN,GAAEwoN,MAAM,OAAO,EAAE,MAAM,CAAC,SAAWprO,GAAEksO,cAAc,WAAW,QAAQ56I,GAAEtxD,KAAKyjD,MAAM,IAAIh9E,GAAErJ,OAAOgjC,aAAaguB,GAAExvD,OAAOC,KAAK4H,IAAGsG,IAAE,EAAG6V,GAAE,EAAEA,GAAEwrC,GAAE1wD,OAAOklB,KAAI,CAAC,IAAIsuC,GAAE9C,GAAExrC,IAAG,GAAGsuC,GAAEtb,SAASvnC,IAAG,CAAC,IAAIynD,GAAErvD,GAAE45B,QAAQ6wB,IAAG,OAAO4E,UAAI,KAAUA,GAAE3C,KAAK2jC,MAAMhhC,KAAIm2K,eAAen2K,GAAEk2K,aAAa16I,SAAG,OAAW26I,eAAen2K,GAAEm2K,cAAc36I,MAAK7qF,GAAEs6B,WAAWmwB,IAAGnkD,IAAE,IAAKA,IAAG/M,GAAEqsO,iBAAiBrsO,GAAE6rO,aAAQ,EAAO7rO,GAAllH,GAAulHyG,EAAEk9D,QAAQr8B,MAAM,MAAMj5B,GAAE,CAACi+N,iBAAiB,IAAIp7K,EAAE,CAACxkD,KAAK,eAAe6/N,QAAQ,SAASz2K,GAAE,IAAI91B,KAAKyjD,MAAM,iBAAgBruC,MAAM3pC,YAAYzL,EAAEsxF,GAAGr3E,MAAMq3E,GAAG3lF,KAAKgxB,MAAM38B,EAAE2L,KAAK6gO,kBAAkBl7I,EAAE1yF,OAAOk2H,eAAenpH,KAAK27B,GAAE8uD,+BAA+Bz5D,MAAM38B,EAAEwsO,kBAAkBl7I,IAAI,OAAO,IAAIhqD,GAAEtnC,EAAEsxF,IAAI,iBAAgBhqD,GAAE77B,YAAYzL,EAAEsxF,EAAE7qF,EAAE2nD,GAAE,MAAMn0C,MAAMja,EAAEsxF,GAAG3lF,KAAK+jC,MAAMjpC,EAAEkF,KAAK8gO,SAASr+K,GAAExvD,OAAOk2H,eAAenpH,KAAK0vB,GAAE+6D,YAAY,iBAAgB9uD,GAAE77B,cAAcwO,MAAM,UAAU,WAAWrb,OAAOk2H,eAAenpH,KAAKgjC,GAAEynD,YAAY,iBAAgBznD,GAAEljC,YAAYzL,GAAGia,QAAQtO,KAAK+gO,MAAM1sO,EAAEpB,OAAOk2H,eAAenpH,KAAK6rH,GAAEphC,YAAY,iBAAgB9uD,GAAE77B,YAAYzL,GAAGia,MAAM,YAAY,gBAAgBtO,KAAK+gO,MAAM1sO,EAAEpB,OAAOk2H,eAAenpH,KAAKqa,GAAEowE,YAAY,iBAAgB9uD,GAAE77B,YAAYzL,EAAEsxF,EAAE7qF,GAAGwT,MAAMja,EAAEsxF,GAAG3lF,KAAKghO,UAAUlmO,EAAE7H,OAAOk2H,eAAenpH,KAAKnD,GAAE4tF,YAAY,iBAAgB9uD,GAAE77B,YAAYzL,EAAEsxF,GAAGr3E,MAAM,wBAAyB,qCAAoCizC,GAAEltD,EAAE,CAAC,yBAAyBktD,GAAEokC,QAAQ3lF,KAAKgpC,SAAS30C,EAAE2L,KAAKqvG,MAAM1pB,EAAE1yF,OAAOk2H,eAAenpH,KAAKwS,GAAEi4E,YAAY,YAAWp2F,EAAEsxF,EAAE,IAAI,OAAOtxF,IAAIsxF,EAAE17C,SAAS51C,GAAGA,EAAE,GAAG,MAAMo9H,GAAE,IAAIhgI,OAAOwvO,OAAOh9N,GAAE,KAAK,MAAM5P,EAAE,qEAAqE,IAAIsxF,EAAE,GAAG,OAAO9uF,MAAMC,KAAK26H,KAAIyvG,gBAAgB,IAAIC,WAAW,MAAMvuO,QAASkI,GAAG6qF,GAAGtxF,EAAEyG,EAAEzG,EAAEtC,SAAU4zF,GAAGtyB,GAAEh/D,GAAG+sO,KAAK/sO,GAAG6iB,GAAEyuE,IAAI,IAAkEtxF,GAA9DgtO,SAASvmO,GAAG6qF,EAAEljC,EAAEpuD,GAAEsxF,EAAE,CAAC,aAAa,OAAO,IAAIq6D,iBAAiB3rJ,EAAgHpB,OAAOqe,OAAO,CAACgwN,UAAUxmO,GAAG2nD,GAAzIxvD,OAAOC,KAAKmB,GAAG+T,OAAQu9E,SAAG,MAAWA,KAAK/mB,OAAQ,CAAC+mB,GAAE7qF,KAAI7H,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGq0E,IAAG,EAAE7qF,IAAGzG,EAAEyG,MAAM,MAAsClJ,YAAYyR,GAAEhP,IAAIA,SAA+GA,EAAE6H,QAAQ,KAAK,KAAKA,QAAQ,KAAK,KAA7Ik7G,mBAAmBmqH,KAAKltO,GAAGgK,MAAM,IAAIrJ,IAAKX,GAAG,KAAK,KAAKA,EAAEiiH,WAAW,GAAG1kH,SAAS,KAAKwa,OAAM,IAAMo1C,KAAK,KAAzGntD,KAAgJ,EAAM8H,GAAC,oBAAC,UAAM9H,EAAEsxF,GAAK,MAAM7qF,QAAQ0mO,MAAMntO,EAAEsxF,GAAG,MAAM,CAACq7D,GAAGlmJ,EAAEkmJ,GAAG3jD,WAAWviG,EAAEuiG,UAAnE,wDAA4E+yB,GAAC,oBAAC,UAAM/7H,EAAEsxF,EAAE7qF,GAAK,MAAM2nD,GAAE,IAAIqO,gBAAgB,IAAI1vD,GAAE,OAAOukF,EAAE30B,OAAOvO,GAAEuO,OAAOp0C,QAAQ6kN,KAAK,CAACtlO,GAAE9H,EAAEsxF,GAAG,IAAI/oE,QAAS,CAACvoB,GAAEsxF,MAAKvkF,GAAE6lD,WAAY,KAAKxE,GAAExuB,QAAQ0xD,GAAE,IAAIl8C,MAAM,oCAAqC3uC,OAAQ4mO,QAAS,KAAK54I,aAAa1nF,QAAtO,2DAA6Ogc,GAAC,oBAAC,UAAM/oB,EAAEsxF,EAAE7qF,EAAE2nD,GAAErhD,GAAE6V,GAAEvU,IAAK,OAAO6iD,GAAE,CAACj3B,KAAK,CAAC0a,SAAS28C,EAAE0pB,MAAMv0G,GAAG2lI,QAAQr/H,GAAEugO,SAASttO,EAAEutO,aAAan/K,GAAEo/K,YAAYn/N,IAAGynD,GAAElzC,GAAE,IAAI2F,QAAS,SAASvoB,GAAEsxF,IAAG,MAAM7qF,GAAE,IAAIgnO,eAAehnO,GAAEinO,MAAMC,UAAU,SAASv/K,IAAGA,GAAE3tD,KAAKk8B,MAAM20D,GAAE,IAAIl8C,MAAMgZ,GAAE3tD,KAAKk8B,QAAQ38B,GAAEouD,GAAE3tD,MAAMgG,GAAEinO,MAAME,SAAS93K,GAAE+3K,YAAY38K,GAAE,CAACzqD,GAAEqnO,UAAW,IAAI58K,GAAE4E,KAA9S,uEAAiTi4K,GAAC,oBAAC,UAAM/tO,EAAEsxF,EAAE7qF,EAAE2nD,GAAErhD,GAAE6V,GAAEvU,GAAE,KAApB,OAA0BtB,GAAEgc,GAAE/oB,EAAEsxF,EAAE7qF,EAAE2nD,GAAE//C,GAAEtB,GAAE6V,IAAGm5G,GAAE/7H,EAAEouD,GAAE//C,MAApD,+FAAuD,UAAiBijF,EAAE7qF,GAAG,IAAIunO,QAAQ5/K,EAAEg+E,QAAQr/H,EAAE4nC,SAAS/xB,GAAEo4F,MAAM3sG,GAAE4/N,YAAYn4K,GAAE03K,YAAYnyM,IAAGi2D,EAAE3iD,GAAE3uC,GAAEsxF,EAAE,CAAC,UAAU,UAAU,WAAW,QAAQ,cAAc,gBAAgB,MAAMkmC,GAAEn8F,GAAExY,GAAE8rB,IAAGwkB,KAAKC,UAAUzkB,IAAG,aAAau/L,gBAAe58I,GAAE7qF,GAAE2nD,GAAErhD,GAAE6V,GAAEvU,GAAE6iD,IAAG,IAAI4E,GAAEz6B,GAAE,KAAK,QAAQr7B,GAAE,EAAEA,GAAE,EAAEA,KAAI,IAAI81D,SAAQi4K,GAAEz8I,GAAEljC,GAAErhD,GAAE6V,GAAEvU,GAAE6iD,GAAEzqD,IAAG40B,GAAE,KAAK,KAAiBr7B,CAAjB,MAAYA,IAAGq7B,GAAEr7B,GAAE,GAAGq7B,GAAE,MAAMA,GAAE,MAAMsT,GAAEmnB,GAAEkzC,MAAMrsE,MAAM66F,GAAEg1G,kBAAkBxmN,IAAG2oB,GAAEue,GAAEltD,GAAE2uC,GAAE,CAAC,QAAQ,uBAAuBg+G,GAAGvvB,IAAGtnE,GAAE,IAAIsnE,GAAE,CAAC,MAAMp9H,GAAEgmB,IAAI,+BAA8BsrE,KAAI,KAAG,oBAAyB,IAAI9oF,GAAEgvH,GAAEx3H,GAAEktD,GAAEy/K,WAAc,6BAAkC,IAAIxuN,GAAEiwC,GAAErhD,IAAS,IAAIu6B,GAAEkwF,IAAG,gBAAgBx3H,IAAG,OAAOktD,KAAja,iEAAqa,GAAEkB,gBAAgBrhD,EAAE6V,IAAG,UAAUvU,GAAE,CAACw8I,OAAO,OAAO9nJ,KAAKy0H,GAAE10D,QAAQ,CAAC,eAAeznC,GAAE,oCAAoC,mBAAmB,eAAe0xM,KAAK55K,KAAKC,UAAU0C,IAAG5E,MAAMzqD,EAAE40B,IAA7lB,MAA6lBA,4BAAG,MAAM7O,GAAE,IAAIxsB,KAAK,OAAOsxF,EAAEtxF,EAAE+T,OAAO+0F,SAAS37C,KAAK,KAAKnyC,OAAOhR,MAAM,OAAOxH,MAAMC,KAAK,IAAIkI,IAAI2mF,KAAKnkC,KAAK,KAAK,IAAImkC,GAAG,SAAQ7lF,YAAYzL,EAAEsxF,EAAE,iBAAiB7qF,GAAGkF,KAAKmgL,OAAOx6F,EAAE3lF,KAAKqgL,OAAOvlL,EAAEkF,KAAKqhO,SAAShtO,EAAEgtO,SAASrhO,KAAKqvG,MAAMh7G,EAAEg7G,MAAMrvG,KAAKgpC,SAAS30C,EAAE20C,SAASw5L,QAAQ,MAAM,CAACxiO,KAAKmgL,OAAOngL,KAAKqhO,SAASrhO,KAAKgpC,SAAShpC,KAAKqvG,MAAMrvG,KAAKqgL,QAAQj4K,OAAO+0F,SAAS37C,KAAK,qBAAqBntD,GAAG,MAAMsxF,EAAE7qF,EAAE2nD,GAAErhD,IAAG/M,EAAEgK,MAAM,MAAM,OAAO,IAAI8xH,GAAE,CAACkxG,SAASvmO,EAAEu0G,MAAMjuG,GAAE4nC,SAASyZ,IAAGkjC,yBAAyBtxF,GAAG,MAAMg7G,MAAM1pB,EAAE38C,SAASluC,EAAEwmO,UAAU7+K,IAAGpuD,EAAE,OAAO,IAAI87H,GAAE,CAAC9gB,MAAM1pB,EAAE38C,SAASluC,EAAEumO,SAAS5+K,MAAK,SAAQntD,IAAIjB,EAAEsxF,GAAGlxD,aAAaU,QAAQ9gC,EAAEmzD,KAAKC,UAAUk+B,IAAItwF,IAAIhB,GAAG,MAAMsxF,EAAEl0F,OAAOgjC,aAAaC,QAAQrgC,GAAG,GAAGsxF,EAAE,IAAI,OAAOn+B,KAAK2jC,MAAMxF,EAAY,CAAZA,MAAStxF,GAAG,QAAQovB,OAAOpvB,GAAGogC,aAAaW,WAAW/gC,GAAGouO,UAAU,OAAOxvO,OAAOC,KAAKzB,OAAOgjC,cAAcrsB,OAAQ/T,GAAGA,EAAE6G,WAAW,oBAAqB,SAAQ4E,cAAcE,KAAK0iO,cAAc,WAAW,IAAIruO,EAAE,GAAG,MAAM,CAACiB,IAAIqwF,EAAE7qF,GAAGzG,EAAEsxF,GAAG7qF,GAAGzF,IAAIswF,GAAG,MAAM7qF,EAAEzG,EAAEsxF,GAAG,GAAG7qF,EAAE,OAAOA,GAAG2oB,OAAOkiE,UAAUtxF,EAAEsxF,IAAI88I,QAAQ,IAAIxvO,OAAOC,KAAKmB,IAA9H,EAA8HA,EAAQ,SAAQyL,YAAYzL,EAAEsxF,EAAE7qF,GAAGkF,KAAK2iO,MAAMtuO,EAAE2L,KAAK4iO,YAAYj9I,EAAE3lF,KAAK6iO,YAAY/nO,GAAGqvD,GAAQ24K,WAAWzuO,EAAEsxF,EAAE7qF,GAAE,kCAAC,IAAI2nD,GAAE,MAAMrhD,GAAE2hO,GAAKC,mBAAmB3uO,SAAS0uO,GAAKJ,MAAMrtO,IAAI8L,GAAE,CAAC6hO,SAASt9I,EAAEu9I,aAAapoO,UAAU,QAAQ2nD,GAAEsgL,GAAKH,mBAAc,YAAW,EAAOngL,GAAEzgD,IAAIZ,KAAzJ2pC,EAAyJ3pC,CAAU+hO,WAAW9uO,GAAE,iCAAC,MAAMsxF,QAAQxpF,EAAKwmO,MAAMttO,IAAI8G,EAAK6mO,mBAAmB3uO,EAAEgtO,WAAW,IAAI17I,GAAGtxF,EAAEg7G,OAAOh7G,EAAE20C,SAAS,CAAC,MAAM28C,SAAQxpF,EAAK9G,IAAIhB,GAAgB,OAATsxF,IAAaA,GAAEs9I,UAAWt9I,GAAEu9I,aAA0B,CAACD,SAASt9I,GAAEs9I,SAASC,aAAav9I,GAAEu9I,mBAAjD,CAAiDA,CAAc,GAAGv9I,EAAE,MAAM,CAACs9I,SAASt9I,EAAEs9I,SAASC,aAAav9I,EAAEu9I,eAApRn4L,EAAoRm4L,CAAoB7tO,IAAIhB,EAAEsxF,EAAE,GAAE,iCAAC,IAAI7qF,GAAE,IAAI2nD,SAAQy4K,EAAKyH,MAAMttO,IAAIhB,EAAEmuO,SAAS,IAAI//K,GAAE,CAAC,MAAMkjC,SAAQu1I,EAAKkI,eAAe,IAAIz9I,GAAE,OAAO,MAAM7qF,GAAEogO,EAAKmI,sBAAsBhvO,EAAEsxF,IAAG7qF,KAAI2nD,SAAQy4K,EAAKyH,MAAMttO,IAAIyF,KAAI,IAAI2nD,GAAE,OAAO,MAAMrhD,SAAQ85N,EAAK2H,cAAc5rN,GAAEnU,KAAKkpH,MAAM5qH,GAAE,KAAK,OAAOqhD,GAAE6gL,UAAU39I,EAAE1uE,GAAEwrC,GAAErrD,KAAKmsO,eAAe9gL,GAAErrD,KAAK,CAACmsO,cAAc9gL,GAAErrD,KAAKmsO,qBAAqBrI,EAAKyH,MAAMrtO,IAAIjB,EAAEmuO,QAAQ//K,IAAGA,GAAErrD,aAAa8jO,EAAKyH,MAAMl/M,OAAOpvB,EAAEmuO,oBAAoB,QAAQ1nO,GAAEogO,EAAK0H,mBAAc,YAAW,EAAO9nO,GAAE2oB,OAAOpvB,EAAEmuO,WAAW//K,GAAErrD,MAAre2zC,EAAqe3zC,CAAW9B,IAAIjB,GAAE,iCAAC,IAAIsxF,EAAE,MAAM7qF,GAAE,IAAIq1H,GAAE,CAACkxG,SAAShtO,EAAEitO,UAAUjyH,MAAMh7G,EAAEg7G,MAAMrmE,SAAS30C,EAAE20C,WAAWyZ,SAAQtmD,EAAKqnO,eAAenvO,SAAS8H,EAAKwmO,MAAMrtO,IAAIwF,GAAE0nO,QAAQ//K,UAAS,QAAQkjC,EAAExpF,EAAKymO,mBAAc,WAAW,EAAOj9I,EAAE3jF,IAAIlH,GAAE0nO,UAA7Mz3L,EAA6My3L,CAAgBp7N,MAAM/S,GAAE,iCAAC,IAAIsxF,EAAE,MAAM7qF,SAAQqB,EAAKinO,eAAetoO,WAAUA,GAAEsN,OAAQu9E,KAAItxF,GAAGsxF,GAAE17C,SAAS51C,IAAKuqE,OAAjC,qBAAyC,UAAMvqE,GAAEsxF,UAAWtxF,SAAQ8H,EAAKwmO,MAAMl/M,OAAOkiE,MAAtF,2DAA2F/oE,QAAQC,iBAAiB,QAAQ8oE,EAAExpF,EAAKymO,mBAAc,WAAW,EAAOj9I,EAAEv+E,UAAxN2jC,EAAwN3jC,CAAgBo8N,eAAenvO,GAAE,iCAAC,MAAMsxF,QAAQxpF,EAAK0mO,cAAc,MAAM,CAACzrO,KAAK/C,EAAEivO,UAAUxgO,KAAKkpH,MAAMrmC,EAAE,KAAKtxF,EAAEovO,aAA9E14L,EAA8E04L,CAAkBL,eAAc,iCAAC,IAAI/uO,EAAE,OAAO8mO,EAAKyH,YAAY,QAAQvuO,QAAQ8mO,EAAKyH,YAAYvtO,aAAQ,WAAW,EAAOhB,EAAEnB,KAAKioO,EAAKwH,MAAMF,QAAQtH,EAAKwH,MAAMF,eAAU,GAAzI13L,EAAyI,CAAOi4L,mBAAmB3uO,GAAG,OAAO,IAAI87H,GAAE,CAACkxG,SAAShtO,GAAG,iBAAiB,YAAYmuO,QAAQa,sBAAsBhvO,EAAEsxF,GAAG,OAAOA,EAAEv9E,OAAQu9E,IAAI,IAAI7qF,GAAE,MAAM2nD,GAAE0tE,GAAE8yD,QAAQt9F,GAAGvkF,GAAE,IAAIpC,IAAIyjD,GAAE4sD,OAAO5sD,GAAE4sD,MAAMhxG,MAAM,MAAM4Y,IAAG,QAAQnc,GAAEzG,EAAEg7G,aAAQ,YAAW,EAAOv0G,GAAEuD,MAAM,OAAO,GAAGqE,GAAE+/C,GAAE4sD,OAAOp4F,GAAE2nD,OAAQ,CAACvqE,GAAEsxF,KAAItxF,IAAG+M,GAAE/B,IAAIsmF,KAAI,GAAI,MAAM,sBAAqBw6F,QAAQ19H,GAAE4+K,WAAWhtO,EAAEgtO,UAAU5+K,GAAEzZ,WAAW30C,EAAE20C,UAAUtmC,KAAK,IAAI,SAAQ5C,YAAYzL,EAAEsxF,EAAE7qF,GAAGkF,KAAK0jO,QAAQrvO,EAAE2L,KAAKqhO,SAAS17I,EAAE3lF,KAAK2jO,aAAa7oO,EAAEkF,KAAK4jO,WAAY,gBAAe5jO,KAAKqhO,WAAWt0N,OAAO1Y,GAAG2L,KAAK0jO,QAAQr1L,KAAKruC,KAAK4jO,WAAWvvO,EAAE,CAACwvO,gBAAgB,EAAEF,aAAa3jO,KAAK2jO,eAAetuO,MAAM,OAAO2K,KAAK0jO,QAAQruO,IAAI2K,KAAK4jO,YAAYngN,SAASzjB,KAAK0jO,QAAQjgN,OAAOzjB,KAAK4jO,WAAW,CAACD,aAAa3jO,KAAK2jO,gBAAgB,MAAMzyK,GAAE78D,GAAG,iBAAiBA,EAAEogK,GAAE,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,QAAQ,YAAY,UAAU,SAAS,MAAM,MAAM,UAAU,MAAM,eAAe,WAAW,aAAa,eAAe,iBAAiB,OAAO,OAAO,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,OAAqwH,IAAIqvE,GAAErhL,GAAG,SAASpuD,EAAEyG,GAAG,IAAI2nD,EAAEkjC,IAAGA,GAAEwyB,UAAU,WAAW,OAAO11D,EAAExvD,OAAOqe,QAAQ,SAASjd,IAAG,QAAQsxF,GAAE7qF,GAAE,EAAE2nD,GAAE8nC,UAAUx4F,OAAO+I,GAAE2nD,GAAE3nD,KAAI,QAAQsG,MAAKukF,GAAE4E,UAAUzvF,IAAG7H,OAAOw3F,UAAU3wF,eAAejI,KAAK8zF,GAAEvkF,MAAK/M,GAAE+M,IAAGukF,GAAEvkF,KAAI,OAAO/M,IAAGouD,EAAEioC,MAAM1qF,KAAKuqF,YAAY,WAAWl2F,GAAEsxF,IAAG,IAAIA,GAAE,MAAM,GAAG,IAAI7qF,GAAE,KAAKzG,GAAE,OAAM,OAAOyG,GAAEA,GAAE,IAAI6qF,GAAE,YAAWtxF,GAAEsxF,GAAE7qF,IAAG,OAAOu7G,mBAAmBhiH,IAAG6H,QAAQ,2BAA2Bk7G,oBAAoBl7G,QAAQ,MAAM,OAAOA,QAAQ,MAAM,OAAO,IAAIm6G,mBAAmB1wB,IAAGzpF,QAAQ,4DAA4Dk7G,oBAAoB,SAAS/iH,IAAG,GAAG,iBAAiBA,GAAE0vO,QAAQ,CAAC,IAAIp+I,GAAE,IAAItxD,KAAKsxD,GAAEq+I,gBAAgBr+I,GAAEyoD,kBAAkB,MAAM/5I,GAAE0vO,SAAS1vO,GAAE0vO,QAAQp+I,GAAE,OAAOvkF,EAAE,UAAU/M,GAAE0vO,QAAQ1vO,GAAE0vO,QAAQE,cAAc,IAAI7iO,EAAE,SAAS/M,GAAE6vO,QAAQ9iO,EAAE,OAAO/M,GAAE4sC,MAAM7/B,EAAE,SAAS/M,GAAE8vO,QAAQ/iO,EAAE,WAAW/M,GAAE+vO,UAAhQ,CAA2QtpO,IAAG,YAAWzG,IAAG,QAAQsxF,GAAE,GAAG7qF,GAAEzG,GAAEA,GAAEgK,MAAM,MAAM,GAAGokD,GAAE,mBAAmBrhD,GAAE,EAAEA,GAAEtG,GAAE/I,OAAOqP,KAAI,CAAC,IAAI6V,GAAEnc,GAAEsG,IAAG/C,MAAM,KAAKqE,GAAEuU,GAAE7K,MAAM,GAAGo1C,KAAK,KAAK,MAAM9+C,GAAEhL,OAAO,KAAKgL,GAAEA,GAAE0J,MAAM,GAAE,IAAK,IAAIu5E,GAAE1uE,GAAE,GAAG/a,QAAQumD,GAAE20D,qBAAqB10G,GAAExG,QAAQumD,GAAE20D,mBAAoB,CAApBA,MAA0B/iH,IAAN,EAAW,OAAOsxF,GAAE,cAAa,OAAOjjF,GAAEhR,SAASs/I,QAAQ,YAAW38I,GAAEsxF,GAAE7qF,IAAGpJ,SAASs/I,OAAO/5H,GAAE5iB,GAAEsxF,GAAEljC,EAAE,CAACxhB,KAAK,KAAKnmC,KAAIA,EAAEkkO,YAAW,EAAGlkO,EAAEy9F,OAAOthF,GAAEnc,EAAEqwF,MAAMzoF,GAAE5H,EAAEkiJ,OAAOz3F,GAAEzqD,EAAEzF,IAAI,SAAShB,IAAG,OAAOkxD,KAAIlxD,KAAIyG,EAAExF,IAAI60D,GAAErvD,EAAE2oB,OAAO,SAASpvB,GAAEsxF,IAAGx7B,GAAE91D,GAAE,GAAGouD,EAAEA,EAAE,GAAGkjC,IAAG,CAACo+I,SAAQ,QAAUjpO,GAAEgpO,IAA6B,IAAIO,GAAEP,GAAEzuO,IAAI+rD,GAAE0iL,GAAExuO,IAAI4lO,GAAE4I,GAAErgN,OAAO,MAAM6gN,GAAE,CAACjvO,IAAIhB,GAAG,MAAMsxF,EAAE0+I,GAAEhwO,GAAG,QAAG,MAAW,OAAOmzD,KAAK2jC,MAAMxF,IAAIt3C,KAAKh6C,EAAEsxF,EAAE7qF,GAAG,IAAI2nD,EAAE,GAAG,WAAWhxD,OAAOuhC,SAASC,WAAWwvB,EAAE,CAAC0hL,QAAO,EAAGC,SAAS,UAAU,MAAMtpO,OAAE,EAAOA,EAAE+oO,mBAAmBphL,EAAEshL,QAAQjpO,EAAE+oO,kBAAkB,MAAM/oO,OAAE,EAAOA,EAAE6oO,gBAAgBlhL,EAAEyhL,OAAOppO,EAAE6oO,cAAcviL,GAAE/sD,EAAEmzD,KAAKC,UAAUk+B,GAAGljC,IAAIh/B,OAAOpvB,EAAEsxF,GAAG,IAAI7qF,EAAE,IAAI,MAAM6qF,OAAE,EAAOA,EAAEg+I,gBAAgB7oO,EAAEopO,OAAOv+I,EAAEg+I,cAAczI,GAAE7mO,EAAEyG,KAAKypO,GAAE,CAAClvO,IAAIhB,GAA2BsxF,GAAdtwF,IAAIhB,IAAaiwO,GAAEjvO,IAAK,WAAUhB,KAAMg6C,KAAKh6C,EAAEsxF,EAAE7qF,GAAG,IAAI2nD,EAAE,GAAG,WAAWhxD,OAAOuhC,SAASC,WAAWwvB,EAAE,CAAC0hL,QAAO,KAAM,MAAMrpO,OAAE,EAAOA,EAAE+oO,mBAAmBphL,EAAEshL,QAAQjpO,EAAE+oO,kBAAkB,MAAM/oO,OAAE,EAAOA,EAAE6oO,gBAAgBlhL,EAAEyhL,OAAOppO,EAAE6oO,cAAcviL,GAAG,WAAU/sD,IAAImzD,KAAKC,UAAUk+B,GAAGljC,GAAG6hL,GAAEj2L,KAAKh6C,EAAEsxF,EAAE7qF,IAAI2oB,OAAOpvB,EAAEsxF,GAAG,IAAI7qF,EAAE,IAAI,MAAM6qF,OAAE,EAAOA,EAAEg+I,gBAAgB7oO,EAAEopO,OAAOv+I,EAAEg+I,cAAczI,GAAE7mO,EAAEyG,GAAGwpO,GAAE7gN,OAAOpvB,EAAEsxF,GAAG2+I,GAAE7gN,OAAQ,WAAUpvB,IAAIsxF,KAAK37B,GAAE,CAAC30D,IAAIhB,GAAG,GAAG,oBAAoBmwO,eAAe,OAAO,MAAM7+I,EAAE6+I,eAAe9vM,QAAQrgC,GAAG,OAAO,QAAQmzD,KAAK2jC,MAAMxF,QAAG,GAAQt3C,KAAKh6C,EAAEsxF,GAAG6+I,eAAervM,QAAQ9gC,EAAEmzD,KAAKC,UAAUk+B,KAAKliE,OAAOpvB,GAAGmwO,eAAepvM,WAAW/gC,KAAqZ,IAAUkpC,GAAE4jB,GAAw6F,SAAS9sD,GAAG,OAAOkpC,GAAEA,IAAz1G,YAAWlpC,EAAEsxF,EAAE7qF,GAAG,IAAI2nD,OAAE,MAAW,KAAKkjC,EAAEvkF,GAAE,SAAS/M,GAAEsxF,IAAG,IAAI7qF,GAAEymO,KAAKltO,IAAG,GAAGsxF,GAAE,CAAC,QAAQljC,GAAE,IAAI0+K,WAAWrmO,GAAE/I,QAAQqP,GAAE,EAAE6V,GAAEnc,GAAE/I,OAAOqP,GAAE6V,KAAI7V,GAAEqhD,GAAErhD,IAAGtG,GAAEw7G,WAAWl1G,IAAG,OAAO4rF,OAAOkkH,aAAaxmH,MAAM,KAAK,IAAI+5I,YAAYhiL,GAAE47E,SAAS,OAAOvjI,GAAzL,CAA4LzG,OAAE,OAAYyG,GAAGmc,GAAE7V,GAAE3L,QAAQ,KAAK,IAAI,EAAEiN,GAAEtB,GAAE1L,UAAUuhB,KAAIwrC,EAAE,wBAAwBA,EAAE,IAAI8C,GAAE,IAAIy5F,KAAK,CAACt8I,IAAG,CAACxF,KAAK,2BAA2B,OAAOwuK,IAAIg5D,gBAAgBn/K,IAA+8F6R,CAA37F,u5FAAy5F,MAAO,GAAoC,IAAIutK,OAAOpnM,GAAElpC,IAAK,MAAMgqD,GAAE,GAAG,SAAQv+C,YAAYzL,EAAEsxF,GAAG3lF,KAAK2iO,MAAMtuO,EAAE2L,KAAKqhO,SAAS17I,EAAE3lF,KAAK4kO,YAAY5kO,KAAK6kO,sBAAsB7kO,KAAKqhO,UAAgBr/N,IAAI3N,GAAE,iCAAC,IAAIsxF,EAAE,MAAM7qF,GAAE,IAAIkE,KAAK,QAAQ2mF,QAAQxpF,EAAKwmO,MAAMttO,IAAI8G,EAAKyoO,oBAAe,WAAW,EAAOj/I,EAAEzyF,OAAO,IAAI4H,GAAEkH,IAAI3N,SAAS8H,EAAKwmO,MAAMrtO,IAAI6G,EAAKyoO,YAAY,CAAC1xO,KAAK,IAAI4H,OAAnKiwC,EAAmKjwC,CAAW2oB,OAAOpvB,GAAE,iCAAC,MAAMsxF,QAAQxpF,EAAKwmO,MAAMttO,IAAI8G,EAAKyoO,aAAa,GAAGj/I,EAAE,CAAC,MAAM7qF,GAAE,IAAIkE,IAAI2mF,EAAEzyF,MAAM,OAAO4H,GAAEmd,OAAO5jB,GAAGyG,GAAEyF,KAAK,QAAQpE,EAAKwmO,MAAMrtO,IAAI6G,EAAKyoO,YAAY,CAAC1xO,KAAK,IAAI4H,YAAWqB,EAAKwmO,MAAMl/M,OAAOtnB,EAAKyoO,eAA5L75L,EAA4L65L,CAAcvvO,MAAM,OAAO2K,KAAK2iO,MAAMttO,IAAI2K,KAAK4kO,aAAax9N,QAAQ,OAAOpH,KAAK2iO,MAAMl/M,OAAOzjB,KAAK4kO,aAAaC,sBAAsBxwO,GAAG,MAAO,mBAAkBA,KAAK,MAAM+1C,GAAE,CAAC06L,OAAO,KAAK,IAAIztL,IAAGqrL,cAAcqC,aAAa,IAAI,IAAI59K,IAAGuV,GAAEroE,GAAG+1C,GAAE/1C,GAAG2wO,GAAEr/I,IAAI,MAAMs/I,QAAQnqO,EAAEoqO,WAAWziL,GAAGkjC,EAAEvkF,EAAE/M,GAAEsxF,EAAE,CAAC,UAAU,eAAe,OAAO1yF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGlQ,GAAG,CAAC6jO,SAAQ,OAAQnqO,EAAEA,EAAE2nD,KAAK0iL,GAAG,IAAIluN,GAAE,SAASnX,YAAYzL,GAAE,WAAC,IAAIsxF,EAAE7qF,GAAE,GAAGkF,KAAKolO,WAAW,IAAI/tL,IAAGqrL,cAAc1iO,KAAKysD,eAAe,CAAC5jB,oBAAoB,CAACwmE,MAAM,wBAAwBg2H,0BAAyB,EAAGxD,aAAY,GAAI7hO,KAAKslO,uBAALv6L,GAA4B,kBAAgBo6L,GAAG3iG,YAAY,+BAA+B/wI,OAAOw3F,oBAAoB,WAAW9sF,EAAKmpO,0BAAyBtlO,KAAKuB,QAAQtO,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGtR,KAAKysD,gBAAgBp4D,GAAG,CAACw0C,oBAAoB51C,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGtR,KAAKysD,eAAe5jB,qBAAqBx0C,EAAEw0C,uBAAuB,oBAAoBp3C,QAAS,MAAK,IAAIggI,KAAI,MAAM,IAAIhoF,MAAM,4EAA4E,QAAG,SAAa87L,OAAO,MAAM,IAAI97L,MAAM,qMAAhJ,GAAwVp1C,EAAEsuO,OAAOtuO,EAAEmxO,eAAev2M,QAAQkuJ,KAAK,8IAA8I9oL,EAAEsuO,MAAM7nO,GAAEzG,EAAEsuO,UAAU,CAAC,GAAGh9I,EAAEtxF,EAAEmxO,eAAe,UAAU9oK,GAAEipB,GAAG,MAAM,IAAIl8C,MAAO,2BAA0Bk8C,MAAM7qF,GAAE4hE,GAAEipB,EAAFjpB,EAAEipB,CAAK3lF,KAAKylO,cAAcpxO,EAAEqxO,qBAAqB,IAAIrxO,EAAEqxO,qBAAqB,IAAI1lO,KAAK2lO,eAAc,MAAOC,qBAAqBtB,GAAEC,GAAEvkO,KAAK6lO,kBAAmB,SAAQ7lO,KAAKuB,QAAQ8/N,6BAA6BrhO,KAAK8lO,0BAA2BzxO,KAAI,SAA8B2L,KAAKuB,QAAQ8/N,4BAA/ChtO,GAAyD2L,KAAK+lO,uBAAuB1xO,EAAE0xO,wBAAwB,EAAE,MAAMtjL,GAAEpuD,EAAE2xO,0BAA0BhmO,KAAK2lO,cAAc37K,GAAE,IAAI5oD,GAA8a/M,GAAEsxF,GAA9a3lF,KAAKqvG,MAAMxuF,GAAE,SAAS7gB,KAAKuB,QAAQsnC,oBAAoBwmE,MAAMrvG,KAAKuB,QAAQ0kO,iBAAiB,iBAAiB,IAAIjmO,KAAKkmO,mBAAmB,IAAIC,GAAE1jL,GAAEziD,KAAKuB,QAAQ8/N,SAASrhO,KAAKuB,QAAQoiO,cAAc3jO,KAAK6iO,YAAY7iO,KAAKuB,QAAQshO,aAAa14K,GAAEnqD,KAAKomO,aAAa,IAAIC,GAAEvrO,GAAEA,GAAE2nO,aAAQ,EAAO,IAAIx4K,GAAEnvD,GAAEkF,KAAKuB,QAAQ8/N,UAAUrhO,KAAK6iO,aAAa7iO,KAAKsmO,UAAiC,eAAez/I,KAArCzlF,GAAEpB,KAAKuB,QAAQ2iO,QAA8B9iO,GAAG,WAAUA,KAAKpB,KAAKumO,aAAgB5gJ,GAA8E3lF,KAAKsmO,WAArFjyO,GAA4D2L,KAAKuB,QAAQilO,QAAjEnyO,GAAE6G,WAAW,YAAY7G,GAAG,WAAUA,MAAM,GAAEsxF,OAA0C,oBAAoBl0F,QAAQA,OAAOkzO,QAAQ3kO,KAAKuB,QAAQ0kO,kBAAkB,eAAejmO,KAAKymO,OAAO,IAAItlL,IAAGwoE,KAAKt1H,GAAG,MAAMsxF,EAAE0wB,mBAAmB+qH,KAAK55K,KAAKC,UAAUznD,KAAKuB,QAAQ+gO,aAAa/8K,KAAK,MAAO,GAAEvlD,KAAKsmO,YAAYjyO,iBAAiBsxF,IAAI+gJ,cAAcryO,GAAG,OAAO2L,KAAK2pH,KAAM,cAAazyG,GAAE7iB,MAAYsyO,eAAetyO,EAAEsxF,EAAE7qF,GAAE,kCAAC,MAAM2nD,SAAQsgL,GAAKF,cAAc,MAAv2ZxuO,KAAI,IAAIA,EAAE4uO,SAAS,MAAM,IAAIx5L,MAAM,oCAAoC,MAAMk8C,EAAGtxF,MAAI,MAAMsxF,GAAEtxF,GAAEgK,MAAM,MAAMvD,GAAE2nD,GAAErhD,IAAGukF,GAAE,GAAG,OAAM5zF,SAAS+I,KAAI2nD,KAAIrhD,GAAE,MAAM,IAAIqoC,MAAM,iCAAiC,MAAMxyB,GAAEuwC,KAAK2jC,MAAM9nF,GAAEo/C,KAAI//C,GAAE,CAACkkO,MAAMvyO,IAAGkxD,GAAE,GAAG,OAAOtyD,OAAOC,KAAK+jB,IAAGrkB,QAASyB,KAAIqO,GAAErO,IAAG4iB,GAAE5iB,IAAGogK,GAAExqH,SAAS51C,MAAKkxD,GAAElxD,IAAG4iB,GAAE5iB,OAAO,CAAC+nG,QAAQ,CAACtU,OAAOhtF,GAAE+rO,QAAQpkL,GAAEg/H,UAAUrgL,IAAG0mF,OAAOtgC,KAAK2jC,MAAM9nF,GAAEvI,KAAIgsO,OAAOpkO,GAAEqkO,KAAKxhL,KAArTlxD,CAA0TA,EAAE4uO,UAAU,IAAIt9I,EAAEmhJ,OAAOE,IAAI,MAAM,IAAIv9L,MAAM,+DAA+D,GAAGk8C,EAAEmhJ,OAAOE,MAAM3yO,EAAE2yO,IAAI,MAAM,IAAIv9L,MAAO,0DAAyDp1C,EAAE2yO,gBAAgBrhJ,EAAEmhJ,OAAOE,QAAQ,IAAIrhJ,EAAEohJ,KAAKhlO,IAAI,MAAM,IAAI0nC,MAAM,gEAAgE,GAAG,YAAYq+C,OAAOm/I,IAAI,MAAM,IAAIx9L,MAAO,2BAA0Bk8C,EAAEmC,OAAOm/I,2EAA2E,IAAIthJ,EAAEmhJ,OAAOI,KAAK,iBAAiBvhJ,EAAEmhJ,OAAOI,MAAMrwO,MAAM4E,QAAQkqF,EAAEmhJ,OAAOI,KAAK,MAAM,IAAIz9L,MAAM,qFAAqF,GAAG5yC,MAAM4E,QAAQkqF,EAAEmhJ,OAAOI,KAAK,CAAC,IAAIvhJ,EAAEmhJ,OAAOI,IAAIj9L,SAAS51C,EAAE6yO,KAAK,MAAM,IAAIz9L,MAAO,4DAA2Dp1C,EAAE6yO,4BAA4BvhJ,EAAEmhJ,OAAOI,IAAI1lL,KAAK,UAAU,GAAGmkC,EAAEmhJ,OAAOI,IAAIn1O,OAAO,EAAE,CAAC,IAAI4zF,EAAEmhJ,OAAOK,IAAI,MAAM,IAAI19L,MAAM,uHAAuH,GAAGk8C,EAAEmhJ,OAAOK,MAAM9yO,EAAE6yO,IAAI,MAAM,IAAIz9L,MAAO,oEAAmEp1C,EAAE6yO,gBAAgBvhJ,EAAEmhJ,OAAOK,iBAAiBxhJ,EAAEmhJ,OAAOI,MAAM7yO,EAAE6yO,IAAI,MAAM,IAAIz9L,MAAO,4DAA2Dp1C,EAAE6yO,mBAAmBvhJ,EAAEmhJ,OAAOI,QAAQ,GAAG7yO,EAAE+yO,MAAM,CAAC,IAAIzhJ,EAAEmhJ,OAAOM,MAAM,MAAM,IAAI39L,MAAM,gEAAgE,GAAGk8C,EAAEmhJ,OAAOM,QAAQ/yO,EAAE+yO,MAAM,MAAM,IAAI39L,MAAO,2DAA0Dp1C,EAAE+yO,kBAAkBzhJ,EAAEmhJ,OAAOM,UAAU,GAAG/yO,EAAEgzO,UAAUn2K,GAAEy0B,EAAEmhJ,OAAOQ,WAAW,MAAM,IAAI79L,MAAM,sHAAsH,GAAG,QAAQq9L,OAAOv1O,MAAM2/D,GAAEy0B,EAAEmhJ,OAAOv1O,KAAK,MAAM,IAAIk4C,MAAM,wEAAwE,IAAIynB,GAAEy0B,EAAEmhJ,OAAO3G,KAAK,MAAM,IAAI12L,MAAM,kEAAkE,MAAM3uC,EAAEzG,EAAEkzO,QAAQ,GAAG9kL,EAAE,IAAIpuB,KAAKhgC,EAAEyjF,KAAKzjD,KAAKyjD,OAAO12E,GAAE,IAAIizB,KAAK,GAAG,GAAGjzB,GAAEomO,cAAc7hJ,EAAEmhJ,OAAOv1O,IAAIuJ,GAAG2nD,EAAErhD,GAAE,MAAM,IAAIqoC,MAAO,oEAAmEgZ,gCAAgCrhD,OAAM,GAAG,QAAQ0lO,OAAOW,KAAKv2K,GAAEy0B,EAAEmhJ,OAAOW,KAAK,CAAC,MAAMpzO,GAAE,IAAIggC,KAAK,GAAG,GAAGhgC,GAAEmzO,cAAc7hJ,EAAEmhJ,OAAOW,IAAI3sO,GAAG2nD,EAAEpuD,GAAE,MAAM,IAAIo1C,MAAO,+GAA8GgZ,gBAAgBpuD,MAAK,GAAG,QAAQyyO,OAAOQ,WAAWp2K,GAAEy0B,EAAEmhJ,OAAOQ,WAAW,CAAC,MAAMlmO,GAAE,IAAIizB,KAAK,GAAG,GAAGjzB,GAAEomO,cAAc9xI,SAAS/P,EAAEmhJ,OAAOQ,WAAWjzO,EAAEgzO,QAAQvsO,GAAG2nD,EAAErhD,GAAE,MAAM,IAAIqoC,MAAO,uJAAsJgZ,4BAA4BrhD,MAAK,GAAG/M,EAAEkkD,aAAa,CAAC,MAAMz9C,GAAEzG,EAAEkkD,aAAalpC,OAAO,GAAGvU,GAAEI,WAAW,QAAQ,CAAC,MAAM7G,GAAEyG,GAAE,IAAI6qF,EAAEmhJ,OAAOY,OAAO,MAAM,IAAIj+L,MAAM,2EAA2E,GAAGp1C,KAAIsxF,EAAEmhJ,OAAOY,OAAO,MAAM,IAAIj+L,MAAO,sEAAqEp1C,eAAcsxF,EAAEmhJ,OAAOY,eAAe,CAAC,MAAMrzO,GAAEyG,GAAEgC,cAAc,IAAI6oF,EAAEmhJ,OAAOa,SAAS,MAAM,IAAIl+L,MAAM,+EAA+E,GAAGp1C,KAAIsxF,EAAEmhJ,OAAOa,SAAS,MAAM,IAAIl+L,MAAO,0EAAyEp1C,eAAcsxF,EAAEmhJ,OAAOa,cAAc,OAAOhiJ,GAAqnSq1I,CAAE,CAACgM,IAAIjE,GAAKwD,YAAYW,IAAInE,GAAKxhO,QAAQ8/N,SAAS4B,SAAS5uO,EAAE+yO,MAAMzhJ,EAAEptC,aAAaz9C,EAAEysO,OAAOxE,GAAKxhO,QAAQgmO,OAAOF,SAASjmO,GAAE2hO,GAAKxhO,QAAQsnC,oBAAoBw+L,QAAQ,iBAAiBjmO,GAAEA,GAAEs0F,SAASt0F,GAAE,UAAK,GAAQ02E,IAAIr1B,KAAI,IAAIrhD,IAArQ2pC,EAAqQ3pC,CAAEwmO,gBAAgBvzO,GAAGA,EAAE2L,KAAK2lO,cAAct3L,KAAKruC,KAAK6lO,kBAAkBxxO,EAAE,CAACwvO,gBAAgB7jO,KAAK+lO,uBAAuBpC,aAAa3jO,KAAKuB,QAAQoiO,eAAe3jO,KAAK2lO,cAAcliN,OAAOzjB,KAAK6lO,kBAAkB,CAAClC,aAAa3jO,KAAKuB,QAAQoiO,eAAqBkE,qBAAqBxzO,EAAEsxF,EAAE7qF,GAAE,kCAAC,MAAM2nD,GAAE4Q,GAAEpvD,MAAK7C,GAAEiyD,GAAEpvD,MAAKgT,GAAEhT,KAAIvB,GAAGrO,MAAI,MAAMsxF,GAAE,IAAIw7I,WAAW9sO,IAAG,MAAOA,MAAI,MAAMsxF,GAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAOtxF,GAAE6H,QAAQ,SAAU7H,IAAGsxF,GAAEtxF,MAArEA,CAA4E5C,OAAO2vO,KAAKp0I,OAAOkkH,gBAAgBr6M,MAAMC,KAAK6uF,QAA/JtxF,OAA4KyzO,MAAC,UAAMzzO,IAA4E,aAAhEo9H,KAAI8zG,OAAOwC,OAAO,CAAChnO,KAAK,YAAY,IAAIinO,aAAazvI,OAAOlkG,OAA/E,+CAAoG4iB,KAAIsuC,GAAG,EAAClxD,GAAEsxF,GAAE7qF,GAAE2nD,GAAErhD,GAAE6V,GAAEvU,GAAE6iD,KAAItyD,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,CAACgwN,UAAUjtO,GAAEgtO,UAAUhtO,GAAEw0C,qBAAqB/tC,IAAG,CAACu0G,MAAMxuF,GAAE8kE,GAAE7qF,GAAEu0G,OAAO44H,cAAc,OAAOC,cAAc3iL,IAAG,QAAQxhB,MAAM0e,GAAE2kL,MAAMhmO,GAAE0nC,aAAapmC,IAAGrO,GAAEw0C,oBAAoBC,aAAaq/L,eAAelxN,GAAEmxN,sBAAsB,SAA1R,CAAoSrF,GAAKxhO,QAAQwhO,GAAK1zH,MAAMh7G,EAAEouD,GAAErhD,GAAEsB,GAAErO,EAAEy0C,cAAci6L,GAAKxhO,QAAQsnC,oBAAoBC,cAAchuC,EAAE,aAAQ,EAAO6qF,EAAEuiJ,eAAe/9K,GAAE44K,GAAK2D,cAAcnhL,IAAriB,OAAwiB,MAAM,CAAC6hL,MAAMhmO,GAAEinO,cAAcpxN,GAAEo4F,MAAM9pD,GAAE8pD,MAAMrmE,SAASuc,GAAEvc,UAAU,UAAUF,aAAayc,GAAEzc,aAAa/E,MAAM0e,GAAElzB,IAAI46B,KAA12Bpf,EAA02Bof,CAASm+K,eAAej0O,EAAEsxF,GAAE,iCAAC,IAAI7qF,GAAE,GAAGzG,EAAEA,GAAG,KAAKsxF,EAAEA,GAAG,IAAIo7I,QAAQp7I,EAAEo7I,MAAO1sO,MAAI,MAAMsxF,GAAEl0F,OAAO82O,SAAS92O,OAAO+2O,WAAW,KAAK,EAAE1tO,GAAErJ,OAAOg3O,SAASh3O,OAAOi3O,YAAY,KAAK,EAAE,OAAOj3O,OAAO8yC,KAA8G,GAAvG,wBAAyB,QAAOohD,UAAS7qF,8DAA/JzG,IAAkOsxF,EAAEo7I,OAAO,MAAM,IAAIt3L,MAAM,2EAA2E,MAAMgZ,SAAQy4K,EAAK2M,qBAAqBxzO,EAAEw0C,qBAAqB,GAAG,CAACq/L,cAAc,eAAez2O,OAAOuhC,SAASsyG,QAAQ3/C,EAAEo7I,MAAM/tM,SAASsV,KAAKma,GAAElzB,IAAI,MAAMnuB,SAAQ/M,GAAslBpB,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGq0E,GAAG,CAACg7I,iBAAiBh7I,EAAEg7I,kBAAkBzF,EAAK35N,QAAQonO,2BAA2B,KAAnsB,IAAI/rN,QAAS,CAAC+oE,GAAE7qF,MAAK,IAAI2nD,GAAE,MAAMrhD,GAAEo/H,YAAa,KAAKnsI,GAAE0sO,OAAO1sO,GAAE0sO,MAAMxuG,SAASmO,cAAct/H,IAAG0nF,aAAa7xE,IAAGxlB,OAAOw3F,oBAAoB,UAAUxmC,IAAE,GAAI3nD,GAAE,IAAIuf,GAAEhmB,GAAE0sO,UAAW,KAAK9pN,GAAEgwC,WAAY,KAAKy5E,cAAct/H,IAAGtG,GAAE,IAAI+wH,GAAEx3H,GAAE0sO,QAAQtvO,OAAOw3F,oBAAoB,UAAUxmC,IAAE,IAAM,KAAKpuD,GAAEssO,kBAAkB,KAAKl+K,GAAE,SAAS//C,IAAG,GAAGA,GAAE5N,MAAM,8BAA6BA,KAAKoI,KAAK,CAAC,GAAG4rF,aAAa7xE,IAAGypH,cAAct/H,IAAG3P,OAAOw3F,oBAAoB,UAAUxmC,IAAE,GAAIpuD,GAAE0sO,MAAMkB,QAAQv/N,GAAE5N,KAAKouJ,SAASlyH,MAAM,OAAOl2B,GAAE6gC,GAAEitM,YAAYlmO,GAAE5N,KAAKouJ,WAAWv9D,GAAEjjF,GAAE5N,KAAKouJ,YAAYzxJ,OAAO+0B,iBAAiB,UAAUi8B,OAA/kBpuD,OAA4sB,GAAGouD,GAAE1e,QAAQ3iC,GAAE2iC,MAAM,MAAM,IAAIpI,GAAE,iBAAiB,iBAAiB,MAAM1kB,IAAG,QAAQnc,GAAEzG,EAAEw0C,2BAAsB,YAAW,EAAO/tC,GAAEy9C,eAAe2iL,EAAK35N,QAAQsnC,oBAAoB0P,mBAAmB2iL,EAAK2N,cAAc,CAAC7/L,SAASyZ,GAAEzZ,SAASqmE,MAAM5sD,GAAE4sD,MAAMg5H,cAAc5lL,GAAE4lL,cAAcS,WAAW,qBAAqB3iF,KAAK/kJ,GAAE+kJ,KAAKr9G,aAAa2Z,GAAE3Z,cAAc,CAACigM,QAAQtmL,GAAE2kL,MAAM7uL,aAAathC,MAAlmD8zB,EAAkmD9zB,CAAU+xN,UAAS,iCAAC,IAAI30O,EAAE,MAAMsxF,QAAQw1I,EAAK8N,uBAAuB,OAAO,QAAQ50O,EAAE,aAAQ,EAAOsxF,EAAEu9I,oBAAe,WAAW,EAAO7uO,EAAE0yO,MAAtHh8L,EAAsHg8L,CAAWmC,mBAAkB,iCAAC,IAAI70O,EAAE,MAAMsxF,QAAQw1I,EAAK8N,uBAAuB,OAAO,QAAQ50O,EAAE,aAAQ,EAAOsxF,EAAEu9I,oBAAe,WAAW,EAAO7uO,EAAEyyO,QAAtH/7L,EAAsH+7L,CAAal+L,kBAAkB+8C,EAAE,IAAG,iCAAC,IAAI7qF,EAAE,MAAM2nD,GAAEuiL,GAAEr/I,IAAIs/I,QAAQ7jO,GAAE+nO,SAASlyN,GAAE6pN,SAASp+N,IAAG+/C,GAAE8C,GAAElxD,GAAEouD,GAAE,CAAC,UAAU,WAAW,aAAa0H,IAAG,QAAQrvD,EAAEyqD,GAAE1c,2BAAsB,WAAW,EAAO/tC,EAAEy9C,eAAep8C,EAAKoF,QAAQsnC,oBAAoB0P,aAAa5c,SAAQx/B,EAAK0rO,qBAAqBtiL,GAAE1c,qBAAqB,KAAKtZ,IAAIG,IAAGiM,GAAEqH,GAAE3uC,GAAEsnC,GAAE,CAAC,QAAQx/B,EAAK+pO,mBAAmBn5N,OAAO9Z,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAG0xB,IAAG,CAAC89L,SAASp+N,KAAIynD,IAAG,CAAC5R,aAAa4R,MAAK,MAAM0hE,GAAE50G,GAAG,GAAEyY,MAAKzY,KAAIyY,GAAEtuB,SAAQA,GAAEyqH,IAAGp6H,OAAOuhC,SAAS1hB,OAAOu6G,KAA5d9gF,EAA4d8gF,CAASu9G,uBAAuB/0O,EAAE5C,OAAOuhC,SAASsV,MAAK,iCAAC,MAAMq9C,EAAEtxF,EAAEgK,MAAM,KAAK+N,MAAM,GAAG,GAAG,MAAMra,OAAO,MAAM,IAAI03C,MAAM,oDAAoD,MAAM1F,MAAMjpC,GAAEqrJ,KAAK1jG,GAAEzxB,MAAM5vB,GAAEy/N,kBAAkB5pN,IAAI5iB,MAAIA,GAAEoB,QAAQ,MAAK,IAAKpB,GAAEA,GAAEqB,UAAU,EAAErB,GAAEoB,QAAQ,OAAO,MAAMkwF,GAAE,IAAIq6D,gBAAgB3rJ,IAAG,MAAM,CAAC0vC,MAAM4hD,GAAEtwF,IAAI,SAAS8wJ,KAAKxgE,GAAEtwF,IAAI,cAAS,EAAO27B,MAAM20D,GAAEtwF,IAAI,eAAU,EAAOwrO,kBAAkBl7I,GAAEtwF,IAAI,2BAAsB,IAA1NhB,CAAoOsxF,EAAEnkC,KAAK,KAAK9+C,GAAEvG,EAAK+pO,mBAAmB7wO,MAAM,IAAIqN,GAAE,MAAM,IAAIi5B,GAAE,sBAAsB,iBAAiB,GAAGx/B,EAAK+pO,mBAAmBziN,SAASriB,GAAE,MAAM,IAAIsuB,GAAEtuB,GAAE6V,IAAG7V,GAAEtG,GAAE4H,GAAEo+N,UAAU,IAAIp+N,GAAE2lO,eAAe3lO,GAAEqhC,OAAOrhC,GAAEqhC,QAAQjpC,GAAE,MAAM,IAAI6gC,GAAE,iBAAiB,iBAAiB,MAAM4pB,GAAE7iD,GAAE61C,aAAa4R,GAAEznD,GAAE0kO,MAAMpkM,GAAEtgC,GAAEomC,aAAa,aAAa3sC,EAAK0sO,cAAc51O,OAAOqe,OAAO,CAAC03B,SAAStmC,GAAEsmC,SAASqmE,MAAM3sG,GAAE2sG,MAAMg5H,cAAc3lO,GAAE2lO,cAAcS,WAAW,qBAAqB3iF,KAAK1jG,IAAGzf,GAAE,CAAC8F,aAAa9F,IAAG,IAAI,CAAC+lM,QAAQ5+K,GAAE5R,aAAagN,KAAI,CAACu7K,SAASp+N,GAAEo+N,WAAt5B/1L,EAAs5B+1L,CAAgBuI,aAAah1O,GAAE,iCAAC,IAAI8H,EAAKwpO,cAActwO,IAAI8G,EAAK2pO,2BAA2B,CAAC,IAAI3pO,EAAKwpO,cAActwO,IAAI,0BAA0B,OAAO8G,EAAKwpO,cAAct3L,KAAKlyC,EAAK2pO,2BAA0B,EAAG,CAACjC,gBAAgB1nO,EAAK4pO,uBAAuBpC,aAAaxnO,EAAKoF,QAAQoiO,eAAexnO,EAAKwpO,cAAcliN,OAAO,0BAA0B,UAAUtnB,EAAKmtO,iBAAiBj1O,EAAG,CAAHA,MAASA,GAAN,GAAhW02C,EAAgW,CAAiBu+L,iBAAiBj1O,EAAE,IAAG,iCAAC,IAAIsxF,EAAE,MAAM7qF,GAAE7H,OAAOqe,OAAOre,OAAOqe,OAAO,CAACi4N,UAAU,MAAMl1O,GAAG,CAACw0C,oBAAoB51C,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGnV,EAAKoF,QAAQsnC,qBAAqBx0C,EAAEw0C,qBAAqB,CAACwmE,MAAMxuF,GAAE1kB,EAAKkzG,MAAM,QAAQ1pB,EAAEtxF,EAAEw0C,2BAAsB,WAAW,EAAO88C,EAAE0pB,WAAW5sD,QAAQ,EAACpuD,GAAEsxF,MAAK,IAAI7qF,GAAEujD,GAAEsnC,IAAG,OAAO7qF,KAAIA,GAA2DqB,EAAKqtO,kBAAkB1uO,IAA5E4mO,QAAS,YAAYrjL,GAAEsnC,IAAG7qF,GAAE,OAAQujD,GAAEsnC,IAAG7qF,IAAGA,IAAhF,CAAqF,EAAgC,GAAEqB,EAAKoF,QAAQ8/N,aAAavmO,GAAE+tC,oBAAoBG,aAAaluC,GAAE+tC,oBAAoBwmE,SAAS,OAAOh7G,EAAEo1O,iBAAiBhnL,GAAE,cAAQ,EAAOA,GAAEinL,cAAvhB3+L,EAAuhB2+L,CAAmBF,kBAAkB7jJ,GAAE,iCAAC,MAAM4jJ,UAAUzuO,GAAG6qF,EAAEljC,GAAEpuD,GAAEsxF,EAAE,CAAC,cAAc,GAAG,UAAU,CAAC,MAAMtxF,SAAQ8H,EAAKwtO,mBAAmB,CAACt6H,MAAM5sD,GAAE5Z,oBAAoBwmE,MAAMrmE,SAASyZ,GAAE5Z,oBAAoBG,UAAU,UAAUq4L,SAASllO,EAAKoF,QAAQ8/N,WAAW,GAAGhtO,GAAE,OAAOA,GAAE,GAAG,iBAAiB,CAAC,WAASu1O,MAAC,UAAMv1O,GAAEsxF,GAAE,GAAK,QAAQ7qF,GAAE,EAAEA,GAAE6qF,GAAE7qF,KAAI,SAASzG,KAAI,OAAM,EAAG,OAAM,IAAhE,+CAAsE,IAAI8wO,GAAGrF,YAAY,8BAA8B,KAAM,KAAI,MAAM,IAAI98L,GAAE,IAAI,GAAGvxC,OAAO+0B,iBAAiB,WAAWrqB,EAAKmpO,wBAAwB,UAAU,CAAC,MAAMjxO,SAAQ8H,EAAKwtO,mBAAmB,CAACt6H,MAAM5sD,GAAE5Z,oBAAoBwmE,MAAMrmE,SAASyZ,GAAE5Z,oBAAoBG,UAAU,UAAUq4L,SAASllO,EAAKoF,QAAQ8/N,WAAW,GAAGhtO,GAAE,OAAOA,GAAE,MAAMA,GAAE8H,EAAKoF,QAAQ0kO,uBAAuB9pO,EAAK0tO,2BAA2BpnL,UAAStmD,EAAK2tO,oBAAoBrnL,KAAIwgL,SAASt9I,GAAE+jJ,aAAatoO,GAAE2oO,gBAAgB9yN,GAAEwsN,WAAW/gO,IAAGrO,GAAE,OAAOpB,OAAOqe,OAAOre,OAAOqe,OAAO,CAAC2xN,SAASt9I,GAAE+jJ,aAAatoO,IAAG6V,GAAE,CAACo4F,MAAMp4F,IAAG,MAAM,CAACwsN,WAAW/gO,IAA2G4iO,CAA3G5iO,cAAkByiO,GAAG3iG,YAAY,+BAA+B/wI,OAAOw3F,oBAAoB,WAAW9sF,EAAKmpO,yBAAhwB,MAAgwBA,EAAlgCv6L,EAAkgCu6L,CAAgC0E,kBAAkB31O,EAAE,GAAGsxF,EAAE,IAAG,iCAAC,IAAI7qF,GAAE,MAAM2nD,GAAExvD,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGjd,GAAG,CAACw0C,oBAAoB51C,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAG4pN,EAAK35N,QAAQsnC,qBAAqBx0C,EAAEw0C,qBAAqB,CAACwmE,MAAMxuF,GAAEq6M,EAAK7rH,MAAM,QAAQv0G,GAAEzG,EAAEw0C,2BAAsB,YAAW,EAAO/tC,GAAEu0G,WAAW1pB,SAAE1yF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAG5O,IAAGijF,SAASu1I,EAAKoN,eAAe7lL,GAAEkjC,UAAgBu1I,EAAKkL,aAAa/wO,IAAI,IAAI86H,GAAE,CAAC9gB,MAAM5sD,GAAE5Z,oBAAoBwmE,MAAMrmE,SAASyZ,GAAE5Z,oBAAoBG,UAAU,UAAUq4L,SAASnG,EAAK35N,QAAQ8/N,aAAaqI,cAAze3+L,EAAye2+L,CAAmBzpM,kBAAiB,iCAAC,eAAck7L,EAAK6N,YAApBj+L,EAAoBi+L,CAAUiB,gBAAgBtkJ,GAAG,OAAOA,EAAE07I,SAAS17I,EAAE07I,SAAS17I,EAAE07I,UAAUrhO,KAAKuB,QAAQ8/N,gBAAgB17I,EAAE07I,SAAS,MAAMvmO,EAAE6qF,EAAEr8C,cAAc,IAAI4gM,UAAUznL,GAAG3nD,EAAEsG,GAAE/M,GAAEyG,EAAE,CAAC,cAAcmc,GAAEwrC,EAAE,aAAa,GAAG,OAAOziD,KAAK2pH,KAAM,cAAazyG,GAAEjkB,OAAOqe,OAAO,CAAC+vN,SAAS17I,EAAE07I,UAAUjgO,QAAO6V,GAAQgxB,OAAO09C,EAAE,IAAG,iCAAC,MAAM7qF,EAAEkqO,GAAEr/I,IAAIs/I,QAAQxiL,IAAG3nD,EAAEsG,GAAE/M,GAAEyG,EAAE,CAAC,YAAY,OAAO6qF,EAAE07I,eAAellO,EAAKiqO,aAAah/N,cAAcjL,EAAKiqO,aAAah/N,MAAMu+E,EAAE07I,UAAUllO,EAAKoF,QAAQ8/N,UAAUllO,EAAKwpO,cAAcliN,OAAOtnB,EAAK0pO,kBAAkB,CAAClC,aAAaxnO,EAAKoF,QAAQoiO,eAAexnO,EAAKwpO,cAAcliN,OAAOtnB,EAAK2pO,0BAA0B,CAACnC,aAAaxnO,EAAKoF,QAAQoiO,eAAexnO,EAAKipO,UAAU3hN,OAAO,YAAY,MAAMxM,GAAE9a,EAAK8tO,gBAAgB7oO,IAAGqhD,SAAQA,GAAExrC,KAAG,QAAQxlB,OAAOuhC,SAAS1hB,OAAO2F,KAA9c8zB,EAA8c9zB,CAAS6yN,oBAAoBz1O,GAAE,iCAAC,MAAMsxF,EAAE1yF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGjd,EAAEw0C,qBAAqB,CAACshM,OAAO,SAASrvO,GAAEqB,EAAKwpO,cAActwO,IAAI8G,EAAK0pO,mBAAmB/qO,KAAI6qF,EAAEptC,eAAeotC,EAAEptC,aAAaz9C,IAAG,MAAMy0B,IAAIkzB,GAAE1e,MAAM3iC,GAAEgmO,MAAMnwN,GAAEoxN,cAAc3lO,GAAEomC,aAAayc,GAAE8pD,MAAMllD,GAAEnhB,SAAStZ,UAASvzB,EAAK0rO,qBAAqBliJ,EAAE,CAACuiJ,cAAc,eAAez2O,OAAOuhC,SAASsyG,QAAQ,IAAI,GAAG7zI,OAAO24O,oBAAoB,MAAM,IAAIzuM,GAAE,iBAAiB,qIAAqI,MAAM7gC,GAAEzG,EAAEssO,kBAAkBxkO,EAAKoF,QAAQonO,0BAA0B98G,QAAQ,EAACx3H,GAAEsxF,GAAE7qF,GAAE,KAAK,IAAI8hB,QAAS,CAAC6lC,GAAErhD,MAAK,MAAM6V,GAAExlB,OAAOC,SAAS84B,cAAc,UAAUvT,GAAE7b,aAAa,QAAQ,KAAK6b,GAAE7b,aAAa,SAAS,KAAK6b,GAAE3f,MAAMurB,QAAQ,OAAO,MAAMngB,GAAE,KAAKjR,OAAOC,SAAS0F,KAAKR,SAASqgB,MAAKxlB,OAAOC,SAAS0F,KAAKsyB,YAAYzS,IAAGxlB,OAAOw3F,oBAAoB,UAAU1jC,IAAE,KAAM,IAAIA,GAAE,MAAM4E,GAAElD,WAAY,KAAK7lD,GAAE,IAAI4hC,IAAGtgC,MAAM,IAAI5H,IAAGyqD,GAAE,SAASlxD,IAAyB,GAAnBA,GAAEixI,QAAQ3/C,KAAatxF,GAAES,MAAM,8BAA6BA,KAAKoI,KAAK,OAAO,MAAMpC,GAAEzG,GAAE0wC,OAAOjqC,IAAGA,GAAEmnO,QAAQ5tO,GAAES,KAAKouJ,SAASlyH,MAAM5vB,GAAEu6B,GAAEitM,YAAYv0O,GAAES,KAAKouJ,WAAWzgG,GAAEpuD,GAAES,KAAKouJ,UAAUp6D,aAAa3+B,IAAG14D,OAAOw3F,oBAAoB,UAAU1jC,IAAE,GAAI0B,WAAWvkD,GAAE,MAAMjR,OAAO+0B,iBAAiB,UAAU++B,IAAE,GAAI9zD,OAAOC,SAAS0F,KAAKwzB,YAAY3T,IAAGA,GAAE7b,aAAa,MAAM/G,MAA7sB,CAAotBouD,GAAEtmD,EAAKmqO,UAAUxrO,IAAG,GAAGsG,KAAIyqH,GAAE9nF,MAAM,MAAM,IAAIpI,GAAE,iBAAiB,iBAAiB,MAAMthB,SAAQle,EAAK0sO,cAAc51O,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGjd,EAAEw0C,qBAAqB,CAACw/L,cAAc3lO,GAAEyjJ,KAAKt6B,GAAEs6B,KAAK2iF,WAAW,qBAAqBhgM,aAAayc,GAAEk7E,QAAQpsI,EAAEw0C,oBAAoB43F,SAAStkI,EAAKspO,gBAAgB,CAACsD,QAAQ9xN,GAAEshC,aAAaotC,EAAEptC,eAAe,OAAOtlD,OAAOqe,OAAOre,OAAOqe,OAAO,GAAG+I,IAAG,CAACg1F,MAAMllD,GAAE4/K,gBAAgB1vN,GAAEg1F,MAAMrmE,SAAStZ,IAAwEr7B,CAAxEq7B,MAAUr7B,IAAG,KAAK,sBAAqB28B,OAAO70B,EAAK8rC,OAAO,CAACg9L,SAAQ,IAAK5wO,KAAtyD02C,EAAsyD12C,CAASw1O,2BAA2Bx1O,GAAE,iCAAC,MAAMsxF,QAAQxpF,EAAKiqO,aAAa/wO,IAAI,IAAI86H,GAAE,CAAC9gB,MAAMh7G,EAAEw0C,oBAAoBwmE,MAAMrmE,SAAS30C,EAAEw0C,oBAAoBG,UAAU,UAAUq4L,SAASllO,EAAKoF,QAAQ8/N,YAAY,KAAK17I,GAAGA,EAAE49I,eAAepnO,EAAKsqO,QAAQ,CAAC,GAAGtqO,EAAKoF,QAAQ8jO,yBAAyB,aAAalpO,EAAK2tO,oBAAoBz1O,GAAG,MAAM,IAAIme,GAAEne,EAAEw0C,oBAAoBG,UAAU,UAAU30C,EAAEw0C,oBAAoBwmE,OAAO,MAAMv0G,GAAEzG,EAAEw0C,oBAAoBC,cAAc3sC,EAAKoF,QAAQsnC,oBAAoBC,cAAcr3C,OAAOuhC,SAASsyG,OAAO7iF,GAAE,iBAAiBpuD,EAAEssO,iBAAiB,IAAItsO,EAAEssO,iBAAiB,KAAK,IAAI,MAAMv/N,SAAQjF,EAAK0sO,cAAc51O,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGjd,EAAEw0C,qBAAqB,CAACigM,WAAW,gBAAgBvF,cAAc59I,GAAGA,EAAE49I,cAAcz6L,aAAahuC,KAAI2nD,IAAG,CAACg+E,QAAQh+E,MAAK,OAAOxvD,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGlQ,IAAG,CAACiuG,MAAMh7G,EAAEw0C,oBAAoBwmE,MAAM06H,gBAAgB3oO,GAAEiuG,MAAMrmE,SAAS30C,EAAEw0C,oBAAoBG,UAAU,WAAwN28C,CAAxN,MAAkBA,IAAG,IAAIA,GAAEh3B,QAAQl5D,QAAQ,0BAAyB,GAAIkwF,GAAEh3B,SAASg3B,GAAEh3B,QAAQl5D,QAAQ,0BAAyB,IAAK0G,EAAKoF,QAAQ8jO,yBAAyB,aAAalpO,EAAK2tO,oBAAoBz1O,GAAG,MAAMsxF,KAAhlC56C,EAAglC46C,CAAS0kJ,kBAAkB1kJ,GAAE,iCAAC,MAAMs9I,SAASnoO,EAAEooO,aAAazgL,IAAGkjC,EAAEvkF,GAAE/M,GAAEsxF,EAAE,CAAC,WAAW,iBAAiBxpF,EAAKipO,UAAU9vO,IAAI,WAAW,CAAC2tO,SAASnoO,EAAEooO,aAAazgL,WAAUtmD,EAAKiqO,aAAatD,WAAW3mO,EAAKoF,QAAQ8/N,SAAS17I,EAAEs9I,SAASt9I,EAAEu9I,oBAAoB/mO,EAAKiqO,aAAa9wO,IAAI8L,KAAlP2pC,EAAkP3pC,CAAS6nO,uBAAsB,iCAAC,MAAM50O,EAAE8mO,EAAK55N,QAAQsnC,oBAAoBG,UAAU,UAAU28C,QAAQw1I,EAAKiL,aAAajD,WAAW,IAAIhzG,GAAE,CAACkxG,SAASlG,EAAK55N,QAAQ8/N,SAASr4L,SAAS30C,EAAEg7G,MAAM8rH,EAAK9rH,SAASv0G,GAAEqgO,EAAKiK,UAAU/vO,IAAI,YAAY,OAAOswF,GAAGA,EAAEs9I,YAAY,MAAMnoO,QAAE,EAAOA,GAAEmoO,UAAUnoO,IAAGqgO,EAAKiK,UAAU9vO,IAAI,WAAWqwF,GAAGA,IAAhS56C,EAAgS46C,CAASgkJ,oBAAoBt6H,MAAMh7G,EAAE20C,SAAS28C,EAAE07I,SAASvmO,IAAG,kCAAC,MAAM2nD,SAAQsgL,GAAKqD,aAAa/wO,IAAI,IAAI86H,GAAE,CAAC9gB,MAAMh7G,EAAE20C,SAAS28C,EAAE07I,SAASvmO,IAAI,IAAI,GAAG2nD,IAAGA,GAAEinL,aAAa,CAAC,MAAMA,aAAar1O,GAAE01O,gBAAgBpkJ,GAAE89I,WAAW3oO,IAAG2nD,GAAErhD,SAAQ2hO,GAAKkG,uBAAuB,OAAO7nO,IAAGnO,OAAOqe,OAAOre,OAAOqe,OAAO,CAAC2xN,SAAS7hO,GAAE6hO,SAASyG,aAAar1O,IAAGsxF,GAAE,CAAC0pB,MAAM1pB,IAAG,MAAM,CAAC89I,WAAW3oO,OAA1SiwC,EAA0SjwC,CAAW+tO,cAAcx0O,EAAEsxF,GAAE,iCAAC,MAAMojJ,QAAQjuO,GAAEy9C,aAAakK,IAAGkjC,GAAG,GAAGvkF,qBAA326B+5N,qCAAm36BA,CAAEloO,OAAOqe,OAAO,CAAC+wN,QAAQnH,EAAKoL,UAAUhF,UAAUpG,EAAK35N,QAAQ8/N,SAASiB,YAAYpH,EAAK35N,QAAQ+gO,YAAYT,YAAY3G,EAAK35N,QAAQsgO,YAAYphG,QAAQy6F,EAAKuK,eAAepxO,GAAG6mO,EAAKuL,QAAQxvN,SAAQikN,EAAKyL,eAAevlO,GAAE6hO,SAASnoO,GAAE2nD,IAAG,aAAay4K,EAAKmP,kBAAkBp3O,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGlQ,IAAG,CAAC8hO,aAAajsN,GAAEo4F,MAAMh7G,EAAEg7G,MAAMrmE,SAAS30C,EAAE20C,UAAU,YAAY5nC,GAAEiuG,MAAM,CAAC06H,gBAAgB3oO,GAAEiuG,OAAO,MAAM,CAACiyH,UAAUpG,EAAK35N,QAAQ8/N,YAAYnG,EAAKyK,cAAct3L,KAAK6sL,EAAK4K,2BAA0B,EAAG,CAACjC,gBAAgB3I,EAAK6K,uBAAuBpC,aAAazI,EAAK35N,QAAQoiO,eAAezI,EAAK0M,gBAAgBnlL,IAAGxvD,OAAOqe,OAAOre,OAAOqe,OAAO,GAAGlQ,IAAG,CAAC8hO,aAAajsN,MAA9tB8zB,EAA8tB9zB,4DCEnguC,cACH,OAAO4hH,OAAQ,CAAC9zF,EAAQstF,KACpB,IAAI8M,EAAa,KACjBp6F,EAAOulM,YACP,MAAMC,GAAajyG,OAAyBjG,OAAYz9H,OAAWA,OAAWA,EAAW,KACrF,IAAKmwC,GAAUA,EAAOulM,WAAa,GAAK,IAAMvlM,EAAOulM,UAEjD,YADAnrG,EAAa,MAGjB,MAAMqrG,GAAmBzlM,EAAO0lM,YAC1B/qG,GAAOP,EACbA,EAAa,KACTqrG,MAAsB9qG,IAAQ8qG,KAAqB9qG,KACnD8qG,GAAiB13K,cAErBu/D,EAAWv/D,gBAEf/tB,EAAOs/C,UAAUkmJ,GACZA,EAAWh4G,SACZ4M,EAAap6F,EAAO2lM,aChBzB,iBAAoC/3G,IACvC7yH,YAAYilC,EAAQ4lM,GAChBr8N,QACAtO,KAAK+kC,OAASA,EACd/kC,KAAK2qO,eAAiBA,EACtB3qO,KAAKomI,SAAW,KAChBpmI,KAAKsqO,UAAY,EACjBtqO,KAAKyqO,YAAc,MACfhoG,OAAQ19F,KACR/kC,KAAK4yH,KAAO7tF,EAAO6tF,MAG3BR,WAAWC,GACP,OAAOryH,KAAK4qO,aAAavmJ,UAAUguC,GAEvCu4G,aACI,MAAM91G,EAAU90H,KAAKomI,SACrB,QAAKtR,GAAWA,EAAQT,aACpBr0H,KAAKomI,SAAWpmI,KAAK2qO,kBAElB3qO,KAAKomI,SAEhBykG,YACI7qO,KAAKsqO,UAAY,EACjB,MAAQG,eAAgBzqO,KACxBA,KAAKomI,SAAWpmI,KAAKyqO,YAAc,KACnB,MAAhBA,GAA0DA,EAAY33K,cAE1E43K,UACI,IAAIvrG,EAAan/H,KAAKyqO,YACtB,IAAKtrG,EAAY,CACbA,EAAan/H,KAAKyqO,YAAc,IAAIt1G,MACpC,MAAML,EAAU90H,KAAK4qO,aACrBzrG,EAAWn9H,IAAIhC,KAAK+kC,OAAOs/C,WAAUi0C,OAAyBxD,OAASlgI,EAAW,KAC9EoL,KAAK6qO,YACL/1G,EAAQ9B,YACRjiG,IACA/wB,KAAK6qO,YACL/1G,EAAQ9jG,MAAMD,IACf,IAAM/wB,KAAK6qO,eACV1rG,EAAW5M,SACXvyH,KAAKyqO,YAAc,KACnBtrG,EAAahK,aAGrB,OAAOgK,EAEXE,WACI,OAAOyrG,KAAsB9qO,sBClD9B,YAAkBkqB,GACrB,OAAOA,GAAS,EACV,IAAMktG,MACNyB,OAAQ,CAAC9zF,EAAQstF,KACf,IAAIgM,EAAS,GACbt5F,EAAOs/C,WAAUi0C,OAAyBjG,EAAal9H,KACnDkpI,EAAO3qI,KAAKyB,IACZ+0B,EAAQm0G,EAAOtsI,QAAUssI,EAAOzuE,SACjC,KACC,UAAWz6D,MAASkpI,EAChBhM,EAAW51H,KAAKtH,IAEpBk9H,EAAWW,iBACZp+H,EAAW,KACVypI,EAAS,sEC2BzB,SACIv+H,YAEAmT,EAEAsc,GACIvvB,KAAKiT,GAAKA,EACVjT,KAAKuvB,IAAMA,GAQnB,iBAA8Bw7M,GAC1BjrO,YAEAmT,EAEAsc,EAEAy7M,EAAoB,aAEpBC,GAAgB,MACZ38N,MAAM2E,EAAIsc,GACVvvB,KAAKgrO,kBAAoBA,EACzBhrO,KAAKirO,cAAgBA,GAGzBr5O,WACI,MAAQ,uBAAsBoO,KAAKiT,aAAajT,KAAKuvB,SAY7D,iBAA4Bw7M,GACxBjrO,YAEAmT,EAEAsc,EAEA27M,GACI58N,MAAM2E,EAAIsc,GACVvvB,KAAKkrO,kBAAoBA,EAG7Bt5O,WACI,MAAQ,qBAAoBoO,KAAKiT,aAAajT,KAAKuvB,6BAA6BvvB,KAAKkrO,uBAc7F,iBAA+BH,GAC3BjrO,YAEAmT,EAEAsc,EAEA0+B,GACI3/C,MAAM2E,EAAIsc,GACVvvB,KAAKiuD,OAASA,EAGlBr8D,WACI,MAAQ,wBAAuBoO,KAAKiT,aAAajT,KAAKuvB,SAY9D,iBAA8Bw7M,GAC1BjrO,YAEAmT,EAEAsc,EAEAyB,GACI1iB,MAAM2E,EAAIsc,GACVvvB,KAAKgxB,MAAQA,EAGjBp/B,WACI,MAAQ,uBAAsBoO,KAAKiT,aAAajT,KAAKuvB,gBAAgBvvB,KAAKgxB,UAQlF,iBAA+B+5M,GAC3BjrO,YAEAmT,EAEAsc,EAEA27M,EAEAnnM,IACIz1B,MAAM2E,EAAIsc,GACVvvB,KAAKkrO,kBAAoBA,EACzBlrO,KAAK+jC,MAAQA,GAGjBnyC,WACI,MAAQ,wBAAuBoO,KAAKiT,aAAajT,KAAKuvB,6BAA6BvvB,KAAKkrO,8BAA8BlrO,KAAK+jC,UAUnI,iBAA+BgnM,GAC3BjrO,YAEAmT,EAEAsc,EAEA27M,EAEAnnM,IACIz1B,MAAM2E,EAAIsc,GACVvvB,KAAKkrO,kBAAoBA,EACzBlrO,KAAK+jC,MAAQA,GAEjBnyC,WACI,MAAQ,wBAAuBoO,KAAKiT,aAAajT,KAAKuvB,6BAA6BvvB,KAAKkrO,8BAA8BlrO,KAAK+jC,UAUnI,iBAA6BgnM,GACzBjrO,YAEAmT,EAEAsc,EAEA27M,EAEAnnM,GAEAonM,IACI78N,MAAM2E,EAAIsc,GACVvvB,KAAKkrO,kBAAoBA,EACzBlrO,KAAK+jC,MAAQA,GACb/jC,KAAKmrO,eAAiBA,GAE1Bv5O,WACI,MAAQ,sBAAqBoO,KAAKiT,aAAajT,KAAKuvB,6BAA6BvvB,KAAKkrO,8BAA8BlrO,KAAK+jC,0BAA0B/jC,KAAKmrO,mBAahK,iBAA2BJ,GACvBjrO,YAEAmT,EAEAsc,EAEA27M,EAEAnnM,IACIz1B,MAAM2E,EAAIsc,GACVvvB,KAAKkrO,kBAAoBA,EACzBlrO,KAAK+jC,MAAQA,GAEjBnyC,WACI,MAAQ,oBAAmBoO,KAAKiT,aAAajT,KAAKuvB,6BAA6BvvB,KAAKkrO,8BAA8BlrO,KAAK+jC,UAS/H,iBAAyBgnM,GACrBjrO,YAEAmT,EAEAsc,EAEA27M,EAEAnnM,IACIz1B,MAAM2E,EAAIsc,GACVvvB,KAAKkrO,kBAAoBA,EACzBlrO,KAAK+jC,MAAQA,GAEjBnyC,WACI,MAAQ,kBAAiBoO,KAAKiT,aAAajT,KAAKuvB,6BAA6BvvB,KAAKkrO,8BAA8BlrO,KAAK+jC,UAU7H,SACIjkC,YAEAsrO,GACIprO,KAAKorO,MAAQA,EAEjBx5O,WACI,MAAQ,8BAA6BoO,KAAKorO,MAAMnqM,SAUxD,SACInhC,YAEAsrO,GACIprO,KAAKorO,MAAQA,EAEjBx5O,WACI,MAAQ,4BAA2BoO,KAAKorO,MAAMnqM,SAWtD,SACInhC,YAEAkyD,GACIhyD,KAAKgyD,SAAWA,EAEpBpgE,WAEI,MAAQ,+BADKoO,KAAKgyD,SAASq5K,aAAerrO,KAAKgyD,SAASq5K,YAAYpqM,MAAQ,QAWpF,SACInhC,YAEAkyD,GACIhyD,KAAKgyD,SAAWA,EAEpBpgE,WAEI,MAAQ,6BADKoO,KAAKgyD,SAASq5K,aAAerrO,KAAKgyD,SAASq5K,YAAYpqM,MAAQ,QAYpF,SACInhC,YAEAkyD,GACIhyD,KAAKgyD,SAAWA,EAEpBpgE,WAEI,MAAQ,0BADKoO,KAAKgyD,SAASq5K,aAAerrO,KAAKgyD,SAASq5K,YAAYpqM,MAAQ,QAYpF,SACInhC,YAEAkyD,GACIhyD,KAAKgyD,SAAWA,EAEpBpgE,WAEI,MAAQ,wBADKoO,KAAKgyD,SAASq5K,aAAerrO,KAAKgyD,SAASq5K,YAAYpqM,MAAQ,QAuCpF,MAAMqqM,GAAiB,UACvB,SACIxrO,YAAYjE,GACRmE,KAAKnE,OAASA,GAAU,GAE5BwD,IAAI0B,GACA,OAAO9N,OAAOw3F,UAAU3wF,eAAejI,KAAKmO,KAAKnE,OAAQkF,GAE7D1L,IAAI0L,GACA,GAAIf,KAAKX,IAAI0B,GAAO,CAChB,MAAMsC,EAAIrD,KAAKnE,OAAOkF,GACtB,OAAOlK,MAAM4E,QAAQ4H,GAAKA,EAAE,GAAKA,EAErC,OAAO,KAEX25I,OAAOj8I,GACH,GAAIf,KAAKX,IAAI0B,GAAO,CAChB,MAAMsC,EAAIrD,KAAKnE,OAAOkF,GACtB,OAAOlK,MAAM4E,QAAQ4H,GAAKA,EAAI,CAACA,GAEnC,MAAO,GAEPnQ,WACA,OAAOD,OAAOC,KAAK8M,KAAKnE,SAUhC,YAA2BA,GACvB,OAAO,IAAI0vO,GAAY1vO,GAE3B,MAAM2vO,GAA6B,6BACnC,YAAkC78K,GAC9B,MAAM39B,EAAQyY,MAAM,6BAA+BklB,GACnD39B,SAAMw6M,KAA8B,EAC7Bx6M,EAMX,YAA2Bq3E,EAAUojI,EAAcL,GAC/C,MAAMjsJ,EAAQisJ,EAAMnqM,KAAK5iC,MAAM,KAK/B,GAJI8gF,EAAMptF,OAASs2G,EAASt2G,QAIJ,SAApBq5O,EAAMM,YACLD,EAAaE,eAAiBxsJ,EAAMptF,OAASs2G,EAASt2G,QAEvD,OAAO,KAEX,MAAM65O,GAAY,GAElB,QAAS93N,GAAQ,EAAGA,GAAQqrE,EAAMptF,OAAQ+hB,KAAS,CAC/C,MAAM23H,GAAOtsD,EAAMrrE,IACbyhG,GAAUlN,EAASv0F,IAEzB,GADoB23H,GAAKvwI,WAAW,KAEhC0wO,GAAUngG,GAAK/1I,UAAU,IAAM6/G,WAE1Bk2B,KAASl2B,GAAQt0E,KAEtB,OAAO,KAGf,MAAO,CAAE4qM,SAAUxjI,EAASj8F,MAAM,EAAG+yE,EAAMptF,QAAS65O,cAmBxD,YAAsB30N,EAAGC,GAGrB,MAAMC,EAAKF,EAAIhkB,OAAOC,KAAK+jB,QAAKriB,EAC1BwiB,EAAKF,EAAIjkB,OAAOC,KAAKgkB,QAAKtiB,EAChC,IAAKuiB,IAAOC,GAAMD,EAAGplB,QAAUqlB,EAAGrlB,OAC9B,OAAO,EAEX,IAAIkD,GACJ,QAAS6F,GAAI,EAAGA,GAAIqc,EAAGplB,OAAQ+I,KAE3B,GADA7F,GAAMkiB,EAAGrc,KACJgxO,GAAoB70N,EAAEhiB,IAAMiiB,EAAEjiB,KAC/B,OAAO,EAGf,OAAO,EAKX,YAA6BgiB,EAAGC,GAC5B,GAAIrgB,MAAM4E,QAAQwb,IAAMpgB,MAAM4E,QAAQyb,GAAI,CACtC,GAAID,EAAEllB,SAAWmlB,EAAEnlB,OACf,OAAO,EACX,MAAMg6O,EAAU,IAAI90N,GAAGiD,OACjB8xN,EAAU,IAAI90N,GAAGgD,OACvB,OAAO6xN,EAAQvmL,MAAM,CAACh4C,GAAKsG,KAAUk4N,EAAQl4N,MAAWtG,IAGxD,OAAOyJ,IAAMC,EAYrB,YAAcD,GACV,OAAOA,EAAEllB,OAAS,EAAIklB,EAAEA,EAAEllB,OAAS,GAAK,KAQ5C,YAAiBiD,EAAKhB,GAClB,UAAWb,KAAQ6B,EACXA,EAAI8E,eAAe3G,IACnBa,EAASgB,EAAI7B,GAAOA,GAIhC,YAA4BgC,GACxB,OAAIgvN,SAAchvN,GACPA,GAEPojJ,SAAWpjJ,IAIJ2B,OAAK8lB,QAAQC,QAAQ1nB,KAEzBssJ,QAAGtsJ,GAad,MAAM82O,GAAiB,CACnBC,MAiBJ,YAA4BzsE,EAAW0sE,EAAWC,GAM9C,IALKC,GAAU5sE,EAAUp3D,SAAU8jI,EAAU9jI,YAExCikI,GAAkB7sE,EAAUp3D,SAAU8jI,EAAU9jI,SAAU+jI,IAG3D3sE,EAAU8sE,mBAAqBJ,EAAUI,iBACzC,OAAO,EACX,UAAWpiL,KAAKgiL,EAAUv1K,SAGtB,IAFK6oG,EAAU7oG,SAASzM,KAEnBqiL,GAAmB/sE,EAAU7oG,SAASzM,GAAIgiL,EAAUv1K,SAASzM,GAAIiiL,GAClE,OAAO,EAEf,OAAO,GA9BPK,OAAUC,IAERC,GAAkB,CACpBT,MASJ,YAAqBzsE,EAAW0sE,GAE5B,OAAOS,GAAantE,EAAW0sE,IAV/BM,OA4BJ,YAAwBhtE,EAAW0sE,GAC/B,OAAOl5O,OAAOC,KAAKi5O,GAAWp6O,QAAUkB,OAAOC,KAAKusK,GAAW1tK,QAC3DkB,OAAOC,KAAKi5O,GAAW3mL,MAAMvwD,GAAO62O,GAAoBrsE,EAAUxqK,GAAMk3O,EAAUl3O,MA7BtFy9F,QAAW,KAAM,GAErB,YAAsB+sE,EAAW0sE,EAAW5qO,GACxC,OAAO0qO,GAAe1qO,EAAQuiH,OAAO27C,EAAUvhJ,KAAMiuN,EAAUjuN,KAAM3c,EAAQ6qO,eACzEO,GAAgBprO,EAAQi1G,aAAaipD,EAAUjpD,YAAa21H,EAAU31H,gBAC/C,UAArBj1G,EAAQ4nO,UAAwB1pE,EAAU0pE,WAAagD,EAAUhD,UA0B3E,YAA8B1pE,EAAW0sE,EAAWC,GAChD,OAAOS,GAA2BptE,EAAW0sE,EAAWA,EAAU9jI,SAAU+jI,GAEhF,YAAoC3sE,EAAW0sE,EAAWW,EAAgBV,GACtE,GAAI3sE,EAAUp3D,SAASt2G,OAAS+6O,EAAe/6O,OAAQ,CACnD,MAAMu1D,GAAUm4G,EAAUp3D,SAASj8F,MAAM,EAAG0gO,EAAe/6O,QAK3D,SAJKs6O,GAAU/kL,GAASwlL,IAEpBX,EAAUR,gBAETW,GAAkBhlL,GAASwlL,EAAgBV,OAI3C3sE,EAAUp3D,SAASt2G,SAAW+6O,EAAe/6O,OAAQ,CAG1D,IAFKs6O,GAAU5sE,EAAUp3D,SAAUykI,KAE9BR,GAAkB7sE,EAAUp3D,SAAUykI,EAAgBV,GACvD,OAAO,EACX,UAAWjiL,MAAKgiL,EAAUv1K,SAGtB,IAFK6oG,EAAU7oG,SAASzM,MAEnBuiL,GAAqBjtE,EAAU7oG,SAASzM,IAAIgiL,EAAUv1K,SAASzM,IAAIiiL,GACpE,OAAO,EAGf,OAAO,EAEN,CACD,MAAM9kL,GAAUwlL,EAAe1gO,MAAM,EAAGqzJ,EAAUp3D,SAASt2G,QACrD0K,GAAOqwO,EAAe1gO,MAAMqzJ,EAAUp3D,SAASt2G,QAKrD,SAJKs6O,GAAU5sE,EAAUp3D,SAAU/gD,KAE9BglL,GAAkB7sE,EAAUp3D,SAAU/gD,GAAS8kL,IAE/C3sE,EAAU7oG,SAAS00K,MAEjBuB,GAA2BptE,EAAU7oG,SAAS00K,IAAiBa,EAAW1vO,GAAM2vO,IAG/F,YAA2BW,EAAgBD,EAAgBvrO,GACvD,OAAOurO,EAAetnL,MAAM,CAACwnL,EAAkBlyO,KACpC6xO,GAAgBprO,GAASwrO,EAAejyO,IAAGwjG,WAAY0uI,EAAiB1uI,aAiCvF,SAEIx+F,YAEAoe,EAEAs4F,EAEA2yH,GACInpO,KAAKke,KAAOA,EACZle,KAAKw2G,YAAcA,EACnBx2G,KAAKmpO,SAAWA,EAEhB8D,oBACA,OAAKjtO,KAAKktO,iBACNltO,KAAKktO,eAAiBC,GAAkBntO,KAAKw2G,cAE1Cx2G,KAAKktO,eAGhBt7O,WACI,OAAOw7O,GAAmBC,UAAUrtO,OAY5C,SACIF,YAEAuoG,EAEAzxC,GACI52D,KAAKqoG,SAAWA,EAChBroG,KAAK42D,SAAWA,EAEhB52D,KAAK5J,OAAS,KACdxD,GAAQgkE,EAAU,CAACvzD,EAAGgwD,KAAMhwD,EAAEjN,OAAS4J,MAG3C2rO,cACI,OAAO3rO,KAAKusO,iBAAmB,EAG/BA,uBACA,OAAOt5O,OAAOC,KAAK8M,KAAK42D,UAAU7kE,OAGtCH,WACI,OAAO07O,GAAettO,OA6B9B,SACIF,YAEAmhC,EAEAq9D,GACIt+F,KAAKihC,KAAOA,EACZjhC,KAAKs+F,WAAaA,EAElBivI,mBACA,OAAKvtO,KAAKwtO,gBACNxtO,KAAKwtO,cAAgBL,GAAkBntO,KAAKs+F,aAEzCt+F,KAAKwtO,cAGhB57O,WACI,OAAO67O,GAAcztO,OAM7B,YAAmB0tO,EAAItpK,GACnB,OAAIspK,EAAG37O,SAAWqyE,EAAGryE,QAEd27O,EAAGloL,MAAM,CAACvuC,EAAGnc,IAAMmc,EAAEgqB,OAASmjC,EAAGtpE,GAAGmmC,MAgD/C,SAEIkqD,MAAM57D,GACF,MAAMlV,EAAI,IAAIszN,GAAUp+M,GACxB,OAAO,IAAIq+M,GAAQvzN,EAAEwzN,mBAAoBxzN,EAAEyzN,mBAAoBzzN,EAAE0zN,iBAGrEV,UAAUW,GACN,MAAMz4H,EAAW,IAAG04H,GAAiBD,EAAK9vN,MAAM,KAC1C/lB,EAgGd,YAA8B0D,GAC1B,MAAMqyO,EAAYj7O,OAAOC,KAAK2I,GACzB7G,IAAK+L,IACN,MAAM5L,EAAQ0G,EAAOkF,GACrB,OAAOlK,MAAM4E,QAAQtG,GACjBA,EAAMH,IAAIqO,IAAM,GAAE8qO,GAAeptO,MAASotO,GAAe9qO,OAAMm+C,KAAK,KACnE,GAAE2sL,GAAeptO,MAASotO,GAAeh5O,OAE7CiT,OAAO1F,KAAOA,GACnB,OAAOwrO,EAAUn8O,OAAU,IAAGm8O,EAAU1sL,KAAK,OAAS,GAzGpC4sL,CAAqBJ,EAAKx3H,aAExC,MAAQ,GAAEjB,IAAUp9G,IADuB,iBAAnB61O,EAAK7E,SAAyB,IAkE9D,YAA2BzmO,GACvB,OAAO2rO,UAAU3rO,GAnE4C4rO,CAAkBN,EAAK7E,YAAc,IAClEA,EAGpC,MAAMiE,GAAqB,IAAImB,GAC/B,YAAwBh5H,GACpB,OAAOA,EAAQlN,SAASrzG,IAAIqlB,GAAKozN,GAAcpzN,IAAImnC,KAAK,KAE5D,YAA0B+zD,EAASr3F,GAC/B,IAAKq3F,EAAQo2H,cACT,OAAO2B,GAAe/3H,GAE1B,GAAIr3F,EAAM,CACN,MAAMswN,EAAUj5H,EAAQ3+C,SAAS00K,IAC7B2C,GAAiB14H,EAAQ3+C,SAAS00K,KAAiB,GACnD,GACE10K,EAAW,GACjBhkE,UAAQ2iH,EAAQ3+C,SAAU,CAACvzD,GAAGgwD,MACtBA,KAAMi4K,IACN10K,EAASljE,KAAM,GAAE2/D,MAAK46K,GAAiB5qO,IAAG,QAG3CuzD,EAAS7kE,OAAS,EAAK,GAAEy8O,KAAW53K,EAASpV,KAAK,SAAWgtL,EAEnE,CACD,MAAM53K,EAjFd,YAA8B2+C,EAASnlG,GACnC,IAAImuF,EAAM,GACV3rG,UAAQ2iH,EAAQ3+C,SAAU,CAACm5F,EAAO0+E,MAC1BA,KAAgBnD,KAChB/sI,EAAMA,EAAI15E,OAAOzU,EAAG2/I,EAAO0+E,QAGnC77O,GAAQ2iH,EAAQ3+C,SAAU,CAACm5F,EAAO0+E,MAC1BA,KAAgBnD,KAChB/sI,EAAMA,EAAI15E,OAAOzU,EAAG2/I,EAAO0+E,QAG5BlwI,EAqEcmwI,CAAqBn5H,EAAS,CAAClyG,EAAGgwD,KAC3CA,KAAMi4K,GACC,CAAC2C,GAAiB14H,EAAQ3+C,SAAS00K,KAAiB,IAExD,CAAE,GAAEj4K,MAAK46K,GAAiB5qO,GAAG,OAGxC,OAA6C,IAAzCpQ,OAAOC,KAAKqiH,EAAQ3+C,UAAU7kE,QAAoD,MAApCwjH,EAAQ3+C,SAAS00K,IACvD,GAAEgC,GAAe/3H,MAAY3+C,EAAS,KAE1C,GAAE02K,GAAe/3H,OAAa3+C,EAASpV,KAAK,UAS5D,YAAyB9+C,GACrB,OAAO2zG,mBAAmB3zG,GACrBxG,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KAQ1B,YAAwBwG,GACpB,OAAOisO,GAAgBjsO,GAAGxG,QAAQ,QAAS,KAkB/C,YAA0BwG,GACtB,OAAOisO,GAAgBjsO,GAAGxG,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OAAOA,QAAQ,QAAS,KAE3F,YAAgBwG,GACZ,OAAO00G,mBAAmB10G,GAI9B,YAAqBA,GACjB,OAAO81F,GAAO91F,EAAExG,QAAQ,MAAO,QAEnC,YAAuB+kC,GACnB,MAAQ,GAAE2tM,GAAiB3tM,EAAKA,QAEpC,YAA+BplC,GAC3B,OAAO5I,OAAOC,KAAK2I,GACd7G,IAAIC,GAAQ,IAAG25O,GAAiB35O,MAAQ25O,GAAiB/yO,EAAO5G,OAChEusD,KAAK,IAL8BqtL,CAAsB5tM,EAAKq9D,cAkBvE,MAAMwwI,GAAa,gBACnB,YAAuB7yO,GACnB,MAAMzC,EAAQyC,EAAIzC,MAAMs1O,IACxB,OAAOt1O,EAAQA,EAAM,GAAK,GAE9B,MAAMu1O,GAAiB,YAMjBC,GAAuB,UAM7B,SACIlvO,YAAYyvB,GACRvvB,KAAKuvB,IAAMA,EACXvvB,KAAKivO,UAAY1/M,EAErBs+M,mBAEI,OADA7tO,KAAKkvO,gBAAgB,KACE,KAAnBlvO,KAAKivO,WAAoBjvO,KAAKmvO,eAAe,MAAQnvO,KAAKmvO,eAAe,KAClE,IAAIC,GAAgB,GAAI,IAG5B,IAAIA,GAAgB,GAAIpvO,KAAKqvO,iBAExCvB,mBACI,MAAMjyO,EAAS,GACf,GAAImE,KAAKkvO,gBAAgB,KACrB,GACIlvO,KAAKsvO,gBAAgBzzO,SAChBmE,KAAKkvO,gBAAgB,MAElC,OAAOrzO,EAEXkyO,gBACI,OAAO/tO,KAAKkvO,gBAAgB,KAAO93H,mBAAmBp3G,KAAKivO,WAAa,KAE5EI,gBACI,GAAuB,KAAnBrvO,KAAKivO,UACL,MAAO,GAEXjvO,KAAKkvO,gBAAgB,KACrB,MAAM7mI,EAAW,GAIjB,IAHKroG,KAAKmvO,eAAe,MACrB9mI,EAAS30G,KAAKsM,KAAKuvO,gBAEhBvvO,KAAKmvO,eAAe,OAASnvO,KAAKmvO,eAAe,QAAUnvO,KAAKmvO,eAAe,OAClFnvO,KAAKizD,QAAQ,KACbo1C,EAAS30G,KAAKsM,KAAKuvO,gBAEvB,IAAI34K,EAAW,GACX52D,KAAKmvO,eAAe,QACpBnvO,KAAKizD,QAAQ,KACb2D,EAAW52D,KAAKwvO,aAAY,IAEhC,IAAIjxI,EAAM,GACV,OAAIv+F,KAAKmvO,eAAe,OACpB5wI,EAAMv+F,KAAKwvO,aAAY,KAEvBnnI,EAASt2G,OAAS,GAAKkB,OAAOC,KAAK0jE,GAAU7kE,OAAS,KACtDwsG,EAAI+sI,IAAkB,IAAI8D,GAAgB/mI,EAAUzxC,IAEjD2nC,EAIXgxI,eACI,MAAMtuM,EAAOwuM,GAAczvO,KAAKivO,WAChC,GAAa,KAAThuM,GAAejhC,KAAKmvO,eAAe,KACnC,MAAM,IAAI1lM,MAAO,mDAAkDzpC,KAAKivO,eAE5E,YAAKh8K,QAAQhyB,GACN,IAAIyuM,GAAWl3I,GAAOv3D,GAAOjhC,KAAK2vO,qBAE7CA,oBACI,MAAM9zO,EAAS,GACf,KAAOmE,KAAKkvO,gBAAgB,MACxBlvO,KAAK4vO,WAAW/zO,GAEpB,OAAOA,EAEX+zO,WAAW/zO,GACP,MAAM5G,EAAMw6O,GAAczvO,KAAKivO,WAC/B,IAAKh6O,EACD,OAEJ+K,KAAKizD,QAAQh+D,GACb,IAAIE,EAAQ,GACZ,GAAI6K,KAAKkvO,gBAAgB,KAAM,CAC3B,MAAMW,GAAaJ,GAAczvO,KAAKivO,WAClCY,KACA16O,EAAQ06O,GACR7vO,KAAKizD,QAAQ99D,IAGrB0G,EAAO28F,GAAOvjG,IAAQujG,GAAOrjG,GAGjCm6O,gBAAgBzzO,GACZ,MAAM5G,EAjGd,YAA0BgH,GACtB,MAAMzC,EAAQyC,EAAIzC,MAAMu1O,IACxB,OAAOv1O,EAAQA,EAAM,GAAK,GA+FVs2O,CAAiB9vO,KAAKivO,WAClC,IAAKh6O,EACD,OAEJ+K,KAAKizD,QAAQh+D,GACb,IAAIE,EAAQ,GACZ,GAAI6K,KAAKkvO,gBAAgB,KAAM,CAC3B,MAAMW,GAlGlB,YAAiC5zO,GAC7B,MAAMzC,EAAQyC,EAAIzC,MAAMw1O,IACxB,OAAOx1O,EAAQA,EAAM,GAAK,GAgGCu2O,CAAwB/vO,KAAKivO,WAC5CY,KACA16O,EAAQ06O,GACR7vO,KAAKizD,QAAQ99D,IAGrB,MAAM66O,GAAaC,GAAYh7O,GACzBi7O,GAAaD,GAAY96O,GAC/B,GAAI0G,EAAO/B,eAAek2O,IAAa,CAEnC,IAAIG,GAAat0O,EAAOm0O,IACnBn5O,MAAM4E,QAAQ00O,MACfA,GAAa,CAACA,IACdt0O,EAAOm0O,IAAcG,IAEzBA,GAAWz8O,KAAKw8O,SAIhBr0O,EAAOm0O,IAAcE,GAI7BV,YAAYY,GACR,MAAM/nI,EAAW,GAEjB,IADAroG,KAAKizD,QAAQ,MACLjzD,KAAKkvO,gBAAgB,MAAQlvO,KAAKivO,UAAUl9O,OAAS,GAAG,CAC5D,MAAMkvC,EAAOwuM,GAAczvO,KAAKivO,WAC1BxyO,GAAOuD,KAAKivO,UAAUhuM,EAAKlvC,QAGjC,GAAa,MAAT0K,IAAyB,MAATA,IAAyB,MAATA,GAChC,MAAM,IAAIgtC,MAAO,qBAAoBzpC,KAAKuvB,QAE9C,IAAI8gN,GACApvM,EAAKxrC,QAAQ,MAAO,GACpB46O,GAAapvM,EAAKtrC,OAAO,EAAGsrC,EAAKxrC,QAAQ,MACzCuK,KAAKizD,QAAQo9K,IACbrwO,KAAKizD,QAAQ,MAERm9K,IACLC,GAAa/E,IAEjB,MAAM10K,GAAW52D,KAAKqvO,gBACtBhnI,EAASgoI,IAA+C,IAAjCp9O,OAAOC,KAAK0jE,IAAU7kE,OAAe6kE,GAAS00K,IACjE,IAAI8D,GAAgB,GAAIx4K,IAC5B52D,KAAKkvO,gBAAgB,MAEzB,OAAO7mI,EAEX8mI,eAAelzO,GACX,OAAO+D,KAAKivO,UAAU/zO,WAAWe,GAGrCizO,gBAAgBjzO,GACZ,QAAI+D,KAAKmvO,eAAelzO,KACpB+D,KAAKivO,UAAYjvO,KAAKivO,UAAUv5O,UAAUuG,EAAIlK,SACvC,EAEJ,CAEXkhE,QAAQh3D,GACJ,IAAK+D,KAAKkvO,gBAAgBjzO,GACtB,MAAM,IAAIwtC,MAAO,aAAYxtC,QAYzC,SACI6D,YAAYoe,GACRle,KAAK8qG,MAAQ5sF,EAEbA,WACA,OAAOle,KAAK8qG,MAAM31G,MAKtBiB,OAAOuvF,GACH,MAAMtrE,EAAIra,KAAKswO,aAAa3qJ,GAC5B,OAAOtrE,EAAEtoB,OAAS,EAAIsoB,EAAEA,EAAEtoB,OAAS,GAAK,KAK5C6kE,SAAS+uB,GACL,MAAMvkF,EAAIiiG,GAAS1d,EAAG3lF,KAAK8qG,OAC3B,OAAO1pG,EAAIA,EAAEw1D,SAAS5hE,IAAI2wF,GAAKA,EAAExwF,OAAS,GAK9Cy6J,WAAWjqE,GACP,MAAMvkF,EAAIiiG,GAAS1d,EAAG3lF,KAAK8qG,OAC3B,OAAO1pG,GAAKA,EAAEw1D,SAAS7kE,OAAS,EAAIqP,EAAEw1D,SAAS,GAAGzhE,MAAQ,KAK9Do7O,SAAS5qJ,GACL,MAAMtrE,EAAIm2N,GAAS7qJ,EAAG3lF,KAAK8qG,OAC3B,OAAIzwF,EAAEtoB,OAAS,EACJ,GAEJo4D,EADK9vC,EAAEtoB,OAAS,GAAG6kE,SAAS5hE,IAAIm1D,IAAKA,GAAEh1D,OACrCiT,OAAOqoO,IAAMA,KAAO9qJ,GAKjC2qJ,aAAa3qJ,GACT,OAAO6qJ,GAAS7qJ,EAAG3lF,KAAK8qG,OAAO91G,IAAI0N,GAAKA,EAAEvN,QAIlD,YAAkBA,EAAO6H,GACrB,GAAI7H,IAAU6H,EAAK7H,MACf,OAAO6H,EACX,UAAW+yJ,KAAS/yJ,EAAK45D,SAAU,CAC/B,MAAM55D,EAAOqmG,GAASluG,EAAO46J,GAC7B,GAAI/yJ,EACA,OAAOA,EAEf,OAAO,KAGX,YAAkB7H,EAAO6H,GACrB,GAAI7H,IAAU6H,EAAK7H,MACf,MAAO,CAAC6H,GACZ,UAAW+yJ,KAAS/yJ,EAAK45D,SAAU,CAC/B,MAAM31B,EAAOuvM,GAASr7O,EAAO46J,GAC7B,GAAI9uH,EAAKlvC,OACLkvC,SAAKtlB,QAAQ3e,GACNikC,EAGf,MAAO,GAEX,SACInhC,YAAY3K,EAAOyhE,GACf52D,KAAK7K,MAAQA,EACb6K,KAAK42D,SAAWA,EAEpBhlE,WACI,MAAQ,YAAWoO,KAAK7K,UAIhC,YAA2B6H,GACvB,MAAMhI,EAAM,GACZ,OAAIgI,GACAA,EAAK45D,SAAShkE,QAAQm9J,GAAS/6J,EAAI+6J,EAAM56J,MAAMu7O,QAAU3gF,GAEtD/6J,EAyCX,iBAA0B27O,GAEtB7wO,YAAYoe,EAEZ8zC,GACI1jD,MAAM4P,GACNle,KAAKgyD,SAAWA,EAChB4+K,GAAe5wO,KAAMke,GAEzBtsB,WACI,OAAOoO,KAAKgyD,SAASpgE,YAG7B,YAA0Bi/O,EAASv3D,GAC/B,MAAMtnH,EAUV,YAAkC6+K,EAASv3D,GACvC,MAIMw3D,GAAY,IAAIC,GAAuB,GAJzB,GAEK,GACR,GAFC,GAGmFzF,GAAgBhyD,EAAe,KAAMu3D,EAAQ3yN,MAAM,EAAI,IAC5J,OAAO,IAAI8yN,GAAoB,GAAI,IAAIC,GAASH,GAAW,KAhB1CI,CAAyBL,EAASv3D,GAC7C63D,EAAW,IAAIC,IAAgB,CAAC,IAAI1B,GAAW,GAAI,MACnD2B,GAAc,IAAID,IAAgB,IAClCE,GAAY,IAAIF,IAAgB,IAChCG,GAAmB,IAAIH,IAAgB,IACvCjI,GAAW,IAAIiI,IAAgB,IAC/BN,GAAY,IAAIU,GAAeL,EAAUE,GAAaE,GAAkBpI,GAAUmI,GAAWhG,GAAgBhyD,EAAetnH,EAAS9zC,MAC3I4yN,UAAU9+K,SAAWA,EAAS9zC,KACvB,IAAIuzN,GAAY,IAAIR,GAASH,GAAW,IAAK9+K,GA6BxD,SAEIlyD,YAEAyvB,EAEA1zB,EAEA26G,EAEA2yH,GAEAr0O,GAEA47O,GAGAn9M,GAAWm+M,IACP1xO,KAAKuvB,IAAMA,EACXvvB,KAAKnE,OAASA,EACdmE,KAAKw2G,YAAcA,EACnBx2G,KAAKmpO,SAAWA,GAChBnpO,KAAKlL,KAAOA,GACZkL,KAAK0wO,OAASA,GACd1wO,KAAKuzB,UAAYA,GACjBvzB,KAAK2xO,gBAAkBD,GAGvBrG,kBACA,OAAOrrO,KAAK2xO,gBAAgBtG,YAG5BntN,WACA,OAAOle,KAAK4xO,aAAa1zN,KAGzB9nB,aACA,OAAO4J,KAAK4xO,aAAax7O,OAAO4J,MAGhC4vJ,iBACA,OAAO5vJ,KAAK4xO,aAAahiF,WAAW5vJ,MAGpC42D,eACA,OAAO52D,KAAK4xO,aAAah7K,SAAS52D,MAGlCswO,mBACA,OAAOtwO,KAAK4xO,aAAatB,aAAatwO,MAOtC6xO,eACA,OAAK7xO,KAAK8xO,YACN9xO,KAAK8xO,UAAY9xO,KAAKnE,OAAOukC,MAAKprC,QAAKqlB,GAAM8yN,GAAkB9yN,MAE5Dra,KAAK8xO,UAMZ7E,oBACA,OAAKjtO,KAAKktO,iBACNltO,KAAKktO,eACDltO,KAAKw2G,YAAYp2E,MAAKprC,QAAKqlB,GAAM8yN,GAAkB9yN,MAEpDra,KAAKktO,eAEhBt7O,WACI,OAAOoO,KAAKgyD,SAAWhyD,KAAKgyD,SAASpgE,WAAc,UAASoO,KAAK2xO,oBAQzE,YAAoCvG,EAAO2G,EAA4B,aACnE,MAAMzB,EAAelF,EAAMkF,aAC3B,IAAI0B,EAAyB,EAC7B,GAAkC,WAA9BD,EAEA,IADAC,EAAyB1B,EAAav+O,OAAS,EACxCigP,GAA0B,GAAG,CAChC,MAAM1qL,GAAUgpL,EAAa0B,GACvB57O,GAASk6O,EAAa0B,EAAyB,GAErD,GAAI1qL,GAAQ+jL,aAA4C,KAA7B/jL,GAAQ+jL,YAAYpqM,KAC3C+wM,YAGM57O,GAAOm9B,UAIb,MAHAy+M,GAGA,EAIZ,OAGJ,YAA0B1B,GACtB,OAAOA,EAAa1xK,OAAO,CAAC2/B,EAAK0zI,KAItB,CAAEp2O,OAHM5I,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIitF,EAAI1iG,QAASo2O,EAAKp2O,QAGhD/G,KAFJ7B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIitF,EAAIzpG,MAAOm9O,EAAKn9O,MAEtC+nB,QADP5pB,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIitF,EAAI1hF,SAAUo1N,EAAKC,iBAEpE,CAAEr2O,OAAQ,GAAI/G,KAAM,GAAI+nB,QAAS,KAT7Bs1N,CAAiB7B,EAAalkO,MAAM4lO,IAkC/C,SAEIlyO,YAEAyvB,EAoBA1zB,EAEA26G,EAEA2yH,GAEAr0O,GAEA47O,GAEAn9M,GAAW83M,GAAa+G,GAAYC,GAAex1N,IAC/C7c,KAAKuvB,IAAMA,EACXvvB,KAAKnE,OAASA,EACdmE,KAAKw2G,YAAcA,EACnBx2G,KAAKmpO,SAAWA,GAChBnpO,KAAKlL,KAAOA,GACZkL,KAAK0wO,OAASA,GACd1wO,KAAKuzB,UAAYA,GACjBvzB,KAAKqrO,YAAcA,GACnBrrO,KAAKsyO,YAAcF,GACnBpyO,KAAKuyO,eAAiBF,GACtBryO,KAAKwyO,SAAW31N,GAGhBqB,WACA,OAAOle,KAAK4xO,aAAa1zN,KAGzB9nB,aACA,OAAO4J,KAAK4xO,aAAax7O,OAAO4J,MAGhC4vJ,iBACA,OAAO5vJ,KAAK4xO,aAAahiF,WAAW5vJ,MAGpC42D,eACA,OAAO52D,KAAK4xO,aAAah7K,SAAS52D,MAGlCswO,mBACA,OAAOtwO,KAAK4xO,aAAatB,aAAatwO,MAEtC6xO,eACA,OAAK7xO,KAAK8xO,YACN9xO,KAAK8xO,UAAY3E,GAAkBntO,KAAKnE,SAErCmE,KAAK8xO,UAEZ7E,oBACA,OAAKjtO,KAAKktO,iBACNltO,KAAKktO,eAAiBC,GAAkBntO,KAAKw2G,cAE1Cx2G,KAAKktO,eAEhBt7O,WAGI,MAAQ,cAFIoO,KAAKuvB,IAAIv6B,IAAIugH,GAAWA,EAAQ3jH,YAAY4vD,KAAK,gBAC7CxhD,KAAKqrO,YAAcrrO,KAAKqrO,YAAYpqM,KAAO,MACvB21G,EA8B5C,iBAAkC+5F,GAE9B7wO,YAEAyvB,EAAKrR,GACD5P,MAAM4P,GACNle,KAAKuvB,IAAMA,EACXqhN,GAAe5wO,KAAMke,GAEzBtsB,WACI,OAAO6gP,GAAczyO,KAAK8qG,QAGlC,YAAwB/mE,EAAO/mC,GAC3BA,EAAK7H,MAAMy8O,aAAe7tM,EAC1B/mC,EAAK45D,SAAShkE,QAAQu3D,GAAKymL,GAAe7sM,EAAOomB,IAErD,YAAuBntD,GACnB,MAAMmtD,EAAIntD,EAAK45D,SAAS7kE,OAAS,EAAK,MAAKiL,EAAK45D,SAAS5hE,IAAIy9O,IAAejxL,KAAK,WAAa,GAC9F,MAAQ,GAAExkD,EAAK7H,QAAQg1D,IAO3B,YAA+BihL,GAC3B,GAAIA,EAAMp5K,SAAU,CAChB,MAAMhsC,EAAkBolN,EAAMp5K,SACxB0gL,EAAetH,EAAMuG,gBAC3BvG,EAAMp5K,SAAW0gL,EACZ9F,GAAa5mN,EAAgBwwF,YAAak8H,EAAal8H,cACxD40H,EAAM50H,YAAY/5G,KAAKi2O,EAAal8H,aAEpCxwF,EAAgBmjN,WAAauJ,EAAavJ,UAC1CiC,EAAMjC,SAAS1sO,KAAKi2O,EAAavJ,UAEhCyD,GAAa5mN,EAAgBnqB,OAAQ62O,EAAa72O,SACnDuvO,EAAMvvO,OAAOY,KAAKi2O,EAAa72O,QArmC3C,YAA4Bob,EAAGC,GAC3B,GAAID,EAAEllB,SAAWmlB,EAAEnlB,OACf,OAAO,EACX,QAAS+I,EAAI,EAAGA,EAAImc,EAAEllB,SAAU+I,EAC5B,IAAK8xO,GAAa31N,EAAEnc,GAAIoc,EAAEpc,IACtB,OAAO,EAEf,OAAO,EAgmCE63O,CAAmB3sN,EAAgBuJ,IAAKmjN,EAAanjN,MACtD67M,EAAM77M,IAAI9yB,KAAKi2O,EAAanjN,KAE3Bq9M,GAAa5mN,EAAgBlxB,KAAM49O,EAAa59O,OACjDs2O,EAAMt2O,KAAK2H,KAAKi2O,EAAa59O,WAIjCs2O,EAAMp5K,SAAWo5K,EAAMuG,gBAEvBvG,EAAMt2O,KAAK2H,KAAK2uO,EAAMuG,gBAAgB78O,MAG9C,YAAmCmiB,EAAGC,GAClC,MAAM07N,EAAiBhG,GAAa31N,EAAEpb,OAAQqb,EAAErb,SAn0BpD,YAAuB6xO,EAAItpK,GACvB,OAAOioK,GAAUqB,EAAItpK,IAAOspK,EAAGloL,MAAM,CAACvuC,EAAGnc,IAAM8xO,GAAa31N,EAAEqnF,WAAYl6B,EAAGtpE,GAAGwjG,aAk0BrBu0I,CAAc57N,EAAEsY,IAAKrY,EAAEqY,KAElF,OAAOqjN,MADkB37N,EAAE7gB,SAAY8gB,EAAE9gB,WAEnC6gB,EAAE7gB,QAAU08O,GAA0B77N,EAAE7gB,OAAQ8gB,EAAE9gB,SAc5D,YAAoB28O,EAAoBd,EAAMe,GAE1C,GAAIA,GAAaD,EAAmBE,iBAAiBhB,EAAK98O,MAAO69O,EAAU79O,MAAM68D,UAAW,CACxF,MAAM78D,EAAQ69O,EAAU79O,MACxBA,EAAMw8O,gBAAkBM,EAAK98O,MAC7B,MAAMyhE,GAmBd,YAA+Bm8K,EAAoBd,EAAMe,GACrD,OAAOf,EAAKr7K,SAAS5hE,IAAI+6J,IACrB,UAAW11I,MAAK24N,EAAUp8K,SACtB,GAAIm8K,EAAmBE,iBAAiBljF,EAAM56J,MAAOklB,GAAEllB,MAAM68D,UACzD,OAAOkhL,GAAWH,EAAoBhjF,EAAO11I,IAGrD,OAAO64N,GAAWH,EAAoBhjF,KA1BrBojF,CAAsBJ,EAAoBd,EAAMe,GACjE,OAAO,IAAI/B,GAAS97O,EAAOyhE,IAE1B,CACD,GAAIm8K,EAAmBK,aAAanB,EAAK98O,OAAQ,CAE7C,MAAMk+O,GAAsBN,EAAmBO,SAASrB,EAAK98O,OAC7D,GAA4B,OAAxBk+O,GAA8B,CAC9B,MAAMrF,GAAOqF,GAAoBjI,MACjC4C,UAAK74O,MAAMw8O,gBAAkBM,EAAK98O,MAClC64O,GAAKp3K,SAAWq7K,EAAKr7K,SAAS5hE,IAAIm1D,IAAK+oL,GAAWH,EAAoB5oL,KAC/D6jL,IAGf,MAAM74O,EAed,YAA8Bg1D,GAC1B,OAAO,IAAIqnL,GAAe,IAAIJ,IAAgBjnL,EAAE56B,KAAM,IAAI6hN,IAAgBjnL,EAAEtuD,QAAS,IAAIu1O,IAAgBjnL,EAAEqsD,aAAc,IAAI46H,IAAgBjnL,EAAEg/K,UAAW,IAAIiI,IAAgBjnL,EAAEr1D,MAAOq1D,EAAEumL,OAAQvmL,EAAE52B,UAAW42B,GAhB5LopL,CAAqBtB,EAAK98O,OAClCyhE,GAAWq7K,EAAKr7K,SAAS5hE,IAAIm1D,IAAK+oL,GAAWH,EAAoB5oL,KACvE,OAAO,IAAI8mL,GAAS97O,EAAOyhE,KAsCnC,YAAwBrhE,GACpB,MAA0B,iBAAZA,GAAmC,MAAXA,IAAoBA,EAAQi+O,UAAYj+O,EAAQk+O,YAM1F,YAA8Bl+O,GAC1B,MAA0B,iBAAZA,GAAmC,MAAXA,GAAmBA,EAAQi+O,QAErE,YAAcE,EAASC,EAAiBC,EAAiBp9H,EAAa2yH,IAClE,IAAI0K,GAAK,GAMT,GALIr9H,GACA5jH,GAAQ4jH,EAAa,CAACrhH,GAAO4L,MACzB8yO,GAAG9yO,IAAQlK,MAAM4E,QAAQtG,IAASA,GAAMH,IAAKqO,IAAO,GAAEA,MAAQ,GAAElO,OAGpEu+O,IAAYC,EACZ,OAAO,IAAI/F,GAAQgG,EAAiBC,GAAI1K,IAE5C,MAAM2K,GAAUC,GAAeL,EAASC,EAAiBC,GACzD,OAAO,IAAIhG,GAAQkG,GAASD,GAAI1K,IAEpC,YAAwB7hL,EAAS0sL,EAAYC,GACzC,MAAMr9K,EAAW,GACjBhkE,UAAQ00D,EAAQsP,SAAU,CAACzM,GAAGkmL,MAEtBz5K,EAASy5K,IADTlmL,KAAM6pL,EACiBC,EAGAF,GAAe5pL,GAAG6pL,EAAYC,KAGtD,IAAI7E,GAAgB9nL,EAAQ+gD,SAAUzxC,GAEjD,SACI92D,YAAYo0O,EAAYC,EAAoB5kL,GAIxC,GAHAvvD,KAAKk0O,WAAaA,EAClBl0O,KAAKm0O,mBAAqBA,EAC1Bn0O,KAAKuvD,SAAWA,EACZ2kL,GAAc3kL,EAASx9D,OAAS,GAAKqiP,GAAe7kL,EAAS,IAC7D,MAAM,IAAI9lB,MAAM,8CAEpB,MAAM4qM,GAAgB9kL,EAASnpD,KAAKkuO,IACpC,GAAID,IAAiBA,KAAkB1+H,GAAKpmD,GACxC,MAAM,IAAI9lB,MAAM,2CAGxB8qM,SACI,OAAOv0O,KAAKk0O,YAAuC,IAAzBl0O,KAAKuvD,SAASx9D,QAAoC,KAApBiO,KAAKuvD,SAAS,EAAM,EA+CpF,SACIzvD,YAAY2rO,EAAc+I,EAAiB1gO,GACvC9T,KAAKyrO,aAAeA,EACpBzrO,KAAKw0O,gBAAkBA,EACvBx0O,KAAK8T,MAAQA,GAuCrB,YAA4B23N,EAActxO,EAAYo1D,GAIlD,GAHKk8K,IACDA,EAAe,IAAI2D,GAAgB,GAAI,KAEN,IAAjC3D,EAAapjI,SAASt2G,QAAgB05O,EAAaE,cACnD,OAAO8I,GAA2BhJ,EAActxO,EAAYo1D,GAEhE,MAAM1yD,EA4CV,YAAsB4uO,EAActxO,EAAYo1D,GAC5C,IAAImlL,EAAsB,EACtBC,GAAmBx6O,EACvB,MAAMy6O,GAAU,CAAEp7O,OAAO,EAAOq7O,UAAW,EAAGC,aAAc,GAC5D,KAAOH,GAAmBlJ,EAAapjI,SAASt2G,QAAQ,CACpD,GAAI2iP,GAAuBnlL,EAASx9D,OAChC,OAAO6iP,GACX,MAAM3zM,GAAOwqM,EAAapjI,SAASssI,IAC7Bp/O,GAAUg6D,EAASmlL,GAIzB,GAAIJ,GAAqB/+O,IACrB,MAEJ,MAAM08O,GAAQ,GAAE18O,KACVkH,GAAOi4O,EAAsBnlL,EAASx9D,OAAS,EAAIw9D,EAASmlL,EAAsB,GAAK,KAC7F,GAAIC,GAAmB,QAAc//O,IAATq9O,GACxB,MACJ,GAAIA,IAAQx1O,IAAyB,iBAATA,SAAuC7H,IAAjB6H,GAAK+2O,QAAuB,CAC1E,IAAK7hI,GAAQsgI,GAAMx1O,GAAMwkC,IACrB,OAAO2zM,GACXF,GAAuB,MAEtB,CACD,IAAK/iI,GAAQsgI,GAAM,GAAIhxM,IACnB,OAAO2zM,GACXF,IAEJC,KAEJ,MAAO,CAAEn7O,OAAO,EAAMq7O,UAAWF,GAAkBG,aAAcJ,GA3EvDK,CAAatJ,EAActxO,EAAYo1D,GAC3CylL,GAAiBzlL,EAASnjD,MAAMvP,EAAEi4O,cACxC,GAAIj4O,EAAErD,OAASqD,EAAEg4O,UAAYpJ,EAAapjI,SAASt2G,OAAQ,CACvD,MAAMwvD,GAAI,IAAI6tL,GAAgB3D,EAAapjI,SAASj8F,MAAM,EAAGvP,EAAEg4O,WAAY,IAC3EtzL,UAAEqV,SAAS00K,IACP,IAAI8D,GAAgB3D,EAAapjI,SAASj8F,MAAMvP,EAAEg4O,WAAYpJ,EAAa70K,UACxE69K,GAA2BlzL,GAAG,EAAGyzL,IAEvC,OAAIn4O,EAAErD,OAAmC,IAA1Bw7O,GAAejjP,OACxB,IAAIq9O,GAAgB3D,EAAapjI,SAAU,IAE7CxrG,EAAErD,QAAUiyO,EAAaE,cACvBsJ,GAAsBxJ,EAActxO,EAAYo1D,GAElD1yD,EAAErD,MACAi7O,GAA2BhJ,EAAc,EAAGuJ,IAG5CC,GAAsBxJ,EAActxO,EAAYo1D,GAG/D,YAAoCk8K,EAActxO,EAAYo1D,GAC1D,GAAwB,IAApBA,EAASx9D,OACT,OAAO,IAAIq9O,GAAgB3D,EAAapjI,SAAU,IAEjD,CACD,MAAMmrI,EAvCd,YAAoBjkL,GAChB,OAAI+kL,GAAqB/kL,EAAS,IACvBA,EAAS,GAAGikL,QAEhB,EAAGlI,IAAiB/7K,GAmCP2lL,CAAW3lL,GACrBqH,GAAW,GACjBhkE,UAAQ4gP,EAAS,CAACjkL,GAAUmhL,MACA,iBAAbnhL,KACPA,GAAW,CAACA,KAEC,OAAbA,KACAqH,GAAS85K,IAAUyE,GAAmB1J,EAAa70K,SAAS85K,IAASv2O,EAAYo1D,OAGzF38D,GAAQ64O,EAAa70K,SAAU,CAACm5F,GAAO0+E,WACN75O,IAAzB4+O,EAAQ/E,MACR73K,GAAS63K,IAAe1+E,MAGzB,IAAIq/E,GAAgB3D,EAAapjI,SAAUzxC,KAoC1D,YAA+B60K,EAActxO,EAAYo1D,GACrD,MAAMu0D,EAAQ2nH,EAAapjI,SAASj8F,MAAM,EAAGjS,GAC7C,IAAIW,GAAI,EACR,KAAOA,GAAIy0D,EAASx9D,QAAQ,CACxB,MAAMwD,GAAUg6D,EAASz0D,IACzB,GAAIw5O,GAAqB/+O,IAAU,CAC/B,MAAMqhE,GAAWw+K,GAAyB7/O,GAAQi+O,SAClD,OAAO,IAAIpE,GAAgBtrH,EAAOltD,IAGtC,GAAU,IAAN97D,IAAWs5O,GAAe7kL,EAAS,IAAK,CAExCu0D,EAAMpwH,KAAK,IAAIg8O,GADLjE,EAAapjI,SAASluG,GACJ8mC,KAAMwmB,GAAU8H,EAAS,MACrDz0D,KACA,SAEJ,MAAMm3O,GAAOqC,GAAqB/+O,IAAWA,GAAQi+O,QAAQlI,IAAmB,GAAE/1O,KAC5EkH,GAAQ3B,GAAIy0D,EAASx9D,OAAS,EAAKw9D,EAASz0D,GAAI,GAAK,KACvDm3O,IAAQx1O,IAAQ23O,GAAe33O,KAC/BqnH,EAAMpwH,KAAK,IAAIg8O,GAAWuC,GAAMxqL,GAAUhrD,MAC1C3B,IAAK,IAGLgpH,EAAMpwH,KAAK,IAAIg8O,GAAWuC,GAAM,KAChCn3O,MAGR,OAAO,IAAIs0O,GAAgBtrH,EAAO,IAEtC,YAAkC0vH,GAC9B,MAAM58K,EAAW,GACjBhkE,UAAQ4gP,EAAS,CAACjkL,EAAUmhL,KACA,iBAAbnhL,IACPA,EAAW,CAACA,IAEC,OAAbA,IACAqH,EAAS85K,GAAUuE,GAAsB,IAAI7F,GAAgB,GAAI,IAAK,EAAG7/K,MAG1EqH,EAEX,YAAmB/6D,GACf,MAAM0iG,EAAM,GACZ3rG,UAAQiJ,EAAQ,CAACwH,EAAGgwD,IAAMkrC,EAAIlrC,GAAM,GAAEhwD,KAC/Bk7F,EAEX,YAAiBt9D,EAAMplC,EAAQ05G,GAC3B,OAAOt0E,GAAQs0E,EAAQt0E,MAAQ2rM,GAAa/wO,EAAQ05G,EAAQjX,YAehE,SACIx+F,YAAYizO,EAAoBsC,EAAaC,EAAWC,IACpDv1O,KAAK+yO,mBAAqBA,EAC1B/yO,KAAKq1O,YAAcA,EACnBr1O,KAAKs1O,UAAYA,EACjBt1O,KAAKu1O,aAAeA,GAExBC,SAASC,GACL,MAAMC,EAAa11O,KAAKq1O,YAAYvqI,MAC9B6qI,EAAW31O,KAAKs1O,UAAYt1O,KAAKs1O,UAAUxqI,MAAQ,KACzD9qG,KAAK41O,sBAAsBF,EAAYC,EAAUF,GACjDI,GAAsB71O,KAAKq1O,YAAYn3N,MACvCle,KAAK81O,oBAAoBJ,EAAYC,EAAUF,GAGnDG,sBAAsBG,EAAYC,EAAUp2K,GACxC,MAAMhJ,GAAWq/K,GAAkBD,GAEnCD,EAAWn/K,SAAShkE,QAAQsjP,KACxB,MAAMC,GAAkBD,GAAY/gP,MAAMu7O,OAC1C1wO,KAAKo2O,iBAAiBF,GAAat/K,GAASu/K,IAAkBv2K,UACvDhJ,GAASu/K,MAGpBvjP,GAAQgkE,GAAU,CAACvzD,GAAGgzO,MAClBr2O,KAAKs2O,8BAA8BjzO,GAAGu8D,KAG9Cw2K,iBAAiBL,EAAYC,EAAUvrO,GACnC,MAAM8rO,GAASR,EAAW5gP,MACpB88O,GAAO+D,EAAWA,EAAS7gP,MAAQ,KACzC,GAAIohP,KAAWtE,GAEX,GAAIsE,GAAOhjN,UAAW,CAElB,MAAMt2B,GAAUwN,EAAc+rO,WAAWD,GAAO7F,QAC5CzzO,IACA+C,KAAK41O,sBAAsBG,EAAYC,EAAU/4O,GAAQ25D,eAK7D52D,KAAK41O,sBAAsBG,EAAYC,EAAUvrO,QAIjDwnO,IAEAjyO,KAAKs2O,8BAA8BN,EAAUvrO,GAIzD6rO,8BAA8BlL,EAAOqK,GAG7BrK,EAAMj2O,MAAMo+B,WAAavzB,KAAK+yO,mBAAmB0D,aAAarL,EAAMj2O,MAAM68D,UAC1EhyD,KAAK02O,2BAA2BtL,EAAOqK,GAGvCz1O,KAAK22O,yBAAyBvL,EAAOqK,GAG7CiB,2BAA2BtL,EAAOqK,GAC9B,MAAMx4O,EAAUw4O,EAAee,WAAWpL,EAAMj2O,MAAMu7O,QAChD9wK,GAAW3iE,GAAWmuO,EAAMj2O,MAAMo+B,UAAYt2B,EAAQ25D,SAAW6+K,EACjE7+K,GAAWq/K,GAAkB7K,GACnC,UAAWqD,MAAex7O,OAAOC,KAAK0jE,IAClC52D,KAAKs2O,8BAA8B1/K,GAAS63K,IAAc7uK,IAE9D,GAAI3iE,GAAWA,EAAQyzO,OAAQ,CAC3B,MAAM3kC,GAAe9uM,EAAQyzO,OAAOttC,SAC9BxjI,GAAW3iE,EAAQ25D,SAASggL,sBAClC52O,KAAK+yO,mBAAmB/tL,MAAMomL,EAAMj2O,MAAM68D,SAAU,CAAE+5I,gBAAcq/B,QAAOxrK,eAGnF+2K,yBAAyBvL,EAAOqK,GAC5B,MAAMx4O,EAAUw4O,EAAee,WAAWpL,EAAMj2O,MAAMu7O,QAGhD9wK,GAAW3iE,GAAWmuO,EAAMj2O,MAAMo+B,UAAYt2B,EAAQ25D,SAAW6+K,EACjE7+K,GAAWq/K,GAAkB7K,GACnC,UAAWqD,MAAex7O,OAAOC,KAAK0jE,IAClC52D,KAAKs2O,8BAA8B1/K,GAAS63K,IAAc7uK,IAE1D3iE,GAAWA,EAAQyzO,SAEnBzzO,EAAQyzO,OAAOmG,aAEf55O,EAAQ25D,SAASggL,sBAGjB35O,EAAQ65O,UAAY,KACpB75O,EAAQs+M,SAAW,KACnBt+M,EAAQmuO,MAAQ,MAGxB0K,oBAAoBC,EAAYC,EAAUp2K,GACtC,MAAMhJ,GAAWq/K,GAAkBD,GACnCD,EAAWn/K,SAAShkE,QAAQu3D,KACxBnqD,KAAK+2O,eAAe5sL,GAAGyM,GAASzM,GAAEh1D,MAAMu7O,QAAS9wK,GACjD5/D,KAAKu1O,aAAa,IAAIyB,GAAc7sL,GAAEh1D,MAAM68D,aAE5C+jL,EAAWn/K,SAAS7kE,QACpBiO,KAAKu1O,aAAa,IAAI0B,GAAmBlB,EAAW5gP,MAAM68D,WAGlE+kL,eAAehB,EAAYC,EAAUP,GACjC,MAAMc,GAASR,EAAW5gP,MACpB88O,GAAO+D,EAAWA,EAAS7gP,MAAQ,KAGzC,GAFA0gP,GAAsBU,IAElBA,KAAWtE,GACX,GAAIsE,GAAOhjN,UAAW,CAElB,MAAMt2B,GAAUw4O,EAAeyB,mBAAmBX,GAAO7F,QACzD1wO,KAAK81O,oBAAoBC,EAAYC,EAAU/4O,GAAQ25D,eAIvD52D,KAAK81O,oBAAoBC,EAAYC,EAAUP,WAI/Cc,GAAOhjN,UAAW,CAElB,MAAMt2B,GAAUw4O,EAAeyB,mBAAmBX,GAAO7F,QACzD,GAAI1wO,KAAK+yO,mBAAmBK,aAAamD,GAAOvkL,UAAW,CACvD,MAAMmlL,GAASn3O,KAAK+yO,mBAAmBO,SAASiD,GAAOvkL,UACvDhyD,KAAK+yO,mBAAmB/tL,MAAMuxL,GAAOvkL,SAAU,MAC/C/0D,GAAQ25D,SAASwgL,mBAAmBD,GAAOv3K,UAC3C3iE,GAAQ65O,UAAYK,GAAOprC,aAC3B9uM,GAAQmuO,MAAQ+L,GAAO/L,MAAMj2O,MACzB8H,GAAQyzO,QAGRzzO,GAAQyzO,OAAO2G,OAAOF,GAAOprC,aAAcorC,GAAO/L,MAAMj2O,OAE5D0gP,GAAsBsB,GAAO/L,MAAMj2O,OACnC6K,KAAK81O,oBAAoBC,EAAY,KAAM94O,GAAQ25D,cAElD,CACD,MAAMvpC,GAoB1B,YAA4B2kC,GACxB,QAAStvD,EAAIsvD,EAAS57D,OAAQsM,EAAGA,EAAIA,EAAEtM,OAAQ,CAC3C,MAAMg1O,EAAQ1oO,EAAE2oO,YAChB,GAAID,GAASA,EAAMkM,cACf,OAAOlM,EAAMkM,cACjB,GAAIlM,GAASA,EAAM73M,UACf,OAAO,KAEf,OAAO,KA5BwBgkN,CAAmBhB,GAAOvkL,UACnCwlL,GAAqBnqN,GAASA,GAAO69F,OAAO27E,yBAA2B,KAC7E5pM,GAAQ65O,UAAY,KACpB75O,GAAQmuO,MAAQmL,GAChBt5O,GAAQs+M,SAAWi8B,GACfv6O,GAAQyzO,QAGRzzO,GAAQyzO,OAAO+G,aAAalB,GAAQiB,IAExCx3O,KAAK81O,oBAAoBC,EAAY,KAAM94O,GAAQ25D,gBAKvD52D,KAAK81O,oBAAoBC,EAAY,KAAMN,IAuB3D,SACI31O,YAAY43O,EAAQxsH,GAChBlrH,KAAK03O,OAASA,EACd13O,KAAKkrH,OAASA,GAwBtB,YAAoB7nH,GAChB,MAAoB,mBAANA,CAAM,CAKxB,YAAmBA,GACf,OAAOA,aAAauqO,GAsBxB,MAAM+J,GAAgBrsH,OAAO,iBAC7B,cACI,OAAOssH,QAAU38G,IACN48G,QAAc58G,EAAIjmI,IAAIytD,GAAKA,EAAEriB,MAAKy9F,OAAK,IAAIi6G,QAAUH,OACvDv3M,KAAK23M,GAAK,CAAClrJ,EAAK2xD,KACjB,IAAIw5F,GAAY,EAChB,OAAOx5F,EAAK5/E,OAAO,CAACq5K,GAAUzqO,GAAK1S,KAC3Bm9O,KAAaN,GACNM,IAEPzqO,KAAQmqO,KACRK,GAAY,GAKXA,IAGW,IAARxqO,IAEA1S,KAAM0jJ,EAAKzsJ,OAAS,IAAKmmP,GAAU1qO,IAIpCyqO,GAHQzqO,IAIhBq/E,IACJ8qJ,KAAgBvvO,QAAOrN,GAAQA,IAAS48O,KAAgB3iP,QAAI+F,GAAQm9O,GAAUn9O,GAAQA,GAAgB,IAATA,IAChG8iI,OAAK,KAgBb,SACI/9H,cACIE,KAAK0wO,OAAS,KACd1wO,KAAKorO,MAAQ,KACbprO,KAAKu7M,SAAW,KAChBv7M,KAAK42D,SAAW,IAAIuhL,GACpBn4O,KAAK82O,UAAY,MAQzB,SACIh3O,cAEIE,KAAK4/D,SAAW,IAAIxqE,IAGxBgjP,qBAAqB/B,EAAW3F,GAC5B,MAAMzzO,EAAU+C,KAAKk3O,mBAAmBb,GACxCp5O,EAAQyzO,OAASA,EACjB1wO,KAAK4/D,SAAStqE,IAAI+gP,EAAWp5O,GAOjCo7O,uBAAuBhC,GACnB,MAAMp5O,EAAU+C,KAAKw2O,WAAWH,GAC5Bp5O,IACAA,EAAQyzO,OAAS,KACjBzzO,EAAQ65O,UAAY,MAO5BF,sBACI,MAAMh3K,EAAW5/D,KAAK4/D,SACtB,YAAKA,SAAW,IAAIxqE,IACbwqE,EAEXw3K,mBAAmBx3K,GACf5/D,KAAK4/D,SAAWA,EAEpBs3K,mBAAmBb,GACf,IAAIp5O,EAAU+C,KAAKw2O,WAAWH,GAC9B,OAAKp5O,IACDA,EAAU,IAAIq7O,GACdt4O,KAAK4/D,SAAStqE,IAAI+gP,EAAWp5O,IAE1BA,EAEXu5O,WAAWH,GACP,OAAOr2O,KAAK4/D,SAASvqE,IAAIghP,IAAc,UA8DzCkC,SAAN,QACIz4O,YAAY21O,EAAgBziN,EAAUuoL,GAAUx6M,GAAMy3O,IAClDx4O,KAAKy1O,eAAiBA,EACtBz1O,KAAKgzB,SAAWA,EAChBhzB,KAAKu7M,SAAWA,GAChBv7M,KAAKw4O,eAAiBA,GACtBx4O,KAAK8wO,UAAY,KACjB9wO,KAAKy4O,gBAAkB,KACvBz4O,KAAK04O,eAAiB,IAAIv7L,MAC1Bn9C,KAAK24O,iBAAmB,IAAIx7L,MAK5Bn9C,KAAK44O,aAAe,IAAIz7L,MAKxBn9C,KAAK64O,aAAe,IAAI17L,MACxBn9C,KAAKe,KAAOA,IAAQuqO,GACpBmK,EAAe2C,qBAAqBp4O,KAAKe,KAAMf,MAGnDgsB,cACIhsB,KAAKy1O,eAAe4C,uBAAuBr4O,KAAKe,MAGpDuxB,WACI,IAAKtyB,KAAK8wO,UAAW,CAGjB,MAAM7zO,EAAU+C,KAAKy1O,eAAee,WAAWx2O,KAAKe,MAChD9D,GAAWA,EAAQmuO,QACfnuO,EAAQ65O,UAER92O,KAAKq3O,OAAOp6O,EAAQ65O,UAAW75O,EAAQmuO,OAIvCprO,KAAKy3O,aAAax6O,EAAQmuO,MAAOnuO,EAAQs+M,UAAY,QAKjEu9B,kBACA,QAAS94O,KAAK8wO,UAMdv9M,gBACA,IAAKvzB,KAAK8wO,UACN,MAAM,IAAIrnM,MAAM,2BACpB,OAAOzpC,KAAK8wO,UAAU/uG,SAEtBg3G,qBACA,IAAK/4O,KAAK8wO,UACN,MAAM,IAAIrnM,MAAM,2BACpB,OAAOzpC,KAAKy4O,gBAEZO,yBACA,OAAIh5O,KAAKy4O,gBACEz4O,KAAKy4O,gBAAgBzmL,SAASl9D,KAElC,GAKXsuM,SACI,IAAKpjM,KAAK8wO,UACN,MAAM,IAAIrnM,MAAM,2BACpBzpC,KAAKgzB,SAASowK,SACd,MAAMpsF,EAAMh3G,KAAK8wO,UACjB,YAAKA,UAAY,KACjB9wO,KAAKy4O,gBAAkB,KACvBz4O,KAAK64O,aAAat7L,KAAKy5D,EAAI+qB,UACpB/qB,EAKXqgI,OAAO1uI,EAAKowI,GACR/4O,KAAK8wO,UAAYnoI,EACjB3oG,KAAKy4O,gBAAkBM,EACvB/4O,KAAKgzB,SAASu4K,OAAO5iG,EAAIklD,UACzB7tJ,KAAK44O,aAAar7L,KAAKorD,EAAIo5B,UAE/B80G,aACI,GAAI72O,KAAK8wO,UAAW,CAChB,MAAM3mL,EAAInqD,KAAKuzB,UACfvzB,KAAK8wO,UAAUl9N,UACf5T,KAAK8wO,UAAY,KACjB9wO,KAAKy4O,gBAAkB,KACvBz4O,KAAK24O,iBAAiBp7L,KAAK4M,IAGnCstL,aAAasB,EAAgBx9B,GACzB,GAAIv7M,KAAK84O,YACL,MAAM,IAAIrvM,MAAM,+CAEpBzpC,KAAKy4O,gBAAkBM,EAEvB,MAEMjgP,IADNyiN,EAAWA,GAAYv7M,KAAKu7M,UACHna,wBAFPpvI,EADc2/K,gBACLtG,YAAY93M,WAGjC0lN,GAAgBj5O,KAAKy1O,eAAeyB,mBAAmBl3O,KAAKe,MAAM61D,SAClEpoC,GAAW,IAAI0qN,GAAeH,EAAgBE,GAAej5O,KAAKgzB,SAASxE,UACjFxuB,KAAK8wO,UAAY9wO,KAAKgzB,SAASw4K,gBAAgB1yM,GAASkH,KAAKgzB,SAASjhC,OAAQy8B,IAG9ExuB,KAAKw4O,eAAe9/F,eACpB14I,KAAK04O,eAAen7L,KAAKv9C,KAAK8wO,UAAU/uG,WAGhDw2G,SAAa5/O,UAAb,0BAAyG4/O,GAAV1/O,MAAwCs/O,IAAxCt/O,MAA2EA,OAA3EA,MAA2GA,OAA3GA,MAAmJ,QAAnJA,MAAuLA,SACtR0/O,EAAa1lG,UADkFh6I,MAC/F,MAA6F0/O,EAA7FnqN,kKAtHMmqN,MA4IN,SACIz4O,YAAYsrO,EAAO6N,EAAe7iP,GAC9B4J,KAAKorO,MAAQA,EACbprO,KAAKi5O,cAAgBA,EACrBj5O,KAAK5J,OAASA,EAElBf,IAAIgR,EAAOyhJ,GACP,OAAIzhJ,IAAUmrO,GACHxxO,KAAKorO,MAEZ/kO,IAAU8xO,GACHn4O,KAAKi5O,cAETj5O,KAAK5J,OAAOf,IAAIgR,EAAOyhJ,QAoBhCqxF,SAAN,SAEAA,SAAsBxgP,UAAtB,0BAAkHwgP,IAClHA,EAAsBlwF,UA3DyEpwJ,MA2D/F,MAAsGsgP,EAAtG/qN,wEA3D+Fv1B,MA2DiF,oBAAhLoyJ,YAAuPstF,IAAvPrwN,kBAHMixN,MAgBN,YAAwB9rN,EAAQ0pC,EAAa,IAEzC,QAASj8D,EAAI,EAAGA,EAAIuyB,EAAOt7B,OAAQ+I,IAAK,CACpC,MAAMswO,EAAQ/9M,EAAOvyB,GAErBs+O,GAAahO,EADIiO,GAAYtiL,EAAYq0K,GACrBkO,EAG5B,YAAsBlO,EAAOkO,GA0DrBlO,EAAMx0K,UACN2iL,GAAenO,EAAMx0K,SAAU0iL,GAGvC,YAAqBviL,EAAYyiL,GAC7B,OAAKA,EAGAziL,GAAeyiL,EAAav4M,KAGxB81B,IAAeyiL,EAAav4M,KACzB,GAAE81B,MAEJA,GAAcyiL,EAAav4M,KAC1Bu4M,EAAav4M,KAGZ,GAAE81B,KAAcyiL,EAAav4M,OAT9B,GAHA81B,EAkBf,YAA2BxR,GACvB,MAAMqR,EAAWrR,EAAEqR,UAAYrR,EAAEqR,SAAS5hE,IAAIykP,IACxCtvL,EAAIyM,EAAW3jE,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIi0C,GAAI,CAAEqR,aAAc3jE,OAAOqe,OAAO,GAAIi0C,GAC3F,OAAK4E,EAAE52B,YAAcqjC,GAAYzM,EAAE36B,eAAkB26B,EAAEumL,QAAUvmL,EAAEumL,SAAWpF,KAC1EnhL,EAAE52B,UAAY4lN,IAEXhvL,EAGX,YAAmBihL,GACf,OAAOA,EAAMsF,QAAUpF,GAM3B,YAA+BoM,EAAQrH,GACnC,MAAMqJ,EAAehC,EAAOtvO,OAAOm9C,GAAKo0L,GAAUp0L,KAAO8qL,GACzDqJ,SAAahmP,QAAQgkP,EAAOtvO,OAAOm9C,GAAKo0L,GAAUp0L,KAAO8qL,IAClDqJ,EAUX,MAAME,GAAY,CACdhjG,SAAS,EACTijG,iBAAkB,GAClBC,kBAAmB,GACnBx7I,WAAY,GACZy7I,wBAAyB,IAE7B,YAAetO,EAAcL,EAAO/iI,GAChC,IAAIvrF,EACJ,GAAmB,KAAfsuN,EAAMnqM,KACN,MAAwB,SAApBmqM,EAAMM,YAAyBD,EAAaE,eAAiBtjI,EAASt2G,OAAS,GACxEkB,OAAOqe,OAAO,GAAIsoO,IAEtB,CACHhjG,SAAS,EACTijG,iBAAkB,GAClBC,kBAAmBzxI,EACnB/J,WAAY,GACZy7I,wBAAyB,IAIjC,MAAMx7I,IADU6sI,EAAM9rI,SAAW06I,IACb3xI,EAAUojI,EAAcL,GAC5C,IAAK7sI,GACD,OAAOtrG,OAAOqe,OAAO,GAAIsoO,IAC7B,MAAMhO,GAAY,GAClBh5O,GAAQ2rG,GAAIqtI,UAAW,CAACvoO,GAAGgwD,MACvBu4K,GAAUv4K,IAAKhwD,GAAE49B,OAErB,MAAMq9D,GAAaC,GAAIstI,SAAS95O,OAAS,EAAIkB,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIs6N,IAAYrtI,GAAIstI,SAASttI,GAAIstI,SAAS95O,OAAS,GAAGusG,YAC3HstI,GACJ,MAAO,CACHh1F,SAAS,EACTijG,iBAAkBt7I,GAAIstI,SACtBiO,kBAAmBzxI,EAASj8F,MAAMmyF,GAAIstI,SAAS95O,QAE/CusG,cACAy7I,wBAAkD,QAAxBj9N,EAAKyhF,GAAIqtI,iBAA8B,IAAP9uN,EAAgBA,EAAK,IAGvF,YAAe2uN,EAAcoO,EAAkBI,EAAgB5sN,EAAQ6sN,GAAyB,aAC5F,GAAID,EAAeloP,OAAS,GAmDhC,WAAkD05O,EAAcwO,EAAgBvC,GAC5E,OAAOA,EAAOt0O,KAAKmiD,GAAK40L,GAAe1O,EAAcwO,EAAgB10L,IAAMo0L,GAAUp0L,KAAO+lL,IAnDxF8O,CAAyC3O,EAAcwO,EAAgB5sN,GAAS,CAChF,MAAM3qB,GAAI,IAAI0sO,GAAgByK,EAkCtC,WAAqCpO,EAAcoO,EAAkBnC,EAAQ2C,GACzE,MAAM97I,GAAM,GACZA,GAAI+sI,IAAkB+O,EACtBA,EAAeC,eAAiB7O,EAChC4O,EAAeE,mBAAqBV,EAAiB9nP,OACrD,UAAWwzD,MAAKmyL,EACZ,GAAe,KAAXnyL,GAAEtkB,MAAe04M,GAAUp0L,MAAO+lL,GAAgB,CAClD,MAAM5oO,GAAI,IAAI0sO,GAAgB,GAAI,IAClC1sO,GAAE43O,eAAiB7O,EACnB/oO,GAAE63O,mBAAqBV,EAAiB9nP,OACxCwsG,GAAIo7I,GAAUp0L,KAAM7iD,GAG5B,OAAO67F,GA/C6Ci8I,CAA4B/O,EAAcoO,EAAkBxsN,EAAQ,IAAI+hN,GAAgB6K,EAAgBxO,EAAa70K,YACrKl0D,UAAE43O,eAAiB7O,EACnB/oO,GAAE63O,mBAAqBV,EAAiB9nP,OACjC,CAAE05O,aAAc/oO,GAAGu3O,eAAgB,IAE9C,GAA8B,IAA1BA,EAAeloP,QA+CvB,YAAkC05O,EAAcwO,EAAgBvC,GAC5D,OAAOA,EAAOt0O,KAAKmiD,GAAK40L,GAAe1O,EAAcwO,EAAgB10L,IA/CjEk1L,CAAyBhP,EAAcwO,EAAgB5sN,GAAS,CAChE,MAAM3qB,GAAI,IAAI0sO,GAAgB3D,EAAapjI,SAUnD,YAAyCojI,EAAcoO,EAAkBI,EAAgBvC,EAAQ9gL,GAAUsjL,IACvG,MAAM37I,GAAM,GACZ,UAAWh5C,MAAKmyL,EACZ,GAAIyC,GAAe1O,EAAcwO,EAAgB10L,MAAOqR,GAAS+iL,GAAUp0L,KAAK,CAC5E,MAAM7iD,GAAI,IAAI0sO,GAAgB,GAAI,IAClC1sO,GAAE43O,eAAiB7O,EAEf/oO,GAAE63O,mBADyB,WAA/B3Q,GAC2B6B,EAAapjI,SAASt2G,OAGtB8nP,EAAiB9nP,OAE5CwsG,GAAIo7I,GAAUp0L,KAAM7iD,GAG5B,OAAOzP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIslD,IAAW2nC,IAzBOm8I,CAAgCjP,EAAcoO,EAAkBI,EAAgB5sN,EAAQo+M,EAAa70K,SAAUsjL,KACpKx3O,UAAE43O,eAAiB7O,EACnB/oO,GAAE63O,mBAAqBV,EAAiB9nP,OACjC,CAAE05O,aAAc/oO,GAAGu3O,kBAE9B,MAAMv3O,GAAI,IAAI0sO,GAAgB3D,EAAapjI,SAAUojI,EAAa70K,UAClEl0D,UAAE43O,eAAiB7O,EACnB/oO,GAAE63O,mBAAqBV,EAAiB9nP,OACjC,CAAE05O,aAAc/oO,GAAGu3O,kBAwC9B,YAAwBxO,EAAcwO,EAAgB10L,GAClD,SAAKkmL,EAAaE,eAAiBsO,EAAeloP,OAAS,IAAsB,SAAhBwzD,EAAEmmL,YAGjD,KAAXnmL,EAAEtkB,IAAS,CAOtB,YAA0BmqM,EAAOuP,EAAYtyI,EAAUqoI,GAYnD,SAAIiJ,GAAUvO,KAAWsF,GACpBA,IAAWpF,IAAmB6O,GAAeQ,EAAYtyI,EAAU+iI,MAGrD,OAAfA,EAAMnqM,MAGHznC,GAAMmhP,EAAYvP,EAAO/iI,GAAUuuC,SAE9C,WAA0B60F,EAAcpjI,EAAUqoI,GAC9C,OAA2B,IAApBroI,EAASt2G,SAAiB05O,EAAa70K,SAAS85K,GAU3D,QACI5wO,YAAY2rO,GACRzrO,KAAKyrO,aAAeA,GAAgB,MAG5C,QACI3rO,YAAY+wO,GACR7wO,KAAK6wO,QAAUA,GAGvB,YAAiBpF,GACb,OAAOlyC,OAAW,IAAIqhD,EAAUnP,IAEpC,YAA0BoP,GACtB,OAAOthD,OAAW,IAAIuhD,EAAiBD,IAgB3C,SACI/6O,YAAYg1J,EAAgBimF,EAAcC,EAAenK,GAASxjN,IAC9DrtB,KAAK+6O,aAAeA,EACpB/6O,KAAKg7O,cAAgBA,EACrBh7O,KAAK6wO,QAAUA,GACf7wO,KAAKqtB,OAASA,GACdrtB,KAAKi7O,gBAAiB,EACtBj7O,KAAKstB,SAAWwnI,EAAez/J,IAAIsyM,OAEvCj9G,QACI,MAAMwwJ,EAAa78O,GAAM2B,KAAK6wO,QAAQ3yN,KAAM,GAAI,GAAIle,KAAKqtB,QAAQo+M,aAO3D0P,EAAmB,IAAI/L,GAAgB8L,EAAW7yI,SAAU6yI,EAAWtkL,UAK7E,OAAOwkL,KAJgBC,mBAAmBr7O,KAAKstB,SAAUttB,KAAKqtB,OAAQ8tN,EAAkB7P,IAC5DlrM,MAAKprC,QAAKmmP,IAC3Bn7O,KAAKs7O,cAAcC,GAAmBJ,IAAmBn7O,KAAK6wO,QAAQr6H,YAAax2G,KAAK6wO,QAAQ1H,YAE1F/oM,MAAKg9F,QAAY/oI,KAC9B,GAAIA,cAAaymP,EAGb,YAAKG,gBAAiB,EAEfj7O,KAAKxG,MAAMnF,GAAEw8O,SAExB,MAAIx8O,cAAaumP,EACP56O,KAAKw7O,aAAannP,IAEtBA,MAGdmF,MAAMw0O,GAKF,OAAOyN,KAJgBJ,mBAAmBr7O,KAAKstB,SAAUttB,KAAKqtB,OAAQ2gN,EAAK9vN,KAAMotN,IACvDlrM,MAAKprC,QAAKmmP,IACzBn7O,KAAKs7O,cAAcC,GAAmBJ,IAAmBnN,EAAKx3H,YAAaw3H,EAAK7E,YAE5E/oM,MAAKg9F,QAAY/oI,KAC5B,MAAIA,cAAaumP,EACP56O,KAAKw7O,aAAannP,IAEtBA,MAGdmnP,aAAannP,GACT,OAAO,IAAIo1C,MAAO,0CAAyCp1C,EAAEo3O,iBAEjE6P,cAAcI,EAAellI,EAAa2yH,GACtC,MAAMjrN,GAAOw9N,EAAcrzI,SAASt2G,OAAS,EACzC,IAAIq9O,GAAgB,GAAI,EAAG9D,IAAiBoQ,IAC5CA,EACJ,OAAO,IAAI9N,GAAQ1vN,GAAMs4F,EAAa2yH,GAE1CkS,mBAAmB/tN,EAAUoqN,EAAQjM,EAAciF,IAC/C,OAAqC,IAAjCjF,EAAapjI,SAASt2G,QAAgB05O,EAAaE,cAC5C3rO,KAAK27O,eAAeruN,EAAUoqN,EAAQjM,GACxCrrM,MAAKprC,QAAK4hE,IAAa,IAAIw4K,GAAgB,GAAIx4K,MAEjD52D,KAAK47O,cAActuN,EAAUm+M,EAAciM,EAAQjM,EAAapjI,SAAUqoI,IAAQ,GAG7FiL,eAAeruN,EAAUoqN,EAAQjM,GAG7B,MAAMoQ,GAAe,GACrB,UAAW9rF,MAAS98J,OAAOC,KAAKu4O,EAAa70K,UAC3B,YAAVm5F,GACA8rF,GAAalgO,QAAQo0I,IAGrB8rF,GAAanoP,KAAKq8J,IAG1B,OAAOj5J,OAAK+kP,IACPz7M,MAAKshH,QAAU+sF,KAChB,MAAM1+E,GAAQ07E,EAAa70K,SAAS63K,IAI9BqN,GAAeC,GAAsBrE,EAAQjJ,IACnD,OAAOzuO,KAAKq7O,mBAAmB/tN,EAAUwuN,GAAc/rF,GAAO0+E,IACzDruM,MAAKprC,QAAI0N,KAAM,CAAE6yG,QAAS7yG,GAAGguO,OAAQjC,SAC1CsJ,GAAK,CAACnhL,GAAUolL,MAChBplL,GAASolL,GAActL,QAAUsL,GAAczmI,QACxC3+C,IACR,IC55FJ,YAAckE,EAAW5lE,GAC5B,MAAM0oI,EAAkBrzC,UAAUx4F,QAAU,EAC5C,OAAQgzC,GAAWA,EAAO3E,KAAK06B,GAAY1yD,QAAO,CAAC/E,GAAGvI,KAAMggE,EAAUz3D,GAAGvI,GAAGiqC,IAAWuuD,KAAU2oJ,GAAS,GAAIr+G,GAAkBE,QAAe5oI,IAAgB6oI,QAAa,IAAM,IAAIpG,OD05F1KukH,IAEZN,cAActuN,EAAUm+M,EAAciM,EAAQrvI,GAAUqoI,GAAQuK,IAC5D,OAAOnkP,OAAK4gP,GAAQt3M,MAAKshH,QAAWn8F,IAEzB42L,KADgBC,0BAA0B9uN,EAAUm+M,EAAciM,EAAQnyL,GAAG8iD,GAAUqoI,GAAQuK,IACrF76M,MAAKg9F,QAAY/oI,KAC9B,GAAIA,cAAaumP,EACb,OAAOn5F,QAAG,MAEd,MAAMptJ,QAEVgsC,OAAO39B,MAAQA,KAAI06H,QAAW,CAAC/oI,GAAG8H,MAClC,GAAI9H,cAAasjI,MAAyB,eAAXtjI,GAAE0M,KAC7B,OAAIs7O,EAAiB5Q,EAAcpjI,GAAUqoI,KAClCjvF,QAAG,IAAI2tF,GAAgB,GAAI,KAE/BwF,GAAQnJ,GAEnB,MAAMp3O,MAGd+nP,0BAA0B9uN,EAAUm+M,EAAciM,EAAQtM,GAAOtnH,GAAO4sH,GAAQuK,IAC5E,OAAKqB,GAAiBlR,GAAOK,EAAc3nH,GAAO4sH,SAGzB97O,IAArBw2O,GAAM1jM,WACC1nC,KAAKu8O,yBAAyBjvN,EAAUm+M,EAAcL,GAAOtnH,GAAO4sH,IAE3EuK,IAAkBj7O,KAAKi7O,eAChBj7O,KAAKw8O,uCAAuClvN,EAAUm+M,EAAciM,EAAQtM,GAAOtnH,GAAO4sH,IAE9FkE,GAAQnJ,GARJmJ,GAAQnJ,GAUvB+Q,uCAAuClvN,EAAUm+M,EAAciM,EAAQtM,GAAO/iI,GAAUqoI,IACpF,MAAmB,OAAftF,GAAMnqM,KACCjhC,KAAKy8O,kDAAkDnvN,EAAUoqN,EAAQtM,GAAOsF,IAEpF1wO,KAAK08O,8CAA8CpvN,EAAUm+M,EAAciM,EAAQtM,GAAO/iI,GAAUqoI,IAE/G+L,kDAAkDnvN,EAAUoqN,EAAQtM,EAAOsF,IACvE,MAAMmK,GAAU76O,KAAK28O,sBAAsB,GAAIvR,EAAM1jM,WAAY,IACjE,OAAI0jM,EAAM1jM,WAAWxsC,WAAW,KACrB0hP,GAAiB/B,IAErB76O,KAAK68O,mBAAmBzR,EAAOyP,IAASz6M,MAAK26F,QAAU+hH,KAC1D,MAAMv2J,GAAQ,IAAI6oJ,GAAgB0N,GAAa,IAC/C,OAAO98O,KAAK47O,cAActuN,EAAUi5D,GAAOmxJ,EAAQoF,GAAapM,IAAQ,MAGhFgM,8CAA8CpvN,EAAUm+M,EAAciM,EAAQtM,GAAO/iI,GAAUqoI,IAC3F,MAAQ95F,WAASijG,oBAAkBC,qBAAmBC,4BAA4BvgP,GAAMiyO,EAAcL,GAAO/iI,IAC7G,IAAKuuC,GACD,OAAOg+F,GAAQnJ,GACnB,MAAMoP,GAAU76O,KAAK28O,sBAAsB9C,GAAkBzO,GAAM1jM,WAAYqyM,IAC/E,OAAI3O,GAAM1jM,WAAWxsC,WAAW,KACrB0hP,GAAiB/B,IAErB76O,KAAK68O,mBAAmBzR,GAAOyP,IAASz6M,MAAK26F,QAAU+hH,IACnD98O,KAAK47O,cAActuN,EAAUm+M,EAAciM,EAAQoF,GAAYj4N,OAAOi1N,IAAoBpJ,IAAQ,KAGjH6L,yBAAyBjvN,EAAUyvN,EAAiB3R,EAAO/iI,GAAUqoI,IACjE,GAAmB,OAAftF,EAAMnqM,KACN,OAAImqM,EAAM57M,cACU47M,EAAMkM,eAAgB71F,QAAG2pF,EAAMkM,eAC3Ct3O,KAAK+6O,aAAav5M,KAAKlU,EAASkB,SAAU48M,IAC/BhrM,MAAKprC,QAAK2iG,KACrByzI,EAAMkM,cAAgB3/I,GACf,IAAIy3I,GAAgB/mI,GAAU,QAGtCo5C,QAAG,IAAI2tF,GAAgB/mI,GAAU,KAE5C,MAAQuuC,WAASijG,oBAAkBC,sBAAsBtgP,GAAMujP,EAAiB3R,EAAO/iI,IACvF,OAAKuuC,GAGEomG,KADmBC,eAAe3vN,EAAU89M,EAAO/iI,IACtCjoE,MAAK26F,QAAUmiH,KAC/B,MAAMC,GAAcD,GAAahyH,OAC3BkyH,GAAcF,GAAaxF,QACzBjM,aAAc4R,GAAmBpD,mBAAmB57O,GAAM0+O,EAAiBlD,GAAkBC,GAAmBsD,IAElH3R,GAAe,IAAI2D,GAAgBiO,GAAkBh1I,SAAUg1I,GAAkBzmL,UACvF,GAA8B,IAA1BqjL,GAAeloP,QAAgB05O,GAAaE,cAE5C,OAAOwQ,KADgBR,eAAewB,GAAaC,GAAa3R,IAC/CrrM,MAAKprC,QAAK4hE,IAAa,IAAIw4K,GAAgByK,GAAkBjjL,MAElF,GAA2B,IAAvBwmL,GAAYrrP,QAA0C,IAA1BkoP,GAAeloP,OAC3C,OAAO0vJ,QAAG,IAAI2tF,GAAgByK,GAAkB,KAEpD,MAAMyD,GAAkB3D,GAAUvO,KAAWsF,GAE7C,OAAOyL,KADgBP,cAAcuB,GAAa1R,GAAc2R,GAAanD,GAAgBqD,GAAkBhS,GAAiBoF,IAAQ,GACvHtwM,MAAKprC,QAAKuoP,IAAO,IAAInO,GAAgByK,GAAiBh1N,OAAO04N,GAAGl1I,UAAWk1I,GAAG3mL,eAjBxFg+K,GAAQmI,GAoBvBE,eAAe3vN,EAAU89M,EAAO/iI,GAC5B,OAAI+iI,EAAMx0K,UAEC6qF,QAAG,IAAI+7F,GAAmBpS,EAAMx0K,SAAUtpC,IAEjD89M,EAAM57M,kBAEsB56B,IAAxBw2O,EAAMkM,eACC71F,QAAG2pF,EAAMkM,eAEbt3O,KAAKy9O,iBAAiBnwN,EAASkB,SAAU48M,EAAO/iI,GAClDjoE,MAAK26F,QAAU2iH,IACZA,GACO19O,KAAK+6O,aAAav5M,KAAKlU,EAASkB,SAAU48M,GAC5ChrM,MAAKprC,QAAK2iG,KACXyzI,EAAMkM,cAAgB3/I,GACfA,MAnN/B,YAAsByzI,GAClB,OAAO7xC,OAAWokD,GAA0B,+DAA8DvS,EAAMnqM,0BAqN7F28M,CAAaxS,MAGrB3pF,QAAG,IAAI+7F,GAAmB,GAAIlwN,IAEzCmwN,iBAAiB3oF,EAAgBs2E,EAAO/iI,GACpC,MAAMw1I,GAAUzS,EAAMyS,QACtB,IAAKA,IAA8B,IAAnBA,GAAQ9rP,OACpB,OAAO0vJ,SAAG,GACd,MAAMq8F,GAAqBD,GAAQ7oP,IAAK+oP,KACpC,MAAMC,GAAQlpF,EAAez/J,IAAI0oP,IACjC,IAAIE,GACJ,GA92BZ,YAAmBD,GACf,OAAOA,GAAS9xJ,GAAW8xJ,EAAMH,SA62BrBK,CAAUF,IACVC,GAAWD,GAAMH,QAAQzS,EAAO/iI,YAE3Bnc,GAAW8xJ,IAIhB,MAAM,IAAIv0M,MAAM,yBAHhBw0M,GAAWD,GAAM5S,EAAO/iI,EAGR,CAEpB,OAAO81I,GAAmBF,MAE9B,OAAOx8F,QAAGq8F,IACL19M,KAAKg+M,MAAyBC,QAAK9mP,KACpC,IAAK2gP,GAAU3gP,IACX,OACJ,MAAMy5B,GAAQ2sN,GAA0B,mBAAkB39O,KAAKg7O,cAAc3N,UAAU91O,QACvFy5B,SAAMzB,IAAMh4B,GACNy5B,MACNh8B,QAAIuC,KAAqB,IAAXA,IAAW,CAEjCslP,mBAAmBzR,EAAOyF,GACtB,IAAItyI,EAAM,GACNp0C,GAAI0mL,EAAQ3yN,KAChB,OAAa,CAET,GADAqgF,EAAMA,EAAI15E,OAAOslC,GAAEk+C,UACQ,IAAvBl+C,GAAEoiL,iBACF,OAAO9qF,QAAGljD,GAEd,GAAIp0C,GAAEoiL,iBAAmB,IAAMpiL,GAAEyM,SAAS00K,IACtC,OAjQL/xC,OAAW,IAAI9vJ,MAAO,gEAiQW2hM,EAAM1jM,gBAEtCyiB,GAAIA,GAAEyM,SAAS00K,KAGvBqR,sBAAsBt0I,EAAU3gE,EAAYkkM,GACxC,OAAO5rO,KAAKs+O,4BAA4B52M,EAAY1nC,KAAKg7O,cAAc7vJ,MAAMzjD,GAAa2gE,EAAUujI,GAExG0S,4BAA4B52M,EAAYmpM,EAASxoI,EAAUujI,IACvD,MAAMkI,GAAU9zO,KAAKu+O,mBAAmB72M,EAAYmpM,EAAQ3yN,KAAMmqF,EAAUujI,IAC5E,OAAO,IAAIgC,GAAQkG,GAAS9zO,KAAKw+O,kBAAkB3N,EAAQr6H,YAAax2G,KAAK6wO,QAAQr6H,aAAcq6H,EAAQ1H,UAE/GqV,kBAAkBC,EAAkBC,GAChC,MAAMngJ,EAAM,GACZ3rG,UAAQ6rP,EAAkB,CAACp7O,GAAGgwD,MAE1B,GADqC,iBAANhwD,IAAkBA,GAAEnI,WAAW,KACzC,CACjB,MAAMyjP,GAAat7O,GAAE3N,UAAU,GAC/B6oG,EAAIlrC,IAAKqrL,EAAaC,SAGtBpgJ,EAAIlrC,IAAKhwD,KAGVk7F,EAEXggJ,mBAAmB72M,EAAY6+C,EAAO8hB,EAAUujI,IAC5C,MAAMgT,GAAkB5+O,KAAK6+O,eAAen3M,EAAY6+C,EAAM8hB,SAAUA,EAAUujI,IAClF,IAAIh1K,GAAW,GACfhkE,UAAQ2zF,EAAM3vB,SAAU,CAACm5F,GAAOhvJ,MAC5B61D,GAAS71D,IAAQf,KAAKu+O,mBAAmB72M,EAAYqoH,GAAO1nD,EAAUujI,MAEnE,IAAIwD,GAAgBwP,GAAiBhoL,IAEhDioL,eAAen3M,EAAYo3M,EAAoBC,EAAgBnT,IAC3D,OAAOkT,EAAmB9pP,IAAI0N,IAAKA,GAAEu+B,KAAK/lC,WAAW,KAAO8E,KAAKg/O,aAAat3M,EAAYhlC,GAAGkpO,IACzF5rO,KAAKi/O,aAAav8O,GAAGq8O,IAE7BC,aAAat3M,EAAYw3M,EAAsBtT,GAC3C,MAAMvvF,GAAMuvF,EAAUsT,EAAqBj+M,KAAKvrC,UAAU,IAC1D,IAAK2mJ,GACD,MAAM,IAAI5yG,MAAO,uBAAsB/B,oBAA6Bw3M,EAAqBj+M,UAC7F,OAAOo7G,GAEX4iG,aAAaC,EAAsBH,GAC/B,IAAInwJ,EAAM,EACV,UAAWlsF,MAAKq8O,EAAgB,CAC5B,GAAIr8O,GAAEu+B,OAASi+M,EAAqBj+M,KAChC89M,SAAezkP,OAAOs0F,GACflsF,GAEXksF,IAEJ,OAAOswJ,GAuBf,YAA4BzT,GACxB,MAAM0T,EAAc,GACpB,UAAW1Q,KAAex7O,OAAOC,KAAKu4O,EAAa70K,UAAW,CAC1D,MACMwoL,GAAiB7D,GADT9P,EAAa70K,SAAS63K,KAGhC2Q,GAAe/2I,SAASt2G,OAAS,GAAKqtP,GAAezT,iBACrDwT,EAAY1Q,GAAe2Q,IAInC,OAvBJ,YAA8B18O,GAC1B,GAA2B,IAAvBA,EAAE6pO,kBAA0B7pO,EAAEk0D,SAAS00K,IAAiB,CACxD,MAAMnhL,EAAIznD,EAAEk0D,SAAS00K,IACrB,OAAO,IAAI8D,GAAgB1sO,EAAE2lG,SAASxjF,OAAOslC,EAAEk+C,UAAWl+C,EAAEyM,UAEhE,OAAOl0D,EAkBA28O,CADG,IAAIjQ,GAAgB3D,EAAapjI,SAAU82I,GACzBz8O,CAsBhC,SACI5C,YAAYmhC,GACRjhC,KAAKihC,KAAOA,EACZjhC,KAAKorO,MAAQprO,KAAKihC,KAAKjhC,KAAKihC,KAAKlvC,OAAS,IAGlD,SACI+N,YAAYyzB,EAAW63M,GACnBprO,KAAKuzB,UAAYA,EACjBvzB,KAAKorO,MAAQA,GAGrB,YAA2BmL,EAAQtE,EAAMwD,GACrC,MAAMC,EAAaa,EAAOzrI,MAE1B,OAAOw0I,EAAoB5J,EADVzD,EAAOA,EAAKnnI,MAAQ,KACY2qI,EAAgB,CAACC,EAAWvgP,QAQjF,WAAkBkR,EAAO2rD,EAAU8iG,GAC/B,MAAMznI,EAIV,WAAgC2kC,GAC5B,IAAKA,EACD,OAAO,KACX,QAAStvD,EAAIsvD,EAAS57D,OAAQsM,EAAGA,EAAIA,EAAEtM,OAAQ,CAC3C,MAAMg1O,EAAQ1oO,EAAE2oO,YAChB,GAAID,GAASA,EAAMkM,cACf,OAAOlM,EAAMkM,cAErB,OAAO,KAZQiI,CAAuBvtL,GAEtC,OADiB3kC,EAASA,EAAO69F,OAAO18F,SAAWsmI,GACnCz/J,IAAIgR,GAYxB,WAA6B0vO,EAAYC,EAAUp2K,EAAU4/K,EAAYC,GAAS,CAC9EC,oBAAqB,GACrBC,kBAAmB,KAEnB,MAAMC,GAAe3J,GAAkBD,GAEvCD,SAAWn/K,SAAShkE,QAAQu3D,MAQhC,YAAwB4rL,EAAYC,EAAUP,EAAgB+J,EAAYC,GAAS,CAC/EC,oBAAqB,GACrBC,kBAAmB,KAEnB,MAAMpJ,GAASR,EAAW5gP,MACpB88O,GAAO+D,EAAWA,EAAS7gP,MAAQ,KACnC8H,GAAUw4O,EAAiBA,EAAee,WAAWT,EAAW5gP,MAAMu7O,QAAU,KAEtF,GAAIuB,IAAQsE,GAAOlL,cAAgB4G,GAAK5G,YAAa,CACjD,MAAMwU,GAqCd,YAAqC5N,EAAMsE,EAAQ39I,GAC/C,GAAoB,mBAATA,EACP,OAAOA,EAAKq5I,EAAMsE,GAEtB,OAAQ39I,OACC,mBACD,OAAQyzI,GAAU4F,EAAK1iN,IAAKgnN,EAAOhnN,SAClC,gCACD,OAAQ88M,GAAU4F,EAAK1iN,IAAKgnN,EAAOhnN,OAC9Bq9M,GAAaqF,EAAKz7H,YAAa+/H,EAAO//H,iBAC1C,SACD,OAAO,MACN,4BACD,OAAQs8H,GAA0Bb,EAAMsE,KACnC3J,GAAaqF,EAAKz7H,YAAa+/H,EAAO//H,aAC1C,QAED,OAAQs8H,GAA0Bb,EAAMsE,IAtD1BuJ,CAA4B7N,GAAMsE,GAAQA,GAAOlL,YAAY0U,uBAC3EF,GACAJ,GAAOE,kBAAkBjsP,KAAK,IAAIssP,GAAYR,KAI9CjJ,GAAOzhP,KAAOm9O,GAAKn9O,KACnByhP,GAAOrE,cAAgBD,GAAKC,eAI5BoN,EAAoBvJ,EAAYC,EADpCpM,GAAWr2M,UACmCt2B,GAAUA,GAAQ25D,SAAW,KAI7B6+K,EAJmC+J,EAAYC,IAMzFI,IAAa5iP,IAAWA,GAAQyzO,QAAUzzO,GAAQyzO,OAAOoI,aACzD2G,GAAOC,oBAAoBhsP,KAAK,IAAIusP,GAAchjP,GAAQyzO,OAAOn9M,UAAW0+M,UAI5EA,IACAqE,GAA8BN,EAAU/4O,GAASwiP,IAErDA,GAAOE,kBAAkBjsP,KAAK,IAAIssP,GAAYR,IAG1CF,EAAoBvJ,EAAY,KADpCnM,GAAWr2M,UAC+Bt2B,GAAUA,GAAQ25D,SAAW,KAI7B6+K,EAJmC+J,EAAYC,GAOtFA,EAnDHS,CAAe/1L,GAAGy1L,GAAaz1L,GAAEh1D,MAAMu7O,QAAS9wK,EAAU4/K,EAAW36N,OAAO,CAACslC,GAAEh1D,QAASsqP,WACjFG,GAAaz1L,GAAEh1D,MAAMu7O,UAGhC99O,GAAQgtP,GAAc,CAACv8O,GAAGgwD,KAAMijL,GAA8BjzO,GAAGu8D,EAAS42K,WAAWnjL,IAAIosL,KAClFA,GAoEX,YAAuCrU,EAAOnuO,EAASwiP,GACnD,MAAM7oL,EAAWq/K,GAAkB7K,GAC7B7lL,GAAI6lL,EAAMj2O,MAChBvC,GAAQgkE,EAAU,CAAC55D,GAAMq5O,MAKjBC,GAA8Bt5O,GAJ7BuoD,GAAEhyB,UAGF4nM,EACmCl+N,EAAQ25D,SAAS4/K,WAAWH,IAG5B,KANAp5O,EAGwCwiP,EAH/BA,GAajDA,EAAOC,oBAAoBhsP,KAAK,IAAIusP,GAJxCld,GAAOxvM,WAGF4nM,GAAel+N,EAAQyzO,QAAUzzO,EAAQyzO,OAAOoI,YACC77O,EAAQyzO,OAAOn9M,UAHf,KAG0BgyB,IAHpBA,CAoJhE,UAEA,YAA4BlxD,GAExB,OAAO,IAAIs+H,IAAYsI,GAAQA,EAAIjqG,MAAM38B,IAmB7C,SACIyL,YAAYqgP,EAAmB9yN,EAAQwjN,EAASthN,GAAKwiN,GAA2BmI,IAC5El6O,KAAKmgP,kBAAoBA,EACzBngP,KAAKqtB,OAASA,EACdrtB,KAAK6wO,QAAUA,EACf7wO,KAAKuvB,IAAMA,GACXvvB,KAAK+xO,0BAA4BA,GACjC/xO,KAAKk6O,uBAAyBA,GAElCkG,YACI,MAAMjF,EAAmB98O,GAAM2B,KAAK6wO,QAAQ3yN,KAAM,GAAI,GAAIle,KAAKqtB,OAAOjlB,OAAO+hD,SAAsBv1D,IAAjBu1D,GAAEziB,YAA2B1nC,KAAKk6O,wBAC/GzO,aACC70K,EAAW52D,KAAKqgP,oBAAoBrgP,KAAKqtB,OAAQ8tN,EAAkB7P,IACzE,GAAiB,OAAb10K,EACA,OAAO,KAIX,MAAM14C,EAAO,IAAI6yN,GAAuB,GAAI99O,OAAO4+G,OAAO,IAAK5+G,OAAO4+G,OAAO5+G,OAAOqe,OAAO,GAAItR,KAAK6wO,QAAQr6H,cAAex2G,KAAK6wO,QAAQ1H,SAAU,GAAImC,GAAgBtrO,KAAKmgP,kBAAmB,KAAMngP,KAAK6wO,QAAQ3yN,MAAM,EAAI,IACrNoiO,GAAW,IAAIrP,GAAS/yN,EAAM04C,GAC9B2pL,GAAa,IAAIvP,GAAoBhxO,KAAKuvB,IAAK+wN,IACrD,YAAKE,qBAAqBD,GAAWz1I,OAC9By1I,GAEXC,qBAAqBC,GACjB,MAAMrV,EAAQqV,EAAUtrP,MAClB2F,EAAI4lP,GAA2BtV,EAAOprO,KAAK+xO,2BACjD3G,EAAMvvO,OAAS5I,OAAO4+G,OAAO/2G,EAAEe,QAC/BuvO,EAAMt2O,KAAO7B,OAAO4+G,OAAO/2G,EAAEhG,MAC7B2rP,EAAU7pL,SAAShkE,QAAQwO,IAAKpB,KAAKwgP,qBAAqBp/O,KAE9Di/O,oBAAoBhzN,EAAQo+M,EAAciF,GACtC,OAAqC,IAAjCjF,EAAapjI,SAASt2G,QAAgB05O,EAAaE,cAC5C3rO,KAAKw0O,gBAAgBnnN,EAAQo+M,GAEjCzrO,KAAK2gP,eAAetzN,EAAQo+M,EAAcA,EAAapjI,SAAUqoI,GAU5E8D,gBAAgBnnN,EAAQo+M,GACpB,MAAM70K,EAAW,GACjB,UAAW63K,MAAex7O,OAAOC,KAAKu4O,EAAa70K,UAAW,CAC1D,MAAMm5F,GAAQ07E,EAAa70K,SAAS63K,IAG9BiL,GAAeqC,GAAsB1uN,EAAQohN,IAC7CmS,GAAiB5gP,KAAKqgP,oBAAoB3G,GAAc3pF,GAAO0+E,IACrE,GAAuB,OAAnBmS,GAGA,OAAO,KAEXhqL,EAASljE,QAAQktP,IAKrB,MAAMC,GAAiBC,GAAsBlqL,GAM7CmqL,OAkER,YAAqC9iO,GACjCA,EAAM/D,KAAK,CAACjD,EAAGC,IACPD,EAAE9hB,MAAMu7O,SAAWpF,IACZ,EACPp0N,EAAE/hB,MAAMu7O,SAAWpF,GACZ,EACJr0N,EAAE9hB,MAAMu7O,OAAO34I,cAAc7gF,EAAE/hB,MAAMu7O,SAxE5CqQ,CAA4BF,IACrBA,GAEXF,eAAetzN,EAAQo+M,EAAcpjI,EAAUqoI,IAC3C,UAAWnrL,MAAKl4B,EAAQ,CACpB,MAAMupC,GAAW52D,KAAKghP,2BAA2Bz7L,GAAGkmL,EAAcpjI,EAAUqoI,IAC5E,GAAiB,OAAb95K,GACA,OAAOA,GAGf,OAAIylL,EAAiB5Q,EAAcpjI,EAAUqoI,IAClC,GAEJ,KAEXsQ,2BAA2B5V,EAAOuP,EAAYtyI,EAAUqoI,IACpD,GAAItF,EAAM1jM,aAAe40M,GAAiBlR,EAAOuP,EAAYtyI,EAAUqoI,IACnE,OAAO,KACX,IAAI1+K,GACA6nL,GAAmB,GACnBC,GAAoB,GACxB,GAAmB,OAAf1O,EAAMnqM,KAAe,CACrB,MAAMplC,GAASwsG,EAASt2G,OAAS,EAAI4jH,GAAKtN,GAAU/J,WAAa,GACjEtsC,GAAW,IAAI++K,GAAuB1oI,EAAUxsG,GAAQ5I,OAAO4+G,OAAO5+G,OAAOqe,OAAO,GAAItR,KAAK6wO,QAAQr6H,cAAex2G,KAAK6wO,QAAQ1H,SAAUniJ,GAAQokJ,GAAQuO,GAAUvO,GAAQA,EAAM73M,UAAW63M,EAAO6V,GAAsBtG,GAAauG,GAAkBvG,GAActyI,EAASt2G,OAAQovP,GAAW/V,QAEnS,CACD,MAAM7zO,GAASiC,GAAMmhP,EAAYvP,EAAO/iI,GACxC,IAAK9wG,GAAOq/I,QACR,OAAO,KAEXijG,GAAmBtiP,GAAOsiP,iBAC1BC,GAAoBviP,GAAOuiP,kBAC3B9nL,GAAW,IAAI++K,GAAuB8I,GAAkBtiP,GAAO+mG,WAAYrrG,OAAO4+G,OAAO5+G,OAAOqe,OAAO,GAAItR,KAAK6wO,QAAQr6H,cAAex2G,KAAK6wO,QAAQ1H,SAAUniJ,GAAQokJ,GAAQuO,GAAUvO,GAAQA,EAAM73M,UAAW63M,EAAO6V,GAAsBtG,GAAauG,GAAkBvG,GAAcd,GAAiB9nP,OAAQovP,GAAW/V,IAEnU,MAAMgS,GAyCd,YAAwBhS,GACpB,OAAIA,EAAMx0K,SACCw0K,EAAMx0K,SAEbw0K,EAAM57M,aACC47M,EAAMkM,cAAcI,OAExB,GAhDiBuF,CAAe7R,IAC3BK,gBAAcwO,mBAAmB57O,GAAMs8O,EAAYd,GAAkBC,GAI7EsD,GAAYh1O,OAAO+hD,SAAsBv1D,IAAjBu1D,GAAEziB,YAA2B1nC,KAAKk6O,wBAC1D,GAA8B,IAA1BD,GAAeloP,QAAgB05O,GAAaE,cAAe,CAC3D,MAAM/0K,GAAW52D,KAAKw0O,gBAAgB4I,GAAa3R,IACnD,OAAiB,OAAb70K,GACO,KAEJ,CAAC,IAAIq6K,GAASj/K,GAAU4E,KAEnC,GAA2B,IAAvBwmL,GAAYrrP,QAA0C,IAA1BkoP,GAAeloP,OAC3C,MAAO,CAAC,IAAIk/O,GAASj/K,GAAU,KAEnC,MAAMsrL,GAAkB3D,GAAUvO,KAAWsF,GASvC95K,GAAW52D,KAAK2gP,eAAevD,GAAa3R,GAAcwO,GAAgBqD,GAAkBhS,GAAiBoF,IACnH,OAAiB,OAAb95K,GACO,KAEJ,CAAC,IAAIq6K,GAASj/K,GAAU4E,MAqBvC,YAA4B55D,GACxB,MAAMqwB,EAASrwB,EAAK7H,MAAMk2O,YAC1B,OAAOh+M,GAA0B,KAAhBA,EAAO4T,WAAqCrsC,IAAtBy4B,EAAOqa,UAAe9yC,CAOjE,YAA+BqpB,GAC3B,MAAM1mB,EAAS,GAET6pP,EAAc,IAAIpiP,IACxB,UAAWhC,KAAQihB,EAAO,CACtB,IAAKojO,GAAmBrkP,GAAO,CAC3BzF,EAAO7D,KAAKsJ,GACZ,SAEJ,MAAMskP,GAAyB/pP,EAAO6O,KAAKm7O,IAAcvkP,EAAK7H,MAAMk2O,cAAgBkW,GAAWpsP,MAAMk2O,kBACtEz2O,IAA3B0sP,IACAA,GAAuB1qL,SAASljE,QAAQsJ,EAAK45D,UAC7CwqL,EAAYp/O,IAAIs/O,KAGhB/pP,EAAO7D,KAAKsJ,GAOpB,UAAWwkP,KAAcJ,EAAa,CAClC,MAAMP,GAAiBC,GAAsBU,EAAW5qL,UACxDr/D,EAAO7D,KAAK,IAAIu9O,GAASuQ,EAAWrsP,MAAO0rP,KAE/C,OAAOtpP,EAAO6Q,OAAOhH,IAAMggP,EAAY/hP,IAAI+B,IAc/C,YAA+BqqO,GAC3B,IAAI/oO,EAAI+oO,EACR,KAAO/oO,EAAE43O,gBACL53O,EAAIA,EAAE43O,eAEV,OAAO53O,EAEX,YAA2B+oO,GACvB,IAAI/oO,EAAI+oO,EACJltI,EAAO77F,EAAE63O,mBAAqB73O,EAAE63O,mBAAqB,EACzD,KAAO73O,EAAE43O,gBACL53O,EAAIA,EAAE43O,eACN/7I,GAAQ77F,EAAE63O,mBAAqB73O,EAAE63O,mBAAqB,EAE1D,OAAOh8I,EAAM,EAEjB,YAAiB6sI,GACb,OAAOA,EAAMt2O,MAAQ,GAEzB,YAAoBs2O,GAChB,OAAOA,EAAMvuN,SAAW,GA4D5B,YAAqBriB,GACjB,MAAO,IAAIvH,OAAOC,KAAKsH,MAASvH,OAAO6rO,sBAAsBtkO,IAqBjE,YAAmBiC,GACf,OAAOm7O,QAAUv0O,IACb,MAAMo+O,EAAahlP,EAAK4G,GACxB,OAAIo+O,GACO3qP,OAAK2qP,GAAYrhN,MAAKprC,QAAI,IAAMqO,KAEpCo+I,QAAGp+I,KAkElB,iBA7BA,SAKIozO,aAAarL,GACT,OAAO,EAKXpmL,MAAMomL,EAAOsW,GAAc,CAE3BtO,aAAahI,GACT,OAAO,EAGXkI,SAASlI,GACL,OAAO,KAOX6H,iBAAiBsD,EAAQtE,GACrB,OAAOsE,EAAOlL,cAAgB4G,EAAK5G,eAuB3C,MAAMsW,GAAS,IAAIz1N,MAAe,UAClC,SACIpsB,YAAY0uB,EAAUozN,EAAUC,EAAqBC,IACjD9hP,KAAKwuB,SAAWA,EAChBxuB,KAAK4hP,SAAWA,EAChB5hP,KAAK6hP,oBAAsBA,EAC3B7hP,KAAK8hP,kBAAoBA,GAE7BtgN,KAAKkmK,EAAgB0jC,GACjB,GAAIA,EAAM2W,SACN,OAAO3W,EAAM2W,SAEb/hP,KAAK6hP,qBACL7hP,KAAK6hP,oBAAoBzW,GAG7B,MAAM4W,GAAaC,KADSC,kBAAkB9W,EAAM57M,cAClB4Q,MAAKprC,QAAK8D,KACpCkH,KAAK8hP,mBACL9hP,KAAK8hP,kBAAkB1W,GAE3B,MAAMlgH,GAASpyH,GAAQiU,OAAO26L,GAK9B,OAAO,IAAI81C,GAt1GvB,YAAiBhhP,GACb,OAAO3F,MAAM4zF,UAAU5lE,OAAO6lE,MAAM,GAAIluF,GAq1GFw9J,CAAQ9uC,GAAO18F,SAASn5B,IAAIssP,QAAQ/sP,EAAW0yJ,WAAmBA,iBAC3FtyJ,IAAIykP,IAAoBvuH,OAC7BkS,QAAYrsG,KACZq6M,QAAM2W,cAAWntP,EACXm8B,MAGVq6M,SAAM2W,SAAW,IAAII,GAAsBH,GAAY,IAAM,IAAI/vH,KAC5D7xF,KAAKi/F,MACH+rG,EAAM2W,SAEjBG,kBAAkB1yN,GACd,OAAO2uN,GAAmB3uN,KAAgB4Q,MAAK26F,QAAUp1C,GACjDA,aAAaksH,OACNpwD,QAAG97D,IAGH7uF,OAAKkJ,KAAK4hP,SAAS9vC,mBAAmBnsH,OAyB7D,SACIy8J,iBAAiB7yN,GACb,OAAO,EAEX8yN,QAAQ9yN,GACJ,OAAOA,EAEX8hC,MAAMixL,EAAYC,GACd,OAAOD,GAIf,YAA6BtxN,GACzB,MAAMA,EAEV,YAAyCA,EAAOgqN,EAAezrN,GAC3D,OAAOyrN,EAAc7vJ,MAAM,KAK/B,YAA2Bn5B,EAAUwwL,GACjC,OAAO/gG,QAAG,MAMd,MAAMghG,GAAoB,CACtB3+H,MAAO,QACPqlH,SAAU,UACViD,aAAc,UACd51H,YAAa,SAMXksI,GAAqB,CACvB5+H,MAAO,SACPqlH,SAAU,UACViD,aAAc,UACd51H,YAAa,cAcXmsI,SAAN,QAKI7iP,YAAYqgP,EAAmBnF,EAAe4H,GAAc5vN,GAAUxE,GAAUozN,GAAUv0N,IACtFrtB,KAAKmgP,kBAAoBA,EACzBngP,KAAKg7O,cAAgBA,EACrBh7O,KAAK4iP,aAAeA,GACpB5iP,KAAKgzB,SAAWA,GAChBhzB,KAAKqtB,OAASA,GACdrtB,KAAK6iP,yBAA2B,KAChC7iP,KAAK8iP,kBAAoB,KACzB9iP,KAAK+iP,UAAW,EAChB/iP,KAAKgjP,aAAe,EASpBhjP,KAAKijP,cAAgB,EACrBjjP,KAAKkjP,iBAAkB,EAIvBljP,KAAKmjP,OAAS,IAAIlxH,IAIlBjyH,KAAKmnH,aAAela,GAOpBjtG,KAAKojP,yBAA2BC,GAKhCrjP,KAAKsjP,WAAY,EACjBtjP,KAAKujP,kBAAmB,EAQxBvjP,KAAKusG,MAAQ,CAAEi3I,oBAAqBC,GAAmBC,mBAAoBD,IAK3EzjP,KAAK2jP,oBAAsB,IAAIC,GAI/B5jP,KAAK+yO,mBAAqB,IAAI8Q,GAc9B7jP,KAAK8jP,oBAAsB,SAU3B9jP,KAAK+xO,0BAA4B,YAQjC/xO,KAAK+jP,kBAAoB,WAKzB/jP,KAAKk6O,uBAAyB,YAuB9Bl6O,KAAKgkP,6BAA+B,UAGpChkP,KAAKstB,SAAWkB,GAASn5B,IAAIsyM,OAC7B3nM,KAAKivB,QAAUT,GAASn5B,IAAI4uP,OAC5B,MAAM9qC,GAAS3qL,GAASn5B,IAAIw3B,OAC5B7sB,KAAKkjP,gBAAkB/pC,cAAkBtsL,OAAUA,wBACnD7sB,KAAKkkP,YAAY72N,IACjBrtB,KAAKmkP,eAhhHb,cACI,OAAO,IAAIvW,GAAQ,IAAIwB,GAAgB,GAAI,IAAK,GAAI,MA+gH1BgV,GACtBpkP,KAAKqkP,WAAarkP,KAAKmkP,eACvBnkP,KAAKskP,eAAiBtkP,KAAKmkP,eAC3BnkP,KAAK+6O,aAAe,IAAIwJ,GAAmB/1N,GAAUozN,GAVhCr8L,IAAMvlD,KAAKwkP,aAAa,IAAIC,GAAqBl/L,KACnDA,IAAMvlD,KAAKwkP,aAAa,IAAIE,GAAmBn/L,MAUlEvlD,KAAK2kP,YAAcC,GAAiB5kP,KAAKmkP,eAAgBnkP,KAAKmgP,mBAC9DngP,KAAKc,YAAc,IAAIswO,IAAgB,CACnCn+N,GAAI,EACJ4xO,aAAc,EACdV,eAAgBnkP,KAAKmkP,eACrBW,cAAe9kP,KAAKmkP,eACpBY,aAAc/kP,KAAK2jP,oBAAoBtB,QAAQriP,KAAKmkP,gBACpDjZ,kBAAmBlrO,KAAK2jP,oBAAoBtB,QAAQriP,KAAKmkP,gBACzDa,OAAQhlP,KAAKmkP,eACbc,OAAQ,GACRpoO,QAAS,KACTsxC,OAAQ,KACR1kC,QAAS7M,QAAQC,SAAQ,GACzBkoB,OAAQ,aACRkmM,cAAe,KACfjlN,gBAAiBhmB,KAAK2kP,YAAY3yL,SAClCkzL,eAAgB,KAChBC,mBAAoBnlP,KAAK2kP,YACzBS,kBAAmB,KACnB1oF,OAAQ,CAAEijF,kBAAmB,GAAID,oBAAqB,IACtD2F,aAAc,OAElBrlP,KAAKslP,YAActlP,KAAKulP,iBAAiBvlP,KAAKc,aAC9Cd,KAAKwlP,qBAOLC,oBACA,IAAI3oO,EACJ,OAA2C,QAAnCA,EAAK9c,KAAKgzB,SAASg3E,kBAA+B,IAAPltF,OAAgB,EAASA,EAAG4oO,mBAEnFH,iBAAiBzkP,GACb,MAAM6kP,EAAgB3lP,KAAKmjP,OAC3B,OAAOriP,EAAYs/B,MAAKh4B,QAAOu9E,IAAc,IAATA,GAAE1yE,KAEtCje,QAAI2wF,IAAM1yF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,IAAI,CAAEo/J,aAAc/kP,KAAK2jP,oBAAoBtB,QAAQ18J,GAAEq/J,YAEjGpN,QAAUjyJ,KACN,IAAIigK,IAAY,EACZjzJ,IAAU,EACd,OAAO8uD,QAAG97D,IAAGvlD,MAEbi+M,QAAI14J,KACA3lF,KAAK8iP,kBAAoB,CACrB7vO,GAAI0yE,GAAE1yE,GACN4yO,WAAYlgK,GAAEm/J,cACdC,aAAcp/J,GAAEo/J,aAChBluO,QAAS8uE,GAAE5gD,OACXkgN,OAAQt/J,GAAEs/J,OACVa,mBAAoB9lP,KAAK6iP,yBAA2B5vP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAItR,KAAK6iP,0BAA2B,CAAEiD,mBAAoB,OACtI,SAERlO,QAAUjyJ,KACV,MAAM2+J,GAAiBtkP,KAAKskP,eAAe1yP,WACrCm0P,IAAiB/lP,KAAKsjP,WACxB39J,GAAEo/J,aAAanzP,aAAe0yP,IAK9BA,KAAmBtkP,KAAKmkP,eAAevyP,WAG3C,IAFwD,WAA7BoO,KAAK8jP,qBAA0CiC,KACtE/lP,KAAK2jP,oBAAoBvB,iBAAiBz8J,GAAEq/J,QAI5C,OAAIgB,GAA6BrgK,GAAE5gD,UAC/B/kC,KAAKskP,eAAiB3+J,GAAEo/J,eAErBtjG,QAAG97D,IAAGvlD,MAEbw3M,QAAUjyJ,KACN,MAAMtkF,GAAarB,KAAKc,YAAYqxH,WAEpC,OADAwzH,EAAclpP,KAAK,IAAIwpP,GAAgBtgK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAep/J,GAAE5gD,OAAQ4gD,GAAEslJ,gBACxF5pO,KAAerB,KAAKc,YAAYqxH,WACzBiF,KAIJx6G,QAAQC,QAAQ8oE,MA3hC/C,YAAwBmvE,EAAgBimF,EAAcC,EAAe3tN,GACjE,OAAOuqN,QAAUjyJ,IAzVrB,YAA0BmvE,EAAgBimF,EAAcC,EAAenK,EAASxjN,IAC5E,OAAO,IAAI84N,GAAerxF,EAAgBimF,EAAcC,EAAenK,EAASxjN,IAAQq9D,QAwVlE07J,CAAiBtxF,EAAgBimF,EAAcC,EAAer1J,GAAEo/J,aAAc13N,GAC/F+S,MAAKprC,QAAIk2O,IAAsBj4O,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,IAAI,CAAEulJ,0BA4hC1Dmb,CAAermP,KAAKstB,SAASkB,SAAUxuB,KAAK+6O,aAAc/6O,KAAKg7O,cAAeh7O,KAAKqtB,SAGnFgxN,QAAI14J,KACA3lF,KAAK8iP,kBAAoB7vP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAItR,KAAK8iP,mBAAoB,CAAEwD,SAAU3gK,GAAEulJ,sBA9fxH,YAAmBiV,EAAmB9yN,EAAQk5N,EAAYxU,EAA2BmI,IACjF,OAAOn/G,QAASp1C,IA1PpB,YAAqBw6J,EAAmB9yN,EAAQwjN,EAASthN,EAAKwiN,GAA4B,YAAamI,GAAyB,UAC5H,IACI,MAAM3iP,GAAS,IAAIivP,GAAWrG,EAAmB9yN,EAAQwjN,EAASthN,EAAKwiN,GAA2BmI,IAC7FkG,YACL,OAAe,OAAX7oP,GACOkvP,GAAmB,IAAIC,KAGvBjlG,QAAGlqJ,GAMYlD,CANZkD,MAGXlD,IAGH,OAAOoyP,GAAmBpyP,KA4OTsyP,CAAYxG,EAAmB9yN,EAAQs4D,GAAEulJ,kBAAmBqb,EAAW5gK,GAAEulJ,mBAAoB6G,EAA2BmI,IACxI95M,MAAKprC,QAAIkwP,IAAmBjyP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,IAAI,CAAEu/J,uBA+fvD9E,CAAUpgP,KAAKmgP,kBAAmBngP,KAAKqtB,OAASkC,IAAQvvB,KAAKkmP,aAAa32N,IAAMvvB,KAAK+xO,0BAA2B/xO,KAAKk6O,yBAErHmE,QAAI14J,KACA,GAA+B,UAA3B3lF,KAAK+jP,kBAA+B,CACpC,IAAKp+J,GAAEs/J,OAAO2B,mBAAoB,CAC9B,MAAM5B,GAAShlP,KAAK2jP,oBAAoBtyL,MAAMs0B,GAAEulJ,kBAAmBvlJ,GAAEq/J,QACrEhlP,KAAK6mP,cAAc7B,GAAQr/J,IAE/B3lF,KAAKskP,eAAiB3+J,GAAEulJ,kBAG5B,MAAM4b,GAAmB,IAAIC,GAAiBphK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe/kP,KAAKkmP,aAAavgK,GAAEulJ,mBAAoBvlJ,GAAEu/J,gBACjIS,EAAclpP,KAAKqqP,OASvB,GAL2Bf,IAAiB/lP,KAAKqkP,YAC7CrkP,KAAK2jP,oBAAoBvB,iBAAiBpiP,KAAKqkP,YAI3B,CACpB,MAAQpxO,MAAI8xO,gBAAchgN,UAAQkmM,iBAAega,WAAWt/J,GACtDqhK,GAAW,IAAIf,GAAgBhzO,GAAIjT,KAAKkmP,aAAanB,IAAehgN,GAAQkmM,IAClF0a,EAAclpP,KAAKuqP,IACnB,MAAM9B,GAAiBN,GAAiBG,GAAc/kP,KAAKmgP,mBAAmBnuL,SAC9E,OAAOyvF,QAAGxuJ,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,IAAI,CAAEu/J,kBAAgBha,kBAAmB6Z,GAAcE,OAAQhyP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI2zO,IAAS,CAAE2B,oBAAoB,EAAOK,YAAY,OAQ3L,YAAK5C,WAAa1+J,GAAEq/J,OACpBr/J,GAAE9oE,QAAQ,MACHu6G,OAKnB8vH,GAAUvhK,KACN,MAAQu/J,kBAAgBjyO,GAAI+vO,GAAc+B,aAAcoC,GAAgBnC,OAAQX,GAAYY,QAAU2B,sBAAoBK,gBAAiBthK,GAC3I,OAAO3lF,KAAKusG,MAAMi3I,oBAAoB0B,GAAgB,CAClDlC,gBACAmE,kBACA9C,cACAuC,qBAAsBA,GACtBK,aAAcA,QAItB5I,QAAI14J,KACA,MAAMyhK,GAAc,IAAIC,GAAiB1hK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe/kP,KAAKkmP,aAAavgK,GAAEulJ,mBAAoBvlJ,GAAEu/J,gBAC5HllP,KAAKwkP,aAAa4C,OAClBpyP,QAAI2wF,IAAM1yF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,IAAI,CAAE+2E,OAAQ4qF,GAAkB3hK,GAAEu/J,eAAgBv/J,GAAE3/D,gBAAiBhmB,KAAK4iP,iBA17BpI,YAAqB9tF,EAAgBygF,GACjC,OAAOx6G,QAASp1C,IACZ,MAAQu/J,iBAAgBl/N,mBAAiB02I,QAAUijF,qBAAmBD,yBAA0B/5J,EAChG,OAAmC,IAA/B+5J,GAAoB3tP,QAA6C,IAA7B4tP,GAAkB5tP,QAC/C0vJ,QAAGxuJ,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,GAAI,CAAE0/J,cAAc,KAU1E,YAAgC5F,EAAQ8H,EAAWC,EAAS1yF,GACxD,OAAOh+J,OAAK2oP,GAAQr/M,MAAK26F,QAASsjF,IAwFtC,YAA0B9qL,EAAWk0N,EAASD,EAASD,EAAWzyF,IAC9D,MAAM4yF,GAAgBD,GAAWA,EAAQpc,YAAcoc,EAAQpc,YAAYqc,cAAgB,KAC3F,IAAKA,IAA0C,IAAzBA,GAAc31P,OAChC,OAAO0vJ,SAAG,GACd,MAAMkmG,GAA2BD,GAAc1yP,IAAKm1D,KAChD,MAAM6zL,GAAQj3I,EAAS58C,GAAGs9L,EAAS3yF,IACnC,IAAIhiC,GACJ,GAnvCR,YAAyBkrH,GACrB,OAAOA,GAAS9xJ,GAAW8xJ,EAAM0J,eAkvCzBE,CAAgB5J,IAChBlrH,GAAaqrH,GAAmBH,GAAM0J,cAAcn0N,EAAWk0N,EAASD,EAASD,aAE5Er7J,GAAW8xJ,IAIhB,MAAM,IAAIv0M,MAAM,+BAHhBqpF,GAAaqrH,GAAmBH,GAAMzqN,EAAWk0N,EAASD,EAASD,GAGnD,CAEpB,OAAOz0H,GAAW1yF,MAAKC,YAE3B,OAAOohH,QAAGkmG,IAA0BvnN,KAAKg+M,MA1GEyJ,CAAiBxpC,GAAM9qL,UAAW8qL,GAAM+sB,MAAOoc,EAASD,EAAWzyF,KAAkBz0H,OAAM9oC,KAChH,IAAXA,IACR,IAXQuwP,CAAuBpI,GAAqBwF,EAAgBl/N,GAAiB8uI,GAC/E10H,MAAK26F,QAAS2sH,IACRA,IA5pCnB,YAAmBrkP,GACf,MAAoB,kBAANA,CAAM,CA2pCY0kP,CAAUL,IAW9C,YAA8BhW,EAAgB+N,EAAQ3qF,EAAgBygF,GAClE,OAAOz+O,OAAK2oP,GAAQr/M,MAAKshH,QAAW28D,KACzBx5L,QA2Bf,YAAkCmtC,EAAUujL,GACxC,OAAiB,OAAbvjL,GAAqBujL,GACrBA,EAAa,IAAIyS,GAAqBh2L,KAEnCyvF,SAAG,GA/BQwmG,CAAyB5pC,GAAM+sB,MAAMh1O,OAAQm/O,GAanE,YAA6BvjL,EAAUujL,GACnC,OAAiB,OAAbvjL,GAAqBujL,GACrBA,EAAa,IAAI2S,GAAgBl2L,KAE9ByvF,SAAG,GAjBoE0mG,CAAoB9pC,GAAM+sB,MAAOmK,GAuDnH,YAA6BgS,EAAWtmN,EAAM6zH,GAC1C,MAAMszF,EAAYnnN,EAAKA,EAAKlvC,OAAS,GAK/Bs2P,GAA+BC,EAJDl8O,MAAM,EAAG60B,EAAKlvC,OAAS,GACtDg5F,UACA/1F,IAAIqlB,IArNb,WAA6BA,GACzB,MAAMkuO,EAAmBluO,EAAEgxN,YAAchxN,EAAEgxN,YAAYkd,iBAAmB,KAC1E,OAAKA,GAAgD,IAA5BA,EAAiBx2P,OAEnC,CAAEiL,KAAMqd,EAAGqiJ,OAAQ6rF,GADf,IACeA,CAiNZC,CAAoBnuO,KAC7BjS,OAAOjM,IAAW,OAANA,IAC2CnH,IAAK2mC,IACtDk+E,EAAM,KACT,MAAM4uI,GAAe9sN,GAAE+gI,OAAO1nK,IAAKm1D,KAC/B,MAAM6zL,GAAQj3I,EAAS58C,GAAGxuB,GAAE3+B,KAAM83J,GAClC,IAAIhiC,GACJ,GA/tChB,YAA4BkrH,GACxB,OAAOA,GAAS9xJ,GAAW8xJ,EAAMuK,kBA8tCjBG,CAAmB1K,IACnBlrH,GAAaqrH,GAAmBH,GAAMuK,iBAAiBH,EAAWb,aAE7Dr7J,GAAW8xJ,IAIhB,MAAM,IAAIv0M,MAAM,kCAHhBqpF,GAAaqrH,GAAmBH,GAAMoK,EAAWb,GAGjC,CAEpB,OAAOz0H,GAAW1yF,MAAKC,YAE3B,OAAOohH,QAAGgnG,IAAcroN,KAAKg+M,SAGrC,OAAO38F,QAAG4mG,IAA8BjoN,KAAKg+M,MAhFiFuK,CAAoBjX,EAAgBrzB,GAAMp9K,KAAM6zH,GAiClL,YAAwByyF,EAAWa,EAAWtzF,GAC1C,MAAM8zF,EAAcR,EAAU/c,YAAc+c,EAAU/c,YAAYud,YAAc,KAChF,IAAKA,GAAsC,IAAvBA,EAAY72P,OAC5B,OAAO0vJ,SAAG,GACd,MAAMonG,GAAyBD,EAAY5zP,IAAKm1D,IACrC0vD,EAAM,KACT,MAAMmkI,GAAQj3I,EAAS58C,GAAGi+L,EAAWtzF,GACrC,IAAIhiC,GACJ,GAzsCZ,YAAuBkrH,GACnB,OAAOA,GAAS9xJ,GAAW8xJ,EAAM4K,aAwsCrBE,CAAc9K,IACdlrH,GAAaqrH,GAAmBH,GAAM4K,YAAYR,EAAWb,aAExDr7J,GAAW8xJ,IAIhB,MAAM,IAAIv0M,MAAM,6BAHhBqpF,GAAaqrH,GAAmBH,GAAMoK,EAAWb,GAGjC,CAEpB,OAAOz0H,GAAW1yF,MAAKC,aAG/B,OAAOohH,QAAGonG,IAAwBzoN,KAAKg+M,MArDwJ2K,CAAerX,EAAgBrzB,GAAM+sB,MAAOt2E,MACvOz0H,OAAM9oC,KACY,IAAXA,IACR,IAfSyxP,CAAqB9D,EAAgBvF,GAAmB7qF,EAAgBygF,IACxE9zF,QAAGimG,MACP1yP,QAAIqwP,IAAiBpyP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,GAAI,CAAE0/J,sBA+6BiF4D,CAAYjpP,KAAKstB,SAASkB,SAAWmrF,IAAQ35G,KAAKwkP,aAAa7qI,MAAO0kI,QAAI14J,KAClN,GAAIuyJ,GAAUvyJ,GAAE0/J,cAAe,CAC3B,MAAMr0N,GAAQ2sN,GAA0B,mBAAkB39O,KAAKkmP,aAAavgK,GAAE0/J,kBAC9Er0N,SAAMzB,IAAMo2D,GAAE0/J,aACRr0N,GAEV,MAAMk4N,GAAY,IAAIC,GAAexjK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe/kP,KAAKkmP,aAAavgK,GAAEulJ,mBAAoBvlJ,GAAEu/J,iBAAkBv/J,GAAE0/J,cAC5IrlP,KAAKwkP,aAAa0E,OAClB9gP,QAAOu9E,MACFA,GAAE0/J,eACHrlP,KAAKopP,eAAezjK,IACpB3lF,KAAKqpP,2BAA2B1jK,GAAG,KAC5B,IAKfuhK,GAAUvhK,KACN,GAAIA,GAAE+2E,OAAOijF,kBAAkB5tP,OAC3B,OAAO0vJ,QAAG97D,IAAGvlD,MAAKi+M,QAAI14J,KAClB,MAAM2jK,GAAe,IAAIC,GAAa5jK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe/kP,KAAKkmP,aAAavgK,GAAEulJ,mBAAoBvlJ,GAAEu/J,gBACzHllP,KAAKwkP,aAAa8E,OAClB1R,QAAUjyJ,KACV,IAAI6jK,IAAe,EACnB,OAAO/nG,QAAG97D,IAAGvlD,KApkBrC,YAAqB2xM,EAA2Bj9E,GAC5C,OAAO/5B,QAASp1C,IACZ,MAAQu/J,iBAAgBxoF,QAAUijF,uBAAwBh6J,EAC1D,IAAKg6J,GAAkB5tP,OACnB,OAAO0vJ,QAAG97D,GAEd,IAAI8jK,GAA4B,EAChC,OAAO3yP,OAAK6oP,IACPv/M,MAAKshH,QAAU28D,IAG5B,YAAoB+pC,EAAWb,EAAWxV,EAA2Bj9E,GAEjE,OAOJ,YAAqBj4I,EAASurO,EAAWb,EAAWzyF,GAChD,MAAM5hK,GAAOw2P,GAAY7sO,GACzB,GAAoB,IAAhB3pB,GAAKnB,OACL,OAAO0vJ,QAAG,IAEd,MAAM3sJ,GAAO,GACb,OAAOgC,OAAK5D,IAAMktC,MAAK26F,QAAS9lI,IAepC,YAAqB8oP,EAAgBqK,EAAWb,EAAWzyF,GACvD,MAAMymD,GAAWx0G,EAASg3I,EAAgBqK,EAAWtzF,GACrD,OAA0BqpF,GAAnB5iC,GAAS1+L,QAA6B0+L,GAAS1+L,QAAQurO,EAAWb,GAClDhsC,GAAS6sC,EAAWb,IAlBJoC,CAAY9sO,EAAQ5nB,IAAMmzP,EAAWb,EAAWzyF,GAClF10H,MAAKi+M,QAAKlpP,KACXL,GAAKG,IAAOE,OACV8mP,GAAS,IAAIlhH,QAAS,IAGpB2uH,GAAY50P,IAAM/C,SAAWmB,GAAKnB,QAC3B0vJ,QAAG3sJ,IAEPsiI,OAtBJwyH,CADSxB,EAAU5V,SACE4V,EAAWb,EAAWzyF,GAC7C10H,MAAKprC,QAAK60P,KACXzB,EAAUlW,cAAgB2X,GAC1BzB,EAAUtzP,KAAO7B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI82O,EAAUtzP,MAAO4rP,GAA2B0H,EAAWrW,GAA2Bl1N,SAC5H,QATsBitO,CAAWzrC,GAAM+sB,MAAO8Z,EAAgBnT,EAA2Bj9E,KAAkBupF,QAAI,IAAMoL,MAA8BxN,GAAS,IAAIlhH,QAAS5+H,IAAKstP,KAA8B9J,GAAkB5tP,QAAS0vJ,QAAG97D,GAAKyxC,SA4jBpN2yH,CAAY/pP,KAAK+xO,0BAA2B/xO,KAAKstB,SAASkB,WAAW6vN,QAAI,CACvF5hP,KAAM,IAAM+sP,IAAe,EAC3Bx2H,SAAU,KACDw2H,KACDxpP,KAAKopP,eAAezjK,IACpB3lF,KAAKqpP,2BAA2B1jK,GAAI,8DAIhD04J,QAAI14J,KACJ,MAAMqkK,GAAa,IAAIC,GAAWtkK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe/kP,KAAKkmP,aAAavgK,GAAEulJ,mBAAoBvlJ,GAAEu/J,gBACrHllP,KAAKwkP,aAAawF,SAM9B9C,GAAWvhK,KACP,MAAQu/J,kBAAgBjyO,GAAI+vO,GAAc+B,aAAcoC,GAAgBnC,OAAQX,GAAYY,QAAU2B,sBAAoBK,gBAAiBthK,GAC3I,OAAO3lF,KAAKusG,MAAMm3I,mBAAmBwB,GAAgB,CACjDlC,gBACAmE,kBACA9C,cACAuC,qBAAsBA,GACtBK,aAAcA,QAElBjyP,QAAK2wF,KACL,MAAMy/J,GA9qFtB,YAA2BrS,EAAoBd,EAAMe,GACjD,MAAM90N,EAAOg1N,GAAWH,EAAoBd,EAAKnnI,MAAOkoI,EAAYA,EAAUloI,WAAQl2G,GACtF,OAAO,IAAI68O,GAAYvzN,EAAM+zN,GA4qFSiY,CAAkBlqP,KAAK+yO,mBAAoBptJ,GAAEu/J,eAAgBv/J,GAAEw/J,oBACzF,OAAQlyP,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,IAAI,CAAEy/J,0BAOlD/G,QAAK14J,KACD3lF,KAAKmkP,eAAiBx+J,GAAEulJ,kBACxBlrO,KAAKqkP,WACDrkP,KAAK2jP,oBAAoBtyL,MAAMs0B,GAAEulJ,kBAAmBvlJ,GAAEq/J,QAC1DhlP,KAAK2kP,YAAch/J,GAAEy/J,kBACU,aAA3BplP,KAAK+jP,oBACAp+J,GAAEs/J,OAAO2B,oBACV5mP,KAAK6mP,cAAc7mP,KAAKqkP,WAAY1+J,IAExC3lF,KAAKskP,eAAiB3+J,GAAEulJ,qBAx2ErB,EAAC0X,EAAc7P,EAAoBwC,KAAiBvgP,QAAI2wF,IAC3E,IAAIwkK,GAAepX,EAAoBptJ,EAAEy/J,kBAAmBz/J,EAAEw/J,mBAAoB5P,GAC7EC,SAASoN,GACPj9J,IAu2EKoxJ,CAAe/2O,KAAK4iP,aAAc5iP,KAAK+yO,mBAAqBp5H,IAAQ35G,KAAKwkP,aAAa7qI,MAAO0kI,QAAI,CACjG5hP,OACImpP,IAAY,GAEhB5yH,WACI4yH,IAAY,KEp0IzB,YAAkB5xP,GACrB,OAAO6kI,OAAQ,CAAC9zF,EAAQstF,KACpB,IACIttF,EAAOs/C,UAAUguC,EAGFr+H,CAHEq+H,QAGjBA,EAAWrwH,IAAIhO,MFg0IXksI,CAAS,KACT,IAAIpjH,GAQC8oO,IAAcjzJ,IAEf3yF,KAAKqpP,2BAA2B1jK,GADL,iBAAgBA,GAAE1yE,gDAAgDjT,KAAKgjP,iBAK/D,QAAjClmO,GAAK9c,KAAK8iP,yBAAsC,IAAPhmO,QAAgB,EAASA,GAAG7J,MAAQ0yE,GAAE1yE,KACjFjT,KAAK8iP,kBAAoB,SAE7B1lH,QAAY/oI,KAeZ,GAHAs+F,IAAU,EA/4H1B,YAAoC3hE,GAChC,OAAOA,GAASA,EAAMw6M,IAi5HN4e,CAA2B/1P,IAAI,CAC/B,MAAMg2P,GAAcnS,GAAU7jP,GAAEk7B,KAC3B86N,KAMDrqP,KAAKsjP,WAAY,EACjBtjP,KAAKopP,eAAezjK,IAAG,IAE3B,MAAM2kK,GAAY,IAAIC,GAAiB5kK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe1wP,GAAEs6D,SAClFg3L,EAAclpP,KAAK6tP,IAGnB3rB,GAQI13K,WAAW,KACP,MAAMujM,GAAaxqP,KAAK2jP,oBAAoBtyL,MAAMh9D,GAAEk7B,IAAKvvB,KAAKqkP,YACxDY,GAAS,CACX2B,mBAAoBjhK,GAAEs/J,OAAO2B,mBAK7BK,WAAuC,UAA3BjnP,KAAK+jP,mBACbiC,GAA6BrgK,GAAE5gD,SAEvC/kC,KAAKyqP,mBAAmBD,GAAY,aAAc,KAAMvF,GAAQ,CAAEpoO,QAAS8oE,GAAE9oE,QAASsxC,OAAQw3B,GAAEx3B,OAAQ1kC,QAASk8D,GAAEl8D,WACpH,GAnBHk8D,GAAE9oE,SAAQ,OAwBb,CACD7c,KAAKopP,eAAezjK,IAAG,GACvB,MAAM+kK,GAAW,IAAIC,GAAgBhlK,GAAE1yE,GAAIjT,KAAKkmP,aAAavgK,GAAEo/J,cAAe1wP,IAC9EsxP,EAAclpP,KAAKiuP,IACnB,IACI/kK,GAAE9oE,QAAQ7c,KAAKmnH,aAAa9yH,IAGnB8wO,CAHmB9wO,MAEzB8wO,IACHx/I,GAAEx3B,OAAOg3K,KAGjB,OAAO/tG,WASnBwzH,uBAAuBzK,GACnBngP,KAAKmgP,kBAAoBA,EAGzBngP,KAAK2kP,YAAYzmO,KAAKqV,UAAYvzB,KAAKmgP,kBAE3C0K,cAAcllK,GACV3lF,KAAKc,YAAYrE,KAAKxJ,OAAOqe,OAAOre,OAAOqe,OAAO,GAAItR,KAAKc,YAAY3L,OAAQwwF,IAKnFmlK,oBACI9qP,KAAK+qP,8BACqB,IAAtB/qP,KAAKgjP,cACLhjP,KAAKgrP,cAAchrP,KAAKgzB,SAASiO,MAAK,GAAO,CAAEgmN,YAAY,IAQnE8D,8BAIS/qP,KAAKirP,uBACNjrP,KAAKirP,qBAAuBjrP,KAAKgzB,SAASqxD,UAAUtwF,IAChD,MAAMgxC,EAA2B,aAAlBhxC,EAAMmJ,KAAyB,WAAa,aAC5C,aAAX6nC,GAGAkiB,WAAW,KACP,IAAInqC,GACJ,MAAMmoO,GAAS,CAAEgC,YAAY,GAGvBljN,IAAgC,QAAtBjnB,GAAK/oB,EAAMgwC,aAA0B,IAAPjnB,QAAgB,EAASA,GAAGkmO,cAAgBjvP,EAAMgwC,MAAQ,KACxG,GAAIA,GAAO,CACP,MAAMmnN,GAAYj4P,OAAOqe,OAAO,GAAIyyB,WAC7BmnN,GAAUlI,oBACVkI,GAAUxF,mBACqB,IAAlCzyP,OAAOC,KAAKg4P,IAAWn5P,SACvBkzP,GAAOlhN,MAAQmnN,IAGvB,MAAMra,GAAU7wO,KAAKkmG,SAASnyG,EAAMw7B,KACpCvvB,KAAKyqP,mBAAmB5Z,GAAS9rM,EAAQhB,GAAOkhN,KACjD,MAMf11N,UACA,OAAOvvB,KAAKkmP,aAAalmP,KAAKmkP,gBAMlCgH,uBACI,OAAOnrP,KAAK8iP,kBAGhB0B,aAAazwP,GACTiM,KAAKmjP,OAAO1mP,KAAK1I,GAkBrBmwP,YAAY72N,GACRksN,GAAelsN,GACfrtB,KAAKqtB,OAASA,EAAOr4B,IAAIykP,IACzBz5O,KAAKsjP,WAAY,EACjBtjP,KAAKujP,kBAAmB,EAG5Bv3N,cACIhsB,KAAKylD,UAGTA,UACIzlD,KAAKc,YAAYkyH,WACbhzH,KAAKirP,uBACLjrP,KAAKirP,qBAAqBn4L,cAC1B9yD,KAAKirP,0BAAuBr2P,GAEhCoL,KAAK+iP,UAAW,EAkDpBzH,cAAc/rL,EAAU67L,EAAmB,IACvC,MAAQC,cAAY70I,eAAa2yH,YAAUmiB,uBAAqBC,qBAAqBH,EAC/En0O,GAAIo0O,IAAcrrP,KAAK2kP,YAAYzmO,KACnC1L,GAAI+4O,GAAmBvrP,KAAKmkP,eAAehb,SAAWA,GAC5D,IAAIzsK,GAAI,KACR,OAAQ4uL,QACC,QACD5uL,GAAIzpE,OAAOqe,OAAOre,OAAOqe,OAAO,GAAItR,KAAKmkP,eAAe3tI,aAAcA,IACtE,UACC,WACD95C,GAAI18D,KAAKmkP,eAAe3tI,YACxB,cAEA95C,GAAI85C,IAAe,KAE3B,OAAU,OAAN95C,KACAA,GAAI18D,KAAKwrP,iBAAiB9uL,KA55FtC,YAAuB0uK,EAAOyF,EAASthL,EAAUinD,EAAa2yH,IAC1D,GAAwB,IAApB55K,EAASx9D,OACT,OAAOi8O,GAAK6C,EAAQ3yN,KAAM2yN,EAAQ3yN,KAAM2yN,EAAQ3yN,KAAMs4F,EAAa2yH,IAEvE,MAAM5hH,GA+DV,YAA2Bh4D,GACvB,GAA4B,iBAAhBA,EAAS,IAAwC,IAApBA,EAASx9D,QAAgC,MAAhBw9D,EAAS,GACvE,OAAO,IAAIk8L,IAAW,EAAM,EAAGl8L,GAEnC,IAAI4kL,EAAqB,EACrBD,GAAa,EACjB,MAAM31I,EAAMhvC,EAASqP,OAAO,CAAC2/B,GAAKmtJ,GAAKC,MACnC,GAAmB,iBAARD,IAA2B,MAAPA,GAAa,CACxC,GAAIA,GAAIlY,QAAS,CACb,MAAMA,GAAU,GAChB5gP,UAAQ84P,GAAIlY,QAAS,CAACjkL,GAAUxuD,MAC5ByyO,GAAQzyO,IAA4B,iBAAbwuD,GAAwBA,GAASlxD,MAAM,KAAOkxD,KAElE,IAAIgvC,GAAK,CAAEi1I,aAEtB,GAAIkY,GAAIjY,YACJ,MAAO,IAAIl1I,GAAKmtJ,GAAIjY,aAG5B,MAAqB,iBAARiY,GACF,IAAIntJ,GAAKmtJ,IAEL,IAAXC,IACAD,GAAIrtP,MAAM,KAAKzL,QAAQ,CAACg5P,GAASC,MACZ,GAAbA,IAA8B,MAAZD,KAGA,GAAbC,IAA8B,KAAZD,GACvB1X,GAAa,EAEI,OAAhBl3M,GACDm3M,IAEgB,IAAXyX,IACLrtJ,GAAI7qG,KAAKk4P,OAGVrtJ,IAEJ,IAAIA,GAAKmtJ,KACjB,IACH,OAAO,IAAID,GAAWvX,EAAYC,EAAoB51I,GAxG1CutJ,CAAkBv8L,GAC9B,GAAIg4D,GAAIgtH,SACJ,OAAOvG,GAAK6C,EAAQ3yN,KAAM2yN,EAAQ3yN,KAAM,IAAIkxN,GAAgB,GAAI,IAAK54H,EAAa2yH,IAEtF,MAAM4iB,GA6GV,YAA8BxkI,EAAKymH,EAAM5C,GACrC,GAAI7jH,EAAI2sH,WACJ,OAAO,IAAI8X,GAAShe,EAAK9vN,MAAM,EAAM,GAEzC,IAAsC,IAAlCktN,EAAMp5K,SAASugL,eAAuB,CACtC,MAAM9G,GAAeL,EAAMp5K,SAASsgL,YAKpC,OAAO,IAAI0Z,GAASvgB,GADIA,KAAiBuC,EAAK9vN,KACK,GAEvD,MAAM+tO,EAAW7X,GAAe7sH,EAAIh4D,SAAS,IAAM,EAAI,EAEvD,OAEJ,YAA0Cg3B,EAAOzyE,EAAOqgO,GACpD,IAAI5yL,EAAIglC,EACJ2lK,GAAKp4O,EACLq4O,GAAKhY,EACT,KAAOgY,GAAKD,IAAI,CAGZ,GAFAC,IAAMD,GACN3qM,EAAIA,EAAEnrD,QACDmrD,EACD,MAAM,IAAI9X,MAAM,2BAEpByiN,GAAK3qM,EAAE8mD,SAASt2G,OAEpB,OAAO,IAAIi6P,GAASzqM,GAAG,EAAO2qM,GAAKC,IAd5BC,CAAiChhB,EAAMp5K,SAASsgL,YADzClH,EAAMp5K,SAASugL,eAAiB0Z,EAC6B1kI,EAAI4sH,oBA3HtDkY,CAAqB9kI,GAAKspH,EAASzF,GACtDK,GAAesgB,GAAiBvX,gBAClCC,GAA2BsX,GAAiBtgB,aAAcsgB,GAAiBj4O,MAAOyzG,GAAIh4D,UACtF4lL,GAAmB4W,GAAiBtgB,aAAcsgB,GAAiBj4O,MAAOyzG,GAAIh4D,UAClF,OAAOy+K,GAAK6C,EAAQ3yN,KAAM6tO,GAAiBtgB,aAAcA,GAAcj1H,EAAa2yH,IAk5FzEmS,CAAcrkO,GAAGjX,KAAKmkP,eAAgB50L,EAAUmN,GAAS,MAANlqD,GAA6BA,GAAI,MA0B/Fw4O,cAAcz7N,EAAK01N,EAAS,CACxB2B,oBAAoB,IAMpB,MAAM/V,GAAUqH,GAAU3oN,GAAOA,EAAMvvB,KAAKkmG,SAAS32E,GAC/Ci7N,GAAaxqP,KAAK2jP,oBAAoBtyL,MAAMw/K,GAAS7wO,KAAKqkP,YAChE,OAAOrkP,KAAKyqP,mBAAmBD,GAAY,aAAc,KAAMvF,GAgCnEqH,SAAS/8L,EAAU01L,EAAS,CAAE2B,oBAAoB,IAC9C2F,OAiNR,YAA0Bh9L,GACtB,QAASz0D,EAAI,EAAGA,EAAIy0D,EAASx9D,OAAQ+I,IAAK,CACtC,MAAM4wP,EAAMn8L,EAASz0D,GACrB,GAAW,MAAP4wP,EACA,MAAM,IAAIjiN,MAAO,+BAA8BiiN,sBAAwB5wP,MArN3EyxP,CAAiBh9L,GACVvvD,KAAKgrP,cAAchrP,KAAKs7O,cAAc/rL,EAAU01L,GAASA,GAGpEiB,aAAa32N,GACT,OAAOvvB,KAAKg7O,cAAc3N,UAAU99M,GAGxC22E,SAAS32E,GACL,IAAIshN,EACJ,IACIA,EAAU7wO,KAAKg7O,cAAc7vJ,MAAM57D,EAG4BA,CAH5BA,MAEhCl7B,IACHw8O,EAAU7wO,KAAKojP,yBAAyB/uP,GAAG2L,KAAKg7O,cAAezrN,GAEnE,OAAOshN,EAEXxkI,SAAS98E,EAAKi9N,GACV,IAAIjrP,GAUJ,GARIA,IADiB,IAArB25N,EACcjoO,OAAOqe,OAAO,GAAImxO,KAEN,IAArBvnB,EACSjoO,OAAOqe,OAAO,GAAIoxO,IAGlB8J,EAEVtU,GAAU3oN,GACV,OAAOk9N,GAAazsP,KAAKmkP,eAAgB50N,EAAKhuB,IAElD,MAAMsvO,GAAU7wO,KAAKkmG,SAAS32E,GAC9B,OAAOk9N,GAAazsP,KAAKmkP,eAAgBtT,GAAStvO,IAEtDiqP,iBAAiB3vP,GACb,OAAO5I,OAAOC,KAAK2I,GAAQ+iE,OAAO,CAACrnE,EAAQtC,MACvC,MAAME,GAAQ0G,EAAO5G,IACrB,OAAc,MAAVE,KACAoC,EAAOtC,IAAOE,IAEXoC,GACR,IAEPiuP,qBACIxlP,KAAKslP,YAAYjhK,UAAUsB,IACvB3lF,KAAKsjP,WAAY,EACjBtjP,KAAKujP,iBAAmB59J,EAAE1yE,GAC1BjT,KAAKijP,cAAgBt9J,EAAEk/J,aACvB7kP,KAAKmjP,OACA1mP,KAAK,IAAIiwP,GAAc/mK,EAAE1yE,GAAIjT,KAAKkmP,aAAavgK,EAAEo/J,cAAe/kP,KAAKkmP,aAAalmP,KAAKmkP,kBAC5FnkP,KAAK6iP,yBAA2B7iP,KAAK8iP,kBACrCn9J,EAAE9oE,SAAQ,IACXxoB,IACC2L,KAAKivB,QAAQkuJ,KAAM,+BAA8B9oL,OAGzDo2P,mBAAmBzF,EAAQjgN,EAAQkmM,GAAega,GAAQ0H,IACtD,IAAI7vO,GAAI+L,GACR,GAAI7oB,KAAK+iP,SACL,OAAOnmO,QAAQC,SAAQ,GAE3B,IAAIA,GACAsxC,GACA1kC,GACAkjO,IACA9vO,GAAU8vO,GAAa9vO,QACvBsxC,GAASw+L,GAAax+L,OACtB1kC,GAAUkjO,GAAaljO,SAGvBA,GAAU,IAAI7M,QAAQ,CAAC2hF,GAAKoyG,MACxB9zL,GAAU0hF,GACVpwC,GAASwiJ,KAGjB,MAAM19L,KAAOjT,KAAKgjP,aAClB,IAAI6B,GACJ,MAA0C,aAAtC7kP,KAAKgkP,8BACwC,IAAvBhkP,KAAKijP,gBAEvBhY,GAAgBjrO,KAAKgzB,SAASg3E,YAM9B66I,GADJ9hB,IAAqBkI,GAAcya,mBAChBza,GAAcya,mBAK7B9b,GAAWqd,YAAchC,GAAO2B,mBACiB,QAA7B9pO,GAAK9c,KAAKylP,qBAAkC,IAAP3oO,GAAgBA,GAAK,GAG5B,QAA7B+L,GAAK7oB,KAAKylP,qBAAkC,IAAP58N,GAAgBA,GAAK,GAAK,GAMxFg8N,GAAe,EAEnB7kP,KAAK6qP,cAAc,CACf53O,MACA4xO,gBACA9/M,SACAkmM,iBACAkZ,eAAgBnkP,KAAKmkP,eACrBW,cAAe9kP,KAAKqkP,WACpBW,SACAC,UACApoO,WACAsxC,UACA1kC,WACAzD,gBAAiBhmB,KAAK2kP,YAAY3yL,SAClCmzL,mBAAoBnlP,KAAK2kP,cAItBl7N,GAAQqH,MAAOz8B,IACXuoB,QAAQuxC,OAAO95D,KAG9BwyP,cAAct3N,EAAKo2D,GACf,MAAM1kD,GAAOjhC,KAAKg7O,cAAc3N,UAAU99M,GACpCwU,GAAQ9wC,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0E,EAAEs/J,OAAOlhN,OAAQ/jC,KAAK4sP,sBAAsBjnK,EAAE1yE,GAAI0yE,EAAEk/J,eAC9F7kP,KAAKgzB,SAAS2zG,qBAAqB1lG,KAAW0kD,EAAEs/J,OAAOgC,WACvDjnP,KAAKgzB,SAASm3F,aAAalpF,GAAM,GAAI8C,IAGrC/jC,KAAKgzB,SAASgC,GAAGiM,GAAM,GAAI8C,IAOnCqlN,eAAezjK,EAAGknK,GAA2B,GACzC,IAAI/vO,GAAI+L,GACR,GAA0C,aAAtC7oB,KAAKgkP,6BAA6C,CAClD,MAAM8I,GAAqB9sP,KAAKijP,cAAgBt9J,EAAEk/J,aAMH,aAAbl/J,EAAE5gD,QAAoD,UAA3B/kC,KAAK+jP,mBAC9D/jP,KAAKmkP,kBAAsD,QAAjCrnO,GAAK9c,KAAK8iP,yBAAsC,IAAPhmO,QAAgB,EAASA,GAAGwpO,WAC5C,IAAvBwG,GAGvB9sP,KAAKmkP,kBAAsD,QAAjCt7N,GAAK7oB,KAAK8iP,yBAAsC,IAAPj6N,QAAgB,EAASA,GAAGy9N,WAAoC,IAAvBwG,KAIjH9sP,KAAK+sP,WAAWpnK,GAGhB3lF,KAAKskP,eAAiB3+J,EAAEw+J,eACxBnkP,KAAKgtP,4BAVLhtP,KAAKgzB,SAAS+wG,UAAU+oH,GAUnBE,KAOkC,YAAtChtP,KAAKgkP,+BAKN6I,GACA7sP,KAAK+sP,WAAWpnK,GAEpB3lF,KAAKgtP,4BAGbD,WAAWpnK,GACP3lF,KAAK2kP,YAAch/J,EAAEw/J,mBACrBnlP,KAAKmkP,eAAiBx+J,EAAEw+J,eAMxBnkP,KAAKqkP,WAAarkP,KAAK2jP,oBAAoBtyL,MAAMrxD,KAAKmkP,eAAgBx+J,EAAEq/J,QAE5EgI,2BACIhtP,KAAKgzB,SAASm3F,aAAanqH,KAAKg7O,cAAc3N,UAAUrtO,KAAKqkP,YAAa,GAAIrkP,KAAK4sP,sBAAsB5sP,KAAKujP,iBAAkBvjP,KAAKijP,gBAEzIoG,2BAA2B1jK,EAAG13B,GAC1B,MAAMq8L,GAAY,IAAIC,GAAiB5kK,EAAE1yE,GAAIjT,KAAKkmP,aAAavgK,EAAEo/J,cAAe92L,GAChFjuD,KAAKwkP,aAAa8F,IAClB3kK,EAAE9oE,SAAQ,GAEd+vO,sBAAsB5J,EAAciK,GAChC,MAA0C,aAAtCjtP,KAAKgkP,6BACE,CAAEhB,eAAc0C,mBAAeuH,GAEnC,CAAEjK,iBAGjBL,SAAOhqP,UAAP,YA/3E+FE,QAg4E/F8pP,EAAO/pP,WAh4EwFC,MAg4E/F,OAAuG8pP,EAAvG7pP,QAAuG6pP,EAAvG,YA93BMA,MA04BN,YAAsC59M,GAClC,MAAkB,eAAXA,CAAW,CGh2JtB,SAAyB3X,oBACD8/N,GAChB,MAAM7/N,EAAS6/N,EAAc73P,MAC7B,IAAKg4B,EACD,MAAM,IAAIoc,MAAM,qGAEpB,OAAO,IAAI0jN,GAAYl6P,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI+b,GAAS,CAAEi1M,YAAa,CACvEvhO,KATQ,uBAUR6/N,QAVyC,QAWzCwsB,IAAK,CACD,eAAgB/qD,iBAKpC,MAAMgrD,GAAqB,IAAInhO,MAAe,gBAO9C,YAAsChrB,GAClC,MAAsB,iBAARA,CAAQ,CAa1B,MAAMosP,GAAoB,IAAIphO,MAAe,4BA2CvC0F,SAAN,QACI9xB,YAAYutB,GACJA,GACArtB,KAAK1K,IAAI+3B,GAQjB/3B,IAAI+3B,GACArtB,KAAKqtB,OAASA,EAKlBh4B,MACI,OAAO2K,KAAKqtB,QAGpBuE,SAAiBj5B,UAAjB,0BAA6Gi5B,GAAV/4B,MAA4Cy0P,GAA/I,KACA17N,EAAiBh5B,WADkFC,MACnG,OAAiH+4B,EAAjH94B,QAAiH84B,EAAjH,qBAA+I,SAtBzIA,MAmCA27N,SAAN,QACIztP,YAAYkzB,EAAUxE,GAClBxuB,KAAKgzB,SAAWA,EAChB,IACIhzB,KAAKm0B,OAAS3F,EAASn5B,IAAIstP,GAE/B,CAF+BA,MAExB7lO,IAAP,EAQJkuO,cAAcz7N,GACNvvB,KAAKm0B,OACLn0B,KAAKm0B,OAAO62N,cAAcz7N,GAG9BvvB,KAAKgzB,SAASm3F,aAAa56F,IAGnCg+N,SAAkB50P,UAAlB,0BAA8G40P,GApCX10P,MAoC8CyxB,OApC9CzxB,MAoCsEA,SACzK00P,EAAkB30P,WArCiFC,MAqCnG,OAAkH00P,EAAlHz0P,QAAkHy0P,EAAlH,qBAAiJ,SAvB3IA,MAkCAC,SAAN,QACI1tP,YAAYwiO,GACRtiO,KAAKsiO,YAAcA,EACnBtiO,KAAKytP,kBAAoB,IAAIrc,KAAgB,GAC7CpxO,KAAK0tP,SAAW,IAAIz7H,IACpBjyH,KAAK2tP,aAAe,IAAIC,KAAc,GACtC5tP,KAAK6tP,cAAgB,IAAID,KAAc,GAIvC5tP,KAAK8tP,WAAa9tP,KAAKytP,kBAAkBp4H,eAKzCr1H,KAAK+tP,oBAAsB/tP,KAAK2tP,aAAavtN,KAAK23M,GAAK,CAAClrJ,EAAKvlC,MAAa,CACtEugG,SAAUh7D,EAAIvlC,QACdA,aACA,CAAEA,QAAS,KAAMugG,SAAU,QAASz/I,QAAO,EAAGy/I,WAAUvgG,cAAcugG,IAAavgG,KAMvFtnD,KAAKguP,wBAA0BhuP,KAAK8tP,WAAW1tN,MAAKh4B,QAAQ6lP,IAAaA,IAAUC,UAAwBtW,QAAU,KAMrHvmL,OAAMwoD,EAAM,IAAM75G,KAAKsiO,YAAYriM,mBAAoBjgC,KAAK+tP,oBAAoB3tN,MAAK26F,QAAS,IAAM/6H,KAAKsiO,YAAYriM,oBAAqBjgC,KAAK0tP,SAASttN,MAAK26F,QAAS,IAAM/6H,KAAKsiO,YAAYriM,uBAK7LjgC,KAAKmgC,iBAAmBngC,KAAKguP,wBAAwB5tN,MAAK8tN,SCjM3D,WAAqBC,EAAoBC,EAAYx2H,GACxD,IAAIy2H,EACAhvH,IAAW,EACf,OAAI8uH,GAAoD,iBAAvBA,IAC1BE,aAAat6H,IAAUq6H,aAAar6H,IAAUsL,aAAW,EAAOzH,aAAcu2H,GAGjFE,EAAoC,MAAvBF,EAA+DA,EAAqBp6H,KAE9FsnF,OAAM,CACTv8E,UAAW,IAAM,IAAI8uH,KAAcS,EAAYD,EAAYx2H,GAC3DmH,cAAc,EACdC,iBAAiB,EACjBC,oBAAqBI,KDoL6DivH,CAAY,IAI9FtuP,KAAKuuP,MAAQvuP,KAAKguP,wBAAwB5tN,MAAKshH,QAAW8sG,GAAkBA,EAAgBxuP,KAAKsiO,YAAY0G,WAAYvnF,QAAG,QAAQysG,UAIpIluP,KAAKyuP,eAAiBzuP,KAAKguP,wBAAwB5tN,MAAKshH,QAAW8sG,GAAkBA,EAAgBxuP,KAAKsiO,YAAY4G,oBAAqBznF,QAAG,QAI9IzhJ,KAAK0uP,OAAS1uP,KAAK6tP,cAAcx4H,eAOrCs5H,aAAaC,GACT5uP,KAAKytP,kBAAkBhxP,KAAKmyP,GAMhCC,UACI7uP,KAAK0tP,SAASjxP,OAOlBqyP,eAAeC,GACX/uP,KAAK2tP,aAAalxP,KAAKsyP,GAO3BC,SAASh+N,GACLhxB,KAAK6tP,cAAcpxP,KAAKu0B,IAGhCw8N,SAAU70P,UAAV,0BAAsG60P,GAjIH30P,MAiI8Bw0P,MACjIG,EAAU50P,WAlIyFC,MAkInG,OAA0G20P,EAA1G10P,QAA0G00P,EAA1G,qBAAiI,SAlF3HA,MA6FA5lN,SAAN,QACI9nC,YAAYwiO,EAAa4qB,EAAex3B,GAAWu5B,IAC/CjvP,KAAKsiO,YAAcA,EACnBtiO,KAAKktP,cAAgBA,EACrBltP,KAAK01N,UAAYA,GACjB11N,KAAKivP,UAAYA,GACjBjvP,KAAKkvP,iBAAmB,IAAItB,KAAc,GAE1C5tP,KAAKmvP,eAAiB,IAAIl9H,IAI1BjyH,KAAK8tP,WAAa9tP,KAAKivP,UAAUnB,WAKjC9tP,KAAKmgC,iBAAmBngC,KAAKivP,UAAU9uN,iBAIvCngC,KAAKuuP,MAAQvuP,KAAKivP,UAAUV,MAI5BvuP,KAAKyuP,eAAiBzuP,KAAKivP,UAAUR,eAIrCzuP,KAAK0uP,OAAS1uP,KAAKivP,UAAUP,OAK7B1uP,KAAKovP,UAAYpvP,KAAKkvP,iBAAiB75H,eACvC,MAAMg6H,GAA2BC,IAAeC,EAAI,IAAMD,GAAYtvP,KAAKopO,yBAA0BvvH,EAAM,IAAM75G,KAAKsiO,YAAY+G,iBAClIrpO,KAAKwvP,uBACApvN,MAAKw3M,QAAW0X,IAAeD,GAAwBC,IAAYlvN,MAAKg9F,QAAYpsG,KACrF,MAAM3D,GAASrtB,KAAKktP,cAAc73P,MAClC,YAAKqgO,UAAUs1B,cAAc39N,GAAOoiO,WAAa,KACjDzvP,KAAKivP,UAAUD,SAASh+N,KACjBywH,aAAG7sJ,QACRypP,QAAI,KACNr+O,KAAKivP,UAAUN,cAAa,MAC5Be,QAAU1vP,KAAKmvP,iBACd9qK,YAKTr4D,cAEIhsB,KAAKmvP,eAAe1yP,OACpBuD,KAAKmvP,eAAen8H,WAaxBpqF,kBAAkBrnC,GACd,OAAOzK,OAAKkJ,KAAKsiO,YAAY15L,kBAAkBrnC,IAmBnD+mO,eAAe/mO,EAAS8rB,GACpB,OAAOv2B,OAAKkJ,KAAKsiO,YAAYgG,eAAe/mO,EAAS8rB,GAAQrD,KAAK,KAC9DhqB,KAAKivP,UAAUJ,aAkBvB5mN,OAAO1mC,GACH,OAAOzK,OAAKkJ,KAAKsiO,YAAYr6L,OAAO1mC,GAASyoB,KAAK,OAC8B,KAA3D,MAAZzoB,OAAyC,EAASA,EAAQ0jO,WAAmC,MAAZ1jO,OAAyC,EAASA,EAAQ0jO,WAC5IjlO,KAAKivP,UAAUJ,aA+B3Bc,uBAAuBpuP,EAAU,IAC7B,OAAOkgJ,QAAGzhJ,KAAKsiO,aAAaliM,MAAKshH,QAAWkuG,GACtCA,EAAOtmB,kBADuE,IAA7B/nO,EAAQkoO,iBACjCx2O,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GAAU,CAAEkoO,kBAAkB,IAC9DloO,KAAW88O,QAAKh4O,IACtCA,GACArG,KAAKivP,UAAUH,eAAgC,iBAAVzoP,EAAqBA,EAAQA,EAAMqjO,iBAE5EtsG,QAAYpsG,IACZhxB,KAAKivP,UAAUD,SAASh+N,GACxBhxB,KAAKivP,UAAUJ,WACRt1D,OAAWvoK,MAe1B6+N,wBAAwBtuP,GACpB,OAAOkgJ,QAAGzhJ,KAAKsiO,aAAaliM,MAAKshH,QAAWkuG,GAAWA,EAAO5lB,kBAAkBzoO,KAAW88O,QAAKh4O,IACxFA,GACArG,KAAKivP,UAAUH,eAAezoP,MAElC+2H,QAAYpsG,IACZhxB,KAAKivP,UAAUD,SAASh+N,GACxBhxB,KAAKivP,UAAUJ,WACRt1D,OAAWvoK,MAiB1Bo4M,uBAAuB75M,GACnB,OAAOsqF,EAAM,IAAM75G,KAAKsiO,YAAY8G,uBAAuB75M,IAAM6Q,MAAK0vN,QAAe9vP,KAAKivP,UAAUnB,aAAazP,QAAI,EAAE9mP,EAAQq3P,OAC3H,IAAI9xO,GACC8xO,IACD5uP,KAAKivP,UAAUJ,UAEnB,MAAM/tB,GAAsB,MAAXvpO,OAAuC,EAASA,EAAOupO,SAClEn1N,GAAwF,QAA9EmR,GAAkB,MAAbgkN,QAA2C,EAASA,GAASn1N,cAA2B,IAAPmR,GAAgBA,GAAK,IACvHgkN,IACA9gO,KAAKkvP,iBAAiBzyP,KAAKqkO,IAE/B9gO,KAAK01N,UAAUs1B,cAAcr/O,OAC7B3W,QAAI,EAAEuC,KAAYA,IAE1Bi4P,uBACI,OAAO/tG,QAAGzuH,SAASgjF,QAAQ51E,MAAKprC,QAAKghH,IACjC,MAAM0B,EAAe,IAAIsoC,gBAAgBhqC,GACzC,OAAS0B,EAAar4G,IAAI,SAAWq4G,EAAar4G,IAAI,WAClDq4G,EAAar4G,IAAI,WAChBW,KAAKktP,cAAc73P,MAAM06P,yBAI1CnoN,SAAYjvC,UAAZ,0BAAwGivC,GAlWL/uC,MAkWkCw0P,IAlWlCx0P,MAkWiE+4B,IAlWjE/4B,MAkW8F00P,IAlW9F10P,MAkW4H20P,MAC/N5lN,EAAYhvC,WAnWuFC,MAmWnG,OAA4G+uC,EAA5G9uC,QAA4G8uC,EAA5G,qBAAqI,SAtN/HA,MAmOAooN,SAAN,QACIlwP,YAAYwuB,GACRtuB,KAAKsuB,KAAOA,EAEhBuvN,QAAQzS,EAAO/iI,GACX,OAAOroG,KAAKsuB,KAAK6R,iBAAiBC,MAAKy9F,OAAK,IAEhD+qH,YAAYnsP,EAAMsnC,GACd,OAAO/jC,KAAKiwP,0BAA0BlsN,GAE1CwkN,iBAAiB2H,EAAYnsN,GACzB,OAAO/jC,KAAKiwP,0BAA0BlsN,GAE1CksN,0BAA0BlsN,GACtB,OAAO/jC,KAAKsuB,KAAK6R,iBAAiBC,MAAKi+M,QAAK8R,IACnCA,GACDnwP,KAAKsuB,KAAKsa,kBAAkB,CACxBk4L,SAAU,CAAEn1N,OAAQo4B,EAAMxU,WAM9CygO,SAAUr3P,UAAV,0BAAsGq3P,GAvYHn3P,MAuY8B+uC,MACjIooN,EAAUp3P,WAxYyFC,MAwYnG,OAA0Gm3P,EAA1Gl3P,QAA0Gk3P,EAA1G,qBAAiI,SAxB3HA,MAgCAj+N,SAAN,QAAiB3E,eAOEC,GACX,MAAO,CACHC,SAAUyE,EACVxE,UAAW,CACPqa,GACAooN,GACA,CACI5jO,QAASkhO,GACTtgO,SAAUK,GAEd,CACIjB,QAASihO,GACT9gO,WAAY6jO,GAAmBC,aAC/B1jO,KAAM,CAACiF,QAM3BG,SAAWp5B,UAAX,0BAAuGo5B,IACvGA,EAAWvE,UA3awF30B,MA2anG,MAAwGk5B,IACxGA,EAAWtE,UA5awF50B,MA4anG,IA5BMk5B,MAkCAD,SAAN,QACIhyB,YAAYotP,EAAe5qB,EAAa2sB,GAAWqB,IAC/CtwP,KAAKktP,cAAgBA,EACrBltP,KAAKsiO,YAAcA,EACnBtiO,KAAKivP,UAAYA,GACjBjvP,KAAKswP,YAAcA,GAEvBpuG,UAAUX,EAAK9kJ,GACX,IAAIqgB,GACJ,MAAMuQ,GAASrtB,KAAKktP,cAAc73P,MAClC,KAAwC,QAAjCynB,GAAKuQ,GAAOkjO,uBAAoC,IAAPzzO,QAAgB,EAASA,GAAG0zO,aACxE,OAAO/zP,EAAKg2B,OAAO8uH,GAEvB,MAAMkvG,GAAYzwP,KAAKswP,YAAYxC,WAAW1tN,MAAKh4B,QAAQwmP,KAAeA,KAC1E,OAAO5uP,KAAK0wP,kBAAkBnvG,EAAKl0H,GAAOkjO,iBAAiBnwN,MAAKshH,QAAW0pF,IAAUmkB,EAErF,IAAgB,OAAVnkB,IAGN3pF,QAAG2pF,IAAOhrM,KApBCuwN,IAAaC,GAAYA,EAAQxwN,MAAK26F,QAAU5lI,GAAUw7P,EAAQvwN,MAAKC,UAASwwN,OAAM17P,MAoBlF27P,CAAUL,IEpjB1B,eAAkB9iP,GACrB,MAAM5b,EAAS4b,EAAW5b,OAC1B,GAAe,IAAXA,EACA,MAAM,IAAI03C,MAAM,uCAEpB,OAAOz0C,QAAKqiD,IACR,IAAI05M,EAAc15M,EAClB,QAASv8C,GAAI,EAAGA,GAAI/I,EAAQ+I,KAAK,CAC7B,MAAMuf,GAAoB,MAAhB02O,OAAiD,EAASA,EAAYpjP,EAAW7S,KAC3F,QAAiB,IAANuf,GAIP,OAHA02O,EAAc12O,EAGd,CAGR,OAAO02O,IFoiB8BC,CAAM,iBAAiBtvG,QAAWngJ,IAAYvB,KAAK2vP,uBAAuBpuP,IAAS6+B,MAAKg9F,QAAYrsG,IACjI/wB,KAAKyzB,eAAe23M,GAAOr6M,KACpB0wH,QAAG,KAEdzhJ,KAAKivP,UAAUD,SAASj+N,KACjBwoK,OAAWxoK,SAChB6mN,QAAWvxO,KAEb,MAAMm4F,GAAQn4F,GACRk7I,EAAI/iD,MAAM,CACRrnC,QAASoqF,EAAIpqF,QAAQ7hE,IAAI,gBAAkB,UAAS+Q,QAEtDk7I,EACN,OAAO9kJ,EAAKg2B,OAAO+rE,OAIvB/hG,EAAKg2B,OAAO8uH,MAQhBouG,uBAAuBpuP,GACnB,OAAOkgJ,QAAGzhJ,KAAKsiO,aAAaliM,MAAKshH,QAAWkuG,GAAWA,EAAOtmB,iBAAiB/nO,KAAW88O,QAAKh4O,GAAUrG,KAAKivP,UAAUH,eAAezoP,KAAS+2H,QAAYpsG,IACxJhxB,KAAKivP,UAAUJ,WACRt1D,OAAWvoK,MAQ1BigO,eAAeC,GACX,OAAIA,EAAIz7P,QAAQ,MAAO,IACnBy7P,EAAMA,EAAIv7P,OAAO,EAAGu7P,EAAIz7P,QAAQ,OAEhCy7P,EAAIz7P,QAAQ,MAAO,IACnBy7P,EAAMA,EAAIv7P,OAAO,EAAGu7P,EAAIz7P,QAAQ,OAE7By7P,EASXC,eAAe/lB,EAAO9pF,GAClB,MAAM8vG,GAAiBj8P,MACdA,KAIDA,KADgB6K,KAAKixP,eAAe3vG,EAAQ/xH,MAKxCp6B,GAAMM,QAAQ,OAASN,GAAMpD,OAAS,GAC1CuvJ,EAAQ/xH,IAAIr0B,WAAW/F,GAAMQ,OAAO,EAAGR,GAAMpD,OAAS,KAE9D,OAAIs/P,GAA6BjmB,KACzBA,EAAMkmB,YAAclmB,EAAMkmB,aAAehwG,EAAQpC,WAIhDksF,EAAM8lB,MAAQ9lB,EAAMmmB,YACrBtiO,QAAQkuJ,KAAK,iFAEViuD,EAAMmmB,WACPnmB,EAAMmmB,WAAWjwG,EAAQ/xH,KACzB6hO,GAAchmB,EAAM8lB,MAEvBE,GAAchmB,GASzBslB,kBAAkBpvG,EAASj0H,GACvB,OAAOv2B,OAAKu2B,EAAOmjO,aAAapwN,MAAKC,OAAO+qM,IAAUprO,KAAKmxP,eAAe/lB,GAAO9pF,GAAU,OAE/F7tH,eAAe23M,EAAOr6M,GAClB,QAAUq6M,GACNimB,GAA6BjmB,MAC3BA,EAAM33M,gBACR,CAAC,iBAAkB,mBAAoB,yBAAyBwW,SAASlZ,EAAIC,QAGzFc,SAAoBn5B,UAApB,0BAAgHm5B,GAriBbj5B,MAqiBkD+4B,IAriBlD/4B,MAqiB+Ew0P,IAriB/Ex0P,MAqiB8G20P,IAriB9G30P,MAqiBoI+uC,MACvO9V,EAAoBl5B,WAtiB+EC,MAsiBnG,OAAoHi5B,EAApHh5B,QAAoHg5B,EAApH,YApHMA,KAkLsFW,4EGptB5F,WAAiBgmF,EAAQ+4I,IACvB,IAAIt+P,GAAOD,OAAOC,KAAKulH,GAEvB,GAAIxlH,OAAO6rO,sBAAuB,CAChC,IAAI2yB,GAAUx+P,OAAO6rO,sBAAsBrmH,GAC3C+4I,KAAmBC,GAAUA,GAAQrpP,OAAO,SAAUspP,IACpD,OAAOz+P,OAAO0+P,yBAAyBl5I,EAAQi5I,IAAK72I,cACjD3nH,GAAKQ,KAAKg3F,MAAMx3F,GAAMu+P,IAG7B,OAAOv+P,GAGT,WAAwByY,GACtB,QAAS7Q,GAAI,EAAGA,GAAIyvF,UAAUx4F,OAAQ+I,KAAK,CACzC,IAAIiqC,GAAS,gBAAkBjqC,IAAKyvF,UAAUzvF,IAAK,GACnDA,GAAI,EAAI82P,EAAQ3+P,OAAO8xC,KAAS,GAAInyC,QAAQ,SAAUqC,IACpD48P,EAAgBlmP,EAAQ1W,GAAK8vC,GAAO9vC,OACjChC,OAAO6+P,0BAA4B7+P,OAAO8+P,iBAAiBpmP,EAAQ1Y,OAAO6+P,0BAA0B/sN,KAAW6sN,EAAQ3+P,OAAO8xC,KAASnyC,QAAQ,SAAUqC,IAC5JhC,OAAO0nH,eAAehvG,EAAQ1W,GAAKhC,OAAO0+P,yBAAyB5sN,GAAQ9vC,OAI/E,OAAO0W,EAGT,YAAiBnR,GAGf,OAAOw3P,GAAU,mBAAqB1mI,QAAU,iBAAmBA,OAAO/uH,SAAW,SAAU/B,IAC7F,cAAcA,IACZ,SAAUA,IACZ,OAAOA,IAAO,mBAAqB8wH,QAAU9wH,GAAIsF,cAAgBwrH,QAAU9wH,KAAQ8wH,OAAO7gC,UAAY,gBAAkBjwF,KAC/GA,GAyDb,WAA2BmR,EAAQ8B,IACjC,QAAS3S,GAAI,EAAGA,GAAI2S,GAAM1b,OAAQ+I,KAAK,CACrC,IAAIq3G,GAAa1kG,GAAM3S,IACvBq3G,GAAW0I,WAAa1I,GAAW0I,aAAc,EACjD1I,GAAW2I,cAAe,EACtB,UAAW3I,KAAYA,GAAWoZ,UAAW,GACjDt4H,OAAO0nH,eAAehvG,EAAQwmG,GAAWl9G,IAAKk9G,KAalD,WAAyB33G,EAAKvF,GAAKE,IACjC,OAAIF,MAAOuF,EACTvH,OAAO0nH,eAAengH,EAAKvF,GAAK,CAC9BE,MAAOA,GACP0lH,YAAY,EACZC,cAAc,EACdyQ,UAAU,IAGZ/wH,EAAIvF,IAAOE,GAGNqF,EA8BT,WAAwBgC,EAAK1B,IAC3B,OAWF,YAAyB0B,GACvB,GAAI3F,MAAM4E,QAAQe,GAAM,OAAOA,EAZxBy1P,CAAgBz1P,IAmBzB,YAA+BA,EAAK1B,IAClC,IAAI+vF,GAAY,MAAPruF,EAAc,KAAyB,oBAAX8uH,QAA0B9uH,EAAI8uH,OAAO/uH,WAAaC,EAAI,cAE3F,GAAU,MAANquF,GACJ,KAIIqnK,GAAIhoM,GAJJioM,GAAO,GACPC,IAAK,EACL12N,IAAK,EAIT,IACE,IAAKmvD,GAAKA,GAAGh5F,KAAK2K,KAAQ41P,IAAMF,GAAKrnK,GAAGpuF,QAAQC,QAC9Cy1P,GAAKz+P,KAAKw+P,GAAG/8P,QAET2F,IAAKq3P,GAAKpgQ,SAAW+I,IAH4Bs3P,IAAK,GAY5CloM,CATd,MAEKn5B,IACP2K,IAAK,EACLwuB,GAAKn5B,WAEL,KACOqhO,IAAsB,MAAhBvnK,GAAGkhC,QAAmBlhC,GAAGkhC,QAEtB7hE,CAFsB,QAEpC,GAAIxuB,GAAI,MAAMwuB,IAIlB,OAAOioM,IA9CwBE,CAAsB71P,EAAK1B,KAAMw3P,EAA4B91P,EAAK1B,KAsEnG,aACE,MAAM,IAAIuuH,UAAU,6IAvEmFkpI,GAGzG,WAA4B/1P,GAC1B,OAGF,WAA4BA,GAC1B,GAAI3F,MAAM4E,QAAQe,GAAM,OAAOg2P,GAAkBh2P,GAJ1Ci2P,CAAmBj2P,IAW5B,YAA0Bk2P,GACxB,GAAsB,oBAAXpnI,QAAmD,MAAzBonI,EAAKpnI,OAAO/uH,WAA2C,MAAtBm2P,EAAK,cAAuB,OAAO77P,MAAMC,KAAK47P,GAZlFC,CAAiBn2P,IAAQ81P,EAA4B91P,IA8DzF,cACE,MAAM,IAAI6sH,UAAU,wIA/D2EupI,GA6CjG,WAAqCnwM,EAAGu4F,IACtC,GAAKv4F,EACL,IAAiB,iBAANA,EAAgB,OAAO+vM,GAAkB/vM,EAAGu4F,IACvD,IAAI55I,GAAInO,OAAOw3F,UAAU74F,SAASC,KAAK4wD,GAAGr2C,MAAM,GAAG,GAEnD,GADU,WAANhL,IAAkBqhD,EAAE3iD,cAAasB,GAAIqhD,EAAE3iD,YAAYiB,MAC7C,QAANK,IAAqB,QAANA,GAAa,OAAOvK,MAAMC,KAAK2rD,GAClD,GAAU,cAANrhD,IAAqB,2CAA2CylF,KAAKzlF,IAAI,OAAOoxP,GAAkB/vM,EAAGu4F,KAG3G,YAA2Bx+I,EAAKs6G,KACnB,MAAPA,IAAeA,GAAMt6G,EAAIzK,UAAQ+kH,GAAMt6G,EAAIzK,QAE/C,QAAS+I,GAAI,EAAG+3P,GAAO,IAAIh8P,MAAMigH,IAAMh8G,GAAIg8G,GAAKh8G,KAAK+3P,GAAK/3P,IAAK0B,EAAI1B,IAEnE,OAAO+3P,GAWT,IAAI/+J,EAAO,WAAgB,EAEvBg/J,GAAU,GACVC,GAAY,GACZC,GAAqB,KACrBC,GAAe,CACjBC,KAAMp/J,EACNq/J,QAASr/J,GAGX,IACwB,oBAAXriG,SAAwBqhQ,GAAUrhQ,QACrB,oBAAbC,WAA0BqhQ,GAAYrhQ,UACjB,oBAArB0hQ,mBAAkCJ,GAAqBI,kBACvC,oBAAhBC,cAA6BJ,GAAeI,YACvD,CADuDA,MAChDh/P,GAAP,CAEF,IAWIi/P,GAAcC,GAAeC,GAAeC,GAAeC,GAV3DC,IADOb,GAAQp9B,WAAa,IACNnS,UACtBA,OAA+B,IAAnBowC,GAA4B,GAAKA,GAC7CC,EAASd,GACTvqO,EAAWwqO,GACXc,GAAoBb,GACpBc,GAAcb,GAEdc,KAAWxrO,EAAS7xB,mBAAqB6xB,EAASgkE,MAA6C,mBAA9BhkE,EAAS/B,kBAAqE,mBAA3B+B,EAASiC,cAC7HwpO,IAASzwC,EAAU9tN,QAAQ,UAAY8tN,EAAU9tN,QAAQ,YAIzDw+P,EAAuB,qBAGvBC,GAA4B,iBAC5BC,GAAgB,gBAChBC,GAAyB,yBAEzBC,GAAc,cACdC,GAAY,YACZC,GAA8B,oBAE9BC,GAAsC,CAAC,OAAQ,OAAQ,QAAS,UAChEC,GAAa,WACf,IACE,OAAO9iQ,CAEA,CAFAA,MACA0C,GACP,OAAO,GAJM,GAObqgQ,GAAiB,UACjBC,GAAe,QACfC,GAAW,CAACF,GAAgBC,IAEhC,YAAqBn6P,GAEnB,OAAO,IAAIoxH,MAAMpxH,EAAK,CACpBnF,IAAK,SAAasW,GAAQxY,IACxB,OAAOA,MAAQwY,GAASA,GAAOxY,IAAQwY,GAAO+oP,OAIpD,IAAIG,GAAkBC,IAAgCjD,EAAnByB,GAAe,GAAkCoB,GAAgB,CAClGK,GAAM,QACNC,IAAO,QACP,WAAY,QACZC,IAAO,UACP,aAAc,UACdC,IAAO,QACP,WAAY,QACZC,IAAO,OACP,UAAW,OACXC,IAAO,UACP,aAAc,UACdC,IAAO,SACP,YAAa,SACbC,IAAO,MACP,SAAU,QACRzD,EAAgByB,GAAcqB,GAAc,CAC9CI,GAAM,QACNQ,KAAQ,QACR,WAAY,QACZC,KAAQ,UACR,aAAc,UACdC,KAAQ,QACR,WAAY,UACVnC,KACAoC,GAAkBZ,IAAiCjD,EAApB0B,GAAgB,GAAmCmB,GAAgB,CACpGiB,MAAS,MACTC,QAAW,MACX19L,MAAS,MACT29L,KAAQ,MACRC,QAAW,MACXC,OAAU,MACVC,IAAO,QACLnE,EAAgB0B,GAAeoB,GAAc,CAC/CgB,MAAS,OACTC,QAAW,OACX19L,MAAS,SACPq7L,KACA0C,GAAuBnB,IAAiCjD,EAApB2B,GAAgB,GAAmCkB,GAAgB,CACzGW,IAAO,YACPD,IAAO,aACPE,IAAO,SACPJ,IAAO,WACPD,IAAO,aACPD,IAAO,WACPG,IAAO,YACLtD,EAAgB2B,GAAemB,GAAc,CAC/CY,KAAQ,WACRC,KAAQ,aACRC,KAAQ,aACNjC,KACA0C,GAAuBpB,IAAiCjD,EAApB4B,GAAgB,GAAmCiB,GAAgB,CACzG,YAAa,MACb,aAAc,MACd,SAAU,MACV,WAAY,MACZ,aAAc,MACd,WAAY,MACZ,UAAW,QACT7C,EAAgB4B,GAAekB,GAAc,CAC/C,WAAY,OACZ,aAAc,OACd,WAAY,SACVlB,KACA0C,GAAgC,oCAEhCC,GAAwB,iBACxBC,GAAsB,0FACtBC,GAAwBxB,IAAiCjD,EAApB6B,GAAgB,GAAmCgB,GAAgB,CAC1G,IAAO,MACP,IAAO,MACP6B,OAAU,MACV,IAAO,MACP,IAAO,QACL1E,EAAgB6B,GAAeiB,GAAc,CAC/C,IAAO,OACP,IAAO,OACP,IAAO,SACLjB,KACA8C,GAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACvCC,GAAcD,GAAS3xO,OAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACnE6xO,GAAkC,CAAC,QAAS,cAAe,YAAa,oBAAqB,gBAO7FC,GAAW,IAAI33P,IACnB/L,OAAOC,KAAKwiQ,GAAgBhB,KAAiB1/P,IAAI2hQ,GAAS30P,IAAI4pD,KAAK+qM,KACnE1jQ,OAAOC,KAAKwiQ,GAAgBf,KAAe3/P,IAAI2hQ,GAAS30P,IAAI4pD,KAAK+qM,KACjE,IAAIC,GAAmB,GAAG/xO,OAAO+vO,GAAUiC,EAAmBF,IAAW,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,OAAQ,SAAU,OAAQ,YAAa,SAAU,YAAa,kBAAmB,gBAAiB,OAAQ,KAAM,UAAW,iBAAkB,cAAe,SAAU,KAAM,YAAa,aAAc,QAAS,aAAc,aAAc,YAAa,YAAa,QAAS,aAAc,eAAgB,OAAQ,WAAY,WAAY,QAAS,KAR7b,gBACO,eACL,UACE,cAKyiB9xO,OAAO2xO,GAASxhQ,IAAI,SAAUoM,GACllB,MAAO,GAAGyjB,OAAOzjB,EAAG,QAClByjB,OAAO4xO,GAAYzhQ,IAAI,SAAUoM,GACnC,MAAO,KAAKyjB,OAAOzjB,MAGjB24G,GAAU65I,EAAOkD,mBAAqB,GAmBtCvuO,GAA8C,mBAA3BA,EAAStxB,eAClB,CAAC,CAAC,qBAAsB,gBAAiB,CAAC,kBAAmB,aAAc,CAAC,sBAAuB,iBAAkB,CAAC,qBAAsB,gBAAiB,CAAC,yBAA0B,oBAAqB,CAAC,wBAAyB,kBAAmB,CAAC,oBAAqB,cAAe,CAAC,iBAAkB,YAAa,CAAC,8BAA+B,wBAAyB,CAAC,yBAA0B,oBAAqB,CAAC,uBAAwB,kBAAmB,CAAC,4BAA6B,sBAAuB,CAAC,2BAA4B,sBAAuB,CAAC,0BAA2B,qBAC/lBrE,QAAQ,SAAUmlJ,GACtB,IAAIg/G,GAAQC,EAAej/G,EAAM,GAE7B9iJ,GAAM8hQ,GAAM,GAEZvpP,GAhBR,YAAgBA,GAGd,MAAY,KAARA,GACQ,UAARA,IACQ,SAARA,GACGA,GAUKypP,CAxBd,YAAuBxoF,GACrB,IAAIr8K,GAAUm2B,EAAStxB,cAAc,UAAYw3K,EAAO,KAExD,GAAIr8K,GACF,OAAOA,GAAQijO,aAAa5mD,GAoBXyoF,CAHNH,GAAM,KAKgB,MAA7BvpP,KACFusG,GAAQ9kH,IAAOuY,MAKrB,IAAI2pP,GAAW,CACbC,aAAc,QACdC,cAAe,UACfC,UAnKuB,KAoKvBC,iBAAkBrD,GAClBsD,gBAAgB,EAChBC,YAAY,EACZC,UAAU,EACVC,sBAAsB,EACtBC,kBAAkB,EAClBC,eAAgB,QAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,kBAAkB,GAGhBj+I,GAAQk+I,eACVl+I,GAAQu9I,UAAYv9I,GAAQk+I,cAG9B,IAAIpuI,GAAUquI,EAAeA,EAAe,GAAIf,IAAWp9I,IAEtD8P,GAAQ2tI,iBAAgB3tI,GAAQ+tI,kBAAmB,GACxD,IAAIvqO,GAAS,GACbp6B,OAAOC,KAAKikQ,IAAUvkQ,QAAQ,SAAUqC,GACtChC,OAAO0nH,eAAettF,GAAQp4B,EAAK,CACjC4lH,YAAY,EACZvlH,IAAK,SAAakY,IAChBq8G,GAAQ50H,GAAOuY,GAEf2qP,GAAYvlQ,QAAQ,SAAU46F,IAC5B,OAAOA,GAAGngE,OAGdh4B,IAAK,WACH,OAAOw0H,GAAQ50H,QAKrBhC,OAAO0nH,eAAettF,GAAQ,eAAgB,CAC5CwtF,YAAY,EACZvlH,IAAK,SAAakY,IAChBq8G,GAAQytI,UAAY9pP,GAEpB2qP,GAAYvlQ,QAAQ,SAAU46F,IAC5B,OAAOA,GAAGngE,OAGdh4B,IAAK,WACH,OAAOw0H,GAAQytI,aAGnB1D,EAAOkD,kBAAoBzpO,GAC3B,IAAI8qO,GAAc,GAUdC,GAAuB,CACzB73P,KAAM,GACN82C,EAAG,EACHpzC,EAAG,EACHo0P,OAAQ,EACRC,OAAO,EACPC,OAAO,GA0BT,cAIE,QAHIh4P,EAAO,GACP0S,GAAK,GAEF1S,KAAS,GACd0S,IANS,iEAMoB,GAAhBnQ,KAAKquM,SAAgB,GAGpC,OAAOl+L,GAET,YAAiBzY,GAGf,QAFIk0F,GAAQ,GAEH5zF,IAAKN,GAAO,IAAIzI,SAAW,EAAG+I,MACrC4zF,GAAM5zF,IAAKN,EAAIM,IAGjB,OAAO4zF,GAET,YAAoB1xF,GAClB,OAAIA,EAAK+f,UACA6sL,GAAQ5sM,EAAK+f,YAEZ/f,EAAKq4N,aAAa,UAAY,IAAIh3N,MAAM,KAAK+J,OAAO,SAAUtN,IACpE,OAAOA,KAIb,YAAoBmB,GAClB,MAAO,GAAG4oB,OAAO5oB,GAAKC,QAAQ,KAAM,SAASA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAOlI,YAAoBxB,GAClB,OAAOzH,OAAOC,KAAKwH,GAAU,IAAIkkE,OAAO,SAAUiuB,GAAK2rK,IACrD,OAAO3rK,GAAM,GAAGhoE,OAAO2zO,GAAW,MAAM3zO,OAAOnqB,EAAO89P,IAAWnpP,OAAQ,MACxE,IAEL,YAA+BkmB,GAC7B,OAAOA,EAAUh1B,OAAS63P,GAAqB73P,MAAQg1B,EAAU8hB,IAAM+gN,GAAqB/gN,GAAK9hB,EAAUtxB,IAAMm0P,GAAqBn0P,GAAKsxB,EAAU8iO,SAAWD,GAAqBC,QAAU9iO,EAAU+iO,OAAS/iO,EAAUgjO,MAiD9N,cACE,IAAIE,EA5VmB,KA6VnBC,GAAMxE,GACNyE,GAAKtrO,GAAOiqO,UACZsB,GAAKvrO,GAAOkqO,iBACZ70P,GAPW,qsrBASf,GAAIi2P,KAAOF,GAAOG,KAAOF,GAAK,CAC5B,IAAIG,GAAQ,IAAIj9P,OAAO,MAAMipB,OAAO4zO,EAAK,OAAQ,KAC7CK,GAAiB,IAAIl9P,OAAO,OAAOipB,OAAO4zO,EAAK,OAAQ,KACvDM,GAAQ,IAAIn9P,OAAO,MAAMipB,OAAO6zO,IAAM,KAC1Ch2P,GAAIA,GAAExG,QAAQ28P,GAAO,IAAIh0O,OAAO8zO,GAAI,MAAMz8P,QAAQ48P,GAAgB,KAAKj0O,OAAO8zO,GAAI,MAAMz8P,QAAQ68P,GAAO,IAAIl0O,OAAO+zO,KAGpH,OAAOl2P,GAGT,IAAIs2P,IAAe,EAEnB,cACM3rO,GAAOoqO,aAAeuB,KAvI5B,YAAmBC,GACjB,GAAKA,GAAQlF,GAIb,KAAIz8P,GAAQixB,EAASiC,cAAc,SACnClzB,GAAM8D,aAAa,OAAQ,YAC3B9D,GAAMswK,UAAYqxF,EAIlB,QAHIC,GAAe3wO,EAASgkE,KAAK4sK,WAC7BC,GAAc,KAETt+P,GAAIo+P,GAAannQ,OAAS,EAAG+I,IAAI,EAAIA,KAAK,CACjD,IAAIi1J,GAAQmpG,GAAap+P,IACrBgvK,IAAW/Z,GAAM+Z,SAAW,IAAInyK,cAEhC,CAAC,QAAS,QAAQlC,QAAQq0K,KAAW,IACvCsvF,GAAcrpG,IAIlBxnI,EAASgkE,KAAKvwE,aAAa1kB,GAAO8hQ,GAC3BH,EAmHLI,CAAUJ,MACVD,IAAe,GAInB,IAAIM,GAAY,CACdC,OAAQ,WACN,MAAO,CACLxjC,IAAK,CACHkjC,IAAKA,GACLI,UAAWG,MAIjBjtJ,MAAO,WACL,MAAO,CACLktJ,yBAA0B,WACxBD,MAEFE,YAAa,WACXF,SAMJ/nI,GAAImiI,GAAU,GACbniI,GAAEwiI,KAAuBxiI,GAAEwiI,GAAwB,IACnDxiI,GAAEwiI,GAAsBv5P,SAAQ+2H,GAAEwiI,GAAsBv5P,OAAS,IACjE+2H,GAAEwiI,GAAsB1nJ,QAAOklB,GAAEwiI,GAAsB1nJ,MAAQ,IAC/DklB,GAAEwiI,GAAsB0F,QAAOloI,GAAEwiI,GAAsB0F,MAAQ,IACpE,IAAIlvO,GAAYgnG,GAAEwiI,GAEdjrI,GAAY,GAUZ06B,IAAS,EAOb,YAAmBtzI,IACZ2jP,KACLrwG,GAASz8F,WAAW72C,EAAI,GAAK44G,GAAUt1H,KAAK0c,IAG9C,YAAgBwpP,GACd,IAAIC,GAAMD,EAAcC,IACpBC,GAAwBF,EAAc5xF,WACtCA,QAAuC,IAA1B8xF,GAAmC,GAAKA,GACrDC,GAAwBH,EAAchjM,SACtCA,QAAqC,IAA1BmjM,GAAmC,GAAKA,GAEvD,MAA6B,iBAAlBH,EACFI,GAAWJ,GAEX,IAAI/0O,OAAOg1O,GAAK,KAAKh1O,OAlJhC,YAAwBmjJ,GACtB,OAAO/0K,OAAOC,KAAK80K,GAAc,IAAIppG,OAAO,SAAUiuB,GAAKotK,IACzD,OAAOptK,GAAM,GAAGhoE,OAAOo1O,GAAe,MAAOp1O,OAAOm1O,GAAWhyF,EAAWiyF,KAAiB,OAC1F,IAAI5qP,OA+I8B6qP,CAAelyF,IAAa,KAAKnjJ,OAAO+xC,GAAS5hE,IAAImlQ,IAAQ34M,KAAK,IAAK,MAAM38B,OAAOg1O,GAAK,KAIhI,YAAyBtiK,EAAS4oF,GAAQi6E,IACxC,GAAI7iK,GAAWA,EAAQ4oF,KAAW5oF,EAAQ4oF,IAAQi6E,IAChD,MAAO,CACLj6E,OAAQA,GACRi6E,SAAUA,GACVC,KAAM9iK,EAAQ4oF,IAAQi6E,KA7BxBrG,MACFrwG,IAAUn7H,EAAS7xB,gBAAgB4jQ,SAAW,aAAe,iBAAiBzzK,KAAKt+D,EAAS07H,cAC/E17H,EAAS/B,iBAAiB,mBAZ1B,aACb+B,EAAS0gE,oBAAoB,mBAAoBhwE,GACjDyqI,GAAS,EACT16B,GAAUh0H,IAAI,SAAUob,IACtB,OAAOA,UA6CX,IAmBIwuD,GAAS,SAA0Bk2D,GAAS1kH,GAAIohK,GAAc+oF,IAChE,IAGIz/P,GACA7F,GACAsC,EALArE,GAAOD,OAAOC,KAAK4hI,IACnB/iI,GAASmB,GAAKnB,OACdwK,QAA2B3H,IAAhB2lQ,GAtBG,SAAuBC,GAAMD,IAC/C,OAAO,SAAUtjP,GAAGC,GAAGizC,GAAGxuB,IACxB,OAAO6+N,GAAK3oQ,KAAK0oQ,GAAatjP,GAAGC,GAAGizC,GAAGxuB,KAoBE8+N,CAAcrqP,GAAImqP,IAAenqP,GAa5E,SARqBxb,IAArB8lQ,IACE5/P,GAAI,EACJvD,EAASu9H,GAAQ5hI,GAAK,MAEtB4H,GAAI,EACJvD,EAASi6K,IAGJ12K,GAAI/I,GAAQ+I,KAEjBvD,EAASgF,GAAShF,EAAQu9H,GAD1B7/H,GAAM/B,GAAK4H,KAC6B7F,GAAK6/H,IAG/C,OAAOv9H,GAqDT,YAAeojQ,GACb,IAAIC,GA3BN,YAAoB79J,GAKlB,QAJIysF,GAAS,GACTqxE,GAAU,EACV9oQ,GAASgrG,EAAOhrG,OAEb8oQ,GAAU9oQ,IAAQ,CACvB,IAAIoD,GAAQ4nG,EAAOuZ,WAAWukJ,MAE9B,GAAI1lQ,IAAS,OAAUA,IAAS,OAAU0lQ,GAAU9oQ,GAAQ,CAC1D,IAAIy8F,GAAQuO,EAAOuZ,WAAWukJ,MAEN,QAAX,MAARrsK,IAEHg7F,GAAO91L,OAAe,KAARyB,KAAkB,KAAe,KAARq5F,IAAiB,QAExDg7F,GAAO91L,KAAKyB,IACZ0lQ,WAGFrxE,GAAO91L,KAAKyB,IAIhB,OAAOq0L,GAIOsxE,CAAWH,GACzB,OAA0B,IAAnBC,GAAQ7oQ,OAAe6oQ,GAAQ,GAAGhpQ,SAAS,IAAM,KAkB1D,YAAwBmpQ,GACtB,OAAO9nQ,OAAOC,KAAK6nQ,GAAOn8L,OAAO,SAAUiuB,GAAKutK,IAC9C,IAAIC,GAAOU,EAAMX,IAGjB,OAFiBC,GAAKA,KAGpBxtK,GAAIwtK,GAAKD,UAAYC,GAAKA,KAE1BxtK,GAAIutK,IAAYC,GAGXxtK,IACN,IAGL,YAAqBszF,EAAQ46E,IAC3B,IAAIl/P,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7EywK,GAAoBn/P,GAAOo/P,UAC3BA,QAAkC,IAAtBD,IAAuCA,GACnD7+J,GAAa++J,GAAeH,IAEO,mBAA5BtwO,GAAU8hF,MAAM4uJ,SAA2BF,GAGpDxwO,GAAU/vB,OAAOylL,GAAU+3E,EAAeA,EAAe,GAAIztO,GAAU/vB,OAAOylL,IAAW,IAAKhkF,IAF9F1xE,GAAU8hF,MAAM4uJ,QAAQh7E,EAAQ+6E,GAAeH,KAYlC,QAAX56E,GACFi7E,GAAY,KAAML,IAItB,IAaIM,GAAaC,GAAWC,GACxB7gQ,GAAS+vB,GAAU/vB,OACnBi/P,GAAQlvO,GAAUkvO,MAClB6B,IAAgC3J,EAAlBwJ,GAAc,GAAiC3G,GAAgBzhQ,OAAOiP,OAAO+zP,GAAqBvB,MAAmB7C,EAAgBwJ,GAAa1G,GAAc1hQ,OAAOiP,OAAO+zP,GAAqBtB,MAAiB0G,IAClOI,GAAuB,KACvBC,GAAa,GACbC,GAAc,GACdC,GAAa,GACbC,GAAgB,GAChBC,GAAW,GACXC,IAA4BlK,EAAhByJ,GAAY,GAA+B5G,GAAgBzhQ,OAAOC,KAAK2hQ,GAAgBH,MAAmB7C,EAAgByJ,GAAW3G,GAAc1hQ,OAAOC,KAAK2hQ,GAAgBF,MAAiB2G,IAMhN,YAAqBhE,EAAW79F,IAC9B,IAAIt6E,GAAQs6E,GAAIp7J,MAAM,KAClB8hL,GAAShhG,GAAM,GACfi7K,GAAWj7K,GAAM/yE,MAAM,GAAGo1C,KAAK,KAEnC,OAAI2+H,KAAWm3E,GAA0B,KAAb8C,IAT9B,YAAoBr5P,GAClB,OAAQ61P,GAAiBnhQ,QAAQsL,GAQei7P,CAAW5B,IAGlD,KAFAA,EAEA,CAGX,IAAIv6P,GAAQ,WACV,IAAIo8P,GAAS,SAAgBC,IAC3B,OAAOt9L,GAAOlkE,GAAQ,SAAU+nD,GAAGnrD,GAAO6oL,IACxC19H,UAAE09H,IAAUvhH,GAAOtnE,GAAO4kQ,GAAS,IAC5Bz5M,IACN,KAGLi5M,GAAaO,GAAO,SAAUpvK,GAAKwtK,GAAMD,IAcvC,OAbIC,GAAK,KACPxtK,GAAIwtK,GAAK,IAAMD,IAGbC,GAAK,IACOA,GAAK,GAAGjyP,OAAO,SAAU6O,IACrC,MAAoB,iBAANA,EAAM,GAEdrkB,QAAQ,SAAU2L,IACxBsuF,GAAItuF,GAAM3M,SAAS,KAAOwoQ,KAIvBvtK,KAET8uK,GAAcM,GAAO,SAAUpvK,GAAKwtK,GAAMD,IAYxC,OAXAvtK,GAAIutK,IAAYA,GAEZC,GAAK,IACOA,GAAK,GAAGjyP,OAAO,SAAU6O,IACrC,MAAoB,iBAANA,EAAM,GAEdrkB,QAAQ,SAAU2L,IACxBsuF,GAAItuF,IAAS67P,KAIVvtK,KAETivK,GAAWG,GAAO,SAAUpvK,GAAKwtK,GAAMD,IACrC,IAAI+B,GAAU9B,GAAK,GACnBxtK,UAAIutK,IAAYA,GAChB+B,GAAQvpQ,QAAQ,SAAU2L,IACxBsuF,GAAItuF,IAAS67P,KAERvtK,KAIT,IAAIuvK,GAAa,QAAS1hQ,IAAU2yB,GAAOgvO,aACvCC,GAAc19L,GAAO+6L,GAAO,SAAU9sK,GAAK0vK,IAC7C,IAAIC,GAAwBD,GAAK,GAC7Bp8E,GAASo8E,GAAK,GACdnC,GAAWmC,GAAK,GAEpB,MAAe,QAAXp8E,KAAqBi8E,KACvBj8E,GAAS,OAG0B,iBAA1Bq8E,KACT3vK,GAAI4vK,MAAMD,IAAyB,CACjCr8E,OAAQA,GACRi6E,SAAUA,KAIuB,iBAA1BoC,KACT3vK,GAAI6vK,SAASF,GAAsB5qQ,SAAS,KAAO,CACjDuuL,OAAQA,GACRi6E,SAAUA,KAIPvtK,IACN,CACD4vK,MAAO,GACPC,SAAU,KAEZd,GAAaU,GAAYG,MACzBZ,GAAgBS,GAAYI,SAC5BjB,GAAuBkB,GAAmBtvO,GAAO+pO,aAAc,CAC7DwF,OAAQvvO,GAAOgqO,iBASnB,YAAmBl3E,EAAQw6E,IACzB,OAAQe,GAAWv7E,IAAW,IAAIw6E,IAKpC,YAAiBx6E,EAAQ5hL,IACvB,OAAQu9P,GAAS37E,IAAW,IAAI5hL,IAElC,YAAmBwC,GACjB,OAAO66P,GAAW76P,IAAS,CACzBo/K,OAAQ,KACRi6E,SAAU,MAcd,cACE,OAAOqB,GAST,YAA4BoB,GAC1B,IAAIhhQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7EuyK,GAAiBjhQ,GAAO+gQ,OACxBA,QAA4B,IAAnBE,GAA4BpI,GAAiBoI,GACtDxlQ,GAAQu9P,GAAgB+H,IAAQC,GAChC18E,GAASu1E,GAAgBkH,IAAQC,IAAkBnH,GAAgBkH,IAAQtlQ,IAC3EylQ,GAAUF,KAAiBpyO,GAAU/vB,OAASmiQ,EAAgB,KAClE,OAAO18E,IAAU48E,IAAW,MAjjB9B,YAAkBvvK,GAChB2qK,GAAYzkQ,KAAK85F,EAG6B,EA4fhDqyB,CAAS,SAAU11D,GACjBsxM,GAAuBkB,GAAmBxyM,EAAEitM,aAAc,CACxDwF,OAAQvvO,GAAOgqO,kBAGnBx3P,KA8CA,IAAIm9P,IAAkDnL,EAA3B0J,GAAuB,GAA0C7G,GAAgBzhQ,OAAOC,KAAK+iQ,GAAqBvB,MAAmB7C,EAAgB0J,GAAsB5G,GAAc1hQ,OAAOC,KAAK+iQ,GAAqBtB,MAAiB4G,IACtQ,YAA0Br5P,GACxB,IAAI+6P,GAEAphQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7E2yK,GAAsBrhQ,GAAOshQ,YAC7BA,QAAsC,IAAxBD,IAAyCA,GACvDE,IAA4BvL,EAAhBoL,GAAY,GAA+BvI,GAAgB,GAAG7vO,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OAAO6vO,KAAkB7C,EAAgBoL,GAAWtI,GAAc,GAAG9vO,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OAAO8vO,KAAgBsI,IAClOI,GAAc,KACdT,GAASlI,IAETxyP,EAAO+nC,SAASmzN,GAAS1I,MAAoBxyP,EAAOkB,KAAK,SAAUC,IACrE,OAAO25P,GAAoBtI,IAAgBzqN,SAAS5mC,SAEpDu5P,GAASlI,KAGPxyP,EAAO+nC,SAASmzN,GAASzI,MAAkBzyP,EAAOkB,KAAK,SAAUC,IACnE,OAAO25P,GAAoBrI,IAAc1qN,SAAS5mC,SAElDu5P,GAASjI,IAGX,IAAI2I,GAAYp7P,EAAO08D,OAAO,SAAUiuB,GAAK4sE,GAC3C,IAAI2gG,EAAWmD,GAAYlwO,GAAOiqO,UAAW79F,GAiB7C,GAfA+jG,GAAW/jG,IACTA,EAAM+hG,GAAWoB,IAAQ3yN,SAASwvH,GAAOy8F,GAAqB0G,IAAQnjG,GAAOA,EAC7E4jG,GAAc5jG,EACd5sE,GAAIszF,OAAS1mB,GACRgkG,GAAab,IAAQnnQ,QAAQgkK,IAAO,GACzC4jG,GAAc5jG,EACd5sE,GAAIszF,OAASw8E,GAAmBljG,EAAK,CACnCmjG,OAAQA,MAELviP,EACLwyE,GAAIutK,SAAWA,EACN3gG,IAAQpsI,GAAOkqO,kBAAoB99F,IAAQ2jG,GAAS1I,KAAmBj7F,IAAQ2jG,GAASzI,KACjG9nK,GAAI6wK,KAAKhqQ,KAAK+lK,IAGX0jG,IAAetwK,GAAIszF,QAAUtzF,GAAIutK,SAAU,CAC9C,IAAImC,EAAuB,OAAhBc,GAAuBM,GAAU9wK,GAAIutK,UAAY,GACxDwD,EAAgBC,GAAQhxK,GAAIszF,OAAQtzF,GAAIutK,UAExCmC,EAAKp8E,SACPk9E,GAAc,MAGhBxwK,GAAIutK,SAAWmC,EAAKnC,UAAYwD,GAAiB/wK,GAAIutK,SACrDvtK,GAAIszF,OAASo8E,EAAKp8E,QAAUtzF,GAAIszF,OAEb,QAAftzF,GAAIszF,SAAqBzlL,GAAOu6P,KAAUv6P,GAAOs6P,MAAW3nO,GAAOgvO,eAGrExvK,GAAIszF,OAAS,OAIjB,OAAOtzF,IA1EF,CACLszF,OAAQ,KACRi6E,SAAU,KACVsD,KAAM,KA0ER,OAAIx7P,EAAO+nC,SAAS,cAAgB/nC,EAAO+nC,SAAS,UAClDqzN,GAAUn9E,OAAS,QAGjBj+K,EAAO+nC,SAAS,eAAiB/nC,EAAO+nC,SAAS,UACnDqzN,GAAUn9E,OAAS,QAGhBm9E,GAAUn9E,QAAUy8E,KAAWjI,KAAiBj6P,GAAO66P,MAAWloO,GAAOgvO,gBAC5EiB,GAAUn9E,OAAS,OACnBm9E,GAAUlD,SAAWyD,GAAQP,GAAUn9E,OAAQm9E,GAAUlD,WAAakD,GAAUlD,WAGzD,OAArBkD,GAAUn9E,QAAmC,OAAhBk9E,MAG/BC,GAAUn9E,OAAS29E,MAA4B,OAG1CR,GAGT,IAAIS,GAAuB,WACzB,cA7gCF,WAAyBh8H,EAAUi8H,IACjC,KAAMj8H,aAAoBi8H,IACxB,MAAM,IAAI30I,UAAU,sCA4gCpB40I,CAAgBj+P,KAAM+9P,GAEtB/9P,KAAKiB,YAAc,GAGrBi9P,OAngCF,WAAsBF,EAAaG,GAAYC,IACzCD,IAAYE,EAAkBL,EAAYvzK,UAAW0zK,IACrDC,IAAaC,EAAkBL,EAAaI,IAChDnrQ,OAAO0nH,eAAeqjJ,EAAa,YAAa,CAC9CzyI,UAAU,GAELyyI,CA6/BPE,CAAaH,EAAS,CAAC,CACrB9oQ,IAAK,MACLE,MAAO,WAGL,QAFIs4F,GAAQztF,KAEHs+P,GAAO/zK,UAAUx4F,OAAQkP,GAAc,IAAIpK,MAAMynQ,IAAO7qM,GAAO,EAAGA,GAAO6qM,GAAM7qM,KACtFxyD,GAAYwyD,IAAQ82B,UAAU92B,IAGhC,IAAI6jK,GAAYr2N,GAAY29D,OAAO5+D,KAAKu+P,iBAAkB,IAC1DtrQ,OAAOC,KAAKokO,IAAW1kO,QAAQ,SAAUqC,IACvCw4F,GAAMxsF,YAAYhM,IAAOijQ,EAAeA,EAAe,GAAIzqK,GAAMxsF,YAAYhM,KAAQ,IAAKqiO,GAAUriO,KACpGmmQ,GAAYnmQ,GAAKqiO,GAAUriO,KAE3B,IAAIupQ,GAAavI,GAAqBvB,IAAgBz/P,IAClDupQ,IAAYpD,GAAYoD,GAAYlnC,GAAUriO,KAClD4K,SAGH,CACD5K,IAAK,QACLE,MAAO,WACL6K,KAAKiB,YAAc,KAEpB,CACDhM,IAAK,mBACLE,MAAO,SAA0BmiO,GAAW76H,IAC1C,IAAIN,GAAaM,GAAW0jF,QAAU1jF,GAAW29J,UAAY39J,GAAW49J,KAAO,CAC7E,EAAG59J,IACDA,GACJxpG,cAAOC,KAAKipG,IAAYnnG,IAAI,SAAUC,IACpC,IAAIwpQ,GAAkBtiK,GAAWlnG,IAC7BkrL,GAASs+E,GAAgBt+E,OACzBi6E,GAAWqE,GAAgBrE,SAC3BC,GAAOoE,GAAgBpE,KACvB8B,EAAU9B,GAAK,GACd/iC,GAAUn3C,MAASm3C,GAAUn3C,IAAU,IAExCg8E,EAAQpqQ,OAAS,GACnBoqQ,EAAQvpQ,QAAQ,SAAU2L,GACH,iBAAVA,IACT+4N,GAAUn3C,IAAQ5hL,GAAS87P,MAKjC/iC,GAAUn3C,IAAQi6E,IAAYC,KAEzB/iC,OAIJymC,EA3DkB,GA8DvBp9I,GAAW,GACX+9I,GAAS,GACTnxO,GAAY,GACZoxO,GAAsB1rQ,OAAOC,KAAKq6B,IA+CtC,YAAoBw/E,EAAMxrB,IACxB,QAAS+8K,GAAO/zK,UAAUx4F,OAAQoiB,GAAO,IAAItd,MAAMynQ,GAAO,EAAIA,GAAO,EAAI,GAAI7qM,GAAO,EAAGA,GAAO6qM,GAAM7qM,KAClGt/C,GAAKs/C,GAAO,GAAK82B,UAAU92B,IAG7B,IAAImrM,GAAUF,GAAO3xJ,IAAS,GAC9B6xJ,UAAQhsQ,QAAQ,SAAUyuH,IACxB9/B,GAAc8/B,GAAO32B,MAAM,KAAM,CAACnJ,IAAa18D,OAAO1Q,OAEjDotE,GAET,YAAmBwrB,GACjB,QAAS8xJ,GAAQt0K,UAAUx4F,OAAQoiB,GAAO,IAAItd,MAAMgoQ,GAAQ,EAAIA,GAAQ,EAAI,GAAIC,GAAQ,EAAGA,GAAQD,GAAOC,KACxG3qP,GAAK2qP,GAAQ,GAAKv0K,UAAUu0K,IAG9B,IAAIF,GAAUF,GAAO3xJ,IAAS,GAC9B6xJ,GAAQhsQ,QAAQ,SAAUyuH,IACxBA,GAAO32B,MAAM,KAAMv2E,MAIvB,cACE,IAAI44F,EAAOxiB,UAAU,GACjBp2E,GAAOtd,MAAM4zF,UAAUr+E,MAAMva,KAAK04F,UAAW,GACjD,OAAOh9D,GAAUw/E,GAAQx/E,GAAUw/E,GAAMriB,MAAM,KAAMv2E,SAAQvf,EAG/D,YAA4BmqQ,GACA,OAAtBA,EAAW5+E,SACb4+E,EAAW5+E,OAAS,OAGtB,IAAIi6E,GAAW2E,EAAW3E,SACtBj6E,GAAS4+E,EAAW5+E,QAAU29E,KAClC,GAAK1D,GACLA,UAAWyD,GAAQ19E,GAAQi6E,KAAaA,GACjC4E,GAAgBC,GAAQh+P,YAAak/K,GAAQi6E,KAAa4E,GAAgBv0O,GAAU/vB,OAAQylL,GAAQi6E,IAE7G,IAAI6E,GAAU,IAAIlB,GAMdhoC,GAAM,CACRmpC,MAAO,WACL,IAAIrjQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAEjF,OAAIwpK,IACF5iG,GAAU,cAAet1J,IACzBsjQ,GAAa,qBAAsBtjQ,IAC5BsjQ,GAAa,QAAStjQ,KAEtB+gB,QAAQuxC,OAAO,2CAG1BixM,MAAO,WACL,IAAIvjQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7E80K,GAAqBxjQ,GAAOwjQ,oBAEF,IAA1BhyO,GAAOmqO,iBACTnqO,GAAOmqO,gBAAiB,GAG1BnqO,GAAOuqO,kBAAmB,EAC1B0H,GAAS,WACPC,GAAY,CACVF,mBAAoBA,KAEtBluG,GAAU,QAASt1J,QA8CrB2jQ,GAAM,CACRC,OA7EW,WACXpyO,GAAOmqO,gBAAiB,EACxBnqO,GAAOuqO,kBAAmB,EAC1BzmG,GAAU,WA2EV9jI,OAAQA,GACR0oM,IAAKA,GACL5qI,MA9CU,CACVkvK,KAAM,SAAcqF,IAClB,GAAc,OAAVA,GACF,OAAO,KAGT,GAAuB,WAAnB1N,GAAQ0N,KAAuBA,GAAMv/E,QAAUu/E,GAAMtF,SACvD,MAAO,CACLj6E,OAAQu/E,GAAMv/E,OACdi6E,SAAUyD,GAAQ6B,GAAMv/E,OAAQu/E,GAAMtF,WAAasF,GAAMtF,UAI7D,GAAIvjQ,MAAM4E,QAAQikQ,KAA2B,IAAjBA,GAAM3tQ,OAAc,CAC9C,IAAIqoQ,GAAuC,IAA5BsF,GAAM,GAAGjqQ,QAAQ,OAAeiqQ,GAAM,GAAGtzP,MAAM,GAAKszP,GAAM,GACrEv/E,GAASw8E,GAAmB+C,GAAM,IACtC,MAAO,CACLv/E,OAAQA,GACRi6E,SAAUyD,GAAQ19E,GAAQi6E,KAAaA,IAI3C,GAAqB,iBAAVsF,KAAuBA,GAAMjqQ,QAAQ,GAAGovB,OAAOwI,GAAOiqO,UAAW,OAAQ,GAAMoI,GAAMlmQ,MAAM28P,KAAiC,CACrI,IAAIwJ,GAAgBC,GAAiBF,GAAMrhQ,MAAM,KAAM,CACrD8+P,aAAa,IAEf,MAAO,CACLh9E,OAAQw/E,GAAcx/E,QAAU29E,KAChC1D,SAAUyD,GAAQ8B,GAAcx/E,OAAQw/E,GAAcvF,WAAauF,GAAcvF,UAIrF,GAAqB,iBAAVsF,GAAoB,CAC7B,IAAIG,GAAU/B,KAEd,MAAO,CACL39E,OAAQ0/E,GACRzF,SAAUyD,GAAQgC,GAASH,KAAUA,OAU3CT,QAASA,GACTa,mBAAoBA,GACpB3F,OAAQA,IAGNoF,GAAc,WAChB,IAAI1jQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7Ew1K,GAAwBlkQ,GAAOwjQ,mBAC/BA,QAA+C,IAA1BU,GAAmCx3O,EAAWw3O,IAClE9sQ,OAAOC,KAAKu3B,GAAU/vB,QAAQ3I,OAAS,GAAKs7B,GAAOgvO,eAAiBtI,IAAU1mO,GAAOmqO,gBAAgBgI,GAAIzpC,IAAImpC,MAAM,CACtHliQ,KAAMqiQ,MAIV,YAAqB7xP,EAAKwyP,IACxB/sQ,cAAO0nH,eAAentG,EAAK,WAAY,CACrCnY,IAAK2qQ,KAEP/sQ,OAAO0nH,eAAentG,EAAK,OAAQ,CACjCnY,IAAK,WACH,OAAOmY,EAAIgmB,SAASx+B,IAAI,SAAUiiB,IAChC,OAAOkjP,GAAOljP,SAIpBhkB,OAAO0nH,eAAentG,EAAK,OAAQ,CACjCnY,IAAK,WACH,GAAK0+P,GACL,KAAIt0F,GAAYl3I,EAASiC,cAAc,OACvCi1I,UAAUmI,UAAYp6J,EAAI2pF,KACnBsoE,GAAU7oG,aAGdppD,EAoDT,YAA+B3R,GAC7B,IAAIokQ,GAAgBpkQ,EAAOk/P,MACvBmF,GAAOD,GAAcC,KACrBtrG,GAAOqrG,GAAcrrG,KACrBurB,GAAStkL,EAAOskL,OAChBi6E,GAAWv+P,EAAOu+P,SAClB7kO,GAAY15B,EAAO05B,UACnB+zG,GAASztI,EAAOytI,OAChB9iE,GAAQ3qE,EAAO2qE,MACf25L,GAAStkQ,EAAOskQ,OAChBC,EAAUvkQ,EAAOukQ,QACjB5xK,EAAQ3yF,EAAO2yF,MACf6xK,EAAoBxkQ,EAAOykQ,UAC3BA,OAAkC,IAAtBD,GAAuCA,EAEnDtoH,GAAO6c,GAAKp5I,MAAQo5I,GAAOsrG,GAC3Bh3H,GAAQ6O,GAAK7O,MACb1zG,GAASuiH,GAAKviH,OAEd+qO,GAA4B,QAAXpgF,GACjBqgF,GAAY,CAACnzO,GAAOkqO,iBAAkB6C,GAAW,GAAGv1O,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OAAOu1O,IAAY,IAAIhyP,OAAO,SAAU+hD,IAC5H,OAAoC,IAA7BqkC,EAAMkqE,QAAQjjK,QAAQ00D,GAAO,GACnC/hD,OAAO,SAAU+hD,IAClB,MAAa,KAANA,MAAcA,KACpBtlC,OAAO2pE,EAAMkqE,SAASl3G,KAAK,KAC1B4pH,GAAU,CACZx0G,SAAU,GACVoxG,WAAYkwF,EAAeA,EAAe,GAAI1pK,EAAMw5E,YAAa,GAAI,CACnE,cAAemY,GACf,YAAai6E,GACbqG,MAASD,GACTE,KAAQlyK,EAAMw5E,WAAW04F,MAAQ,MACjCnoC,MAAS,6BACTooC,QAAW,OAAO97O,OAAOqkH,GAAO,KAAKrkH,OAAO2Q,OAG5CorO,GAAyBL,MAAoB/xK,EAAMkqE,QAAQjjK,QAAQ,SAAW,CAChFyzI,MAAO,GAAGrkH,OAAOqkH,GAAQ1zG,GAAS,GAAK,MAAQ,OAC7C,GAEA8qO,IACFl1F,GAAQpD,WAAWmsF,IAAiB,IAGlC3tL,KACF4kG,GAAQx0G,SAASljE,KAAK,CACpBmmQ,IAAK,QACL7xF,WAAY,CACV/0J,GAAIm4J,GAAQpD,WAAW,oBAAsB,SAASnjJ,OAAOu7O,GAAWS,OAE1EjqM,SAAU,CAAC4P,aAEN4kG,GAAQpD,WAAWxhG,OAG5B,IAAIryD,GAAO+jP,EAAeA,EAAe,GAAI9sF,IAAU,GAAI,CACzD+U,OAAQA,GACRi6E,SAAUA,GACV8F,KAAMA,GACNtrG,KAAMA,GACNurG,OAAQA,GACR5qO,UAAWA,GACX+zG,OAAQA,GACR5uI,OAAQw9P,EAAeA,EAAe,GAAI0I,IAAyBpyK,EAAM9zF,UAGvEq8P,GAAQniG,GAAKp5I,OAAS0kP,GAAK1kP,MAAQ2jP,GAAa,uBAAwBhrP,KAAS,CACnFyiD,SAAU,GACVoxG,WAAY,IACVm3F,GAAa,uBAAwBhrP,KAAS,CAChDyiD,SAAU,GACVoxG,WAAY,IAGVA,GAAa+uF,GAAM/uF,WAKvB,OAHA7zJ,GAAKyiD,SAHUmgM,GAAMngM,SAIrBziD,GAAK6zJ,WAAaA,GAEd1+B,GArGN,YAAmByO,GACjB,IACIqiH,GAAWriH,EAAKqiH,SAChBxjM,GAAWmhF,EAAKnhF,SAChBoxG,GAAajwB,EAAKiwB,WAClB1+B,GAASyO,EAAKzO,OACdr2H,IAAgB,IAAXq2H,GAAkB,GAAGzkH,OALjBkzH,EAAKooC,OAK2B,KAAKt7J,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OAAOu1O,IAAY9wH,GACnG,MAAO,CAAC,CACNuwH,IAAK,MACL7xF,WAAY,CACV1wK,MAAO,kBAETs/D,SAAU,CAAC,CACTijM,IAAK,SACL7xF,WAAYkwF,EAAeA,EAAe,GAAIlwF,IAAa,GAAI,CAC7D/0J,GAAIA,KAEN2jD,SAAUA,OAqFLkqM,CAAS3sP,IAjIpB,YAAiB4jI,GACf,IAAInhF,GAAWmhF,EAAKnhF,SAChBspM,GAAOnoH,EAAKmoH,KACZtrG,GAAO7c,EAAK6c,KACZoT,GAAajwB,EAAKiwB,WAClBttK,GAASq9I,EAAKr9I,OACd66B,GAAYwiH,EAAKxiH,UAErB,GAAIwrO,GAAsBxrO,KAAc2qO,GAAK1kP,QAAUo5I,GAAKp5I,MAAO,CACjE,IAEI1oB,GAAS,CACXukD,EAHU6oN,GAAKh3H,MACJg3H,GAAK1qO,OAEI,EACpBvxB,EAAG,IAEL+jK,GAAW1wK,MAAW0pQ,GAAW9I,EAAeA,EAAe,GAAIx9P,IAAS,GAAI,CAC9E,mBAAoB,GAAGmqB,OAAO/xB,GAAOukD,EAAI9hB,GAAU8hB,EAAI,GAAI,OAAOxyB,OAAO/xB,GAAOmR,EAAIsxB,GAAUtxB,EAAI,GAAI,SAI1G,MAAO,CAAC,CACN41P,IAAK,MACL7xF,WAAYA,GACZpxG,SAAUA,KA4GHqqM,CAAO9sP,IAGlB,YAAgCtY,GAC9B,IAAIuvK,GAAUvvK,EAAOuvK,QACjBliC,GAAQrtI,EAAOqtI,MACf1zG,GAAS35B,EAAO25B,OAChBD,GAAY15B,EAAO05B,UACnBixC,GAAQ3qE,EAAO2qE,MACfgoB,GAAQ3yF,EAAO2yF,MACf0yK,GAAqBrlQ,EAAOykQ,UAC5BA,QAAmC,IAAvBY,IAAwCA,GAEpDl5F,GAAakwF,EAAeA,EAAeA,EAAe,GAAI1pK,GAAMw5E,YAAaxhG,GAAQ,CAC3FA,MAASA,IACP,IAAK,GAAI,CACXi6L,MAASjyK,GAAMkqE,QAAQl3G,KAAK,OAG1B8+M,KACFt4F,GAAWmsF,IAAiB,IAG9B,IAAIz5P,EAASw9P,EAAe,GAAI1pK,GAAM9zF,QAElCqmQ,GAAsBxrO,MACxB76B,EAAO66B,UAt8BX,YAAyBwhO,GACvB,IAAIxhO,GAAYwhO,EAAMxhO,UAClB4rO,GAAcpK,EAAM7tH,MAEpBk4H,GAAerK,EAAMvhO,OACrBA,QAA0B,IAAjB4rO,GAxUK,GAwUqCA,GACnDC,GAAsBtK,EAAMuK,cAC5BA,QAAwC,IAAxBD,IAAyCA,GACzD7zP,GAAM,GAEV,OACEA,IADE8zP,IAAiBtN,GACZ,aAAanvO,OAAO0Q,GAAU8hB,EA9UrB,SAsUU,IAAhB8pN,GAtUM,GAsUmCA,IAQE,EAAG,QAAQt8O,OAAO0Q,GAAUtxB,EA9UjE,GA8UyEuxB,GAAS,EAAG,QAChG+rO,GACE,yBAAyB18O,OAAO0Q,GAAU8hB,EAhVjC,GAgVwC,qBAAqBxyB,OAAO0Q,GAAUtxB,EAhV9E,GAgVqF,SAE9F,aAAa4gB,OAAO0Q,GAAU8hB,EAlVrB,GAkV4B,QAAQxyB,OAAO0Q,GAAUtxB,EAlVrD,GAkV4D,SAG9EuJ,IAAO,SAASqX,OAAO0Q,GAAUh1B,KArVf,IAqV2Bg1B,GAAU+iO,OAAQ,EAAK,GAAI,MAAMzzO,OAAO0Q,GAAUh1B,KArV7E,IAqVyFg1B,GAAUgjO,OAAQ,EAAK,GAAI,OAC/H,UAAU1zO,OAAO0Q,GAAU8iO,OAAQ,QACnC7qP,CAk7BiBg0P,CAAgB,CACpCjsO,UAAWA,GACX+rO,eAAe,EACfp4H,MAAOA,GACP1zG,OAAQA,KAEV96B,EAAO,qBAAuBA,EAAO66B,WAGvC,IAAIksO,EAAcT,GAAWtmQ,GAEzB+mQ,EAAY1vQ,OAAS,IACvBi2K,GAAW1wK,MAAWmqQ,GAGxB,IAAIj0P,EAAM,GACVA,SAAI9Z,KAAK,CACPmmQ,IAAK,OACL7xF,WAAYA,GACZpxG,SAAU,CAACw0G,MAGT5kG,IACFh5D,EAAI9Z,KAAK,CACPmmQ,IAAK,OACL7xF,WAAY,CACVy4F,MAAO,WAET7pM,SAAU,CAAC4P,MAIRh5D,EAET,YAAmC3R,GACjC,IAAIuvK,GAAUvvK,EAAOuvK,QACjB5kG,GAAQ3qE,EAAO2qE,MACfgoB,GAAQ3yF,EAAO2yF,MAEfw5E,GAAakwF,EAAeA,EAAeA,EAAe,GAAI1pK,GAAMw5E,YAAaxhG,GAAQ,CAC3FA,MAASA,IACP,IAAK,GAAI,CACXi6L,MAASjyK,GAAMkqE,QAAQl3G,KAAK,OAG1BigN,GAAcT,GAAWxyK,GAAM9zF,QAE/B+mQ,GAAY1vQ,OAAS,IACvBi2K,GAAW1wK,MAAWmqQ,IAGxB,IAAIj0P,GAAM,GACVA,UAAI9Z,KAAK,CACPmmQ,IAAK,OACL7xF,WAAYA,GACZpxG,SAAU,CAACw0G,MAGT5kG,IACFh5D,GAAI9Z,KAAK,CACPmmQ,IAAK,OACL7xF,WAAY,CACVy4F,MAAO,WAET7pM,SAAU,CAAC4P,MAIRh5D,GAGT,IAAIk0P,GAAWj3O,GAAU/vB,OACzB,YAAqB2/P,GACnB,IAAInxH,GAAQmxH,EAAK,GACb7kO,GAAS6kO,EAAK,GAIdsH,GADe3K,EADDqD,EAAKjuP,MAAM,GACkB,GACjB,GAI9B,MAgCO,CACLoP,OAAO,EACP0tH,MAAOA,GACP1zG,OAAQA,GACR6kO,KApCExjQ,MAAM4E,QAAQkmQ,IACN,CACR9H,IAAK,IACL7xF,WAAY,CACVy4F,MAAO,GAAG57O,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OA9uCvC,kBAgvCH+xC,SAAU,CAAC,CACTijM,IAAK,OACL7xF,WAAY,CACVy4F,MAAO,GAAG57O,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OAhvCrC,aAivCHgC,KAAM,eACN8U,EAAGgmO,GAAW,KAEf,CACD9H,IAAK,OACL7xF,WAAY,CACVy4F,MAAO,GAAG57O,OAAOwI,GAAOiqO,UAAW,KAAKzyO,OAxvCvC,WAyvCDgC,KAAM,eACN8U,EAAGgmO,GAAW,OAKV,CACR9H,IAAK,OACL7xF,WAAY,CACVnhJ,KAAM,eACN8U,EAAGgmO,KASDvvQ,CAGV,IAAIwvQ,GAA6B,CAC/BpmP,OAAO,EACP0tH,MAAO,IACP1zG,OAAQ,KASV,YAAkB4kO,EAAUj6E,IAC1B,IAAIk9E,GAAcl9E,GAElB,MAAe,OAAXA,IAA2C,OAAxB9yJ,GAAO+pO,eAC5Bj3E,GAAS29E,MAGJ,IAAIlhP,QAAQ,SAAUC,GAASsxC,IAQpC,GAHQgxM,GAAa,uBAGD,OAAhB9B,GAAsB,CACxB,IAAId,GAAOoB,GAAUvD,IAAa,GAClCA,EAAWmC,GAAKnC,UAAYA,EAC5Bj6E,GAASo8E,GAAKp8E,QAAUA,GAG1B,GAAIi6E,GAAYj6E,IAAUuhF,GAASvhF,KAAWuhF,GAASvhF,IAAQi6E,GAE7D,OAAOv9O,GAAQglP,GADJH,GAASvhF,IAAQi6E,MA5BlC,YAA4BA,EAAUj6E,KAC/Bs0E,KAAepnO,GAAO2qO,kBAAoBoC,GAC7CnrO,QAAQ+B,MAAM,mBAAoBnM,OAAOu1O,EAAU,kBAAoBv1O,OAAOs7J,GAAQ,mBA8BtF2hF,CAAmB1H,EAAUj6E,IAC7BtjK,GAAQq7O,EAAeA,EAAe,GAAI0J,IAA6B,GAAI,CACzEvH,KAAMhtO,GAAO2qO,kBAAoBoC,GAAW+E,GAAa,wBAA+B,QAK9F,IAAI4C,GAAS,WAAgB,EAEzB1nP,GAAIgT,GAAO0qO,oBAAsBjE,IAAeA,GAAYZ,MAAQY,GAAYX,QAAUW,GAAc,CAC1GZ,KAAM6O,GACN5O,QAAS4O,IAEPC,GAAW,aAcXC,SAZQ,SAAelhQ,IACzBsZ,UAAE64O,KAAK,GAAGruO,OAAOm9O,GAAU,KAAKn9O,OAAO9jB,GAAM,YACtC,WACL,OAIM,SAAaA,IACrBsZ,GAAE64O,KAAK,GAAGruO,OAAOm9O,GAAU,KAAKn9O,OAAO9jB,GAAM,UAC7CsZ,GAAE84O,QAAQ,GAAGtuO,OAAOm9O,GAAU,KAAKn9O,OAAO9jB,IAAO,GAAG8jB,OAAOm9O,GAAU,KAAKn9O,OAAO9jB,GAAM,WAAY,GAAG8jB,OAAOm9O,GAAU,KAAKn9O,OAAO9jB,GAAM,UANhIqpB,CAAIrpB,MAcXmhQ,GAAS,WAAgB,EAE7B,YAAmBllQ,GAEjB,MAAwB,iBADZA,EAAKq4N,aAAer4N,EAAKq4N,aAAa8+B,IAAiB,KAC3C,CAsB1B,YAAyB0F,GACvB,OAAOtxO,EAASq4I,gBAAgB,6BAA8Bi5F,GAGhE,YAAuBA,GACrB,OAAOtxO,EAASiC,cAAcqvO,GAGhC,YAAoBsI,GAClB,IAAItmQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7E63K,GAAevmQ,GAAOwmQ,KACtBA,QAAwB,IAAjBD,GAA8C,QAApBD,EAAYtI,IAAgBj5F,GAAkBp2I,GAAgB43O,GAEnG,GAA2B,iBAAhBD,EACT,OAAO55O,EAAS+3I,eAAe6hG,GAGjC,IAAItI,GAAMwI,GAAKF,EAAYtI,KAC3B5mQ,OAAOC,KAAKivQ,EAAYn6F,YAAc,IAAIp1K,QAAQ,SAAUqC,IAC1D4kQ,GAAIz+P,aAAanG,GAAKktQ,EAAYn6F,WAAW/yK,OAE/C,IAAI2hE,GAAWurM,EAAYvrM,UAAY,GACvCA,UAAShkE,QAAQ,SAAUm9J,IACzB8pG,GAAIjvO,YAAY03O,GAAWvyG,GAAO,CAChCsyG,KAAMA,QAGHxI,GAaT,IAAI0I,GAAW,CACbrmQ,QAAS,SAAiBsmQ,IACxB,IAAIxlQ,GAAOwlQ,GAAS,GAEpB,GAAIxlQ,GAAK3G,WAKP,GAJAmsQ,GAAS,GAAG5vQ,QAAQ,SAAU6vQ,IAC5BzlQ,GAAK3G,WAAW2lB,aAAasmP,GAAWG,IAAYzlQ,MAGb,OAArCA,GAAKq4N,aAAa8+B,KAA2B9mO,GAAOyqO,mBAAoB,CAC1E,IAAIh3E,GAAUv4J,EAASmC,cApB/B,YAAuB1tB,GACrB,IAAI8jL,GAAU,IAAIj8J,OAAO7nB,EAAKutK,UAAW,KAGzCuW,MAAU,GAAGj8J,OAAOi8J,GAAS,gCAGtBA,CAaoC4hF,CAAc1lQ,KACnDA,GAAK3G,WAAWssQ,aAAa7hF,GAAS9jL,SAEtCA,GAAKymB,UAIXm/O,KAAM,SAAcJ,IAClB,IAAIxlQ,GAAOwlQ,GAAS,GAChBK,GAAaL,GAAS,GAG1B,IAAKM,GAAW9lQ,IAAMvH,QAAQ43B,GAAOkqO,kBACnC,OAAOgL,GAASrmQ,QAAQsmQ,IAG1B,IAAIO,GAAS,IAAInnQ,OAAO,GAAGipB,OAAOwI,GAAOiqO,UAAW,QAGpD,UAFOuL,GAAW,GAAG76F,WAAW/0J,GAE5B4vP,GAAW,GAAG76F,WAAWy4F,MAAO,CAClC,IAAIuC,GAAeH,GAAW,GAAG76F,WAAWy4F,MAAMpiQ,MAAM,KAAKugE,OAAO,SAAUiuB,GAAK4sE,IACjF,OAAIA,KAAQpsI,GAAOkqO,kBAAoB99F,GAAIjgK,MAAMupQ,IAC/Cl2K,GAAIo2K,MAAMvvQ,KAAK+lK,IAEf5sE,GAAIqU,OAAOxtG,KAAK+lK,IAGX5sE,IACN,CACDqU,OAAQ,GACR+hK,MAAO,KAGTJ,GAAW,GAAG76F,WAAWy4F,MAAQuC,GAAaC,MAAMzhN,KAAK,KAEtB,IAAnC0hN,GAAiBhiK,OAAOnvG,OACtBiL,GAAKsuB,gBAAgB,SAErBtuB,GAAK5B,aAAa,QAAS4nQ,GAAa9hK,OAAO1/C,KAAK,MAIxD,IAAI2hN,GAAeN,GAAW7tQ,IAAI,SAAUiiB,IAC1C,OAAOkjP,GAAOljP,MACbuqC,KAAK,MAERxkD,GAAK5B,aAAa+4P,GAAe,IACjCn3P,GAAK4qK,UAAYu7F,KAIrB,YAA8BlmH,GAC5BA,IAGF,YAAiBmmH,EAAWpvQ,IAC1B,IAAIqvQ,GAAuC,mBAAbrvQ,GAA0BA,GAAWkuQ,GAEnE,GAAyB,IAArBkB,EAAUrxQ,OACZsxQ,SACK,CACL,IAAIC,GAAQC,GAxkDc,UA0kDtBl2O,GAAOwqO,iBACTyL,GAAQ1P,EAAO5mF,uBAAyBu2F,IAG1CD,GAAM,WACJ,IAAIE,GA/HV,cACE,OAA8B,IAA1Bn2O,GAAOmqO,eACF+K,GAASrmQ,QAGJqmQ,GAASl1O,GAAOmqO,iBACZ+K,GAASrmQ,QAyHTunQ,GACVvQ,GAAO+O,SAAW,UACtBmB,EAAUpuQ,IAAIwuQ,IACdtQ,KACAmQ,QAIN,IAAIxuQ,IAAW,EACf,cACEA,IAAW,EAEb,cACEA,IAAW,EAEb,IAAI6uQ,GAAK,KACT,YAAiBniQ,GACf,GAAKsyP,IAIAxmO,GAAOuqO,iBAIZ,KAAI+L,GAAwBpiQ,EAAQqiQ,aAChCA,QAAyC,IAA1BD,GAAmCzB,GAASyB,GAC3DE,GAAwBtiQ,EAAQuiQ,aAChCA,QAAyC,IAA1BD,GAAmC3B,GAAS2B,GAC3DE,GAAwBxiQ,EAAQyiQ,uBAChCA,QAAmD,IAA1BD,GAAmC7B,GAAS6B,GACrEE,GAAwB1iQ,EAAQ2iQ,qBAChCA,QAAiD,IAA1BD,GAAmC17O,EAAW07O,GACzEP,GAAK,IAAI7P,GAAkB,SAAUsQ,IACnC,IAAItvQ,GACJ,KAAIuvQ,EAAgBtG,KACpBl0D,GAAQu6D,IAASvxQ,QAAQ,SAAUyxQ,GAajC,GAZ4B,cAAxBA,EAAennQ,MAAwBmnQ,EAAeC,WAAWvyQ,OAAS,IAAMwyQ,GAAUF,EAAeC,WAAW,MAClHj3O,GAAOsqO,sBACTqM,GAAuBK,EAAe14P,QAGxCi4P,GAAaS,EAAe14P,SAGF,eAAxB04P,EAAennQ,MAAyBmnQ,EAAe14P,OAAOtV,YAAcg3B,GAAOsqO,sBACrFqM,GAAuBK,EAAe14P,OAAOtV,YAGnB,eAAxBguQ,EAAennQ,MAAyBqnQ,GAAUF,EAAe14P,UAAY+qP,GAAgCjhQ,QAAQ4uQ,EAAepK,eACtI,GAAqC,UAAjCoK,EAAepK,eA3L3B,YAA0Bj9P,GACxB,IAAImjL,GAASnjL,EAAKq4N,aAAer4N,EAAKq4N,aAAag/B,IAAe,KAC9DgG,GAAOr9P,EAAKq4N,aAAer4N,EAAKq4N,aAAai/B,IAAa,KAC9D,OAAOn0E,IAAUk6E,GAwLqCmK,CAAiBH,EAAe14P,QAAS,CACvF,IAAI84P,EAAoB7E,GAAiBkD,GAAWuB,EAAe14P,SAE/DyuP,GAAWqK,EAAkBrK,SAEjCiK,EAAe14P,OAAOvQ,aAAai5P,GAHtBoQ,EAAkBtkF,QAG2BikF,GACtDhK,IAAUiK,EAAe14P,OAAOvQ,aAAak5P,GAAW8F,SA3LtE,YAAyBp9P,GACvB,OAAOA,GAAQA,EAAK+f,WAAa/f,EAAK+f,UAAUnmB,UAAYoG,EAAK+f,UAAUnmB,SAASy2B,GAAOkqO,mBA2L1EmN,CAAgBL,EAAe14P,SACxCm4P,GAAaO,EAAe14P,aAK/BooP,IACL2P,GAAGtiH,QAAQ8iH,GAAsB,CAC/BS,WAAW,EACX38F,YAAY,EACZ48F,eAAe,EACfC,SAAS,KAQb,YAAsB7nQ,GACpB,IAAI1F,GAAQ0F,EAAKq4N,aAAa,SAC1B7nN,GAAM,GAEV,OAAIlW,KACFkW,GAAMlW,GAAM+G,MAAM,KAAKugE,OAAO,SAAUiuB,GAAKv1F,IAC3C,IAAIoD,GAASpD,GAAM+G,MAAM,KACrBlL,GAAOuH,GAAO,GACdvF,GAAQuF,GAAO0R,MAAM,GAEzB,OAAIjZ,IAAQgC,GAAMpD,OAAS,IACzB86F,GAAI15F,IAAQgC,GAAMqsD,KAAK,KAAKnyC,QAGvBw9E,IACN,KAGEr/E,GAGT,YAAsBxQ,GACpB,IAAI8nQ,GAAiB9nQ,EAAKq4N,aAAa,eACnC0vC,GAAmB/nQ,EAAKq4N,aAAa,aACrC2vC,QAA+BpwQ,IAAnBoI,EAAKgoQ,UAA0BhoQ,EAAKgoQ,UAAU31P,OAAS,GACnE7B,GAAMoyP,GAAiBkD,GAAW9lQ,IAWtC,OATKwQ,GAAI2yK,SACP3yK,GAAI2yK,OAAS29E,MAGXgH,IAAkBC,KACpBv3P,GAAI2yK,OAAS2kF,GACbt3P,GAAI4sP,SAAW2K,IAGbv3P,GAAI4sP,UAAY5sP,GAAI2yK,SAIpB3yK,GAAI2yK,QAAU6kF,GAAUjzQ,OAAS,IACnCyb,GAAI4sP,SA5+BR,YAAoBj6E,EAAQ8kF,IAC1B,OAAQtJ,GAAYx7E,IAAW,IAAI8kF,IA2+BlBC,CAAW13P,GAAI2yK,OAAQnjL,EAAKgoQ,YAAcG,GAAU33P,GAAI2yK,OAAQilF,GAAMpoQ,EAAKgoQ,cAGvFx3P,GAAI4sP,UAAY/sO,GAAOgvO,cAAgBr/P,EAAK4yJ,YAAc5yJ,EAAK4yJ,WAAW5xJ,WAAamqK,KAAKsB,YAC/Fj8J,GAAI4sP,SAAWp9P,EAAK4yJ,WAAW96J,OAG1B0Y,GAGT,YAA2BxQ,GACzB,IAAIqoQ,GAAkBz7D,GAAQ5sM,EAAKgrK,YAAYppG,OAAO,SAAUiuB,GAAK4hF,IACnE,MAAiB,UAAb5hF,GAAI9rF,MAAiC,UAAb8rF,GAAI9rF,OAC9B8rF,GAAI4hF,GAAK1tK,MAAQ0tK,GAAKt5K,OAGjB03F,IACN,IACCrmB,GAAQxpE,EAAKq4N,aAAa,SAC1B+qC,GAAUpjQ,EAAKq4N,aAAa,oBAEhC,OAAIhoM,GAAOqqO,WACLlxL,GACF6+L,GAAgB,mBAAqB,GAAGxgP,OAAOwI,GAAOkqO,iBAAkB,WAAW1yO,OAAOu7O,IAAWS,OAErGwE,GAAgB,eAAiB,OACjCA,GAAgBC,UAAe,UAI5BD,GAwBT,YAAmBroQ,GACjB,IAAIuoQ,GAASh7K,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,CAC/Ei7K,aAAa,GAGXC,GAAeC,GAAY1oQ,GAC3Bo9P,GAAWqL,GAAarL,SACxBj6E,GAASslF,GAAatlF,OACtBwlF,GAAeF,GAAa/H,KAE5B2H,GAAkBO,GAAiB5oQ,GACnC6oQ,GAAaC,GAAW,sBAAuB,GAAI9oQ,GACnD+oQ,GAAcR,GAAOC,YAAcA,GAAYxoQ,GAAQ,GAC3D,OAAOk7P,EAAe,CACpBkC,SAAUA,GACV5zL,MAAOxpE,EAAKq4N,aAAa,SACzB+qC,QAASpjQ,EAAKq4N,aAAa,oBAC3Bl1C,OAAQA,GACR5qJ,UAAW6iO,GACXxjG,KAAM,CACJwlG,SAAU,KACVj6E,OAAQ,KACRu9E,KAAM,IAERyC,OAAQ,KACR72H,QAAQ,EACR96C,MAAO,CACLkqE,QAASitG,GACTjrQ,OAAQqrQ,GACR/9F,WAAYq9F,KAEbQ,IAGL,IAAIG,GAAWv7O,GAAU/vB,OAEzB,YAA0BsC,GACxB,IAAIipQ,GAAqC,SAA1B54O,GAAOmqO,eAA4B0O,GAAUlpQ,EAAM,CAChEwoQ,aAAa,IACVU,GAAUlpQ,GAEf,OAAKipQ,GAASz3K,MAAMkqE,QAAQjjK,QAAQ2gQ,IAC3B+I,GAAa,qBAAsBniQ,EAAMipQ,IAEzC9G,GAAa,iCAAkCniQ,EAAMipQ,IAIhE,IAAIE,GAAgB,IAAInnQ,IAQxB,YAAgBkf,GACd,IAAIlqB,GAAWu2F,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,KACnF,IAAKwpK,GAAQ,OAAOn3O,QAAQC,UAC5B,IAAIupP,GAAgB79O,EAAS7xB,gBAAgBqmB,UAEzCspP,GAAS,SAAgBhmF,GAC3B,OAAO+lF,GAAcpkQ,IAAI,GAAG6iB,OAAO0vO,GAA6B,KAAK1vO,OAAOw7J,KAG1EimF,GAAY,SAAmBjmF,GACjC,OAAO+lF,GAAc3iP,OAAO,GAAGoB,OAAO0vO,GAA6B,KAAK1vO,OAAOw7J,KAG7Es2E,GAAWtpO,GAAOgvO,aAAe8J,GAAgBvR,GAAS5/P,IAAI,SAAUwd,GAC1E,MAAO,MAAMqS,OAAOrS,KACnBqS,OAAO5xB,OAAOC,KAAK8yQ,KAEjBrP,GAAS1sN,SAAS,OACrB0sN,GAASjjQ,KAAK,MAGhB,IAAI6yQ,GAAmB,CAAC,IAAI1hP,OAAOuxO,GAAuB,UAAUvxO,OAAOsvO,GAAe,OAAOtvO,OAAO8xO,GAAS3hQ,IAAI,SAAUqlB,GAC7H,MAAO,IAAIwK,OAAOxK,EAAG,UAAUwK,OAAOsvO,GAAe,SACnD3yM,KAAK,MAET,GAAgC,IAA5B+kN,GAAiBx0Q,OACnB,OAAO6qB,QAAQC,UAGjB,IAAI2pP,GAAa,GAEjB,IACEA,GAAa58D,GAAQ1rL,EAAKnnB,iBAAiBwvQ,IAC3C,CAD2CA,MACpClyQ,GAAP,CAGF,KAAImyQ,GAAWz0Q,OAAS,GAItB,OAAO6qB,QAAQC,UAHfwpP,GAAO,WACPC,GAAU,YAKZ,IAAIpT,GAAO+O,SAAW,UAClBmB,GAAYoD,GAAW5nM,OAAO,SAAUiuB,EAAK7vF,GAC/C,IACE,IAAIwlQ,EAAWiE,GAAiBzpQ,GAE5BwlQ,GACF31K,EAAIn5F,KAAK8uQ,EAKOnuQ,CALPmuQ,MAEJnuQ,GACFogQ,IACY,gBAAXpgQ,EAAE0M,MACJkuB,QAAQ+B,MAAM38B,GAKpB,OAAOw4F,GACN,IACH,OAAO,IAAIjwE,QAAQ,SAAUC,EAASsxC,GACpCvxC,QAAQy5C,IAAI+sM,IAAWp5O,KAAK,SAAU08O,GACpCC,GAAQD,EAAmB,WACzBL,GAAO,UACPA,GAAO,YACPC,GAAU,WACc,mBAAbtyQ,IAAyBA,KACpCk/P,KACAr2O,QAEDiU,MAAM,SAAUz8B,GACjB6+P,KACA/kM,EAAO95D,OAKb,YAAgB2I,GACd,IAAIhJ,GAAWu2F,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,KACnFk8K,GAAiBzpQ,GAAMgtB,KAAK,SAAUw4O,IAChCA,IACFmE,GAAQ,CAACnE,IAAWxuQ,MAzF1B4gQ,GAAS5/P,IAAI,SAAU4nQ,GACrBuJ,GAAcnkQ,IAAI,MAAM6iB,OAAO+3O,MAEjC3pQ,OAAOC,KAAK2hQ,GAAgBH,KAAiB1/P,IAAImxQ,GAAcnkQ,IAAI4pD,KAAKu6M,KACxElzQ,OAAOC,KAAK2hQ,GAAgBF,KAAe3/P,IAAImxQ,GAAcnkQ,IAAI4pD,KAAKu6M,KACtEA,GAAgBtP,EAAmBsP,IAyGnC,IAAIS,GAAS,SAAgBC,IAC3B,IAAIhrQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7Eu8K,GAAoBjrQ,GAAO05B,UAC3BA,QAAkC,IAAtBuxO,GAA+B1O,GAAuB0O,GAClEC,GAAiBlrQ,GAAOytI,OACxBA,QAA4B,IAAnBy9H,IAAoCA,GAC7CC,GAAenrQ,GAAO+4J,KACtBA,QAAwB,IAAjBoyG,GAA0B,KAAOA,GACxCC,GAAiBprQ,GAAOskQ,OACxBA,OAA4B,IAAnB8G,GAA4B,KAAOA,GAC5CC,EAAgBrrQ,GAAO2qE,MACvBA,OAA0B,IAAlB0gM,EAA2B,KAAOA,EAC1CC,EAAkBtrQ,GAAOukQ,QACzBA,QAA8B,IAApB+G,EAA6B,KAAOA,EAC9CC,GAAkBvrQ,GAAO68J,QACzBA,QAA8B,IAApB0uG,GAA6B,GAAKA,GAC5CC,GAAqBxrQ,GAAOmsK,WAC5BA,QAAoC,IAAvBq/F,GAAgC,GAAKA,GAClDC,GAAiBzrQ,GAAOnB,OACxBA,QAA4B,IAAnB4sQ,GAA4B,GAAKA,GAC9C,GAAKT,GACL,KAAI1mF,GAAS0mF,GAAe1mF,OACxBi6E,GAAWyM,GAAezM,SAC1BC,GAAOwM,GAAexM,KAC1B,OAAOkN,GAAYrP,EAAe,CAChCh7P,KAAM,QACL2pQ,IAAiB,WAClB11G,UAAU,2BAA4B,CACpC01G,eAAgBA,GAChBhrQ,OAAQA,KAGNwxB,GAAOqqO,WACLlxL,EACFwhG,GAAW,mBAAqB,GAAGnjJ,OAAOwI,GAAOkqO,iBAAkB,WAAW1yO,OAAOu7O,IAAWS,OAEhG74F,GAAW,eAAiB,OAC5BA,GAAWs9F,UAAe,UAIvBkC,GAAsB,CAC3BzM,MAAO,CACLmF,KAAM2B,GAAYxH,IAClBzlG,KAAMA,GAAOitG,GAAYjtG,GAAKylG,MAAQ,CACpC7+O,OAAO,EACP0tH,MAAO,KACP1zG,OAAQ,KACR6kO,KAAM,KAGVl6E,OAAQA,GACRi6E,SAAUA,GACV7kO,UAAW2iO,EAAeA,EAAe,GAAIE,IAAuB7iO,IACpE+zG,OAAQA,GACR9iE,MAAOA,EACP25L,OAAQA,EACRC,QAASA,GACT5xK,MAAO,CACLw5E,WAAYA,GACZttK,OAAQA,GACRg+J,QAASA,UAKb+uG,GAAkB,CACpBlO,OAAQ,WACN,MAAO,CACLc,MArFgB59P,EAqFGmqQ,GApFhB,SAAUc,IACf,IAAI7rQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7Es8K,IAAkBa,IAAuB,IAAIrN,KAAOqN,GAAsB5H,GAAmB4H,IAAuB,IACpH9yG,GAAO/4J,GAAO+4J,KAElB,OAAIA,KACFA,IAAQA,IAAQ,IAAIylG,KAAOzlG,GAAOkrG,GAAmBlrG,IAAQ,KAGxDn4J,EAAKoqQ,GAAgB3O,EAAeA,EAAe,GAAIr8P,IAAS,GAAI,CACzE+4J,KAAMA,SAXZ,IAAsBn4J,CAqFGmqQ,EAGvBr6J,MAAO,WACL,MAAO,CACLo7J,0BAA2B,SAAmCpmL,IAC5DA,UAAYqiL,aAAegE,GAC3BrmL,GAAYuiL,aAAe+D,GACpBtmL,MAIbumL,SAAU,SAAkBC,IAC1BA,GAAa7I,MAAQ,SAAUrjQ,IAC7B,IAAImsQ,GAAensQ,GAAOmB,KAEtBirQ,GAAmBpsQ,GAAO7H,SAE9B,OAAO4zQ,QAHqB,IAAjBI,GAA0Bz/O,EAAWy/O,QAEZ,IAArBC,GAA8B,WAAY,EAAKA,GAC1Cj0Q,EAGtB+zQ,GAAaG,+BAAiC,SAAUlrQ,GAAMipQ,IAC5D,IAAI7L,GAAW6L,GAAS7L,SACpB5zL,GAAQy/L,GAASz/L,MACjB45L,GAAU6F,GAAS7F,QACnBjgF,GAAS8lF,GAAS9lF,OAClB5qJ,GAAY0wO,GAAS1wO,UACrB+zG,GAAS28H,GAAS38H,OAClBsrB,EAAOqxG,GAASrxG,KAChBurG,EAAS8F,GAAS9F,OAClB3xK,EAAQy3K,GAASz3K,MACrB,OAAO,IAAI5xE,QAAQ,SAAUC,EAASsxC,IACpCvxC,QAAQy5C,IAAI,CAAC8xM,GAAS/N,GAAUj6E,IAASvrB,EAAKwlG,SAAW+N,GAASvzG,EAAKwlG,SAAUxlG,EAAKurB,QAAUvjK,QAAQC,QAAQ,CAC9GrB,OAAO,EACP0tH,MAAO,IACP1zG,OAAQ,IACR6kO,KAAM,OACHrwO,KAAK,SAAU+tH,IAClB,IAAIg/G,GAAQC,EAAej/G,GAAM,GAIjCl7H,EAAQ,CAAC7f,GAAMwqQ,GAAsB,CACnCzM,MAAO,CACLmF,KALOnJ,GAAM,GAMbniG,KALOmiG,GAAM,IAOf52E,OAAQA,GACRi6E,SAAUA,GACV7kO,UAAWA,GACX+zG,OAAQA,GACR62H,OAAQA,EACR35L,MAAOA,GACP45L,QAASA,GACT5xK,MAAOA,EACP8xK,WAAW,QAEZxvO,MAAMq9B,OAIb45M,GAAaK,qBAAuB,SAAUC,IAC5C,IAWIC,GAXA1xM,GAAWyxM,GAAMzxM,SACjBoxG,GAAaqgG,GAAMrgG,WACnBk4F,GAAOmI,GAAMnI,KACb3qO,GAAY8yO,GAAM9yO,UAElBksO,GAAcT,GADLqH,GAAM3tQ,QASnB,OANI+mQ,GAAY1vQ,OAAS,IACvBi2K,GAAW1wK,MAAWmqQ,IAKpBV,GAAsBxrO,MACxB+yO,GAAYnJ,GAAa,oCAAqC,CAC5De,KAAMA,GACN3qO,UAAWA,GACXgzO,eAAgBrI,GAAKh3H,MACrBs/H,UAAWtI,GAAKh3H,SAIpBtyE,GAASljE,KAAK40Q,IAAapI,GAAK7F,MACzB,CACLzjM,SAAUA,GACVoxG,WAAYA,OAMhBygG,GAAS,CACXlP,OAAQ,WACN,MAAO,CACLmP,MAAO,SAAeC,IACpB,IAAI9sQ,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7E68K,GAAkBvrQ,GAAO68J,QACzBA,QAA8B,IAApB0uG,GAA6B,GAAKA,GAChD,OAAOG,GAAY,CACjBrqQ,KAAM,SACL,WACDi0J,GAAU,2BAA4B,CACpCw3G,UAAWA,GACX9sQ,OAAQA,KAEV,IAAI+6D,GAAW,GACf+xM,UAAU,SAAUx0P,IAClBtd,MAAM4E,QAAQ0Y,IAAQA,GAAKnf,IAAI,SAAUiiB,IACvC2/C,GAAWA,GAAS/xC,OAAO5N,GAAEuc,YAC1BojC,GAAWA,GAAS/xC,OAAO1Q,GAAKqf,YAEhC,CAAC,CACNqmO,IAAK,OACL7xF,WAAY,CACVy4F,MAAO,CAAC,GAAG57O,OAAOwI,GAAOiqO,UAAW,YAAYzyO,OAAOgyO,EAAmBn+F,KAAUl3G,KAAK,MAE3FoV,SAAUA,WAQlBgyM,GAAgB,CAClBrP,OAAQ,WACN,MAAO,CACLsB,QAAS,SAAiBzvF,IACxB,IAAIvvK,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7E28K,GAAgBrrQ,GAAO2qE,MACvBA,QAA0B,IAAlB0gM,GAA2B,KAAOA,GAC1CE,GAAkBvrQ,GAAO68J,QACzBA,QAA8B,IAApB0uG,GAA6B,GAAKA,GAC5CC,GAAqBxrQ,GAAOmsK,WAC5BA,QAAoC,IAAvBq/F,GAAgC,GAAKA,GAClDC,EAAiBzrQ,GAAOnB,OACxBA,OAA4B,IAAnB4sQ,EAA4B,GAAKA,EAC9C,OAAOC,GAAY,CACjBrqQ,KAAM,UACNkuK,QAASA,IACR,WACDja,UAAU,2BAA4B,CACpCia,QAASA,GACTvvK,OAAQA,KAEHgtQ,GAA0B,CAC/Bz9F,QAASA,GAAQx5K,WACjB40E,MAAOA,GACPgoB,MAAO,CACLw5E,WAAYA,GACZttK,OAAQA,EACRg+J,QAAS,CAAC,GAAG7zI,OAAOwI,GAAOiqO,UAAW,oBAAoBzyO,OAAOgyO,EAAmBn+F,cAS9FowG,GAAa,CACfvP,OAAQ,WACN,MAAO,CACL9hN,KAAM,SAAc2zH,IAClB,IAAIvvK,GAAS0uF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,GAAmBA,UAAU,GAAK,GAC7Eu8K,GAAoBjrQ,GAAO05B,UAC3BA,QAAkC,IAAtBuxO,GAA+B1O,GAAuB0O,GAClEI,GAAgBrrQ,GAAO2qE,MACvBA,QAA0B,IAAlB0gM,GAA2B,KAAOA,GAC1CE,GAAkBvrQ,GAAO68J,QACzBA,QAA8B,IAApB0uG,GAA6B,GAAKA,GAC5CC,EAAqBxrQ,GAAOmsK,WAC5BA,OAAoC,IAAvBq/F,EAAgC,GAAKA,EAClDC,EAAiBzrQ,GAAOnB,OACxBA,OAA4B,IAAnB4sQ,EAA4B,GAAKA,EAC9C,OAAOC,GAAY,CACjBrqQ,KAAM,OACNkuK,QAASA,IACR,WACDja,UAAU,2BAA4B,CACpCia,QAASA,GACTvvK,OAAQA,KAEHktQ,GAAuB,CAC5B39F,QAASA,GACT71I,UAAW2iO,EAAeA,EAAe,GAAIE,IAAuB7iO,IACpEixC,MAAOA,GACPgoB,MAAO,CACLw5E,WAAYA,EACZttK,OAAQA,EACRg+J,QAAS,CAAC,GAAG7zI,OAAOwI,GAAOiqO,UAAW,iBAAiBzyO,OAAOgyO,EAAmBn+F,aAO7FovG,SAAU,SAAkBC,IAC1BA,GAAaiB,mBAAqB,SAAUhsQ,GAAMipQ,IAChD,IAAIz/L,GAAQy/L,GAASz/L,MACjBjxC,GAAY0wO,GAAS1wO,UACrBi5D,GAAQy3K,GAASz3K,MACjB06C,GAAQ,KACR1zG,GAAS,KAEb,GAAIw+N,GAAO,CACT,IAAIiV,GAAmBvzK,SAASx3F,iBAAiBlB,IAAMksQ,SAAU,IAC7DC,EAAqBnsQ,GAAKosQ,wBAC9BlgI,GAAQigI,EAAmBjgI,MAAQ+/H,GACnCzzO,GAAS2zO,EAAmB3zO,OAASyzO,GAGvC,OAAI57O,GAAOqqO,WAAalxL,KACtBgoB,GAAMw5E,WAAW,eAAiB,QAG7BprJ,QAAQC,QAAQ,CAAC7f,GAAM+rQ,GAAuB,CACnD39F,QAASpuK,GAAK4qK,UACd1+B,MAAOA,GACP1zG,OAAQA,GACRD,UAAWA,GACXixC,MAAOA,GACPgoB,MAAOA,GACP8xK,WAAW,SAMf+I,GAAwB,IAAIztQ,OAAO,IAAM,MACzC0tQ,GAA0B,CAAC,QAAS,SAYxC,YAA4BtsQ,EAAMkmI,IAChC,IAAIqmI,GAAmB,GAAG1kP,OAvtES,kCAutE8BA,OAAOq+G,GAAShnI,QAAQ,IAAK,MAC9F,OAAO,IAAI0gB,QAAQ,SAAUC,GAASsxC,IACpC,GAA4C,OAAxCnxD,EAAKq4N,aAAak0C,IAEpB,OAAO1sP,KAGT,IACI2sP,GADW5/D,GAAQ5sM,EAAK45D,UACiBxuD,OAAO,SAAU+hD,IAC5D,OAAOA,GAAEkrK,aAAa++B,MAA4BlxH,KACjD,GACCxoI,GAASk5P,EAAO11P,iBAAiBlB,EAAMkmI,IACvCumI,GAAa/uQ,GAAOO,iBAAiB,eAAezB,MAAM68P,IAC1DqT,GAAahvQ,GAAOO,iBAAiB,eACrCmwK,EAAU1wK,GAAOO,iBAAiB,WAEtC,GAAIuuQ,KAAkCC,GAIpCzsQ,SAAK0sB,YAAY8/O,IACV3sP,KACF,GAAI4sP,IAA0B,SAAZr+F,GAAkC,KAAZA,EAAgB,CAC7D,IAAIu+F,EAAWjvQ,GAAOO,iBAAiB,WAEnC2hQ,GAAU,CAAC,SAASnnQ,QAAQg0Q,GAAW,IAAM9U,GAAeD,GAC5Dv0E,GAAU,CAAC,QAAS,UAAW,QAAS,OAAQ,UAAW,SAAU,OAAO1qL,QAAQg0Q,GAAW,IAAM/T,GAAgBkH,GAAQ6M,GAAW,GAAG3sQ,eAAiBw5P,GAAsBsG,GAAQ8M,IAE1LE,GAxCV,YAA6Bx+F,GAC3B,IAAIy+F,GAAUz+F,EAAQlvK,QAAQmtQ,GAAuB,IACjDS,GA5qDN,YAAqB/sK,EAAQjpF,IAC3B,IAEI6pF,GAFAp9F,GAAOw8F,EAAOhrG,OACdsuC,GAAQ08D,EAAOuZ,WAAWxiG,IAG9B,OAAIusB,IAAS,OAAUA,IAAS,OAAU9/B,GAAOuT,GAAQ,IACvD6pF,GAASZ,EAAOuZ,WAAWxiG,GAAQ,KAErB,OAAU6pF,IAAU,MACN,MAAlBt9D,GAAQ,OAAkBs9D,GAAS,MAAS,MAIjDt9D,GA+pDS0pO,CAAYF,GAAS,GACjCG,GAAeF,IAAaR,GAAwB,IAAMQ,IAAaR,GAAwB,GAC/FW,GAA+B,IAAnBJ,GAAQ93Q,QAAe83Q,GAAQ,KAAOA,GAAQ,GAC9D,MAAO,CACL10Q,MAAO80Q,MAAkBJ,GAAQ,GAAYA,IAC7CK,YAAaF,IAAgBC,IAiCAE,CAAoBR,GAC3CS,GAAWR,GAAqBz0Q,MAChC+0Q,GAAcN,GAAqBM,YAEnCG,GAAOZ,GAAW,GAAGvuQ,WAAW,eAChCk/P,GAAW+K,GAAUhlF,EAAQiqF,IAC7BE,GAAiBlQ,GAErB,GAAIiQ,GAAM,CACR,IAAIE,GAphDZ,YAAsB5P,GACpB,IAAI6P,GAAa3O,GAAclB,GAC3B8P,GAAatF,GAAU,MAAOxK,GAClC,OAAO6P,KAAeC,GAAa,CACjCtqF,OAAQ,MACRi6E,SAAUqQ,IACR,OAAS,CACXtqF,OAAQ,KACRi6E,SAAU,MA4gDUsQ,CAAaN,IAEzBG,GAAUnQ,UAAYmQ,GAAUpqF,SAClCi6E,GAAWmQ,GAAUnQ,SACrBj6E,EAASoqF,GAAUpqF,QAMvB,IAAIi6E,IAAa8P,IAAiBV,IAAiCA,GAA8Bn0C,aAAag/B,MAAiBl0E,GAAUqpF,GAA8Bn0C,aAAai/B,MAAegW,GAsCjMztP,SAtCkN,CAClN7f,EAAK5B,aAAamuQ,GAAkBe,IAEhCd,IAEFxsQ,EAAK0sB,YAAY8/O,IAGnB,IAAIjrG,GAriBZ,cACE,MAAO,CACL67F,SAAU,KACV5zL,MAAO,KACP45L,QAAS,KACTjgF,OAAQ,KACR5qJ,UAAW6iO,GACX9uH,QAAQ,EACRsrB,KAAM,CACJwlG,SAAU,KACVj6E,OAAQ,KACRu9E,KAAM,IAERyC,OAAQ,KACR3xK,MAAO,CACLkqE,QAAS,GACTh+J,OAAQ,GACRstK,WAAY,KAohBC2iG,GACPn8K,GAAQ+vE,GAAK/vE,MACjBA,GAAMw5E,WAAWosF,IAA0BlxH,GAC3CilI,GAAS/N,GAAUj6E,GAAQn2J,KAAK,SAAUk2O,IACxC,IAAIuC,GAAY+E,GAAsBtP,EAAeA,EAAe,GAAI35F,IAAO,GAAI,CACjFw8F,MAAO,CACLmF,KAAMA,GACNtrG,KA9hDL,CACLurB,OAAQ,KACRi6E,SAAU,KACVsD,KAAM,KA6hDEv9E,OAAQA,EACRi6E,SAAUkQ,GACV97K,MAAOA,GACP8xK,WAAW,KAGTluQ,GAAUm2B,EAASq4I,gBAAgB,6BAA8B,OAEpD,aAAb19B,GACFlmI,EAAKgf,aAAa5pB,GAAS4K,EAAK4yJ,YAEhC5yJ,EAAK4tB,YAAYx4B,IAGnBA,GAAQm4K,UAAYk4F,GAAUztQ,IAAI,SAAUiiB,IAC1C,OAAOkjP,GAAOljP,MACbuqC,KAAK,MACRxkD,EAAKsuB,gBAAgBi+O,IACrB1sP,OACCiU,MAAMq9B,IAETtxC,MAGFA,OAKN,YAAiB7f,GACf,OAAO4f,QAAQy5C,IAAI,CAACu0M,GAAmB5tQ,EAAM,YAAa4tQ,GAAmB5tQ,EAAM,aAGrF,YAAqBA,GACnB,QAAOA,EAAK3G,aAAe3E,SAAS66F,OAAUioK,GAAoC/+P,QAAQuH,EAAK8sK,QAAQnyK,gBAAmBqF,EAAKq4N,aAAa++B,KAA6Bp3P,EAAK3G,YAA0C,QAA5B2G,EAAK3G,WAAWyzK,QAAY,CAG1N,YAA8B5rJ,GAC5B,GAAK61O,GACL,OAAO,IAAIn3O,QAAQ,SAAUC,GAASsxC,IACpC,IAAIylE,GAAag2E,GAAQ1rL,EAAKnnB,iBAAiB,MAAMqR,OAAOyiQ,IAAa71Q,IAAIkH,IACzEkuB,GAAM63O,SAAW,wBACrB6I,KACAluP,QAAQy5C,IAAIu9D,IAAY5pG,KAAK,WAC3BI,KACA2gP,KACAluP,OACCiU,MAAM,WACP1G,KACA2gP,KACA58M,SAKN,IAqBI68M,IAAa,EAmCbC,GAAuB,SAA8BC,IASvD,OAAOA,GAAgBpuQ,cAAcuB,MAAM,KAAKugE,OAAO,SAAUiuB,GAAKzrF,IACpE,IAAI+9E,GAAQ/9E,GAAEtE,cAAcuB,MAAM,KAC9BgiC,GAAQ8+C,GAAM,GACdu+K,GAAOv+K,GAAM/yE,MAAM,GAAGo1C,KAAK,KAE/B,GAAInhB,IAAkB,MAATq9N,GACX7wK,UAAIyrK,OAAQ,EACLzrK,GAGT,GAAIxsD,IAAkB,MAATq9N,GACX7wK,UAAI0rK,OAAQ,EACL1rK,GAKT,GAFA6wK,GAAOhkQ,WAAWgkQ,IAEd/nK,MAAM+nK,IACR,OAAO7wK,GAGT,OAAQxsD,QACD,OACHwsD,GAAItsF,KAAOssF,GAAItsF,KAAOm9P,GACtB,UAEG,SACH7wK,GAAItsF,KAAOssF,GAAItsF,KAAOm9P,GACtB,UAEG,OACH7wK,GAAIx1C,EAAIw1C,GAAIx1C,EAAIqmN,GAChB,UAEG,QACH7wK,GAAIx1C,EAAIw1C,GAAIx1C,EAAIqmN,GAChB,UAEG,KACH7wK,GAAI5oF,EAAI4oF,GAAI5oF,EAAIy5P,GAChB,UAEG,OACH7wK,GAAI5oF,EAAI4oF,GAAI5oF,EAAIy5P,GAChB,UAEG,SACH7wK,GAAIwrK,OAASxrK,GAAIwrK,OAASqF,GAI9B,OAAO7wK,IA3DO,CACdtsF,KAAM,GACN82C,EAAG,EACHpzC,EAAG,EACHq0P,OAAO,EACPC,OAAO,EACPF,OAAQ,GAsDP9iO,EAiED41O,GAAY,CACd9zN,EAAG,EACHpzC,EAAG,EACHilI,MAAO,OACP1zG,OAAQ,QAGV,YAAmBitO,GACjB,IAAIl9K,KAAQgF,UAAUx4F,OAAS,QAAsB6C,IAAjB21F,UAAU,KAAmBA,UAAU,GAE3E,OAAIk4K,EAAUz6F,aAAey6F,EAAUz6F,WAAWnhJ,MAAQ0+D,MACxDk9K,EAAUz6F,WAAWnhJ,KAAO,SAGvB47O,GAtnDT,YAAyB2I,EAAarzH,IACpC,IAAIv9I,GAAMu9I,GAAKszH,UACf1qJ,GAAWyqJ,EACX1M,GAAS,GACTzrQ,OAAOC,KAAKq6B,IAAW36B,QAAQ,SAAUygE,KACA,IAAnCsrM,GAAoBlpQ,QAAQ49D,YACvB9lC,GAAU8lC,MAIrBstD,GAAS/tH,QAAQ,SAAUiuH,IACzB,IAAI04I,GAAS14I,GAAO04I,OAAS14I,GAAO04I,SAAW,GAiB/C,GAhBAtmQ,OAAOC,KAAKqmQ,IAAQ3mQ,QAAQ,SAAU04Q,IACV,mBAAf/R,GAAO+R,MAChB9wQ,GAAI8wQ,IAAM/R,GAAO+R,KAGS,WAAxBtZ,GAAQuH,GAAO+R,MACjBr4Q,OAAOC,KAAKqmQ,GAAO+R,KAAK14Q,QAAQ,SAAU24Q,IACnC/wQ,GAAI8wQ,MACP9wQ,GAAI8wQ,IAAM,IAGZ9wQ,GAAI8wQ,IAAIC,IAAMhS,GAAO+R,IAAIC,QAK3B1qJ,GAAOtU,MAAO,CAChB,IAAIA,GAAQsU,GAAOtU,QACnBt5G,OAAOC,KAAKq5G,IAAO35G,QAAQ,SAAUm6G,IAC9B2xJ,GAAO3xJ,MACV2xJ,GAAO3xJ,IAAQ,IAGjB2xJ,GAAO3xJ,IAAMr5G,KAAK64G,GAAMQ,OAIxB8T,GAAOinJ,UACTjnJ,GAAOinJ,SAASv6O,KAIb/yB,CAqyDTgxQ,CAFc,CAAClS,GAAWmO,GAAiBgB,GAAQG,GAAeE,GA7Z7C,CACnBv8J,MAAO,WACL,MAAO,CACLo7J,0BAA2B,SAAmCpmL,IAC5DA,UAAYyiL,uBAAyBrM,GAC9Bp2K,MAIbumL,SAAU,SAAkBC,IAC1BA,GAAa0D,mBAAqB,SAAU5vQ,IAC1C,IAAImsQ,GAAensQ,GAAOmB,KAGtBqwB,GAAOsqO,sBACTA,QAH0B,IAAjBqQ,GAA0Bz/O,EAAWy/O,GAGzBhrQ,IAOJ,CACvBu8P,OAAQ,WACN,MAAO,CACLxjC,IAAK,CACH21C,QAAS,WACPZ,KACAE,IAAa,MAKrBz+J,MAAO,WACL,MAAO,CACLz8E,UAAW,WACTsxH,GAAQ0kH,GAAW,4BAA6B,MAElDrG,OAAQ,YA1tBd,eACOiE,IACLA,GAAGiI,aAytBGA,IAEFvM,MAAO,SAAevjQ,IACpB,IAAIqoQ,GAAuBroQ,GAAOqoQ,qBAE9B8G,GACFD,KAEA3pH,GAAQ0kH,GAAW,4BAA6B,CAC9C5B,qBAAsBA,UAuEZ,CACpB3K,OAAQ,WACN,MAAO,CACLpuK,MAAO,CACL51D,UAAW,SAAmB21O,IAC5B,OAAOD,GAAqBC,QAKpC3+J,MAAO,WACL,MAAO,CACLq/J,oBAAqB,SAA6BrqL,GAAavkF,IAC7D,IAAIkuQ,GAAkBluQ,GAAKq4N,aAAa,qBAExC,OAAI61C,KACF3pL,GAAYhsD,UAAY01O,GAAqBC,KAGxC3pL,MAIbumL,SAAU,SAAkBv6O,IAC1BA,GAAUs+O,kCAAoC,SAAU9zH,IACtD,IAAImoH,GAAOnoH,GAAKmoH,KACZ3qO,GAAYwiH,GAAKxiH,UAEjBizO,GAAYzwH,GAAKywH,UACjBsD,GAAQ,CACVv2O,UAAW,aAAa1Q,OAHLkzH,GAAKwwH,eAGwB,EAAG,UAEjDwD,GAAiB,aAAalnP,OAAqB,GAAd0Q,GAAU8hB,EAAQ,MAAMxyB,OAAqB,GAAd0Q,GAAUtxB,EAAQ,MACtF+nQ,GAAa,SAASnnP,OAAO0Q,GAAUh1B,KAAO,IAAMg1B,GAAU+iO,OAAQ,EAAK,GAAI,MAAMzzO,OAAO0Q,GAAUh1B,KAAO,IAAMg1B,GAAUgjO,OAAQ,EAAK,GAAI,MAC9I0T,EAAc,UAAUpnP,OAAO0Q,GAAU8iO,OAAQ,SAOjDzkI,EAAa,CACfk4I,MAAOA,GACPI,MARU,CACV32O,UAAW,GAAG1Q,OAAOknP,GAAgB,KAAKlnP,OAAOmnP,GAAY,KAAKnnP,OAAOonP,IAQzEhrO,KANS,CACT1L,UAAW,aAAa1Q,OAAO2jP,GAAY,GAAI,EAAI,YAOrD,MAAO,CACL3O,IAAK,IACL7xF,WAAYkwF,EAAe,GAAItkI,EAAWk4I,OAC1Cl1M,SAAU,CAAC,CACTijM,IAAK,IACL7xF,WAAYkwF,EAAe,GAAItkI,EAAWs4I,OAC1Ct1M,SAAU,CAAC,CACTijM,IAAKqG,GAAK7F,KAAKR,IACfjjM,SAAUspM,GAAK7F,KAAKzjM,SACpBoxG,WAAYkwF,EAAeA,EAAe,GAAIgI,GAAK7F,KAAKryF,YAAap0C,EAAW3yF,cAiChF,CACVsrE,MAAO,WACL,MAAO,CACLq/J,oBAAqB,SAA6BrqL,GAAavkF,IAC7D,IAAImvQ,GAAWnvQ,GAAKq4N,aAAa,gBAC7BzgE,GAAOw3G,GAAmCxM,GAAiBuM,GAAS9tQ,MAAM,KAAKrJ,IAAI,SAAU8F,IAC/F,OAAOA,GAAEuU,UA5yDV,CACL8wK,OAAQ,KACRi6E,SAAU,KACVsD,KAAM,IA4yDF,OAAK9oG,GAAKurB,SACRvrB,GAAKurB,OAAS29E,MAGhBv8K,GAAYqzE,KAAOA,GACnBrzE,GAAY4+K,OAASnjQ,GAAKq4N,aAAa,mBAChC9zI,MAIbumL,SAAU,SAAkBv6O,IAC1BA,GAAU8+O,qBAAuB,SAAUt0H,IACzC,IA7BW8qH,EA6BPjsM,GAAWmhF,GAAKnhF,SAChBoxG,GAAajwB,GAAKiwB,WAClBk4F,GAAOnoH,GAAKmoH,KACZtrG,GAAO7c,GAAK6c,KACZ03G,GAAiBv0H,GAAKooH,OAGtBoM,EAAWrM,GAAK7F,KAEhBmS,EAAW53G,GAAKylG,KAChBtmO,EApxEV,YAAyBgkH,GACvB,IAAIxiH,GAAYwiH,EAAKxiH,UAEjBizO,GAAYzwH,EAAKywH,UACjBsD,GAAQ,CACVv2O,UAAW,aAAa1Q,OAHLkzH,EAAKwwH,eAGwB,EAAG,UAEjDwD,GAAiB,aAAalnP,OAAqB,GAAd0Q,GAAU8hB,EAAQ,MAAMxyB,OAAqB,GAAd0Q,GAAUtxB,EAAQ,MACtF+nQ,GAAa,SAASnnP,OAAO0Q,GAAUh1B,KAAO,IAAMg1B,GAAU+iO,OAAQ,EAAK,GAAI,MAAMzzO,OAAO0Q,GAAUh1B,KAAO,IAAMg1B,GAAUgjO,OAAQ,EAAK,GAAI,MAC9I0T,GAAc,UAAUpnP,OAAO0Q,GAAU8iO,OAAQ,SAOrD,MAAO,CACLyT,MAAOA,GACPI,MARU,CACV32O,UAAW,GAAG1Q,OAAOknP,GAAgB,KAAKlnP,OAAOmnP,GAAY,KAAKnnP,OAAOonP,KAQzEhrO,KANS,CACT1L,UAAW,aAAa1Q,OAAO2jP,GAAY,GAAI,EAAI,WAK7CvnO,CAiwEQwrO,CAAgB,CAC1Bl3O,UANcwiH,GAAKxiH,UAOnBgzO,eAJc3zG,GAAK1rB,MAKnBs/H,UAPctI,GAAKh3H,QASjBwjI,GAAW,CACb7S,IAAK,OACL7xF,WAAYkwF,EAAeA,EAAe,GAAIiT,IAAY,GAAI,CAC5DtkP,KAAM,WAGN8lP,GAA8BJ,EAAS31M,SAAW,CACpDA,SAAU21M,EAAS31M,SAAS5hE,IAAI43Q,KAC9B,GACAC,GAAiB,CACnBhT,IAAK,IACL7xF,WAAYkwF,EAAe,GAAInkO,EAAMm4O,OACrCt1M,SAAU,CAACg2M,GAAU1U,EAAe,CAClC2B,IAAK0S,EAAS1S,IACd7xF,WAAYkwF,EAAeA,EAAe,GAAIqU,EAASvkG,YAAaj0I,EAAMkN,OACzE0rO,OAEDG,GAAiB,CACnBjT,IAAK,IACL7xF,WAAYkwF,EAAe,GAAInkO,EAAM+3O,OACrCl1M,SAAU,CAACi2M,KAET1M,GAAS,QAAQt7O,OAAOynP,IAAkBzL,MAC1CkM,GAAS,QAAQloP,OAAOynP,IAAkBzL,MAC1CmM,GAAU,CACZnT,IAAK,OACL7xF,WAAYkwF,EAAeA,EAAe,GAAIiT,IAAY,GAAI,CAC5Dl4P,GAAIktP,GACJ8M,UAAW,iBACXC,iBAAkB,mBAEpBt2M,SAAU,CAAC81M,GAAUI,KAEnBK,GAAO,CACTtT,IAAK,OACLjjM,SAAU,CAAC,CACTijM,IAAK,WACL7xF,WAAY,CACV/0J,GAAI85P,IAENn2M,UApFOisM,EAoFW2J,EAnFH,MAAnB3J,EAAWhJ,IACNgJ,EAAWjsM,SAEX,CAACisM,KAiFDmK,KAELp2M,UAASljE,KAAKy5Q,GAAM,CAClBtT,IAAK,OACL7xF,WAAYkwF,EAAe,CACzBrxO,KAAM,eACN,YAAa,QAAQhC,OAAOkoP,GAAQ,KACpCn4G,KAAM,QAAQ/vI,OAAOs7O,GAAQ,MAC5BgL,MAEE,CACLv0M,SAAUA,GACVoxG,WAAYA,OAMO,CACzB8/F,SAAU,SAAkBv6O,IAC1B,IAAI6/O,IAAe,EAEfxZ,EAAOyZ,aACTD,GAAexZ,EAAOyZ,WAAW,oCAAoC9zQ,SAGvEg0B,GAAU+/O,oBAAsB,WAC9B,IAAIC,GAAY,GACZC,GAAO,CACT3mP,KAAM,gBAEJ4mP,GAAiB,CACnBC,cAAe,MACfC,YAAa,aACbC,IAAK,MAGPL,GAAU75Q,KAAK,CACbmmQ,IAAK,OACL7xF,WAAYkwF,EAAeA,EAAe,GAAIsV,IAAO,GAAI,CACvD7xO,EAAG,u4CAIP,IAAIkyO,GAAkB3V,EAAeA,EAAe,GAAIuV,IAAiB,GAAI,CAC3ExT,cAAe,YAGb6T,GAAM,CACRjU,IAAK,SACL7xF,WAAYkwF,EAAeA,EAAe,GAAIsV,IAAO,GAAI,CACvDO,GAAI,MACJC,GAAI,MACJzoN,EAAG,OAELqR,SAAU,IAGZ,OAAKw2M,IACHU,GAAIl3M,SAASljE,KAAK,CAChBmmQ,IAAK,UACL7xF,WAAYkwF,EAAeA,EAAe,GAAIuV,IAAiB,GAAI,CACjExT,cAAe,IACf/3P,OAAQ,wBAET,CACD23P,IAAK,UACL7xF,WAAYkwF,EAAeA,EAAe,GAAI2V,IAAkB,GAAI,CAClE3rQ,OAAQ,mBAKdqrQ,GAAU75Q,KAAKo6Q,IACfP,GAAU75Q,KAAK,CACbmmQ,IAAK,OACL7xF,WAAYkwF,EAAeA,EAAe,GAAIsV,IAAO,GAAI,CACvDl4O,QAAS,IACTqG,EAAG,ySAELi7B,SAAUw2M,GAAe,GAAK,CAAC,CAC7BvT,IAAK,UACL7xF,WAAYkwF,EAAeA,EAAe,GAAI2V,IAAkB,GAAI,CAClE3rQ,OAAQ,qBAKTkrQ,IAEHG,GAAU75Q,KAAK,CACbmmQ,IAAK,OACL7xF,WAAYkwF,EAAeA,EAAe,GAAIsV,IAAO,GAAI,CACvDl4O,QAAS,IACTqG,EAAG,gJAELi7B,SAAU,CAAC,CACTijM,IAAK,UACL7xF,WAAYkwF,EAAeA,EAAe,GAAI2V,IAAkB,GAAI,CAClE3rQ,OAAQ,qBAMT,CACL23P,IAAK,IACL7xF,WAAY,CACVy4F,MAAS,WAEX7pM,SAAU22M,OAMD,CACfhhK,MAAO,WACL,MAAO,CACLq/J,oBAAqB,SAA6BrqL,GAAavkF,IAC7D,IAAIixQ,GAAajxQ,GAAKq4N,aAAa,kBAEnC9zI,UAAY+nD,OADgB,OAAf2kI,KAA6C,KAAfA,IAA2BA,IAE/D1sL,QAQU,CACvB8pL,UAAW7L,KAEb,IAII0O,GAAU1O,GAAIr0K,MAGdkvK,GAAOmF,GAAInF,8BC5+FT8T,GAAe1gQ,IACjB,MAAMirJ,GAAU,CACZ,UAAWjrJ,EAAM2gQ,KACjB,WAAY3gQ,EAAM4gQ,MAClB,QAAS5gQ,EAAM6gQ,WACf,YAAa7gQ,EAAM8gQ,OACnB,aAAc9gQ,EAAM+gQ,QACpB,oBAAqB/gQ,EAAMotP,QAC3B,qBAAqC,eAAfptP,EAAMghQ,MAAwC,SAAfhhQ,EAAMghQ,KAC3D,mBAAmC,aAAfhhQ,EAAMghQ,MAAsC,SAAfhhQ,EAAMghQ,KAAS,CAC9D,MAAKhhQ,EAAMlN,QAAwB,OAAfkN,EAAMlN,KAAS,CACnC,aAAYkN,EAAM4qP,UAA4B,OAAjB5qP,EAAM4qP,OAAW,CAC9C,WAAU5qP,EAAMihQ,QAAwB,OAAfjhQ,EAAMihQ,KAAS,CACxC,YAAWjhQ,EAAMkhQ,iBAAyC,MAAvBlhQ,EAAMkhQ,eAE/C,OAAO17Q,OAAOC,KAAKwlK,IACd1jK,IAAKC,IAASyjK,GAAQzjK,IAAOA,GAAM,MACnCmT,OAAQnT,IAAQA,SAuBnB25Q,SAAN,QACI9uQ,cAMIE,KAAKokQ,cAAgB,MAQrBpkQ,KAAK6uQ,aAAe,MAG5BD,SAASj2Q,UAAT,4BAAqGi2Q,IACrGA,EAASh2Q,WADkFC,MAC3F,OAAyG+1Q,EAAzG91Q,QAAyG81Q,EAAzG,qBAA+H,SAnBzHA,MAyBAE,QAAN,QACIhvQ,cACIE,KAAKiB,YAAc,GAEvB8tQ,YAAYhU,IACR,UAAWV,MAAQU,GAAO,CAChBV,GAAKl6E,UAAUngL,KAAKiB,cACtBjB,KAAKiB,YAAYo5P,GAAKl6E,QAAU,IAEpCngL,KAAKiB,YAAYo5P,GAAKl6E,QAAQk6E,GAAKD,UAAYC,GAC/C,UAAW97P,MAAS87P,GAAKA,KAAK,GACL,iBAAV97P,KACPyB,KAAKiB,YAAYo5P,GAAKl6E,QAAQ5hL,IAAS87P,KAKvD2U,gBAAgBC,IACZ,UAAW3kL,MAAQ2kL,GAAO,CACtB,MAAMlU,GAAQ9nQ,OAAOC,KAAKo3F,IAAMt1F,IAAKC,IAAQq1F,GAAKr1F,KAClD+K,KAAK+uQ,YAAYhU,KAGzBmU,kBAAkB/uF,GAAQp/K,IACtB,OAAIo/K,MAAUngL,KAAKiB,aAAeF,MAAQf,KAAKiB,YAAYk/K,IAChDngL,KAAKiB,YAAYk/K,IAAQp/K,IAE7B,MAGf+tQ,SAAcn2Q,UAAd,4BAA0Gm2Q,IAC1GA,EAAcl2Q,WAtC6EC,MAsC3F,OAA8Gi2Q,EAA9Gh2Q,QAA8Gg2Q,EAA9G,qBAAyI,SA/BnIA,MAqCAK,QAAN,QACIrvQ,cAKIE,KAAK2uQ,cAAgB,KAEzBzvM,YAAYC,IACR,GAAI,SAAUA,GACV,MAAM,IAAI11B,MAAM,wJAK5B0lO,SAAyBx2Q,UAAzB,4BAAqHw2Q,IACrHA,EAAyBt8H,UA5DkEh6I,MA4D3F,MAAyGs2Q,EAAzG/gP,+IA5D2Fv1B,SA4CrFs2Q,MA6BAC,SAAN,QACItvQ,YAAYgpB,GAAU4hL,IAClB1qM,KAAK8oB,SAAWA,GAChB9oB,KAAK0qM,WAAaA,GAEtBp4K,WACItyB,KAAK8oB,SAAS5S,SAASlW,KAAK0qM,WAAWv7J,cAAe,YAE1D+vB,YAAYC,IACJ,SAAUA,KACuB,MAA7BA,GAAQ5+D,KAAK8+D,cACbr/D,KAAK8oB,SAAS5S,SAASlW,KAAK0qM,WAAWv7J,cAAgB,MAAKgwB,GAAQ5+D,KAAK8+D,gBAE3C,MAA9BF,GAAQ5+D,KAAKqe,eACb5e,KAAK8oB,SAASjR,YAAY7X,KAAK0qM,WAAWv7J,cAAgB,MAAKgwB,GAAQ5+D,KAAKqe,mBAK5FwwP,SAAiBz2Q,UAAjB,4BAA6Gy2Q,GA5FlBv2Q,MA4FoDA,OA5FpDA,MA4F6EA,SACxKu2Q,EAAiBnmH,UA7F0EpwJ,MA6F3F,MAAiGu2Q,EAAjGhhP,wDA7F2Fv1B,OA6F3FmxJ,qEA7F2FnxJ,cA6FsH,KAAjNqvB,kBApBMknP,MA+BAC,SAAN,QACIvvQ,YAAY2iE,GAAWp1C,GAAQiiP,GAAaC,GAAWtpJ,IACnDjmH,KAAKyiE,UAAYA,GACjBziE,KAAKqtB,OAASA,GACdrtB,KAAKsvQ,YAAcA,GACnBtvQ,KAAKuvQ,UAAYA,GACjBvvQ,KAAK04J,QAAU,GACF,MAATzyC,IAA8B,MAAbspJ,IACjBtgP,QAAQ+B,MAAM,uKAItBkuC,YAAYC,IACR,GAAiB,MAAbn/D,KAAKq6P,MAA4C,MAA5Br6P,KAAKqtB,OAAOwhP,aACjC,MAxLoB,MAC5B,MAAM,IAAIplO,MAAM,4EAuLD+lO,GAEX,IAAIC,GAAmB,KAOvB,GALIA,GADa,MAAjBzvQ,KAASq6P,KACcr6P,KAAKqtB,OAAOwhP,aAGZ7uQ,KAAKq6P,KAExBl7L,GAAS,CACT,MAAM0nM,GAAiB7mQ,KAAK8/P,mBAAmB2P,IAC/C,GAAsB,MAAlB5I,GAAwB,CACxB,MAAMhrQ,GAASmE,KAAK0vQ,cACpB1vQ,KAAK2vQ,WAAW9I,GAAgBhrQ,MAW5C+qQ,SACI5mQ,KAAKk/D,YAAY,IAErB4gM,mBAAmBhlQ,IACf,MAAMmhQ,GAhLc,EAAC2T,EAAUxL,KALjBtpQ,SAAmBlG,IAAbkG,EAAEqlL,aAAuCvrL,IAAfkG,EAAEs/P,SAMhDyV,CAAaD,GACNA,EAEP/4Q,MAAM4E,QAAQm0Q,IAAiC,IAApBA,EAAS79Q,OAC7B,CAAEouL,OAAQyvF,EAAS,GAAIxV,SAAUwV,EAAS,IAE7B,iBAAbA,EACA,CAAEzvF,OAAQikF,GAAehK,SAAUwV,QAD9C,EAyKmBE,CAAoBh1Q,GAAGkF,KAAKqtB,OAAO+2O,eAClD,GAAI,SAAUnI,GACV,OAAOA,GAEX,MAAMx/J,GAAaz8F,KAAKsvQ,YAAYJ,kBAAkBjT,GAAO97E,OAAQ87E,GAAO7B,UAC5E,OAAkB,MAAd39J,GACOA,IA9NoBmzK,KACnC,MAAM,IAAInmO,MAAO,qCAAoCmmO,EAASxV,uBAAuBwV,EAASzvF,gCA+N1F4vF,CAA8B9T,IACvB,MAEXyT,cACI,MAAMM,GAAY,CACdvB,KAAMzuQ,KAAKyuQ,KACXL,KAAMpuQ,KAAKouQ,KACXC,MAAOruQ,KAAKquQ,MACZE,OAAQvuQ,KAAKuuQ,OACbC,QAASxuQ,KAAKwuQ,QACdjuQ,KAAMP,KAAKO,MAAQ,KACnBmuQ,KAAM1uQ,KAAK0uQ,MAAQ,KACnBrW,OAAQr4P,KAAKq4P,QAAU,KACvBiW,WAAuC,kBAApBtuQ,KAAKsuQ,WAA2BtuQ,KAAKsuQ,WAAatuQ,KAAKqtB,OAAOihP,WACjFK,cAAiC,MAAlB3uQ,KAAKuvQ,UAAoBvvQ,KAAKuvQ,UAAUZ,cAAgB,MAErEsB,GAA4C,iBAAnBjwQ,KAAKu1B,UAAyB41D,aAAgBnrF,KAAKu1B,WAAav1B,KAAKu1B,UACpG,MAAO,CACHixC,MAAOxmE,KAAKwmE,MACZjxC,UAAW06O,GACXv3G,QAAS,IAAIy1G,GAAY6B,OAAehwQ,KAAK04J,SAC7C9D,KAAmB,MAAb50J,KAAK40J,KAAe50J,KAAK8/P,mBAAmB9/P,KAAK40J,MAAQ,KAC/Dl6J,OAAuB,MAAfsF,KAAKtF,OAAiBsF,KAAKtF,OAAS,GAC5C4uI,OAAQtpI,KAAKspI,OACb0+B,WAAY,CACR04F,KAAM1gQ,KAAKkwQ,WAIvBP,WAAWlzK,GAAY5gG,IACnB,MAAMs0Q,GAAe9V,GAAK59J,GAAY5gG,IACtCmE,KAAKowQ,iBAAmBpwQ,KAAKyiE,UAAU5yB,wBAAwBsgO,GAAah5K,KAAK31C,KAAK,QAG9F6tN,SAAgB12Q,UAAhB,4BAA4G02Q,GA5LjBx2Q,MA4LkDqjF,OA5LlDrjF,MA4L8E+1Q,IA5L9E/1Q,MA4LmGi2Q,GA5LnGj2Q,MA4L6Hs2Q,EAAxN,GA5L2Ft2Q,MA4LkLu2Q,GAA7Q,KACAC,EAAgBpmH,UA7L2EpwJ,MA6L3F,MAAgGw2Q,EAAhGjhP,kGA7L2Fv1B,MA6L3F,gCA7L2FA,aA6L3F,iTA7L2FA,OA6L3F62C,4DArFM2/N,MAuYAh/O,SAAN,SAEAA,SAAkB13B,UAAlB,4BAA8G03B,IAC9GA,EAAkB7C,UAlfyE30B,MAkf3F,MAA+Gw3B,IAa/GA,EAAkB5C,UA/fyE50B,MA+f3F,IAhBMw3B,uKC1jBN,IAwWIggP,GAAqB,CACvBlwF,OAAQ,MACRi6E,SAAU,qBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,gBAAiB,OAAQ,utBAk5DzCzjO,GAAgB,CAClBupJ,OAAQ,MACRi6E,SAAU,eACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,67CA8H3B7hO,GAAa,CACf2nJ,OAAQ,MACRi6E,SAAU,YACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,08BAwlB3BiW,GAAc,CAChBnwF,OAAQ,MACRi6E,SAAU,aACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,k1BA8vC3BniO,GAAmB,CACrBioJ,OAAQ,MACRi6E,SAAU,mBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,eAAgB,OAAQ,0tBAukIxC3hO,GAAQ,CACVynJ,OAAQ,MACRi6E,SAAU,MACVC,KAAM,CAAC,IAAK,IAAK,CAAC,QAAS,OAAQ,skBAm7CjC1jO,GALe,CACjBwpJ,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,CAAC,cAAe,OAAQ,2vBAu8HvCjjO,GARU,CACZ+oJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,MAAO,MAAO,MAAO,IAAK,QAAS,WAAY,SAAU,SAAU,OAAQ,4QAuOnGvhO,GAAmB,CACrBqnJ,OAAQ,MACRi6E,SAAU,mBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,OAAQ,mrBAskBhC1kO,GAAY,CACdwqJ,OAAQ,MACRi6E,SAAU,UACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,wpBAkxD3BtiO,GAAuB,CACzBooJ,OAAQ,MACRi6E,SAAU,sBACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,0uBAqkJfkW,qOCvypBhB,IA8/CIr6O,GAAU,CACZiqJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,cAAe,OAAQ,6pBAslI9CphO,GAAkB,CACpBknJ,OAAQ,MACRi6E,SAAU,kBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,cAAe,OAAQ,yhCAsC/CthO,GAAwB,CAC1BonJ,OAAQ,MACRi6E,SAAU,wBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,eAAgB,OAAQ,gdA2dxC9jO,GALoB,CACtB4pJ,OAAQ,MACRi6E,SAAU,oBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,qBAAsB,OAAQ,uSA4R9C9hO,GAAiB,CACnB4nJ,OAAQ,MACRi6E,SAAU,gBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,UAAW,QAAS,OAAQ,gnBAkYpD/jO,GALqB,CACvB6pJ,OAAQ,MACRi6E,SAAU,qBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,sBAAuB,OAAQ,uSA2iB/CvjO,GAAc,CAChBqpJ,OAAQ,MACRi6E,SAAU,aACVC,KAAM,CAAC,IAAK,IAAK,CAAC,cAAe,OAAQ,2UAiUvC7iO,GALgB,CAClB2oJ,OAAQ,MACRi6E,SAAU,eACVC,KAAM,CAAC,IAAK,IAAK,CAAC,YAAa,OAAQ,yZA22BrCliO,GAAe,CACjBgoJ,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,OAAQ,QAAS,OAAQ,oaAoajD5jO,GAAiB,CACnB0pJ,OAAQ,MACRi6E,SAAU,gBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,QAAS,OAAQ,izBA4qBjCxhO,GAAa,CACfsnJ,OAAQ,MACRi6E,SAAU,WACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,KAAM,OAAQ,OAAQ,oUA+xB9CpjO,GALc,CAChBkpJ,OAAQ,MACRi6E,SAAU,aACVC,KAAM,CAAC,IAAK,IAAK,CAAC,cAAe,OAAQ,guBAmhDvC1iO,GAAQ,CACVwoJ,OAAQ,MACRi6E,SAAU,MACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,OAAQ,++BAg0D/BjjO,GARU,CACZ+oJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,MAAO,MAAO,MAAO,IAAK,QAAS,WAAY,SAAU,SAAU,OAAQ,kPA2vCnGziO,GAAS,CACXuoJ,OAAQ,MACRi6E,SAAU,OACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,MAAO,OAAQ,grBA80BvCrkO,GAAU,CACZmqJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,mBAAoB,gBAAiB,OAAQ,mqBA6D7DrhO,GAAe,CACjBmnJ,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,OAAQ,8TA8/JpBkW,yeCvypBhB,IA6GIx6O,GALa,CACfoqJ,OAAQ,MACRi6E,SAAU,YACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,aAAc,OAAQ,4eA+X7CvkO,GALuB,CACzBqqJ,OAAQ,MACRi6E,SAAU,sBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,2BAA4B,OAAQ,wTA+mCpD9iO,GAAS,CACX4oJ,OAAQ,MACRi6E,SAAU,OACVC,KAAM,CAAC,IAAK,IAAK,CAAC,WAAY,OAAQ,4RA0IpCviO,EALsB,CACxBqoJ,OAAQ,MACRi6E,SAAU,qBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,sBAAuB,OAAQ,+LAQ/CpiO,EAA0B,CAC5BkoJ,OAAQ,MACRi6E,SAAU,2BACVC,KAAM,CAAC,IAAK,IAAK,CAAC,YAAa,OAAQ,gaAghBrCzjO,GAAgB,CAClBupJ,OAAQ,MACRi6E,SAAU,eACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,ygCA8H3B7hO,GAAa,CACf2nJ,OAAQ,MACRi6E,SAAU,YACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,swBAuR3BjiO,GAAoB,CACtB+nJ,OAAQ,MACRi6E,SAAU,mBACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,2cAmzB3BhkO,GALY,CACd8pJ,OAAQ,MACRi6E,SAAU,WACVC,KAAM,CAAC,IAAK,IAAK,CAAC,WAAY,OAAQ,2aAapCjkO,GAAS,CACX+pJ,OAAQ,MACRi6E,SAAU,OACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,OAAQ,OAAQ,wLA8vBxCniO,GAAmB,CACrBioJ,OAAQ,MACRi6E,SAAU,mBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,eAAgB,OAAQ,scAgtBxChiO,GAAmB,CACrB8nJ,OAAQ,MACRi6E,SAAU,mBACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,+oBAE3BlhO,GAAS,CACXgnJ,OAAQ,MACRi6E,SAAU,OACVC,KAAM,CAAC,IAAK,IAAK,CAAC,QAAS,OAAQ,6jBAokBjCxiO,EALgB,CAClBsoJ,OAAQ,MACRi6E,SAAU,eACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,gBAAiB,OAAQ,sMAwkChDjhO,GAAU,CACZ+mJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,mZAwiC3B7iO,GALgB,CAClB2oJ,OAAQ,MACRi6E,SAAU,eACVC,KAAM,CAAC,IAAK,IAAK,CAAC,YAAa,OAAQ,sTAgCrC3jO,GAAuB,CACzBypJ,OAAQ,MACRi6E,SAAU,uBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,aAAc,OAAQ,siDAoJtCl2N,GAAe,CACjBg8I,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,8gBA0J3B9gO,GAAmB,CACrB4mJ,OAAQ,MACRi6E,SAAU,kBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,mBAAoB,OAAQ,sbAEnDxkO,GAAmB0D,GAmWnBb,GAAQ,CACVynJ,OAAQ,MACRi6E,SAAU,MACVC,KAAM,CAAC,IAAK,IAAK,CAAC,QAAS,OAAQ,ikBA4KjCliO,GAAe,CACjBgoJ,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,OAAQ,QAAS,OAAQ,6SAuJjD/hO,GAAqB,CACvB6nJ,OAAQ,MACRi6E,SAAU,qBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,KAAM,qBAAsB,uBAAwB,QAAS,OAAQ,yUAqCrF7jO,GALuB,CACzB2pJ,OAAQ,MACRi6E,SAAU,sBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,YAAa,OAAQ,saAsLrC/iO,GAAuB,CACzB6oJ,OAAQ,MACRi6E,SAAU,sBACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,ybAs1G3B/gO,GAAQ,CACV6mJ,OAAQ,MACRi6E,SAAU,MACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,cAAe,OAAQ,8cAsW/CljO,GAAW,CACbgpJ,OAAQ,MACRi6E,SAAU,SACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,0QAkG3B3iO,GALc,CAChByoJ,OAAQ,MACRi6E,SAAU,aACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,iBAAkB,uBAAwB,OAAQ,gZAkxBzEnhO,GALe,CACjBinJ,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,CAAC,eAAgB,OAAQ,0XAiSxCjjO,GARU,CACZ+oJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,MAAO,MAAO,MAAO,IAAK,QAAS,WAAY,SAAU,SAAU,OAAQ,4RAidnGnjO,GAAgB,CAClBipJ,OAAQ,MACRi6E,SAAU,eACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,OAAQ,0KAqE/BrjO,GAAiB,CACnBmpJ,OAAQ,MACRi6E,SAAU,gBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,OAAQ,6KAoR/B1kO,GAAY,CACdwqJ,OAAQ,MACRi6E,SAAU,UACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,6UAqzB3BzkO,GALe,CACjBuqJ,OAAQ,MACRi6E,SAAU,cACVC,KAAM,CAAC,IAAK,IAAK,CAAC,eAAgB,OAAQ,0OA8NxCtjO,GAAuB,CACzBopJ,OAAQ,MACRi6E,SAAU,uBACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,qkBAsB3BhjO,GAAU,CACZ8oJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,OAAQ,OAAQ,yLA4OvCrkO,GAAU,CACZmqJ,OAAQ,MACRi6E,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,CAAC,mBAAoB,gBAAiB,OAAQ,sWAyb7DlkO,GALc,CAChBgqJ,OAAQ,MACRi6E,SAAU,aACVC,KAAM,CAAC,IAAK,IAAK,CAAC,YAAa,OAAQ,qLA0OrCriO,GAAgB,CAClBmoJ,OAAQ,MACRi6E,SAAU,gBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,YAAa,OAAQ,uZAqG7CzhO,GAAoB,CACtBunJ,OAAQ,MACRi6E,SAAU,mBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,OAAQ,cAAe,SAAU,cAAe,OAAQ,ycA2BxEhhO,GAAa,CACf8mJ,OAAQ,MACRi6E,SAAU,WACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,+oBAoxIfkW,0ECvypBI,MAAM5qL,EAAE,GAAG,WAA4BtxF,EAAEsxF,GAAG1yF,OAAO0nH,eAAetmH,EAAEo2F,UAAU6gC,OAAOklJ,YAAY,CAACr7Q,MAAMwwF,EAAE4lC,UAAS,EAAG1Q,YAAW,EAAGC,cAAa,IAAK,UAAUn1B,KAAK1yF,OAAOmsL,oBAAoB/qL,GAAG,CAAC,MAAMkxD,EAAEtyD,OAAO0+P,yBAAyBt9P,EAAEsxF,GAAGpgC,EAAEu1D,cAAcv1D,EAAEs1D,aAAat1D,EAAEs1D,YAAW,EAAG5nH,OAAO0nH,eAAetmH,EAAEsxF,EAAEpgC,IAAI,UAAUogC,KAAK1yF,OAAOmsL,oBAAoB/qL,EAAEo2F,WAAW,CAAC,MAAMllC,EAAEtyD,OAAO0+P,yBAAyBt9P,EAAEo2F,UAAU9E,GAAGpgC,EAAEu1D,cAAcv1D,EAAEs1D,aAAat1D,EAAEs1D,YAAW,EAAG5nH,OAAO0nH,eAAetmH,EAAEo2F,UAAU9E,EAAEpgC,IAAIkrN,GAAgB9qL,EAAEtxF,GAAGo8Q,GAAiB,GAAE9qL,cAActxF,EAAEo2F,WAAW,YAAyBp2F,EAAEkxD,GAAG,MAAM9C,EAAG,IAAGpuD,KAAK,QAAG,MAAWouD,GAAG,MAAM,IAAIhZ,MAAO,aAAYp1C,oBAAoBsxF,EAAEljC,GAAG8C,EAAE,WAAsBlxD,GAAG,OAAOsxF,EAAEtxF,GAAG,IAAIkxD,EAAE9C,EAAE,MAAMrhD,EAAE,wBAAwB6V,EAAE,2BAA2Bnc,EAAE,YAAY4H,EAAE,aAAasgC,EAAE,WAAWrH,EAAE,YAAY9+B,EAAE,cAAcstD,GAAE,cAAc0hE,GAAE,mBAAmBn8F,GAAE,mBAAmB0yM,EAAE,kBAAkB/nN,GAAE,gBAAgB7H,GAAE,kBAAkBvO,EAAE,wBAAwBmsH,EAAE,uBAAuBhzG,GAAE,sBAAsBmkC,GAAE,iBAAiBkwE,GAAE,aAAarwE,GAAE,cAAcC,GAAE,aAAah+C,GAAE,YAAY8sH,EAAE,aAAagrG,EAAE,eAAejkN,EAAE,eAAe8jN,GAAE,oBAAoBz9L,GAAE,oBAAoBgnM,GAAE,mBAAmBrgD,GAAE,2BAA2B7lI,GAAE,IAAI/4B,QAAc+gN,GAAE/6G,OAAOolJ,IAAI,yBAAyBnrN,EAAEkjG,YAAY49E,MAAK9gL,EAAE8gL,IAAG,SAAmBhyO,GAAG,OAAOgqD,GAAEhpD,IAAIhB,KAAK,MAAM8xO,GAAE19E,WAAW49E,IAASj8L,GAAEkhF,OAAOolJ,IAAI,4BAA4BjuN,EAAEgmG,YAAYr+G,MAAKqY,EAAErY,IAAG,SAAsB/1C,GAAGgqD,GAAE/oD,IAAIjB,EAAEpB,OAAO8Z,OAAO,SAAS,MAAMmuN,GAAEzyE,WAAWr+G,IAAG,YAAiB/1C,KAAKsxF,GAAG,IAAItxF,GAAG,iBAAiBA,EAAE,OAAM,EAAG,MAAMkxD,EAAE4gL,GAAE9xO,GAAG,QAAQkxD,GAAGogC,EAAEngC,MAAOnxD,GAAGA,KAAKkxD,GAAI,WAAiBlxD,EAAEsxF,SAAG,MAAMpgC,EAAE4gL,YAAE9xO,SAAF8xO,IAAOxgJ,GAAG,QAAG,MAAW,MAAM,IAAI0jC,UAAW,yBAAwB1jC,KAAK,OAAOpgC,EAAE,YAAiBlxD,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE0jL,GAAE9xO,GAAG,QAAG,MAAW,MAAM,IAAIg1H,UAAU,yCAAyC,GAAG5mE,EAAEkjC,GAAG,MAAM,IAAI0jC,UAAW,GAAE1jC,qBAAqBljC,EAAEkjC,GAAGpgC,EAAE,MAAM1kC,GAAE,8FAA8FopC,GAAE,IAAIruD,OAAO,MAAM,CAAE,MAAKilB,GAAEkkB,mBAAmBlkB,GAAEkkB,YAAY,4BAA4B,YAAY,UAAU,UAAU,UAAU,UAAU,6EAA6EA,QAAQyc,KAAK,KAAK,KAAK6R,GAAE,4BAA4BywK,GAAE,oBAAoB3iL,GAAE,0BAA0BszG,GAAE,IAAI74J,OAAQ,IAAGy3D,GAAEtuB,eAAe++L,GAAE/+L,YAAYoc,GAAEpc,YAAY++L,GAAE/+L,WAAWoc,GAAEpc,YAAYsS,GAAE,4FAA4FgtL,GAAE,yFAAyF3nK,GAAE,IAAI9gE,OAAQ,UAASyoO,GAAEt/L,WAAWk2L,GAAE,gEAAgEjxK,GAAE,IAAIpuD,OAAO,CAAE,IAAG64J,GAAE1vH,SAAU,gBAAesS,GAAEtS,YAAY23B,GAAE33B,aAAc,YAAWklB,GAAEllB,eAAgB,OAAMk2L,GAAEl2L,cAAcyc,KAAK,IAAI,KAAK2F,GAAE,IAAIvrD,OAAO,CAAE,MAAKy7C,GAAEtS,SAAU,MAAK23B,GAAE33B,WAAY,WAAUklB,GAAEllB,cAAe,OAAMk2L,GAAEl2L,cAAcyc,KAAK,IAAI,KAAKrlD,GAAE,IAAIP,OAAQ,KAAIy3D,GAAEtuB,aAAa++L,GAAE/+L,kBAAkBklB,GAAEllB,kBAAkBk2L,GAAEl2L,cAAcqyB,GAAE,IAAIx7D,OAAQ,YAAWkoO,GAAE/+L,aAAaoc,GAAEpc,kBAAkBklB,GAAEllB,kBAAkBk2L,GAAEl2L,cAAcmsB,GAAE,0BAA0BozK,GAAE,IAAI1oO,OAAQ,MAAKs1D,GAAEnsB,eAAemsB,GAAEnsB,eAAemsB,GAAEnsB,aAAaigM,GAAE,IAAIppO,OAAQ,kBAAY,+CAA+CmpC,kBAAkBu/L,GAAEv/L,YAAY,KAAKogM,GAAGtuO,MAAM4zF,UAAUxgD,SAAS0mO,GAAG95Q,MAAM4zF,UAAU/2F,KAAKmhH,GAAG4zC,WAAWmoH,KAAKt9E,eAAeu9E,GAAG/tQ,KAAKstF,IAAI0gL,GAAGhuQ,KAAKC,IAAIguQ,GAAGjuQ,KAAK6H,IAAIqmQ,GAAGluQ,KAAKkpH,MAAMilJ,GAAGnuQ,KAAKmpH,KAAKilJ,GAAGpuQ,KAAKquQ,MAAMC,GAAG58O,OAAOmhE,MAAM07K,GAAG78O,OAAOq4F,SAASpvF,GAAGjJ,OAAO88O,GAAGtkL,OAAOukL,GAAG/8O,OAAOg9O,iBAAiBC,GAAGx+Q,OAAO8Z,OAAO2kQ,GAAGz+Q,OAAO0+P,yBAAyBggB,GAAGlmJ,QAAQ/gC,MAAMknL,GAAGnmJ,QAAQmmI,QAAQigB,GAAGx9Q,SAAS,GAAGy9Q,GAAGz9Q,SAAS,GAAG09Q,GAAG19Q,SAAS,IAAI29Q,GAAG39Q,SAAS,IAAI49Q,GAAG59Q,SAAS,KAAK69Q,GAAG79Q,SAAS,KAAK89Q,GAAG99Q,SAAS,KAAK+9Q,GAAG/9Q,UAAS,GAAIg+Q,GAAGh+Q,WAAWA,SAAS,MAAM89Q,IAAIG,GAAGj+Q,WAAW09Q,GAAGI,IAAII,GAAGl+Q,WAAWg+Q,GAAGL,IAAIQ,GAAGn+Q,WAAWA,UAAS,OAAQA,SAAS,OAAOo+Q,GAAGp+Q,WAAWA,SAAS,OAAOA,SAAS,OAAOq+Q,IAAG,OAAQC,GAAG,OAAOC,GAAGv+Q,WAAWA,UAAS,QAASA,SAAS,OAAOw+Q,GAAGx+Q,WAAWk+Q,GAAGl+Q,SAAS,OAAOy+Q,GAAGz+Q,WAAWk+Q,GAAGl+Q,SAAS,MAAM0+Q,GAAG1+Q,WAAWk+Q,GAAGl+Q,SAAS,KAAK2+Q,GAAG,CAAC,UAAU,SAAS,UAAU,mBAAmB,eAAe,gBAAgB,eAAe,WAAW,UAAU,WAAW,UAAU,SAAS,UAAU,QAAQ,MAAM,SAAS,WAAW,WAAW,WAAW,YAAgBrtL,GAAG,OAAOtxF,QAAQsxF,EAAEksL,IAAI,YAAmBx9Q,EAAEsxF,GAAG,MAAMpgC,EAAElxD,EAAEsxF,GAAG,QAAG,MAAW,OAAOpgC,EAAE,YAAclxD,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE8nC,UAAUx4F,OAAO,EAAEwzD,EAAE,GAAG,OAAOosN,GAAGt9Q,EAAEsxF,EAAEljC,GAAG,YAAkBpuD,GAAG,MAAM,iBAAiBA,GAAG,UAAU,mBAAmBA,CAAnB,CAAqB,YAAkBA,GAAG,GAAG,iBAAiBA,EAAE,MAAM,IAAIg1H,UAAU,mCAAmC,OAAO5rF,GAAGppC,GAAG,YAA6BA,GAAG,MAAMsxF,EAAEstL,GAAS5+Q,GAAG,GAAG+8Q,GAAGzrL,IAAI,MAAM,OAAO,EAAE,IAAI0rL,GAAG1rL,GAAG,OAAOA,EAAE,MAAMpgC,EAAEyrN,GAAGD,GAAGprL,IAAI,OAAO,MAAM,EAAEsrL,GAAGtrL,GAAGpgC,EAAE,YAA0BlxD,GAAG,GAAG,iBAAiBA,GAAG+8Q,GAAG/8Q,KAAKg9Q,GAAGh9Q,GAAG,OAAM,EAAG,MAAMsxF,EAAEorL,GAAG18Q,GAAG,OAAO28Q,GAAGrrL,KAAKA,EAAE,YAAkBtxF,GAAG,GAAG,iBAAiBA,EAAE,MAAM,IAAIg1H,UAAU,6CAA6C,OAAOioJ,GAAGj9Q,GAAG,YAAiCA,GAAG,MAAMsxF,EAAEstL,GAAS5+Q,GAAG,GAAG,MAAM,OAAO,EAAE,GAAG+8Q,GAAGzrL,KAAK0rL,GAAG1rL,GAAG,MAAM,IAAIwmC,WAAW,wBAAwB,MAAM5mE,EAAE2rN,GAAGvrL,GAAG,OAAO,MAAM,EAAEpgC,EAAE,YAAyClxD,EAAEsxF,GAAG,MAAMpgC,EAAE2tN,GAAwB7+Q,GAAG,GAAGkxD,GAAG,EAAG,WAAG,MAAiB,IAAI4mE,WAAY,aAAYxmC,yCAA+C,IAAIwmC,WAAW,+DAA+D,OAAO5mE,EAAE,YAA6BlxD,GAAG,MAAMsxF,EAAEstL,GAAS5+Q,GAAG,IAAIg9Q,GAAG1rL,GAAG,MAAM,IAAIwmC,WAAW,4BAA4B,IAAIgnJ,GAAiBxtL,GAAG,MAAM,IAAIwmC,WAAY,gCAA+B93H,KAAK,OAAO,MAAM,EAAEsxF,EAAE,YAAgBA,EAAEpgC,GAAG,MAAM,CAACirE,SAASn8H,SAASsxF,EAAEpgC,GAAGkrE,UAAUp8H,YAAYsxF,EAAEpgC,IAAI,YAAwBogC,GAAG,OAAOtxF,WAAWsxF,EAAEksL,IAAI,YAAkBx9Q,GAAG,OAAOmlJ,GAAOnlJ,GAAG,EAAE++Q,GAAe/+Q,IAAG,EAAG,EAAE,YAAasxF,GAAG,OAAOtxF,WAAWsxF,EAAEksL,IAAIx9Q,WAAWsxF,EAAEysL,IAAIzsL,EAAE,MAAM0tL,GAAG,IAAIj+Q,IAAI,CAAC,CAAC,OAAO89Q,IAAyB,CAAC,QAAQI,IAAiC,CAAC,YAAYC,IAAU,CAAC,MAAMD,IAAiC,CAAC,OAAOJ,IAAyB,CAAC,SAASA,IAAyB,CAAC,SAASA,IAAyB,CAAC,cAAcA,IAAyB,CAAC,cAAcA,IAAyB,CAAC,aAAaA,IAAyB,CAAC,QAAQM,IAAqB,CAAC,SAASA,IAAqB,CAAC,QAAQA,IAAqB,CAAC,OAAOA,IAAqB,CAAC,QAAQA,IAAqB,CAAC,UAAUA,IAAqB,CAAC,UAAUA,IAAqB,CAAC,eAAeA,IAAqB,CAAC,eAAeA,IAAqB,CAAC,cAAcA,IAAqB,CAAC,MAAMD,IAAU,CAAC,UAAUE,IAAqB,CAAC,SAASF,MAAYG,GAAG,IAAIt+Q,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,cAAc,GAAG,CAAC,cAAc,GAAG,CAAC,aAAa,KAAKu+Q,GAAG,CAAC,CAAC,QAAQ,OAAO,QAAQ,CAAC,SAAS,QAAQ,QAAQ,CAAC,QAAQ,OAAO,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,QAAQ,OAAO,QAAQ,CAAC,UAAU,SAAS,QAAQ,CAAC,UAAU,SAAS,QAAQ,CAAC,eAAe,cAAc,QAAQ,CAAC,eAAe,cAAc,QAAQ,CAAC,cAAc,aAAa,SAASC,GAAG,IAAIx+Q,IAAIu+Q,GAAG3+Q,IAAKX,GAAG,CAACA,EAAE,GAAGA,EAAE,MAAOw/Q,GAAG,IAAIz+Q,IAAIu+Q,GAAG3+Q,IAAK,EAAEX,EAAEsxF,KAAK,CAACA,EAAEtxF,KAAMy/Q,GAAGH,GAAG3+Q,IAAK,EAAC,CAAEX,KAAKA,GAAI0/Q,GAAGl9Q,MAAMC,KAAK88Q,GAAG1gR,QAAQgnB,OAAO85P,GAAG,IAAI5+Q,IAAI,YAA8Cf,GAAG,IAAIsxF,EAAEquL,GAAG3+Q,IAAIhB,GAAG,YAAO,QAAasxF,EAAE,IAAIkvB,GAAG,QAAQ,CAACo/J,SAAS3C,GAAGj9Q,GAAG6/Q,QAAO,EAAGC,IAAI,QAAQt2N,KAAK,UAAUD,MAAM,UAAUD,IAAI,UAAUy2N,KAAK,UAAUC,OAAO,UAAU12K,OAAO,YAAYq2K,GAAG1+Q,IAAIjB,EAAEsxF,IAAIA,EAAE,YAAkBtxF,GAAG,GAAG,QAAQ,MAAM,IAAIg1H,UAAW,uBAAsBh1H,KAAK,OAAOpB,OAAOoB,GAAG,YAA4BA,EAAEsxF,EAAEpgC,EAAE9C,GAAG,GAAG,QAAQ,OAAO,MAAMrhD,EAAEwwQ,GAAGjsL,GAAG,UAAU1uE,KAAK7V,EAAE,IAAImkD,EAAEniD,KAAM/O,GAAGpB,OAAOu4F,GAAGn3F,EAAE4iB,KAAMhkB,OAAOw3F,UAAUs0I,qBAAqBltO,KAAK8zF,EAAE1uE,GAAG,CAAC,MAAMsuC,EAAEogC,EAAE1uE,GAAG,GAAGwrC,GAAGA,EAAEr/C,KAAM/O,IAAGpB,OAAOu4F,GAAGn3F,GAAEkxD,IAAK,SAASlxD,EAAE4iB,GAAGsuC,GAAG,YAA2BlxD,GAAG,OAAOigR,GAAQjgR,EAAE+M,KAAKkzQ,GAAQjgR,EAAEktD,GAAElnC,IAAG,YAA4BhmB,GAAG,OAAOigR,GAAQjgR,EAAE4iB,GAAG,YAA4B5iB,GAAG,OAAOigR,GAAQjgR,EAAE6vL,IAAG,YAA4B7vL,GAAG,OAAOigR,GAAQjgR,EAAEo9H,GAAErwE,GAAE/9C,GAAE8sH,EAAEgrG,EAAEjkN,EAAE8jN,GAAEz9L,GAAEgnM,IAAG,YAAwBlwO,GAAG,OAAOigR,GAAQjgR,EAAEme,IAAG,YAAwBne,GAAG,OAAOigR,GAAQjgR,EAAEsnC,EAAE9+B,EAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,KAAKkyC,GAAQjgR,EAAEyG,EAAE4H,EAAEsgC,GAAG,YAA4B3uC,GAAG,OAAOigR,GAAQjgR,EAAEyG,EAAE4H,EAAEsgC,EAAErH,EAAE9+B,EAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAG,YAA6B/tO,GAAG,OAAOigR,GAAQjgR,EAAE4P,GAAG,YAA4B5P,GAAG,OAAOigR,GAAQjgR,EAAE+7H,GAAG,YAAiC/7H,GAAG,OAAOigR,GAAQjgR,EAAE+M,EAAEmgD,GAAElnC,IAAG,YAAkChmB,GAAG,GAAGigR,GAAQjgR,EAAEgmB,KAAIi6P,GAAQjgR,EAAEktD,IAAG,MAAM,IAAI8nE,UAAU,2DAA2D,GAAGkrJ,GAAelgR,GAAG,MAAM,IAAIg1H,UAAU,0EAA0E,QAAG,MAAWmrJ,SAAS,MAAM,IAAInrJ,UAAU,+CAA+C,QAAG,MAAW4qJ,SAAS,MAAM,IAAI5qJ,UAAU,+CAAsd,YAAuCh1H,EAAEsxF,GAAG,MAAM,YAAY,GAAG8uL,GAAyBC,GAA6BrgR,GAAGsxF,GAAG,YAAkCtxF,EAAEsxF,GAA2B,MAArB,aAAwB,YAAY,cAAoB,GAAU,IAAG,eAAe,IAAI,UAAUtxF,KAAK,YAA0BA,GAAG,MAAMsxF,EAAE37B,GAAEluD,KAAKzH,GAAG,IAAIsxF,EAAE,MAAM,IAAIwmC,WAAY,4BAA2B93H,KAAK,IAAIkxD,EAAEogC,EAAE,GAAG,GAAG,aAAQ,KAAKpgC,EAAG,IAAGA,EAAEn5C,MAAM,MAAM,cAAc,MAAM,IAAI+/G,WAAY,4BAA2B93H,KAAK,MAAMouD,EAAEgxN,GAAoBluN,GAAGnkD,EAAEqyQ,GAAoB9tL,EAAE,IAAIA,EAAE,IAAI1uE,EAAEw8P,GAAoB9tL,EAAE,IAAIA,EAAE,IAAI7qF,EAAE24Q,GAAoB9tL,EAAE,IAAIjjF,QAAE,MAAW,GAAGsgC,GAAEywO,GAAoB9tL,EAAE,IAAIA,EAAE,KAAK,IAAIhqD,GAAE83O,GAAoB9tL,EAAE,IAAIA,EAAE,KAAK,KAAKhqD,KAAIA,GAAE,IAAI,MAAM9+B,IAAG8oF,EAAE,IAAIA,EAAE,KAAK,YAAYx7B,GAAEspN,GAAoB52Q,GAAEuP,MAAM,EAAE,IAAIy/G,GAAE4nJ,GAAoB52Q,GAAEuP,MAAM,EAAE,IAAIsjB,GAAE+jP,GAAoB52Q,GAAEuP,MAAM,EAAE,IAAI,IAAIg2N,GAAE/nN,IAAE,EAAG,GAAGsrE,EAAE,IAAIy8I,QAAE,EAAO/nN,IAAE,UAAWsrE,EAAE,KAAKA,EAAE,IAAI,CAAC,MAAqEvkF,GAAEukF,EAAE,KAAK,KAAK,IAAI1uE,GAAE0uE,EAAE,KAAK,IAAI,GAAGy8I,GAAG,GAAlG,QAAQ,KAAK,aAAQ,IAAI,IAAI,MAAMz8I,EAAE,KAAK,QAAOA,EAAE,KAAK,QAA0D1uE,GAAE,CAAC,KAAKA,GAAEktC,SAAS,MAAMltC,GAAEA,GAAE7K,MAAM,GAAE,GAAIg2N,IAAI,IAAGhhO,MAAK6V,UAAS7V,KAAIghO,IAAI,IAAGhhO,MAAK,WAAWghO,KAAIA,GAAE,UAAU,MAAM5vN,GAAEmzE,EAAE,IAAI1hF,GAAE0hF,EAAE,IAAI,IAAIyqC,GAAE,UAAS,CAAE/7H,GAAEsxF,GAAEpgC,MAAKthD,GAAE0wQ,SAAS15C,IAAG,GAAG,iBAAW,IAAS7qG,KAAIA,GAAE7qE,YAAW,SAAQ,MAAM,IAAI4mE,WAAY,6BAA4BxmC,MAAKpgC,MAAK,OAAOqvN,EAAenyN,EAAErhD,EAAE6V,EAAEnc,EAAEkoC,GAAErH,GAAEwuB,GAAE0hE,GAAEn8F,IAAG,CAACmuB,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,EAAE49P,QAAQnyQ,GAAE0xQ,KAAKt5Q,EAAEu5Q,OAAOrxO,GAAE26D,OAAOhiE,GAAEm5O,YAAY3qN,GAAE4qN,YAAYlpJ,GAAEmpJ,WAAWtlP,GAAEulP,SAASziQ,GAAE1f,OAAOsvO,GAAEj7K,EAAE9sC,GAAEm6P,SAASpkJ,IAAG,YAAsC/7H,GAAG,MAAMsxF,EAAExpF,GAAEL,KAAKzH,GAAG,IAAIkxD,EAAE9C,EAAErhD,EAAE6V,EAAE,GAAG0uE,EAAE,CAAC,IAAI1uE,EAAE0uE,EAAE,GAAG,GAAG,aAAQ,KAAK1uE,EAAG,IAAGA,EAAE7K,MAAM,MAAM,cAAc,MAAM,IAAI+/G,WAAY,4BAA2B93H,KAAKkxD,EAAEkuN,GAAoBx8P,GAAGwrC,EAAEgxN,GAAoB9tL,EAAE,IAAI,MAAM7qF,GAAE6qF,EAAE,GAAG,UAAS,CAAEtxF,GAAEsxF,GAAEpgC,MAAKzqD,GAAE65Q,SAAS15C,IAAG,GAAG,iBAAW,IAAS75N,IAAIA,EAAEmkD,YAAW,SAAQ,MAAM,IAAI4mE,WAAY,6BAA4BxmC,MAAKpgC,MAAK,QAAG,OAAY,cAAc,MAAM,IAAI4mE,WAAW,0DAA0D,CAAC,IAAIxmC,EAAE,KAAK9nC,KAAK0H,EAAE3H,MAAM6E,EAAE+xN,SAASpzQ,EAAEu8C,IAAI1mC,EAAEkwC,EAAEw+B,GAAGuvL,GAAiB7gR,IAAIsxF,EAAE,MAAM,IAAIwmC,WAAW,iDAAiD,MAAM,CAACtuE,KAAK0H,EAAE3H,MAAM6E,EAAE+xN,SAASpzQ,EAAE+zQ,gBAAgBl+P,GAAG,YAAqC5iB,GAAG,MAAMsxF,EAAEvuB,GAAEt7D,KAAKzH,GAAG,IAAIkxD,EAAE9C,EAAErhD,EAAE6V,EAAE,GAAG0uE,EAAE,CAACpgC,EAAEkuN,GAAoB9tL,EAAE,IAAIljC,EAAEgxN,GAAoB9tL,EAAE,IAAI,MAAMtxF,EAAEsxF,EAAE,GAAG,UAAS,CAAEA,GAAEpgC,GAAE9C,MAAKpuD,EAAEsgR,SAAS15C,IAAG,GAAG,iBAAW,IAAS75N,IAAIA,EAAEqhD,YAAW,SAAQ,MAAM,IAAI0pE,WAAY,6BAA4B5mE,MAAK9C,MAAK,QAAG,OAAY,cAAc,MAAM,IAAI0pE,WAAW,wDAAwD,CAAC,IAAIxmC,EAAE,KAAK/nC,MAAM2H,EAAE5H,IAAI8E,EAAE+xN,SAASpzQ,EAAEy8C,KAAK5mC,EAAEkwC,EAAEw+B,GAAGuvL,GAAiB7gR,IAAIsxF,EAAE,MAAM,IAAIwmC,WAAW,gDAAgD,MAAM,CAACvuE,MAAM2H,EAAE5H,IAAI8E,EAAE+xN,SAASpzQ,EAAEg0Q,iBAAiBn+P,GAAmrB,YAAyB5iB,EAAEsxF,EAAEpgC,EAAE9C,GAAG,IAAIrhD,EAAE/M,EAAE4iB,EAAE0uE,EAAE7qF,EAAEyqD,EAAE,OAAO9C,OAAO,SAAS4yN,GAAcj0Q,EAAE6V,EAAEnc,GAAG,UAAU,cAAc+iD,KAAKz8C,EAAEw8C,MAAM3mC,EAAE0mC,IAAI7iD,GAAGw6Q,GAAiBl0Q,EAAE6V,EAAEnc,IAAI,MAAM,CAAC+iD,KAAKz8C,EAAEw8C,MAAM3mC,EAAE0mC,IAAI7iD,GAAG,YAAsBzG,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAG,IAAI4H,GAAErO,EAAE2uC,GAAE2iD,EAAEhqD,GAAE4pB,EAAE1oD,GAAE4lD,EAAE0H,GAAE/oD,EAAEyqH,GAAE50G,EAAE,OAAOnc,OAAO,SAASy6Q,EAAW7yQ,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,IAAG,UAAU,cAAcuoJ,KAAK1xQ,GAAE2xQ,OAAOrxO,GAAE26D,OAAOhiE,GAAEm5O,YAAYj4Q,GAAEk4Q,YAAY5qN,GAAE6qN,WAAWnpJ,KAA4BlmC,GAAmQ3iD,GAAjQuiB,GAAmQ5pB,GAAjQ8mB,GAAmQ5lD,GAAjQuE,GAAmQ+oD,GAAjQlzC,GAAmQ40G,GAA/E,CAACuoJ,KAA1KoB,GAA8O9yQ,GAA3N,EAAE,IAA4J2xQ,OAAtJmB,GAAiB7vL,GAAE,EAAE,IAA0IgY,OAApI63K,GAAiBjwN,GAAE,EAAE,IAAwHuvN,YAAlHU,GAAiB/yN,GAAE,EAAE,KAA2GsyN,YAApGS,GAAiBp0Q,GAAE,EAAE,KAA6F4zQ,WAAtFQ,GAAiBv+P,GAAE,EAAE,QAA1M,IAAyB0uE,GAAEpgC,GAAE9C,GAAErhD,GAAE6V,GAAuQ,MAAM,CAACm9P,KAAK1xQ,GAAE2xQ,OAAOrxO,GAAE26D,OAAOhiE,GAAEm5O,YAAYj4Q,GAAEk4Q,YAAY5qN,GAAE6qN,WAAWnpJ,IAAG,YAAkCx3H,GAAG,IAAIohR,GAASphR,GAAG,OAAO,SAAqCA,cAAG,MAAMsxF,GAAEq/I,GAAElpO,KAAKzH,IAAG,IAAIsxF,GAAE,MAAM,IAAIwmC,WAAY,qBAAoB93H,MAAK,GAAGsxF,GAAEv5E,MAAM,GAAGo5C,MAAOnxD,SAAG,QAAa,MAAM,IAAI83H,WAAY,qBAAoB93H,MAAK,MAAMkxD,GAAE,SAAQ,IAAI,cAAQ,IAAG,EAAG,EAAE9C,QAAE,OAAW,GAAG,EAAEywN,GAAwBvtL,GAAE,IAAIpgC,GAAEnkD,QAAE,OAAW,GAAG,EAAE8xQ,GAAwBvtL,GAAE,IAAIpgC,GAAEtuC,QAAE,OAAW,GAAG,EAAEi8P,GAAwBvtL,GAAE,IAAIpgC,GAAEzqD,QAAE,OAAW,GAAG,EAAEo4Q,GAAwBvtL,GAAE,IAAIpgC,GAAE7iD,QAAE,OAAW,GAAG,EAAEwwQ,GAAwBvtL,GAAE,IAAIpgC,GAAEviB,GAAE2iD,GAAE,GAAGhqD,GAAEgqD,GAAE,GAAG9oF,GAAE8oF,GAAE,GAAGx7B,GAAEw7B,GAAE,IAAIkmC,GAAElmC,GAAE,IAAI,IAAIj2D,GAAE,EAAE0yM,EAAE,EAAE/nN,GAAE,EAAE,QAAG,OAAW,CAAC,GAAGshB,gCAAG9+B,IAAH8+B,GAAMwuB,IAANxuB,GAASkwF,GAAE,MAAM,IAAIM,WAAW,4CAA4C9xG,GAAE,KAAKo5P,IAAqBzwO,GAAE,aAAa52B,MAAM,EAAE,IAAIm5C,WAAU71B,QAAE,OAAW,EAAEwjP,GAAwBv3O,IAAG4pB,QAAE,OAAW,CAAC,GAAG4E,YAAG0hE,GAAE,MAAM,IAAIM,WAAW,4CAA4C9xG,GAAE,GAAGo5P,IAAqB52Q,GAAE,aAAauP,MAAM,EAAE,IAAIm5C,QAAO68K,OAAE,OAAW,EAAE8wC,GAAwB/oN,IAAG5E,QAAE,SAAalrC,GAAEo5P,IAAqB5nJ,GAAE,aAAaz/G,MAAM,EAAE,IAAIm5C,IAAG,MAAM/yC,GAAE6H,GAAE,IAAIpW,GAAEitQ,GAAG72P,GAAE,KAAK,IAAI+1G,GAAE8gJ,GAAG72P,GAAE,KAAK,IAAI,OAAO+nN,GAAG8uC,GAAG72P,GAAE,KAAK,GAAGqV,IAAGwhP,GAAG72P,GAAE,MAAMq7P,GAAejzN,GAAErhD,GAAE6V,GAAEnc,GAAE4H,GAAEgtB,GAAE0yM,EAAEhyG,GAAEnsH,GAAEuO,IAAG,CAAC0rC,MAAMuE,GAAEusF,OAAO5tI,GAAEu0Q,MAAM1+P,GAAEi4H,KAAKp0I,GAAEyuI,MAAM7mI,GAAE8mI,QAAQ95G,GAAEkmP,QAAQxzC,EAAE7zF,aAAane,GAAEylJ,aAAa5xQ,GAAE6xQ,YAAYtjQ,IAA9rC,CAAksC+gQ,GAASl/Q,IAAI,GAAG0hR,GAAmB1hR,GAAG,MAAM,CAAC6pD,MAAM83N,EAAQ3hR,EAAEo9H,IAAGud,OAAOgnI,EAAQ3hR,EAAE+sD,IAAGu0N,MAAMK,EAAQ3hR,EAAEgtD,IAAG6tF,KAAK8mI,EAAQ3hR,EAAEgP,IAAGkmI,MAAMysI,EAAQ3hR,EAAE87H,GAAGqZ,QAAQwsI,EAAQ3hR,EAAE8mO,GAAGy6C,QAAQI,EAAQ3hR,EAAE6iB,GAAGq3H,aAAaynI,EAAQ3hR,EAAE2mO,IAAG66C,aAAaG,EAAQ3hR,EAAEkpC,IAAGu4O,YAAYE,EAAQ3hR,EAAEkwO,KAAI,MAAM5+I,EAAE,CAACznC,MAAM,EAAE8wF,OAAO,EAAE2mI,MAAM,EAAEzmI,KAAK,EAAE3F,MAAM,EAAEC,QAAQ,EAAEosI,QAAQ,EAAErnI,aAAa,EAAEsnI,aAAa,EAAEC,YAAY,GAAG,IAAIvwN,EAAE,SAAyClxD,IAAG,IAAIohR,GAASphR,IAAG,MAAM,IAAIg1H,UAAU,yBAAyB,MAAM1jC,GAAE,CAACznC,WAAM,EAAO8wF,YAAO,EAAO2mI,WAAM,EAAOzmI,UAAK,EAAO3F,WAAM,EAAOC,aAAQ,EAAOosI,aAAQ,EAAOrnI,kBAAa,EAAOsnI,kBAAa,EAAOC,iBAAY,GAAQ,IAAIvwN,IAAE,EAAG,UAAU9C,MAAKsxN,GAAG,CAAC,MAAM3yQ,GAAE/M,GAAEouD,SAAG,IAASrhD,KAAImkD,IAAE,EAAGogC,GAAEljC,IAAG+wN,GAAoBpyQ,KAAI,IAAImkD,GAAE,MAAM,IAAI8jE,UAAU,yBAAyB,OAAO1jC,GAA/Z,CAAkatxF,GAAG,UAAUA,MAAK0/Q,GAAG,CAAC,MAAMtxN,GAAE8C,EAAElxD,SAAG,IAASouD,KAAIkjC,EAAEtxF,IAAGouD,IAAG,IAAIvE,MAAMuE,EAAEusF,OAAO5tI,EAAEu0Q,MAAM1+P,EAAEi4H,KAAKp0I,EAAEyuI,MAAM7mI,GAAE8mI,QAAQxmG,GAAE4yO,QAAQj6O,GAAE4yG,aAAa1xI,GAAEg5Q,aAAa1rN,GAAE2rN,YAAYjqJ,IAAGlmC,EAAE,OAAO+vL,GAAejzN,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,IAAG,CAAC3tE,MAAMuE,EAAEusF,OAAO5tI,EAAEu0Q,MAAM1+P,EAAEi4H,KAAKp0I,EAAEyuI,MAAM7mI,GAAE8mI,QAAQxmG,GAAE4yO,QAAQj6O,GAAE4yG,aAAa1xI,GAAEg5Q,aAAa1rN,GAAE2rN,YAAYjqJ,IAAG,YAA4Bx3H,GAAG,YAAO,MAAW,YAAY4hR,GAAU5hR,EAAE,WAAW,CAAC,YAAY,UAAU,aAAa,YAAkCA,GAAG,YAAO,MAAW,aAAa4hR,GAAU5hR,EAAE,iBAAiB,CAAC,aAAa,UAAU,QAAQ,UAAU,cAAc,YAAgCA,EAAEsxF,GAAG,OAAOswL,GAAU5hR,EAAE,eAAe,CAAC,OAAO,QAAQ,SAAS,QAAQ,WAAW,YAAY,aAAa,YAAY,YAAYsxF,GAAG,YAA0BtxF,EAAEsxF,GAAG,YAAO,MAAWA,EAAEswL,GAAU5hR,EAAE,SAAS,CAAC,SAAS,MAAM,SAAS,UAAUsxF,GAAG,YAA8BtxF,GAAG,OAAO4hR,GAAU5hR,EAAE,eAAe,CAAC,OAAO,SAAS,QAAQ,YAAY,QAAQ,YAAqCA,GAAG,IAAIsxF,EAAEtxF,EAAE6hR,kBAAkB,QAAG,MAAW,OAAO,EAAE,GAAGvwL,EAAEstL,GAASttL,IAAI0rL,GAAG1rL,GAAG,MAAM,IAAIwmC,WAAW,oCAAoC,MAAM5mE,EAAE2rN,GAAGvrL,GAAG,GAAGpgC,EAAE,GAAGA,EAAE,IAAI,MAAM,IAAI4mE,WAAY,6DAA4DxmC,KAAK,OAAOpgC,EAAE,YAA2ClxD,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE8C,EAAEogC,EAAEA,EAAE,EAAE,GAAGtxF,EAAEouD,EAAE,MAAM,IAAI0pE,WAAY,sDAAqD1pE,UAAUpuD,KAAK,GAAGsxF,EAAEtxF,GAAG,EAAE,MAAM,IAAI83H,WAAY,8CAA6CxmC,KAAK,YAAkCtxF,GAAG,MAAMsxF,EAAEtxF,EAAE8hR,uBAAuB,QAAG,MAAW,MAAM,OAAO,GAAG,iBAAiBxwL,EAAE,CAAC,GAAG,YAAkBA,GAAG,MAAM,IAAIwmC,WAAY,6DAA4DxmC,KAAK,MAAM,OAAO,MAAMpgC,EAAEyrN,GAAGrrL,GAAG,IAAI0rL,GAAG9rN,IAAIA,EAAE,GAAGA,EAAE,EAAE,MAAM,IAAI4mE,WAAY,6DAA4DxmC,KAAK,OAAOpgC,EAAE,YAAwClxD,EAAEsxF,GAAG,OAAOtxF,OAAO,SAAS,MAAM,CAAC+hR,UAAU,SAASz8Q,KAAK,SAAS08Q,UAAU,OAAO,SAAS,MAAM,CAACD,UAAU,EAAEz8Q,KAAK,SAAS08Q,UAAU,OAAO,cAAc,MAAM,CAACD,UAAU,EAAEz8Q,KAAK,cAAc08Q,UAAU,OAAO,cAAc,MAAM,CAACD,UAAU,EAAEz8Q,KAAK,cAAc08Q,UAAU,OAAO,aAAa,MAAM,CAACD,UAAU,EAAEz8Q,KAAK,aAAa08Q,UAAU,GAAG,OAAO1wL,OAAO,OAAO,MAAM,CAACywL,UAAUzwL,EAAEhsF,KAAK,aAAa08Q,UAAU,QAAQ,EAAE,MAAM,CAACD,UAAUzwL,EAAEhsF,KAAK,SAAS08Q,UAAU,QAAQ,OAAO,OAAO,EAAE,MAAM,CAACD,UAAUzwL,EAAEhsF,KAAK,cAAc08Q,UAAUC,OAAK,EAAE3wL,SAAS,OAAO,OAAO,EAAE,MAAM,CAACywL,UAAUzwL,EAAEhsF,KAAK,cAAc08Q,UAAUC,OAAK,EAAE3wL,SAAS,OAAO,OAAO,EAAE,MAAM,CAACywL,UAAUzwL,EAAEhsF,KAAK,aAAa08Q,UAAUC,OAAK,EAAE3wL,YAAY,MAAM,IAAIwmC,WAAY,6DAA4DxmC,MAAM,MAAM4wL,GAAGjrJ,OAAO,cAAc,YAAyBj3H,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE,IAAI,MAAM6V,EAAE,GAAG,UAAS,CAAE5iB,GAAEsxF,MAAKguL,GAAG,aAAapuN,GAAGA,IAAIogC,IAAG1uE,EAAEvjB,KAAKW,IAAG4iB,EAAEvjB,QAAQ0N,GAAG,IAAItG,EAAE2nD,EAAE3nD,IAAIy7Q,GAAGz7Q,OAAE,OAAO,OAAYmc,EAAEvjB,KAAKoH,GAAG,MAAM4H,GAAE,IAAIuU,GAAG,UAAU5iB,MAAK4iB,EAAE,CAAC,MAAM0uE,GAAEkuL,GAAGx+Q,IAAIhB,SAAG,IAASsxF,IAAGjjF,GAAEhP,KAAKiyF,IAAG,IAAI3iD,GAAEizO,GAAU5hR,EAAEsxF,EAAEjjF,GAAE5H,GAAG,QAAG,QAAY2nD,IAAI8zN,GAAG,MAAM,IAAIpqJ,WAAY,GAAExmC,iBAAiB,OAAOiuL,GAAGv0Q,IAAI2jC,IAAG4wO,GAAGv+Q,IAAI2tC,IAAGA,GAAE,YAAkC3uC,GAAG,MAAMsxF,EAAEtxF,EAAEg3P,WAAW,QAAG,MAAW,OAAO1lK,EAAE,IAAIpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE,SAAS/nN,IAAE,EAAG,GAAGo7P,GAAS9vL,GAAG,CAAC,GAAG6wL,GAAwB7wL,IAAI8wL,GAAe9wL,GAAG,OAAOA,EAAE,GAAG+wL,GAAmB/wL,GAAG,OAAOgxL,GAAuBhxL,GAAGx7B,GAAEysN,GAA2CjxL,GAAG,MAAMtxF,GAAEwiR,GAAe1sN,GAAE,CAAC,MAAM,OAAO,cAAc,cAAc,SAAS,QAAQ,YAAY,aAAa,SAAS,SAAS91D,GAAEX,KAAK,WAAW,UAAU,MAAM2mB,GAAEy8P,GAAsBnxL,EAAEtxF,GAAE,IAAIme,GAAEi/P,GAAG,MAAMj/P,GAAEijB,SAAS,cAAcooB,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,EAAEgzQ,KAAKn9P,EAAEo9P,OAAOv5Q,EAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAYp5O,GAAEq5O,WAAWn4Q,IAAGk6Q,GAAgC5sN,GAAE9vC,GAAE7H,KAAIkd,GAAErV,GAAEvnB,YAAO,SAAasvO,GAAE,QAAQv2G,GAAExxG,GAAE45P,cAAS,SAAapoJ,GAAEmrJ,GAA4BnrJ,SAAQ,CAAC,IAAIx3H,GAAEme,GAAE,KAAKqrC,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,EAAEgzQ,KAAKn9P,EAAEo9P,OAAOv5Q,EAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAYp5O,GAAEq5O,WAAWn4Q,GAAE23Q,SAASrqN,GAAE8qN,SAAS5gR,GAAEvB,OAAO48B,GAAEy3B,EAAE30C,IAAG0iQ,GAAiB3B,GAAS5tL,KAAKtxF,GAAEw3H,GAAEmrJ,GAA4B3iR,IAAGme,GAAE4vN,GAAE,QAAQ1yM,KAAI0yM,GAAE,QAAQ/nN,IAAE,UAAW7H,GAAE,MAAM,IAAI25G,WAAW,yGAAyG,GAAGhiE,KAAIA,GAAE,YAAY8sN,GAAkB9sN,IAAG,MAAM,IAAIgiE,WAAY,+BAA8BhiE,MAAKA,GAAE+sN,GAAe/sN,IAAG,YAAG,OAAkBgtN,GAAmB5xN,EAAE9C,EAAErhD,EAAE+oD,IAAUitN,GAA4BC,GAA2B9xN,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEulO,GAAE,cAAak1C,GAA0B5nP,IAAG,EAAEm8F,GAAE,aAAa,SAASxxG,IAAGwxG,GAAE1hE,IAAG,YAAoC91D,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,UAAU9+B,GAAEstD,KAAI,CAAC,CAAC,QAAQ91D,GAAG,CAAC,SAASsxF,GAAG,CAAC,QAAQpgC,GAAG,CAAC,OAAO9C,GAAG,CAAC,QAAQrhD,GAAG,CAAC,UAAU6V,GAAG,CAAC,UAAUnc,GAAG,CAAC,eAAe4H,IAAG,CAAC,eAAesgC,IAAG,CAAC,cAAcrH,KAAI,GAAG,OAAM,OAAOi4O,GAAGv+Q,IAAIwH,IAAG,MAAM,aAAa,YAAkCxI,EAAEsxF,GAAG,OAAOmuL,GAAGr+Q,QAAQpB,GAAGy/Q,GAAGr+Q,QAAQkwF,GAAGA,EAAEtxF,EAAE,YAA+BA,EAAEsxF,EAAEpgC,GAAGgyN,wBAAwB90N,GAAG,CAAC80N,wBAAwB,kCAAkC,MAAMn2Q,EAAEqwQ,GAAG,MAAM,IAAIx6P,GAAE,EAAG0uE,EAAEzrE,OAAO,UAAUuoC,KAAKkjC,EAAE,CAAC,IAAIA,GAAEtxF,EAAEouD,GAAG,QAAG,OAAWxrC,GAAE,EAAGo8P,GAAGh0Q,IAAIojD,KAAKkjC,GAAE0tL,GAAGh+Q,IAAIotD,EAAP4wN,CAAU1tL,KAAIvkF,EAAEqhD,GAAGkjC,WAAU,cAAc,CAAC,GAAGw/I,GAAGtzO,KAAK0zD,EAAE9C,GAAG,MAAM,IAAI4mE,UAAW,sBAAqB5mE,2BAA2BkjC,GAAE+tL,GAAGr+Q,IAAIotD,GAAGrhD,EAAEqhD,GAAGkjC,IAAG,GAAG,gBAAgB1uE,EAAE,MAAM,IAAIoyG,UAAU5mE,GAAG,OAAOrhD,EAAE,YAA8B/M,EAAEsxF,EAAE,YAAY,MAAMpgC,EAAE,CAAC,OAAO,cAAc,cAAc,SAAS,aAAa,UAAU9C,EAAEq0N,GAAsBziR,EAAEkxD,EAAE,UAAU,CAACgyN,wBAAwB,sBAAsBn2Q,EAAE,GAAG,UAAU/M,KAAKkxD,EAAE,CAAC,MAAMA,EAAEmsN,GAAGjvN,EAAEpuD,QAAG,IAASkxD,EAAEnkD,EAAE/M,GAAGkxD,EAAEpwD,MAAM,iBAAiBiM,EAAE/M,GAAG,GAAG,OAAO+M,EAAE,YAAwB/M,EAAEsxF,GAAG,IAAIpgC,EAAElxD,EAAE,GAAGohR,GAASlwN,GAAG,CAAC,GAAGkxN,GAAelxN,GAAG,OAAOA,EAAE,GAAGixN,GAAwBjxN,KAAKiyN,GAAmB7xL,GAAGpgC,EAAEkyN,GAAoBzB,EAAQzwN,EAAEhE,IAAGy0N,EAAQzwN,EAAEnoC,IAAG44P,EAAQzwN,EAAElrC,MAAKq8P,GAAmBnxN,GAAG,OAAOiyN,GAAmB7xL,GAAGwxL,GAAmBnB,EAAQzwN,EAAEzqD,GAAGk7Q,EAAQzwN,EAAE7iD,GAAGszQ,EAAQzwN,EAAEviB,GAAGgzO,EAAQzwN,EAAElrC,KAAI,MAAMhmB,GAAEuiR,GAA2CrxN,GAAG,OAAOmyN,GAAuBrjR,GAAEyiR,GAAsBvxN,EAAEsxN,GAAexiR,GAAE,CAAC,MAAM,QAAQ,YAAY,SAAS,IAAIsxF,GAAG6xL,GAAmB7xL,GAAG,IAAI9nC,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,EAAEu9P,SAAS74O,EAAEwrB,EAAEtqD,IAA8Cq4Q,GAAqB3B,GAAShuN,IAAI,GAAG1oD,GAAE,MAAM,IAAIsvH,WAAW,4CAA4C,GAAGxwF,IAAIA,EAAE,YAAYs7O,GAAkBt7O,GAAG,MAAM,IAAIwwF,WAAY,+BAA8BxwF,KAAK,OAAOA,EAAEu7O,GAAev7O,GAAGw7O,GAAmB10N,EAAErhD,EAAE6V,EAAE0kB,GAAG,YAAyCtnC,EAAEsxF,EAAEpgC,GAAG,IAAI6uN,KAAK3xN,EAAE4xN,OAAOjzQ,EAAEu8F,OAAO1mF,EAAE69P,YAAYn5O,EAAEo5O,YAAYl4Q,GAAEm4Q,WAAW7qN,IAAGwtN,GAAqBhyL,GAAG,MAAMkmC,GAAE2rJ,GAAmBjyN,GAAG71B,GAAEgoP,GAAuBrjR,EAAEsxF,EAAEpgC,GAAG68K,GAAE4zC,EAAQtmP,GAAE50B,GAAGuf,GAAE27P,EAAQtmP,GAAEhtB,GAAG8P,GAAEwjQ,EAAQtmP,GAAEsT,GAAG,QAAQoxO,KAAK3xN,EAAE4xN,OAAOjzQ,EAAEu8F,OAAO1mF,EAAE69P,YAAYn5O,EAAEo5O,YAAYl4Q,GAAEm4Q,WAAW7qN,IAAGytN,GAAan1N,EAAErhD,EAAE6V,EAAE0kB,EAAE9+B,GAAEstD,GAAE0hE,KAAI,CAAChuE,KAAKukL,GAAExkL,MAAMvjC,GAAEsjC,IAAInrC,GAAE4hQ,KAAK3xN,EAAE4xN,OAAOjzQ,EAAEu8F,OAAO1mF,EAAE69P,YAAYn5O,EAAEo5O,YAAYl4Q,GAAEm4Q,WAAW7qN,IAAG,YAA4B91D,EAAEsxF,GAAG,IAAIpgC,EAAE9C,EAAErhD,EAAE6V,EAAE0kB,EAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE,GAAGqzC,GAASphR,GAAG,CAAC,GAAGqiR,GAAmBriR,GAAG,OAAOA,EAAE,GAAGmiR,GAAwBniR,GAAG,OAAOmjR,GAAmB7xL,GAAG8xL,GAAoBzB,EAAQ3hR,EAAEktD,IAAGy0N,EAAQ3hR,EAAE+oB,IAAG44P,EAAQ3hR,EAAEgmB,KAAI,GAAGo8P,GAAepiR,GAAG,OAAOmjR,GAAmB7xL,GAAGkyL,GAAuB7B,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEgzO,EAAQ3hR,EAAEgmB,KAAI+nN,GAAEw0C,GAA2CviR,GAAG,MAAMme,GAAEskQ,GAAsBziR,EAAEwiR,GAAez0C,GAAE,CAAC,MAAM,OAAO,cAAc,cAAc,SAAS,QAAQ,YAAY,aAAa,SAAS,SAAS,MAAMvkL,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,EAAEgzQ,KAAKn9P,EAAEo9P,OAAO14O,EAAEgiE,OAAO9gG,GAAEi4Q,YAAY3qN,GAAE4qN,YAAYlpJ,GAAEmpJ,WAAWtlP,IAAGqnP,GAAgC30C,GAAE5vN,GAAEmzE,QAAQ,CAAC,IAAI7qF,GAAE,GAAG08Q,GAAmB7xL,KAAK9nC,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,EAAEgzQ,KAAKn9P,EAAEo9P,OAAO14O,EAAEgiE,OAAO9gG,GAAEi4Q,YAAY3qN,GAAE4qN,YAAYlpJ,GAAEmpJ,WAAWtlP,GAAE8kP,SAASpyC,GAAEj7K,EAAErsD,IAAkDo6Q,GAAqB3B,GAASl/Q,KAAKyG,GAAE,MAAM,IAAIqxH,WAAW,gDAAgD,GAAGyoJ,EAAervN,EAAE9C,EAAErhD,EAAE6V,EAAE0kB,EAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,IAAG0yM,KAAIA,GAAE,YAAY60C,GAAkB70C,IAAG,MAAM,IAAIj2G,WAAY,+BAA8Bi2G,MAAKA,GAAE80C,GAAe90C,IAAG,OAAOy1C,GAAuBtyN,EAAE9C,EAAErhD,EAAE6V,EAAE0kB,EAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,IAAG,YAA4B/tO,GAAG,GAAG0hR,GAAmB1hR,GAAG,OAAOA,EAAE,IAAI6pD,MAAMynC,EAAEqpD,OAAOzpF,EAAEowN,MAAMlzN,EAAEysF,KAAK9tI,EAAEmoI,MAAMtyH,EAAEuyH,QAAQ1uI,EAAE86Q,QAAQlzQ,GAAE6rI,aAAavrG,GAAE6yO,aAAal6O,GAAEm6O,YAAYj5Q,IAAGi7Q,GAAyBzjR,GAAG,OAAO,IAAI0jR,EAAa,uBAAjB,CAAyCpyL,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,IAAG,YAA2BxI,GAAG,GAAG2jR,GAAkB3jR,GAAG,OAAOA,EAAE,GAAGmiR,GAAwBniR,GAAI,OAAO,IAAI0jR,EAAa,sBAAjB,CAAwC/B,EAAQ3hR,EAAE+M,IAAI,MAAMukF,EAAr0X,YAA8BtxF,GAAG,IAAIwpD,KAAK8nC,EAAE/nC,MAAM2H,EAAE5H,IAAI8E,EAAE2xN,KAAKhzQ,EAAEizQ,OAAOp9P,EAAE0mF,OAAO7iG,EAAEg6Q,YAAYpyQ,GAAEqyQ,YAAY/xO,GAAEgyO,WAAWr5O,GAAE7oC,OAAO+J,GAAEsqD,EAAEgD,IAAG,SAAoC91D,IAAG,MAAMsxF,GAAEuvL,GAAiB7gR,IAAG,IAAIsxF,GAAEx+B,IAAIw+B,GAAE7yF,OAAO,MAAM,IAAIq5H,WAAW,gDAAgD,OAAOxmC,GAAlK,CAAqKtxF,GAAG,IAAI81D,KAAIttD,GAAE,MAAM,IAAIsvH,WAAW,gDAAgD,MAAMN,GAAE1hE,GAAE,EAAEmtN,GAA0Bz6Q,MAAKghD,KAAK8nC,EAAE/nC,MAAM2H,EAAE5H,IAAI8E,EAAE2xN,KAAKhzQ,EAAEizQ,OAAOp9P,EAAE0mF,OAAO7iG,EAAEg6Q,YAAYpyQ,GAAEqyQ,YAAY/xO,GAAEgyO,WAAWr5O,IAAGs8O,EAAmBtyL,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAEkwF,KAAI,MAAMn8F,GAAEwoP,GAAuBvyL,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,GAAG,UAAS,MAAM,IAAIwwF,WAAW,uCAAuC,OAAOz8F,GAAypWyoP,CAAqB5E,GAASl/Q,IAAI,OAAO,IAAI0jR,EAAa,sBAAjB,CAAwCpyL,GAAG,YAA4BtxF,EAAEsxF,GAAG,IAAIpgC,EAAElxD,EAAE,GAAGohR,GAASlwN,GAAG,CAAC,GAAG6yN,GAAmB7yN,GAAG,OAAOA,EAAE,IAAIlxD,GAAEouD,GAAE,GAAG6xN,GAAQ/uN,EAAElrC,IAAGhmB,GAAE2hR,EAAQzwN,EAAElrC,IAAGooC,IAAE,MAAO,CAAC,IAAIkjC,GAAEpgC,EAAEivN,SAAS/xN,QAAE,YAAW,SAAakjC,GAAE,WAAWtxF,GAAEgkR,GAA4B1yL,IAAG,MAAMvkF,GAAE01Q,GAAsBvxN,EAAEsxN,GAAexiR,GAAE,CAAC,MAAM,QAAQ,YAAY,SAAS,IAAI,OAAOouD,SAAG,OAAW7E,YAAO,OAAW06N,gBAAW,OAAWz6N,OAAOz8C,GAAEy8C,KAAK,MAAM06N,GAA2BlkR,GAAE+M,GAAEukF,GAAG6xL,GAAmB7xL,GAAG,IAAI/nC,MAAM6E,EAAE9E,IAAIv8C,EAAEg0Q,iBAAiBn+P,EAAEu9P,SAAS15Q,GAAG09Q,GAA4BjF,GAAShuN,IAAI,QAAG,QAAazqD,EAAE,YAAYm8Q,GAAkBn8Q,GAAG,MAAM,IAAIqxH,WAAY,+BAA8BrxH,KAAK,OAAGA,EAAEo8Q,GAAep8Q,QAAG,OAAkBu6Q,GAAc,KAAK5yN,EAAErhD,GAAGq3Q,GAAuBh2N,EAAErhD,EAAEtG,IAAUy9Q,GAA2Bz9Q,EAAE29Q,GAAuBh2N,EAAErhD,EAAEtG,EAAEmc,IAAI,YAAwB5iB,EAAEsxF,EAAE,aAAa,IAAIpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAE3uC,EAAE,GAAGohR,GAASzyO,IAAG,CAAC,GAAGuxO,GAAevxO,IAAG,OAAOA,GAAE,GAAGwzO,GAAwBxzO,MAAKA,GAAEy0O,GAAoBzB,EAAQhzO,GAAEue,IAAGy0N,EAAQhzO,GAAE5lB,IAAG44P,EAAQhzO,GAAE3oB,MAAKq8P,GAAmB1zO,IAAI,OAAO,IAAI+0O,EAAa,wBAAjB,CAA0C/B,EAAQhzO,GAAErH,GAAGq6O,EAAQhzO,GAAEnmC,GAAGm5Q,EAAQhzO,GAAEmnB,IAAG6rN,EAAQhzO,GAAE6oF,IAAGmqJ,EAAQhzO,GAAEtT,IAAGsmP,EAAQhzO,GAAEo/L,MAAMgyC,KAAK7uN,EAAE8uN,OAAO5xN,EAAEk7C,OAAOv8F,EAAE0zQ,YAAY79P,EAAE89P,YAAYj6Q,EAAEk6Q,WAAWtyQ,IAAGi1Q,GAAqB30O,OAAMoxO,KAAK7uN,EAAE8uN,OAAO5xN,EAAEk7C,OAAOv8F,EAAE0zQ,YAAY79P,EAAE89P,YAAYj6Q,EAAEk6Q,WAAWtyQ,IAAGk1Q,GAAaryN,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEijF,UAAUyuL,KAAK7uN,EAAE8uN,OAAO5xN,EAAEk7C,OAAOv8F,EAAE0zQ,YAAY79P,EAAE89P,YAAYj6Q,EAAEk6Q,WAAWtyQ,IAAG,SAAiCrO,IAAG,MAAMsxF,GAAEx+B,GAAErrD,KAAKzH,IAAG,IAAIkxD,GAAE9C,GAAErhD,GAAE6V,GAAEnc,GAAE4H,GAAEsgC,GAAE,GAAG2iD,GAAE,CAACpgC,GAAEkuN,GAAoB9tL,GAAE,IAAIljC,GAAEgxN,GAAoB9tL,GAAE,IAAIA,GAAE,IAAIvkF,GAAEqyQ,GAAoB9tL,GAAE,IAAIA,GAAE,IAAI,UAASvkF,GAAE,IAAI,MAAM/M,IAAGsxF,GAAE,IAAIA,GAAE,IAAI,YAAY1uE,GAAEw8P,GAAoBp/Q,GAAE+X,MAAM,EAAE,IAAItR,GAAE24Q,GAAoBp/Q,GAAE+X,MAAM,EAAE,IAAI1J,GAAE+wQ,GAAoBp/Q,GAAE+X,MAAM,EAAE,IAAI42B,GAAE2iD,GAAE,IAAI,UAAS,CAAEtxF,GAAEsxF,GAAEpgC,MAAKviB,GAAE2xO,SAAS15C,IAAG,GAAG,aAAY,SAAQ,MAAM,IAAI9uG,WAAY,6BAA4BxmC,MAAKpgC,MAAK,GAAGogC,GAAE,GAAG,MAAM,IAAIwmC,WAAW,gDAAgD,CAAC,IAAIxmC,GAAE3iD,GAAE,KAAK6xO,QAAQ7xO,GAAEoxO,KAAK7uN,GAAE8uN,OAAO5xN,GAAEk7C,OAAOv8F,GAAE0zQ,YAAY79P,GAAE89P,YAAYj6Q,GAAEk6Q,WAAWtyQ,GAAEykD,EAAEw+B,IAAGuvL,GAAiB7gR,MAAK2uC,GAAE,MAAM,IAAImpF,WAAY,8BAA6B93H,MAAK,GAAGsxF,GAAE,MAAM,IAAIwmC,WAAW,4CAA4C,GAAG,kBAAkBtlC,KAAKxyF,IAAG,MAAM,CAAC+/Q,KAAK7uN,GAAE8uN,OAAO5xN,GAAEk7C,OAAOv8F,GAAE0zQ,YAAY79P,GAAE89P,YAAYj6Q,GAAEk6Q,WAAWtyQ,IAAG,IAAI,MAAMk7C,MAAM+nC,GAAEhoC,IAAI4H,IAAGizN,GAA4BnkR,IAAGghR,GAAc,KAAK1vL,GAAEpgC,GAAqK7iD,CAArK6iD,MAAQmzN,IAAC,IAAI,MAAM76N,KAAK8nC,GAAE/nC,MAAM2H,IAAGozN,GAA6BtkR,IAAGghR,GAAc1vL,GAAEpgC,GAAE,EAAgF7iD,CAAhF,MAAQk2Q,IAAC,MAAM,CAACxE,KAAK7uN,GAAE8uN,OAAO5xN,GAAEk7C,OAAOv8F,GAAE0zQ,YAAY79P,GAAE89P,YAAYj6Q,GAAEk6Q,WAAWtyQ,KAAI,MAAM,IAAIypH,WAAY,qCAAoC93H,2BAAhqC,CAA2rCk/Q,GAASvwO,MAAKuyO,EAAWhwN,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,IAAG,OAAO,IAAIq1Q,EAAa,wBAAjB,CAA0CxyN,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,IAAG,YAA6BrO,EAAEsxF,GAAG,GAAG8vL,GAASphR,GAAG,CAAC,GAAGwkR,GAAoBxkR,GAAG,OAAOA,EAAE,MAAMkxD,EAAEqxN,GAA2CviR,GAAG,OAAOykR,GAA4BvzN,EAAEuxN,GAAsBziR,EAAEwiR,GAAetxN,EAAE,CAAC,QAAQ,YAAY,SAAS,IAAIogC,GAAG6xL,GAAmB7xL,GAAG,IAAI9nC,KAAK0H,EAAE3H,MAAM6E,EAAE0yN,gBAAgB/zQ,EAAEozQ,SAASv9P,GAAG0hQ,GAA6BpF,GAASl/Q,IAAI,QAAG,QAAa4iB,EAAE,YAAYggQ,GAAkBhgQ,GAAG,MAAM,IAAIk1G,WAAY,+BAA8Bl1G,KAAK,OAAGA,EAAEigQ,GAAejgQ,QAAG,OAAkBo+P,GAAc9vN,EAAE9C,EAAE,GAAGs2N,GAAwBxzN,EAAE9C,EAAExrC,IAAU6hQ,GAA4B7hQ,EAAE8hQ,GAAwBxzN,EAAE9C,EAAExrC,EAAE7V,IAAI,YAAoCukF,EAAEpgC,EAAE9C,EAAE3nD,EAAE4H,EAAEsgC,EAAErH,EAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,IAAG,MAAMmsH,GAAE,IAAI2nJ,EAAa,4BAAjB,CAA8CpyL,EAAEpgC,EAAE9C,EAAE3nD,EAAE4H,EAAEsgC,EAAErH,EAAE9+B,GAAEstD,IAAG,GAAG,aAAY,cAAc,OAAO6rN,EAAQgD,GAAc52C,GAAEhyG,GAAE/1G,IAAGjZ,GAAG,GAAG,cAAa,WAAU,CAAC,MAAMA,GAAE82Q,GAAuBvyL,EAAEpgC,EAAE9C,EAAE3nD,EAAE4H,EAAEsgC,EAAErH,EAAE9+B,GAAEstD,IAAG,GAAG,UAAS,MAAM,IAAIgiE,WAAW,4CAA4C,OAAO93H,WAAW+M,GAAE/M,SAASq7B,KAAI,MAAMtS,GAAE67P,GAAuB72C,GAAEhyG,IAAG,UAAUzqC,MAAKvoE,GAAE,CAAC,MAAMmoC,GAAE2zN,GAAwB92C,GAAEz8I,IAAGljC,GAAEpuD,WAAW8kR,GAAuB9kR,SAASkxD,IAAG+sN,GAAG,eAAe,GAAG/sN,KAAI71B,IAAGzrB,IAAGw+C,KAAI/yB,GAAE,OAAOsmP,EAAQrwL,GAAEvkF,GAAG,GAAG,cAAa,CAAC,MAAM/M,GAAE+kR,GAA2B1pP,IAAGi2D,GAAE0zL,GAAmBj3C,IAAG4zC,EAAQ5zC,GAAEnrN,GAAG,YAAY,MAAM,IAAIk1G,WAAY,UAAS93H,qBAAoB+7H,GAAEx+H,iBAAiB+zF,MAAK,OAAOqwL,EAAQsD,GAA6Bl8P,GAAEglN,GAAEhyG,GAAE/1G,IAAGjZ,GAAG,YAAiC/M,EAAEsxF,GAAG,IAAIpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,IAAE,EAAGvO,GAAE,SAAS,GAAGwxQ,GAASphR,GAAG,CAAC,GAAGmiR,GAAwBniR,GAAG,OAAOA,EAAEq7B,GAAEknP,GAA2CviR,GAAG,MAAMme,GAAEqkQ,GAAennP,GAAE,CAAC,MAAM,OAAO,cAAc,cAAc,SAAS,QAAQ,YAAY,aAAa,SAAS,SAASld,GAAE9e,KAAK,WAAW,UAAU,MAAM08H,GAAE0mJ,GAAsBziR,EAAEme,GAAE,CAAC,aAAa23C,GAAE6sN,GAA4B5mJ,GAAE6jJ,UAAUpoJ,GAAEuE,GAAEt9H,YAAO,SAAamR,GAAE,QAAQm+N,GAAEm3C,GAAyB5zL,GAAGtrE,GAAEm/P,GAAiB7zL,EAAE,YAAY9nC,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,EAAEgzQ,KAAKn9P,EAAEo9P,OAAOv5Q,EAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAYp5O,GAAEq5O,WAAWn4Q,IAAGk6Q,GAAgCrnP,GAAE0gG,GAAEzqC,QAAQ,CAAC,IAAIyqC,GAAEhzG,GAAE,KAAKygC,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,EAAEgzQ,KAAKn9P,EAAEo9P,OAAOv5Q,EAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAYp5O,GAAEq5O,WAAWn4Q,GAAEo4Q,SAAS7kJ,GAAEt9H,OAAO+4H,GAAE1kE,EAAE/pC,GAAEo3P,SAAS9kP,IAAG,SAA0Cr7B,IAAG,MAAMsxF,GAAEuvL,GAAiB7gR,IAAG,IAAIsxF,GAAEsvL,SAAS,MAAM,IAAI9oJ,WAAW,8DAA8D,OAAOxmC,GAAlL,CAAqL4tL,GAASl/Q,KAAK81D,GAAE6sN,GAA4B5mJ,IAAGhzG,GAAEnZ,GAAE,QAAQ4nH,KAAI5nH,GAAE,QAAQyrB,KAAIA,GAAE,YAAYunP,GAAkBvnP,IAAG,MAAM,IAAIy8F,WAAY,+BAA8Bz8F,MAAKA,GAAEwnP,GAAexnP,IAAGld,IAAE,EAAG4vN,GAAEm3C,GAAyB5zL,GAAGtrE,GAAEm/P,GAAiB7zL,EAAE,UAAU6xL,GAAmB7xL,GAAG,IAAIyqC,GAAE,EAAE,iBAAWnsH,KAAImsH,GAAEknJ,GAA0BzrJ,KAAWurJ,GAA4BC,GAA2B9xN,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEoH,GAAEmsH,GAAEjmE,GAAEi4K,GAAE/nN,GAAE7H,IAAG23C,GAAEz6B,IAAG,YAAiCr7B,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAGi0Q,GAAc1vL,EAAEpgC,EAAE9C,GAAGg3N,EAAgB9zL,EAAEpgC,EAAE9C,GAAGy4K,GAAE7mO,GAAGqlR,GAAQrlR,EAAEyG,EAAE6qF,GAAG+zL,GAAQrlR,EAAEqO,EAAE6iD,GAAGm0N,GAAQrlR,EAAE2uC,EAAEyf,GAAGi3N,GAAQrlR,EAAEgmB,GAAEjZ,GAAGs4Q,GAAQrlR,EAAEme,IAAE,GAAI,YAA4Bne,EAAEsxF,EAAEpgC,EAAE9C,EAAE,WAAW,MAAMrhD,EAAE22Q,EAAa,wBAAwB9gQ,EAAEw6P,GAAGrwQ,EAAEqpF,WAAW,OAAOkvL,GAAwB1iQ,EAAE5iB,EAAEsxF,EAAEpgC,EAAE9C,GAAGxrC,EAAE,YAAqC5iB,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEzE,EAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,IAAGqzN,EAAejvL,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEzE,EAAEvO,GAAEmsH,GAAEhzG,IAAGw8P,EAAoBj0L,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEzE,EAAEvO,GAAEmsH,GAAEhzG,IAAG89M,GAAE7mO,GAAGqlR,GAAQrlR,EAAEyG,EAAE6qF,GAAG+zL,GAAQrlR,EAAEqO,EAAE6iD,GAAGm0N,GAAQrlR,EAAE2uC,EAAEyf,GAAGi3N,GAAQrlR,EAAEsnC,EAAEv6B,GAAGs4Q,GAAQrlR,EAAEwI,EAAEoa,GAAGyiQ,GAAQrlR,EAAE81D,GAAE33C,GAAGknQ,GAAQrlR,EAAEw3H,GAAE5nH,IAAGy1Q,GAAQrlR,EAAEq7B,GAAE0gG,IAAGspJ,GAAQrlR,EAAE+tO,EAAEhlN,IAAGs8P,GAAQrlR,EAAEgmB,GAAEknC,IAAG,YAAgCltD,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE,WAAW,MAAM9+B,GAAEk7Q,EAAa,4BAA4B5tN,GAAEsnN,GAAG50Q,GAAE4tF,WAAW,OAAOovL,GAA4B1vN,GAAE91D,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAGwuB,GAAE,YAAqC91D,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAGi0Q,GAAcj0Q,EAAEukF,EAAEpgC,GAAGk0N,EAAgBr4Q,EAAEukF,EAAEpgC,GAAG21K,GAAE7mO,GAAGqlR,GAAQrlR,EAAEqO,EAAEijF,GAAG+zL,GAAQrlR,EAAE2uC,EAAEuiB,GAAGm0N,GAAQrlR,EAAEyG,EAAEsG,GAAGs4Q,GAAQrlR,EAAEgmB,GAAEooC,GAAGi3N,GAAQrlR,EAAE+7H,GAAE,GAAI,YAAgC/7H,EAAEsxF,EAAEpgC,EAAE,UAAU9C,EAAE,MAAM,MAAMrhD,EAAE22Q,EAAa,4BAA4B9gQ,EAAEw6P,GAAGrwQ,EAAEqpF,WAAW,OAAOqvL,GAA4B7iQ,EAAE5iB,EAAEsxF,EAAEpgC,EAAE9C,GAAGxrC,EAAE,YAAsC5iB,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAwB,IAA8B/M,EAAEsxF,GAArD0vL,GAAc1vL,EAAEpgC,EAAEnkD,GAAmCukF,GAAuFpgC,EAApFw0N,GAAL1lR,EAAuFsxF,EAAlE+sL,GAAGC,IAAIt+Q,IAAIq+Q,GAAGqH,GAAcp0L,GAAE,EAAE,IAAItxF,IAAIs+Q,IAAIoH,GAAcp0L,GAAE,EAAE,GAASu1I,GAAE7mO,GAAGqlR,GAAQrlR,EAAEyG,EAAE6qF,GAAG+zL,GAAQrlR,EAAEqO,EAAE6iD,GAAGm0N,GAAQrlR,EAAE2uC,EAAE5hC,GAAGs4Q,GAAQrlR,EAAEgmB,GAAEooC,GAAGi3N,GAAQrlR,EAAE4P,GAAE,GAAI,YAAiC5P,EAAEsxF,EAAEpgC,EAAE,UAAU9C,EAAE,GAAG,MAAMrhD,EAAE22Q,EAAa,6BAA6B9gQ,EAAEw6P,GAAGrwQ,EAAEqpF,WAAW,OAAOuvL,GAA6B/iQ,EAAE5iB,EAAEsxF,EAAEpgC,EAAE9C,GAAGxrC,EAAE,YAA0C5iB,EAAEsxF,EAAEpgC,EAAE9C,GAAGw3N,GAAyBt0L,GAAGu1I,GAAE7mO,GAAGqlR,GAAQrlR,EAAE+M,EAAEukF,GAAG+zL,GAAQrlR,EAAEktD,GAAEgE,GAAGm0N,GAAQrlR,EAAEgmB,GAAEooC,GAAG,MAAMxrC,EAAE,IAAI8gQ,EAAa,sBAAjB,CAAwC/B,EAAQ3hR,EAAE+M,IAAIs4Q,GAAQrlR,EAAE+oB,GAAEnG,GAAG,YAAqC5iB,EAAEsxF,EAAEpgC,EAAE,WAAW,MAAM9C,EAAEs1N,EAAa,4BAA4B32Q,EAAEqwQ,GAAGhvN,EAAEgoC,WAAW,OAAOyvL,GAAiC94Q,EAAE/M,EAAEsxF,EAAEpgC,GAAGnkD,EAAE,YAAwB/M,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,wCAAwCxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,UAAUA,EAAE,CAACsxF,IAAIljC,EAAE,GAAG,UAAUpuD,KAAKkxD,EAAE,CAAC,GAAG,iBAAiBlxD,EAAE,MAAM,IAAIg1H,UAAU,qCAAqCsnJ,GAAG9+Q,KAAK4wD,EAAEpuD,GAAG,OAAOouD,EAAE,YAA6BpuD,EAAEsxF,EAAEpgC,GAAG,GAAG,iBAAiBlxD,EAAE,CAAC,MAAMouD,EAAE,IAAIs1N,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,6CAA6Ct1N,EAAE,CAACkjC,EAAEpgC,IAAI,MAAM9C,EAAE03N,GAAKC,GAAU/lR,EAAE,eAAeA,EAAE,CAACsxF,EAAEpgC,IAAI,IAAIkwN,GAAShzN,GAAG,MAAM,IAAI4mE,UAAU,0CAA0C,OAAO5mE,EAAE,YAAyBpuD,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAG,IAAI6V,EAAE7V,EAAE,GAAG,iBAAiB/M,EAAE,CAAC,MAAM+M,GAAE,IAAI22Q,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,yCAAyC32Q,GAAE,CAACukF,EAAEpgC,EAAE9C,SAAI,IAASxrC,IAAIA,EAAEmjQ,GAAU/lR,EAAE,YAAY,MAAMyG,EAAE62Q,GAAG16P,EAAE5iB,EAAE,CAACsxF,EAAEpgC,EAAE9C,IAAI,IAAIg0N,GAAe37Q,GAAG,MAAM,IAAIuuH,UAAU,kBAAkB,OAAOvuH,EAAE,YAA2BzG,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAG,IAAI6V,EAAE7V,EAAE,GAAG,iBAAiB/M,EAAE,CAAC,MAAM+M,GAAE,IAAI22Q,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,2CAA2C32Q,GAAE,CAACukF,EAAEpgC,EAAE9C,SAAI,IAASxrC,IAAIA,EAAEmjQ,GAAU/lR,EAAE,cAAc,MAAMyG,EAAE62Q,GAAG16P,EAAE5iB,EAAE,CAACsxF,EAAEpgC,EAAE9C,IAAI,IAAIszN,GAAmBj7Q,GAAG,MAAM,IAAIuuH,UAAU,kBAAkB,OAAOvuH,EAAE,YAAsBzG,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,sCAAsCxyN,EAAE,CAACogC,IAAI,IAAIpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,QAAQA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,2CAA2C,IAAI8pJ,GAAiB5tN,GAAG,MAAM,IAAI4mE,WAAW,2CAA2C,OAAO5mE,EAAE,YAAuBlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,uCAAuCxyN,EAAE,CAACogC,IAAI,IAAIpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,SAASA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,oDAAoD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,oDAAoD,OAAO5mE,EAAE,YAA2BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,2CAA2CxyN,EAAE,CAACogC,IAAI,IAAIpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,aAAaA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,8CAA8C,OAAO9jE,EAAE,YAAqBlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,qCAAqCxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,OAAOA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,kDAAkD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,kDAAkD,OAAO5mE,EAAE,YAAqBlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,qCAAqCxyN,EAAE,CAACogC,IAAI,IAAIpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,OAAOA,EAAE,CAACsxF,IAAI,QAAG,MAAW,OAAOpgC,EAAE,GAAG,iBAAiBA,EAAE,MAAM,IAAI8jE,UAAU,qDAAqD,OAAO9jE,EAAE,YAAyBlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,yCAAyCxyN,EAAE,CAACogC,IAAI,IAAIpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,WAAWA,EAAE,CAACsxF,IAAI,QAAG,MAAW,OAAOpgC,EAAE,GAAG,iBAAiBA,EAAE,MAAM,IAAI8jE,UAAU,2DAA2D,IAAI8pJ,GAAiB5tN,GAAG,MAAM,IAAI4mE,WAAW,2DAA2D,OAAO5mE,EAAE,YAA2BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,2CAA2CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,aAAaA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,wDAAwD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,wDAAwD,OAAO5mE,EAAE,YAA2BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,2CAA2CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,aAAaA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,wDAAwD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,wDAAwD,OAAO5mE,EAAE,YAA4BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,4CAA4CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,cAAcA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,yDAAyD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,yDAAyD,OAAO5mE,EAAE,YAA4BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,4CAA4CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,cAAcA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,iDAAiD,IAAI8pJ,GAAiB5tN,GAAG,MAAM,IAAI4mE,WAAW,iDAAiD,OAAO5mE,EAAE,YAA4BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,4CAA4CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,cAAcA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,yDAAyD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,yDAAyD,OAAO5mE,EAAE,YAA6BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,6CAA6CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,eAAeA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,0DAA0D,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,0DAA0D,OAAO5mE,EAAE,YAA4BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,4CAA4CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,cAAcA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,yDAAyD,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,yDAAyD,OAAO5mE,EAAE,YAA8BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,8CAA8CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,gBAAgBA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,2DAA2D,IAAI8pJ,GAAiB5tN,IAAIA,EAAE,EAAE,MAAM,IAAI4mE,WAAW,2DAA2D,OAAO5mE,EAAE,YAA4BlxD,EAAEsxF,GAAG,GAAG,iBAAiBtxF,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,4CAA4CxyN,EAAE,CAACogC,IAAI,MAAMpgC,EAAE40N,GAAKC,GAAU/lR,EAAE,cAAcA,EAAE,CAACsxF,IAAI,GAAG,kBAAkBpgC,EAAE,MAAM,IAAI8jE,UAAU,gDAAgD,OAAO9jE,EAAE,YAAqClxD,GAAG,GAAGohR,GAASphR,GAAG,CAAC,GAAGigR,GAAQjgR,EAAEgmB,IAAG,OAAO27P,EAAQ3hR,EAAEgmB,IAAG,KAAiEggQ,GAAXhmR,EAAgZA,IAA9W,YAAYA,GAAG,mBAAmBA,GAAG,cAAcA,GAAG,QAAQA,GAAG,cAAcA,GAAG,cAAcA,GAAG,gBAAgBA,GAAG,eAAeA,GAAG,eAAeA,GAAG,WAAWA,GAAG,OAAOA,GAAG,eAAeA,GAAG,gBAAgBA,GAAG,UAAUA,GAAG,cAAcA,GAAG,uBAAuBA,GAAG,iBAAiBA,GAAG,eAAeA,GAAG,SAASA,GAAG,wBAAwBA,GAAG,eAAeA,GAAM,MAAM,IAAIg1H,UAAU,sFAAsF,OAAOh1H,EAAtjB,IAAkDA,EAAsgB,MAAMsxF,EAAE4tL,GAASl/Q,GAAG,GAAG4iR,GAAkBtxL,GAAG,OAAOuxL,GAAevxL,GAAG,IAAIpgC,EAAE,MAAMivN,SAASjvN,GAAG2vN,GAAiBvvL,GAA6GA,CAA7GA,MAAS0gJ,GAAC,MAAMmuC,SAASjvN,GAAGozN,GAA6BhzL,GAAoDA,CAApDA,MAASs1I,KAAGu5C,SAASjvN,GAAGizN,GAA4B7yL,KAAK,GAAGpgC,IAAIA,EAAE,YAAY0xN,GAAkB1xN,GAAG,MAAM,IAAI4mE,WAAY,+BAA8B5mE,KAAK,OAAO2xN,GAAe3xN,GAAG,YAAoDlxD,GAAG,GAAGigR,GAAQjgR,EAAEgmB,IAAG,OAAO27P,EAAQ3hR,EAAEgmB,IAAG,MAAMm6P,SAAS7uL,GAAGtxF,EAAE,YAAO,MAAW,UAAUgkR,GAA4B1yL,GAAG,YAAsCtxF,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,MAAMsxF,EAAEtxF,EAAE4e,GAAG,GAAG,iBAAiB0yE,EAAE,MAAM,IAAI0jC,UAAU,kCAAkC,OAAO1jC,EAAE,YAAkCtxF,GAAG,OAAGohR,GAASphR,GAAUA,EAAS,IAAI0jR,EAAa,uBAAjB,CAAyC1jR,GAAG,YAAwBA,EAAEsxF,GAAG,OAAGtxF,IAAIsxF,GAAkB+uL,GAA6BrgR,KAAKqgR,GAA6B/uL,GAAG,YAAkCtxF,EAAEsxF,EAAEpgC,GAAG,GAAGlxD,IAAIsxF,EAAE,OAAO,MAAMljC,EAAEiyN,GAA6BrgR,GAAG+M,EAAEszQ,GAA6B/uL,GAAG,GAAGljC,IAAIrhD,EAAE,MAAM,IAAI+qH,WAAY,UAAS5mE,QAAQ9C,SAASrhD,eAAe,YAA8B/M,EAAEsxF,GAAG,GAAGtxF,IAAIsxF,EAAE,OAAOA,EAAE,MAAMpgC,EAAEmvN,GAA6BrgR,GAAGouD,EAAEiyN,GAA6B/uL,GAAG,GAAGpgC,IAAI9C,GAAG,cAAc,OAAOkjC,EAAE,GAAG,cAAc,OAAOtxF,EAAE,MAAM,IAAI83H,WAAW,4BAA4B,YAAgC93H,EAAEsxF,EAAEpgC,EAAE9C,GAAG,GAAG,iBAAiBpuD,EAAE,CAAC,MAAMouD,EAAE,IAAIs1N,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,gDAAgDt1N,EAAE,CAACkjC,EAAEpgC,IAAI,MAAMnkD,EAAE+4Q,GAAK13N,UAAG23N,GAAU/lR,EAAE,kBAAkBA,EAAE,CAACsxF,EAAEpgC,IAAI,IAAIkxN,GAAer1Q,GAAG,MAAM,IAAIioH,UAAU,kBAAkB,OAAOjoH,EAAE,YAAqC/M,EAAEsxF,EAAEpgC,GAAG,GAAG,iBAAiBlxD,EAAE,CAAC,MAAMouD,EAAE,IAAIs1N,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,qDAAqDt1N,EAAE,CAACkjC,EAAEpgC,IAAI,IAAI9C,EAAE03N,GAAKC,GAAU/lR,EAAE,uBAAuBA,EAAE,CAACsxF,EAAEpgC,IAAI,IAAIszN,GAAoBp2N,GAAG,MAAM,IAAI4mE,UAAU,kBAAkB,OAAO5mE,EAAE,YAAoCpuD,EAAEsxF,EAAEpgC,GAAG,GAAG,iBAAiBlxD,EAAE,CAAC,MAAMouD,EAAE,IAAIs1N,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,oDAAoDt1N,EAAE,CAACkjC,EAAEpgC,IAAI,IAAI9C,EAAE03N,GAAKC,GAAU/lR,EAAE,sBAAsBA,EAAE,CAACsxF,EAAEpgC,IAAI,IAAI6yN,GAAmB31N,GAAG,MAAM,IAAI4mE,UAAU,kBAAkB,OAAO5mE,EAAE,YAAqCpuD,GAAG,GAAGohR,GAASphR,GAAG,CAAC,GAAGmiR,GAAwBniR,GAAG,OAAO2hR,EAAQ3hR,EAAEktD,IAAG,KAAiE83N,GAAXhlR,EAAyGA,IAAvE,4BAA4BA,GAAG,2BAA2BA,GAAG,OAAOA,GAAM,MAAM,IAAIg1H,UAAU,sFAAsF,OAAOh1H,EAA/Q,IAAkDA,EAA+N,OAA1niC,YAA+BA,GAAG,MAAM4gR,SAAStvL,EAAE7yF,OAAOyyD,EAAE4B,EAAE1E,GAAG,SAAqCpuD,GAAG,GAAG,IAAIuH,OAAQ,IAAGquD,GAAEllB,UAAU,KAAK8hD,KAAKxyF,GAAG,MAAM,CAAC4gR,SAAS5gR,GAAG,IAAI,MAAMsxF,EAAEuvL,GAAiB7gR,GAAG,GAAGsxF,EAAEx+B,GAAGw+B,EAAE7yF,QAAQ6yF,EAAEsvL,SAAS,OAAOtvL,CAAE,CAAFA,MAAOm+I,GAAL,CAAO,MAAM,IAAI33G,WAAY,sBAAqB93H,KAA9N,CAAoOA,GAAG,OAAGsxF,EAAS20L,GAA+B30L,GAAMljC,EAAQ,MAAa22N,GAA2B9B,GAA0B/xN,IAA8thCg1N,CAAsBhH,GAASl/Q,IAAI,YAAsCA,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,MAAMsxF,EAAEtxF,EAAE4e,GAAG,GAAG,iBAAiB0yE,EAAE,MAAM,IAAI0jC,UAAU,kCAAkC,OAAO1jC,EAAE,YAAkCtxF,GAAG,OAAGohR,GAASphR,GAAUA,EAAS,IAAI0jR,EAAa,uBAAjB,CAAyC1jR,GAAG,YAAwBA,EAAEsxF,GAAG,OAAGtxF,IAAIsxF,GAAkB60L,GAA6BnmR,KAAKmmR,GAA6B70L,GAAG,YAAgCtxF,GAAG,OAAO8iR,GAAmBnB,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAGgzO,EAAQ3hR,EAAEgmB,KAAI,YAAgChmB,GAAG,OAAO,IAAI0jR,EAAa,wBAAjB,CAA0C/B,EAAQ3hR,EAAEsnC,GAAGq6O,EAAQ3hR,EAAEwI,GAAGm5Q,EAAQ3hR,EAAE81D,IAAG6rN,EAAQ3hR,EAAEw3H,IAAGmqJ,EAAQ3hR,EAAEq7B,IAAGsmP,EAAQ3hR,EAAE+tO,IAAI,YAAiC/tO,EAAEsxF,EAAEpgC,GAAG,GAAG,iBAAiBlxD,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,yDAAyDxyN,EAAE,CAACogC,IAAI,MAAMljC,EAAE03N,GAAK50N,UAAG60N,GAAU/lR,EAAE,2BAA2BA,EAAE,CAACsxF,IAAI,GAAG,iBAAiBljC,EAAE,MAAM,IAAI4mE,UAAU,2CAA2C,IAAI8pJ,GAAiB1wN,IAAIsuN,GAAGtuN,IAAI,OAAO,MAAM,IAAI0pE,WAAW,oDAAoD,OAAO1pE,EAAE,YAA4BpuD,EAAEsxF,GAAG,OAAOyzL,GAA2BF,GAAwB7kR,EAAEsxF,IAAI,YAA6BtxF,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEuzN,EAAQrwL,EAAEvkF,GAAG6V,EAAEiiQ,GAAwB7kR,EAAEsxF,GAAG,IAAI9nC,KAAK/iD,EAAE8iD,MAAMl7C,EAAEi7C,IAAI3a,GAAEoxO,KAAKz4O,GAAE04O,OAAOx3Q,GAAE8gG,OAAOxzC,GAAE2qN,YAAYjpJ,GAAEkpJ,YAAYrlP,GAAEslP,WAAW5yC,IAAGq4C,GAAqBh4N,GAAG,QAAQ5E,KAAK/iD,EAAE8iD,MAAMl7C,EAAEi7C,IAAI3a,GAAEoxO,KAAKz4O,GAAE04O,OAAOx3Q,GAAE8gG,OAAOxzC,GAAE2qN,YAAYjpJ,GAAEkpJ,YAAYrlP,GAAEslP,WAAW5yC,IAAG61C,EAAmBn9Q,EAAE4H,EAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAEnrN,IAAI4gQ,GAAuB/8Q,EAAE4H,EAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE78K,GAAG,YAAuBlxD,EAAEsxF,EAAEpgC,GAAG,OAAO+zN,GAA6BL,GAAuB5kR,EAAEsxF,GAAGtxF,EAAEsxF,EAAEpgC,GAAG,YAAsCogC,EAAEpgC,EAAE9C,EAAErhD,GAAG,MAAM6V,EAAE8gQ,EAAa,sBAAsBvlQ,EAAEmzE,EAAE5zF,OAAO,GAAG,MAAM,OAAO4zF,EAAE,GAAG,GAAGnzE,EAAE,OAAOpR,OAAO,iBAAiB,UAAU,OAAOukF,EAAE,OAAO,QAAQ,OAAOA,EAAEnzE,EAAE,OAAO,SAAS,MAAM,IAAI25G,WAAW,2BAA2B,MAAMloH,EAAE+xQ,EAAQvzN,EAAE3nD,GAAGs1H,GAAE4lJ,EAAQvzN,EAAE//C,GAAG0a,GAAE44P,EAAQvzN,EAAEzf,GAAGue,GAAEy0N,EAAQvzN,EAAE9mB,GAAG81F,GAAEukJ,EAAQvzN,EAAE5lD,GAAGukD,GAAE40N,EAAQvzN,EAAE0H,IAAG9I,GAAE20N,EAAQvzN,EAAEopE,IAAGxoH,GAAE2yQ,EAAQvzN,EAAE/yB,IAAGygG,GAAE6lJ,EAAQvzN,EAAE2/K,GAAGjH,GAAE+8C,GAAuBj0Q,EAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,IAAG,GAAG,UAAS,MAAM,IAAIhE,WAAW,uCAAuC,MAAMj1G,GAAE,IAAID,EAAE5iB,WAAW8mO,GAAEo3C,KAAKv3C,GAAE,IAAI/jN,EAAE5iB,MAAM8mO,GAAEo3C,KAAKh1O,GAAE27O,GAAwB3zN,EAAEruC,IAAGqtN,GAAE20C,GAAwB3zN,EAAEy1K,IAAGz9L,GAAE,OAAOn8B,OAAO,UAAU,CAAC,MAAM/M,GAAE2hR,EAAQvzN,EAAEpoC,IAAGsrE,GAAEoyL,EAAa,4BAA4B32Q,GAAEs5Q,GAAYz2Q,EAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAE97H,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGkwO,QAAE,GAAQ,OAAO00C,GAAuB1zN,EAAE,IAAIogC,GAAEvkF,GAAEy8C,KAAKz8C,GAAEw8C,MAAMx8C,GAAEu8C,IAAIv8C,GAAEgzQ,KAAKhzQ,GAAEizQ,OAAOjzQ,GAAEu8F,OAAOv8F,GAAE0zQ,YAAY1zQ,GAAE2zQ,YAAY3zQ,GAAE4zQ,WAAW3gR,KAAI,OAAO,iBAAiB,QAAQ,CAAC,MAAMA,GAAE2hR,EAAQvzN,EAAEpoC,IAAGsrE,GAAEoyL,EAAa,4BAA4B32Q,GAAEs5Q,GAAYz2Q,EAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAE97H,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEkwO,QAAE,GAAQttN,GAAEgiQ,GAAuB1zN,EAAE,IAAIogC,GAAEvkF,GAAEy8C,KAAKz8C,GAAEw8C,MAAMx8C,GAAEu8C,IAAIv8C,GAAEgzQ,KAAKhzQ,GAAEizQ,OAAOjzQ,GAAEu8F,OAAOv8F,GAAE0zQ,YAAY1zQ,GAAE2zQ,YAAY3zQ,GAAE4zQ,WAAW3gR,KAAI,OAAO4iB,GAAEA,GAAEllB,OAAO,OAAO,SAAS,MAAM,IAAIo6H,WAAW,0BAA0B,YAAgC93H,EAAEsxF,EAAEpgC,GAAG,GAAG,iBAAiBlxD,EAAE,CAAC,MAAMkxD,EAAE,IAAIwyN,EAAa,uBAAjB,CAAyC1jR,GAAG,OAAO8lR,GAAKpC,EAAa,wDAAwDxyN,EAAE,CAACogC,IAAI,MAAMljC,EAAE03N,GAAK50N,UAAG60N,GAAU/lR,EAAE,0BAA0BA,EAAE,CAACsxF,IAAIvkF,EAAE,GAAG,UAAU/M,KAAKouD,EAAE,CAAC,IAAIu1N,GAAkB3jR,GAAG,MAAM,IAAIg1H,UAAU,0CAA0CsnJ,GAAG9+Q,KAAKuP,EAAE/M,GAAG,OAAO+M,EAAE,YAAuB/M,GAAG,IAAIsxF,EAAE,OAAgBA,EAAbtxF,EAAE,GAAGA,EAAE,MAASA,EAAE,EAAE,IAAI,KAAM,SAAQ08Q,GAAG18Q,KAAK+X,OAAM,GAAY,OAAM/X,IAAI+X,OAAM,GAAWu5E,EAAE,YAA+BtxF,GAAG,MAAO,KAAIA,IAAI+X,OAAM,GAAI,YAAiC/X,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAG,GAAG,aAAa,MAAM,GAAG,MAAM6V,EAAG,IAAG0jQ,GAAsBtmR,KAAK,IAAIyG,EAAE4H,GAAE,IAAIijF,EAAE,IAAIpgC,EAAE9C,EAAE,GAAG,WAAW,CAAC,GAAG,OAAM,OAAOxrC,EAAE,IAAInc,EAAG,GAAE4H,KAAIk4Q,SAAS,EAAE,KAAK,QAAQ9/Q,EAAE/I,OAAO,IAAI+I,EAAEA,EAAEsR,MAAM,GAAE,OAAQ,CAAC,GAAG,MAAM,OAAO6K,EAAEnc,EAAG,GAAE4H,KAAIk4Q,SAAS,EAAE,KAAKxuQ,MAAM,EAAEhL,GAAG,MAAO,GAAE6V,KAAKnc,IAAI,YAAiCzG,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAEkjC,OAAE,IAASljC,IAAIA,EAAE,OAAO,MAAMrhD,EAAEq2Q,GAAoBh1N,EAAEpuD,EAAE,WAAW4iB,EAAE4jQ,GAAc7E,EAAQ50Q,EAAEtG,IAAIuf,EAAEsgQ,GAAsB3E,EAAQ50Q,EAAEsB,IAAI8P,GAAEmoQ,GAAsB3E,EAAQ50Q,EAAE4hC,IAAI/+B,GAAE02Q,GAAsB3E,EAAQ50Q,EAAEu6B,IAAIy0F,GAAEuqJ,GAAsB3E,EAAQ50Q,EAAEvE,IAAIugB,GAAE09P,GAAwB9E,EAAQ50Q,EAAE+oD,IAAG6rN,EAAQ50Q,EAAEyqH,IAAGmqJ,EAAQ50Q,EAAEsuB,IAAGsmP,EAAQ50Q,EAAEghO,GAAG78K,GAAG,IAAIhE,GAAE,IAAI,YAAG,QAAYA,GAAEw5N,GAA8B7B,GAAwBz2N,EAAEpuD,KAAW,GAAE4iB,KAAKoD,KAAK7H,MAAKvO,MAAKmsH,KAAIhzG,KAAImkC,KAAI,YAAkCokC,EAAEpgC,EAAE,OAAO9C,GAAG,WAAsBkjC,IAAG,OAAOA,IAAG4rL,GAAG5rL,GAAE/zF,SAAS,IAAIyC,SAASsxF,IAAG/zF,SAAS,IAAI,MAAMwP,EAAE40Q,EAAQrwL,EAAE8rC,IAAGx6G,EAAE++P,EAAQrwL,EAAEvkC,IAAGtmD,EAAEk7Q,EAAQrwL,EAAEtkC,IAAG3+C,GAAEszQ,EAAQrwL,EAAEtiF,IAAG2/B,GAAEgzO,EAAQrwL,EAAEwqC,GAAGx0F,GAAEq6O,EAAQrwL,EAAEw1I,GAAG,IAAIt+N,GAAEm5Q,EAAQrwL,EAAEzuE,GAAGizC,GAAE6rN,EAAQrwL,EAAEq1I,IAAGnvG,GAAEmqJ,EAAQrwL,EAAEpoD,IAAG7N,GAAEsmP,EAAQrwL,EAAE4+I,IAAG,MAAMnC,GAAE44C,GAAa55Q,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,IAAG,GAAG+yB,EAAE,CAAC,MAAM9oD,KAAKtF,GAAEgiR,UAAU1wL,GAAEs1L,aAAa11N,IAAG9C,IAAImzN,QAAQ/4Q,GAAE0xI,aAAapkF,GAAE0rN,aAAahqJ,GAAEiqJ,YAAYpmP,IAAGwrP,GAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEr+Q,GAAEstD,GAAE0hE,GAAEn8F,GAAEi2D,GAAEtxF,GAAEkxD,KAAI,MAAMlrC,GAAE,GAAGjZ,GAAGiZ,GAAE3mB,KAAM,GAAEynR,EAAapK,GAAG3vQ,QAAQ6V,GAAGoD,GAAE3mB,KAAM,GAAEynR,EAAapK,GAAG95P,QAAQnc,GAAGuf,GAAE3mB,KAAM,GAAEynR,EAAapK,GAAGj2Q,QAAQ4H,IAAG2X,GAAE3mB,KAAM,GAAEynR,EAAapK,GAAGruQ,SAAQ,MAAM8P,GAAE,GAAGwwB,IAAGxwB,GAAE9e,KAAM,GAAEynR,EAAapK,GAAG/tO,SAAQrH,IAAGnpB,GAAE9e,KAAM,GAAEynR,EAAapK,GAAGp1O,SAAQ,MAAM13B,GAAE,GAAG,IAAImsH,GAAEhzG,GAAEmkC,GAAE2iI,GAAE7lI,GAAE+8N,GAAyB,EAAE,EAAE,EAAEv+Q,GAAEstD,GAAE0hE,GAAEn8F,GAAE,KAAK8gG,SAASnyE,GAAEoyE,UAAUL,IAAGirJ,GAAOh9N,GAAE4zN,OAAOzhJ,SAASnyE,GAAEoyE,UAAUrzG,IAAGi+P,GAAOh9N,GAAE4zN,OAAOzhJ,SAAS0zD,GAAEzzD,UAAUlvE,IAAG85N,GAAOh9N,GAAE4zN,KAAK,MAAM5rC,GAAE,IAAI0qC,GAAG18Q,WAAWktD,KAAI,IAAIwvN,GAAG18Q,WAAW+oB,KAAI2zP,GAAG18Q,WAAW+7H,KAAI,IAAI+1G,GAAE,GAAG,YAAY,GAAG,OAAM,IAAIA,GAAG,GAAEE,KAAIu0C,SAAS,EAAE,KAAK,SAAQz0C,GAAEp0O,OAAO,IAAIo0O,GAAEA,GAAE/5N,MAAM,GAAE,QAAS,IAAIm5C,IAAI4gL,GAAG,GAAEE,KAAIu0C,SAAS,EAAE,KAAKxuQ,MAAM,EAAEm5C,IAAI,OAAO4gL,IAAGliO,GAAE0X,QAAQ,IAAIwqN,IAAG9xO,QAAQ6vL,GAAE2tF,MAAM5tQ,GAAElS,QAAQ,YAAYkS,GAAE0X,QAAQhR,GAAIu5K,IAAGtyL,YAAYqS,GAAElS,QAAQygB,GAAE9e,KAAM,GAAEuQ,GAAEu9C,KAAK,QAAQhvC,GAAEzgB,QAAQygB,GAAEmJ,QAAQ,KAAKtB,GAAEtoB,QAAQygB,GAAEzgB,OAAQ,GAAEqwO,GAAE,EAAE,IAAI,MAAM/nN,GAAEmnC,KAAK,MAAMhvC,GAAEgvC,KAAK,MAAM,OAAO,YAA8BntD,EAAEsxF,EAAE,QAAQ,MAAO,GAAEk1L,GAAc7E,EAAQ3hR,EAAEyG,OAAO6/Q,GAAsB3E,EAAQ3hR,EAAEqO,OAAOi4Q,GAAsB3E,EAAQ3hR,EAAE2uC,MAAMs4O,GAA8BtF,EAAQ3hR,EAAEgmB,IAAGsrE,KAAK,YAAkCtxF,EAAEsxF,EAAEpgC,EAAE,OAAO9C,GAAG,IAAIrhD,EAAE40Q,EAAQ3hR,EAAEyG,GAAGmc,EAAE++P,EAAQ3hR,EAAEqO,GAAG8P,EAAEwjQ,EAAQ3hR,EAAE2uC,GAAG/+B,GAAE+xQ,EAAQ3hR,EAAEsnC,GAAGy0F,GAAE4lJ,EAAQ3hR,EAAEwI,GAAGugB,GAAE44P,EAAQ3hR,EAAE81D,IAAG5I,GAAEy0N,EAAQ3hR,EAAEw3H,IAAG4F,GAAEukJ,EAAQ3hR,EAAEq7B,IAAG0xB,GAAE40N,EAAQ3hR,EAAE+tO,GAAG,GAAG3/K,EAAE,CAAC,MAAM9oD,KAAKtF,GAAEgiR,UAAU1wL,GAAEs1L,aAAa11N,IAAG9C,IAAI5E,KAAKz8C,EAAEw8C,MAAM3mC,EAAE0mC,IAAInrC,EAAE4hQ,KAAKnwQ,GAAEowQ,OAAOjkJ,GAAEzyB,OAAOvgF,GAAE03P,YAAYvzN,GAAEwzN,YAAYtjJ,GAAEujJ,WAAW5zN,IAAGm6N,GAAiBn6Q,EAAE6V,EAAEzE,EAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEukC,GAAEtxF,GAAEkxD,KAAI,MAAO,GAAEs1N,GAAcz5Q,MAAMu5Q,GAAsB1jQ,MAAM0jQ,GAAsBnoQ,MAAMmoQ,GAAsB12Q,OAAM02Q,GAAsBvqJ,MAAK0qJ,GAAwB19P,GAAEmkC,GAAEkwE,GAAErwE,GAAEukC,KAAK21L,GAA8BtF,EAAQ3hR,EAAEgmB,IAAGkrC,KAAK,YAAkClxD,EAAEsxF,EAAE,QAAQ,IAAIpgC,EAAG,GAAEo1N,GAAsB3E,EAAQ3hR,EAAEqO,OAAOi4Q,GAAsB3E,EAAQ3hR,EAAE2uC,MAAM,MAAMyf,EAAEiyN,GAA6BsB,EAAQ3hR,EAAEgmB,MAAO,WAAWsrE,GAAG,gBAAgB,iBAAepgC,EAAG,GAAEs1N,GAAc7E,EAAQ3hR,EAAEyG,OAAOyqD,KAAI,MAAMnkD,EAAEqzQ,GAAyBhyN,EAAEkjC,GAAG,OAAOvkF,IAAImkD,GAAGnkD,GAAGmkD,EAAE,YAAmClxD,EAAEsxF,EAAE,QAAQ,IAAIpgC,EAAG,GAAEs1N,GAAc7E,EAAQ3hR,EAAEyG,OAAO6/Q,GAAsB3E,EAAQ3hR,EAAEqO,MAAM,MAAM+/C,EAAEiyN,GAA6BsB,EAAQ3hR,EAAEgmB,MAAO,WAAWsrE,GAAG,gBAAgB,iBAAepgC,GAAI,IAAGo1N,GAAsB3E,EAAQ3hR,EAAE2uC,OAAM,MAAM5hC,EAAEqzQ,GAAyBhyN,EAAEkjC,GAAG,OAAOvkF,IAAImkD,GAAGnkD,GAAGmkD,EAAE,YAAuClxD,EAAEsxF,EAAEpgC,EAAE,OAAO9C,EAAE,OAAOxrC,EAAE,OAAOzE,GAAG,IAAIvO,EAAE+xQ,EAAQ3hR,EAAE+oB,IAAG,GAAG5K,EAAE,CAAC,MAAM7Y,KAAKgsF,GAAE0wL,UAAU9wN,GAAE01N,aAAax4N,IAAGjwC,EAAEyE,GAAEukQ,GAAaxF,EAAQ3hR,EAAE+M,GAAGmkD,GAAEogC,GAAEljC,IAAGx+C,EAAE,IAAI8zQ,EAAa,sBAAjB,CAAwC9gQ,IAAG,MAAMm5G,GAAE4lJ,EAAQ3hR,EAAEktD,IAAGkwE,GAAEgmJ,GAAoBrnJ,GAAEnsH,EAAE,WAAW,IAAIm9C,GAAG,GAAEy5N,GAAc7E,EAAQvkJ,GAAE32H,OAAO6/Q,GAAsB3E,EAAQvkJ,GAAE/uH,OAAOi4Q,GAAsB3E,EAAQvkJ,GAAEzuF,OAAO23O,GAAsB3E,EAAQvkJ,GAAE91F,OAAOg/O,GAAsB3E,EAAQvkJ,GAAE50H,MAAMi+Q,GAAwB9E,EAAQvkJ,GAAEtnE,IAAG6rN,EAAQvkJ,GAAE5F,IAAGmqJ,EAAQvkJ,GAAE/hG,IAAGsmP,EAAQvkJ,GAAE2wG,GAAGz8I,KAAK,MAAG,cAAavkC,IAAG25N,GAA8B7B,GAAwB9oJ,GAAEnsH,KAAO,cAAam9C,IAAI,IAAG,eAAe,IAAI,KAAKo5N,GAA6BpqJ,QAAahvE,IAAGk6N,GAA8BtF,EAAQ3hR,EAAEgmB,IAAGkrC,GAAGnE,GAAE,YAAgC/sD,GAAG,OAAOonR,GAAG50L,KAAKyqL,GAAGj9Q,IAAI,YAAmCA,GAAG,MAAMsxF,EAAE81L,GAAG3/Q,KAAKw1Q,GAAGj9Q,IAAI,IAAIsxF,EAAE,MAAM,IAAIwmC,WAAY,6BAA4B93H,KAAK,OAAO,MAAMsxF,EAAE,IAAI,aAAQ,IAAG,EAAG,IAAI,KAAK,IAAI,IAAIA,EAAE,MAAMA,EAAE,IAAI,OAAOA,EAAE,IAAI,QAAQA,EAAE,IAAI,GAAG,aAAav5E,MAAM,EAAE,IAAI,YAAwC/X,GAAG,OAAGqnR,GAAuBrnR,GAAW+kR,GAA2B9B,GAA0BjjR,IAAWsnR,GAAqCrK,GAAGj9Q,IAAIunR,kBAAkB3H,SAAS,YAA2CtuL,EAAEpgC,GAAG,MAAM1H,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,EAAEm9P,KAAKt5Q,EAAEu5Q,OAAO3xQ,EAAEi7F,OAAO36D,GAAE8xO,YAAYn5O,GAAEo5O,YAAYl4Q,GAAEm4Q,WAAW7qN,IAAG0xN,GAA8Bl2L,EAAEpgC,GAAGsmE,GAAEppE,EAAE,IAAI/yB,IAAG+yB,EAAEopE,IAAG,IAAIu2G,GAAE/tO,WAAWA,SAAS,QAAQk+Q,IAAIl4P,GAAE69P,GAAuBrsJ,GAAEzqH,EAAE6V,EAAEnc,EAAE4H,EAAEsgC,GAAErH,GAAE9+B,GAAEstD,IAAG33C,GAAEne,MAAMgmB,GAAEhmB,WAAW+tO,GAAE/tO,SAASq7B,MAAK,OAAOr7B,WAAWA,WAAWme,GAAE+yC,IAAI,YAAoClxD,GAAG,MAAMsxF,EAAEtxF,EAAE,EAAE,IAAI,IAAIkxD,EAAEwrN,GAAG18Q,GAAGouD,EAAE8C,EAAE,IAAInkD,EAAE4vQ,GAAGzrN,EAAE,KAAK,GAAGtuC,EAAE+5P,GAAGzrN,EAAE,MAAM,GAAGzqD,EAAE6/Q,GAAsB3J,GAAGzrN,EAAE,QAAQ7iD,GAAEi4Q,GAAsB1jQ,GAAG+rB,GAAE23O,GAAsBv5Q,GAAG,IAAIu6B,GAAE,GAAG,GAAG8mB,EAAE,CAAC,IAAIpuD,GAAG,GAAEouD,IAAIm4N,SAAS,EAAE,KAAK,KAAK,SAAQvmR,GAAEtC,OAAO,IAAIsC,GAAEA,GAAE+X,MAAM,GAAE,GAAIuvB,GAAG,IAAGqH,MAAK3uC,UAAS+M,IAAIu6B,GAAG,IAAGqH,MAAK,MAAO,GAAE2iD,IAAI7qF,KAAK4H,KAAIi5B,KAAI,YAAuCgqD,GAAG,IAAIpgC,EAAElxD,WAAW8kR,GAAuB9kR,SAASsxF,GAAG2sL,GAAG,eAAe,MAAM7vN,EAAE8C,EAAE,EAAE,IAAI,IAAIA,EAAEwrN,GAAGxrN,GAAG,MAAMnkD,EAAEmkD,EAAE,KAAK,GAAG,MAAO,GAAE9C,IAAIk4N,GAAsB3J,GAAGzrN,EAAE,WAAWo1N,GAAsBv5Q,KAAK,YAAgCukF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,EAAEsgC,GAAErH,IAAG,MAAM9+B,GAAE,IAAIw3B,KAAKx3B,GAAEwuI,YAAYjqI,EAAE6V,EAAEnc,EAAE4H,GAAG7F,GAAEquI,eAAevlD,EAAEpgC,EAAE,EAAE9C,GAAG,MAAM0H,GAAEttD,GAAEy3B,UAAU,GAAG88O,GAAGjnN,IAAG,OAAO,KAAK,IAAI0hE,GAAEx3H,WAAWA,SAAS81D,IAAG+nN,IAAI,OAAOrmJ,GAAEx3H,MAAMw3H,GAAEx3H,WAAWA,SAAS2uC,IAAGivO,KAAKpmJ,GAAEx3H,MAAMw3H,GAAEx3H,SAASsnC,KAAItnC,WAAWw3H,GAAE2mJ,KAAKn+Q,cAAcw3H,GAAE4mJ,IAAI,KAAK5mJ,GAAE,YAA8BlmC,GAAG,MAAM6qC,SAASjrE,EAAEkrE,UAAUhuE,GAAG44N,GAAO11L,EAAEusL,IAAI,IAAI9wQ,EAAE/M,WAAWkxD,GAAGtuC,EAAE5iB,WAAWouD,GAAGxrC,EAAE,IAAIA,GAAG,IAAI7V,GAAG,GAAG,MAAMtG,EAAEk2Q,GAAG/5P,EAAE,KAAK,IAAIvU,EAAEuU,EAAE,IAAI+rB,GAAE,IAAI3O,KAAKjzB,GAAG,MAAM,CAAC06Q,kBAAkB16Q,EAAEy8C,KAAK7a,GAAE+4O,iBAAiBn+N,MAAM5a,GAAEg5O,cAAc,EAAEr+N,IAAI3a,GAAEi5O,aAAa7H,KAAKpxO,GAAEk5O,cAAc7H,OAAOrxO,GAAEm5O,gBAAgBx+K,OAAO36D,GAAEo5O,gBAAgBtH,YAAY9xO,GAAEq5O,qBAAqBtH,YAAYj6Q,EAAEk6Q,WAAWtyQ,GAAG,YAAuCrO,EAAEsxF,GAAG,MAAMm2L,kBAAkBv2N,EAAEuvN,YAAYryN,EAAEsyN,YAAY3zQ,EAAE4zQ,WAAW/9P,GAAGwjQ,GAAqB90L,IAAI9nC,KAAK/iD,EAAE8iD,MAAMl7C,GAAEi7C,IAAI3a,GAAEoxO,KAAKz4O,GAAE04O,OAAOx3Q,GAAE8gG,OAAOxzC,KAAgCw7B,GAA0jBpgC,EAA5e,SAA6BlxD,IAAG,MAAMsxF,GAAEtxF,GAAEgK,MAAM,UAAU,GAAG,OAAMtM,OAAO,MAAM,IAAIo6H,WAAY,wBAAuB93H,MAAK,MAAMkxD,IAAGogC,GAAE,GAAGljC,IAAGkjC,GAAE,GAAG,IAAIvkF,IAAGukF,GAAE,GAAG,MAAM1uE,GAAE0uE,GAAE,GAAGhuF,cAAc,GAAG,UAAS,UAASyJ,GAAE,EAAEA,WAAU,UAAS,UAAS,MAAM,IAAI+qH,WAAY,eAAcl1G,UAAS5iB,MAAK,IAAIyG,IAAG6qF,GAAE,GAAG,KAAK7qF,KAAIA,GAAE,GAAG,MAAM4H,IAAGijF,GAAE,GAAG3iD,IAAG2iD,GAAE,GAAG,KAAK0rL,GAAGjwQ,KAAIiwQ,GAAG9rN,KAAI8rN,GAAG5uN,KAAI4uN,GAAGv2Q,KAAIu2Q,GAAG3uQ,KAAI2uQ,GAAGruO,KAAI,MAAM,IAAImpF,WAAY,sBAAqB93H,MAAK,MAAM,CAACwpD,KAAKz8C,GAAEw8C,MAAM2H,GAAE5H,IAAI8E,GAAE2xN,KAAKt5Q,GAAEu5Q,OAAO3xQ,GAAEi7F,OAAO36D,IAAle,CAAnE24O,GAA6iBtnR,GAArgBk/F,OAAO,IAAIl/D,KAAKsxD,OAAhG,IAA6BA,GAA6jB,OAAOsyL,EAAmBn9Q,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE1H,EAAErhD,EAAE6V,GAAG,YAAiB0uE,EAAEpgC,GAAG,OAAOlxD,WAAWsxF,EAAEpgC,GAAGA,EAAEogC,EAAE,cAA6C,OAAOtxF,MAAMioR,KAAKzJ,IAAI,YAAwCltL,EAAEpgC,GAAG,GAAGlxD,WAAWkxD,EAAEqtN,IAAI,OAAO2J,GAA+B52L,EAAEitL,IAAI,MAAMnwN,EAAEpuD,MAAMkxD,EAAEutN,IAAI1xQ,EAAEo7Q,GAAQC,KAAoCh6N,GAAG,IAAIxrC,EAAEulQ,GAAQ5J,GAAGrtN,GAAG,MAAMzqD,EAAE4hR,GAAkC/2L,EAAE1uE,GAAG,IAAIvU,EAAEuU,EAAE+rB,GAAEloC,EAAE,KAAKA,IAAIkoC,IAAG3uC,WAAWA,SAAS4iB,GAAG7V,IAAI,CAAC,GAAGsB,EAAErO,MAAM4iB,EAAE87P,IAAI1+Q,cAAcqO,EAAE+vQ,IAAI,OAAO,KAAKzvO,GAAE05O,GAAkC/2L,EAAEjjF,GAAG5H,IAAIkoC,KAAI/rB,EAAEvU,GAAG,OAAG5H,IAAIkoC,GAAS,KAAY25O,GAAQtoR,IAAGqoR,GAAkC/2L,EAAEtxF,IAAI4iB,EAAEvU,EAAE5H,EAAEkoC,IAAG,YAA4C2iD,EAAEpgC,GAAG,MAAM9C,EAAEg6N,KAAoCxlQ,EAAE5iB,cAAckxD,EAAE9C,GAAG3nD,EAAEmc,EAAE5iB,WAAWkxD,EAAEutN,IAAIF,GAAG,GAAG,yBAAyB,sBAAsB,CAAC,MAAMnwN,GAAEuzN,EAAQ4G,GAAkB,kBAAkBx7Q,GAAG,GAAG/M,WAAWouD,GAAE8C,GAAG,OAAOs3N,GAAmCl3L,EAAEljC,IAAG,IAAI//C,EAAErO,WAAWkxD,EAAEusN,IAAI,GAAGz9Q,WAAWqO,EAAEkwQ,IAAI,OAAO,KAAK,MAAM5vO,EAAE05O,GAAkC/2L,EAAEjjF,GAAG,IAAIi5B,GAAEj5B,EAAE7F,GAAEmmC,EAAE,KAAKA,IAAInmC,IAAGxI,cAAcqO,EAAE5H,IAAI,CAAC,GAAG6gC,GAAEtnC,WAAWqO,EAAEqwQ,IAAI1+Q,WAAWsnC,GAAEi3O,IAAI,OAAO,KAAK/1Q,GAAE6/Q,GAAkC/2L,EAAEhqD,IAAGqH,IAAInmC,KAAI6F,EAAEi5B,IAAG,GAAGqH,IAAInmC,GAAE,CAAC,GAAGoa,EAAE,CAAC,MAAMsuC,GAAElxD,WAAWouD,EAAE8vN,IAAI,OAAOsK,GAAmCl3L,EAAEpgC,IAAG,OAAO,KAAK,OAAOo3N,GAAQtoR,IAAGqoR,GAAkC/2L,EAAEtxF,IAAIsnC,GAAEj5B,EAAE7F,GAAEmmC,GAAG,YAAkB3uC,GAAG,YAAG,OAA2BA,EAAE,GAAG,IAAMA,EAAE,KAAK,GAAIA,EAAE,KAAK,GAAG,WAAwBA,EAAEsxF,GAAG,MAAM,CAACm3L,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKC,GAAS3oR,GAAG,WAAW,YAAYsxF,EAAE,GAAG,WAAmBtxF,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEkjC,GAAGA,EAAE,EAAE,IAAG,GAAIvkF,EAAE/M,GAAGsxF,EAAE,EAAE,EAAE,GAAG1uE,EAAE+5P,GAAG5vQ,EAAE,KAAKtG,EAAEsG,EAAE,IAAI6V,EAAEvU,IAAG6iD,EAAEyrN,GAAG,IAAIvuN,EAAE,KAAK3nD,EAAEk2Q,GAAGl2Q,EAAE,KAAKk2Q,GAAG/5P,EAAE,GAAG,EAAEA,IAAI,EAAE,OAAOvU,IAAGA,IAAG,EAAE,EAAE,GAAG,YAAmBrO,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAE8C,EAAE,QAAQA,EAAEogC,EAAE,EAAEpgC,EAAE,EAAEA,IAAI9C,GAAGw6N,EAAe5oR,EAAEkxD,GAAG,OAAO9C,EAAE,YAAoBpuD,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEy6N,GAAU7oR,EAAEsxF,EAAEpgC,GAAGnkD,EAAE+7Q,EAAU9oR,EAAEsxF,EAAEpgC,IAAI,EAAEtuC,EAAEkmQ,EAAU9oR,EAAE,EAAE,GAAGyG,EAAEk2Q,IAAIvuN,EAAErhD,EAAE,IAAI,GAAG,OAAOtG,EAAE,EAAE,OAAO,OAAOkiR,GAAS3oR,EAAE,GAAG,CAAC+oR,KAAK,GAAGv/N,KAAKxpD,EAAE,GAAG,CAAC+oR,KAAK,GAAGv/N,KAAKxpD,EAAE,GAAG,SAAS2oR,GAAS3oR,GAAG,IAAI,KAAKouD,EAAE,EAAErhD,EAAE,CAACg8Q,KAAK,EAAEv/N,KAAKxpD,EAAE,GAAG,CAAC+oR,KAAKtiR,EAAE+iD,KAAKxpD,GAAG,YAAsBA,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,UAAU9+B,KAAI,CAACxI,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,GAAG,OAAM,OAAO9+B,GAAE,GAAE,EAAG,EAAE,OAAO,EAAE,WAA6BxI,EAAEsxF,GAAG,IAAIpgC,EAAElxD,EAAEouD,EAAEkjC,EAAE,IAAI0rL,GAAG9rN,KAAK8rN,GAAG5uN,GAAG,MAAM,IAAI0pE,WAAW,4BAA4B,OAAO1pE,GAAG,EAAE8C,GAAGyrN,GAAGvuN,EAAE,IAAIA,GAAG,GAAGA,EAAE,IAAIA,GAAG,IAAIA,GAAG,EAAE,CAAC5E,KAAK0H,EAAE3H,MAAM6E,GAAG,WAAwBpuD,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAEpuD,EAAE+M,EAAEukF,EAAE1uE,EAAEsuC,EAAE,IAAI8rN,GAAGp6P,GAAG,MAAM,IAAIk1G,WAAW,8BAA8BtuE,KAAK4E,EAAE7E,MAAMx8C,GAAGi8Q,EAAoB56N,EAAErhD,IAAI,MAAMtG,EAAE,OAAO,GAAGi2Q,GAAG95P,GAAGnc,EAAE,CAAC,MAAMzG,GAAE68Q,GAAGj6P,EAAEnc,GAAG2nD,GAAG,IAAIpuD,GAAE4iB,GAAG5iB,GAAEyG,EAAE,IAAI4H,GAAE,EAAEsgC,GAAE5hC,EAAE,EAAEqhD,EAAEA,EAAE,EAAE,KAAK//C,GAAEs6Q,GAASh6O,IAAG,IAAI,IAAI/rB,GAAGvU,IAAG+/C,GAAG,EAAEzf,IAAG,EAAE/rB,GAAGvU,GAAE,IAAIsgC,IAAG,EAAEtgC,GAAEs6Q,GAASh6O,IAAG,IAAI,IAAI/rB,EAAEvU,IAAG+/C,GAAG,EAAEzf,IAAG,EAAE/rB,GAAGvU,GAAE,KAAKuU,EAAE,KAAK4mC,KAAK4E,EAAE7E,MAAMx8C,GAAGi8Q,EAAoB56N,EAAErhD,EAAE,IAAI6V,GAAGgmQ,EAAex6N,EAAErhD,GAAG,KAAK6V,EAAEgmQ,EAAex6N,EAAErhD,IAAI6V,GAAGgmQ,EAAex6N,EAAErhD,KAAKy8C,KAAK4E,EAAE7E,MAAMx8C,GAAGi8Q,EAAoB56N,EAAErhD,EAAE,IAAI,MAAM,CAACy8C,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,GAAG,WAA4B5iB,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,IAAG,MAAMs6O,UAAU3hP,GAAEy4O,KAAKv3Q,GAAEw3Q,OAAOlqN,GAAEwzC,OAAOkuB,GAAEipJ,YAAYplP,GAAEqlP,YAAY3yC,GAAE4yC,WAAW36P,IAAGkjQ,GAAY96N,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,KAAI6a,KAAKrrC,GAAEorC,MAAM35C,GAAE05C,IAAIyyE,IAAGotJ,EAAenpR,EAAEsxF,EAAEpgC,EAAE5pB,IAAG,MAAM,CAACkiB,KAAKrrC,GAAEorC,MAAM35C,GAAE05C,IAAIyyE,GAAEgkJ,KAAKv3Q,GAAEw3Q,OAAOlqN,GAAEwzC,OAAOkuB,GAAEipJ,YAAYplP,GAAEqlP,YAAY3yC,GAAE4yC,WAAW36P,IAAG,YAAqBsrE,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAG,IAAI4H,EAAEsgC,GAAE3uC,SAASsxF,GAAGhqD,GAAEtnC,SAASkxD,GAAG1oD,GAAExI,SAASouD,GAAG0H,GAAE91D,SAAS+M,GAAGyqH,GAAEx3H,SAAS4iB,GAAGyY,GAAEr7B,SAASyG,GAAG,QAAQ01H,SAAS9tH,EAAE+tH,UAAU/gG,IAAG+tP,GAAwB/tP,GAAEuiP,KAAKpmJ,GAAEx3H,MAAMw3H,GAAEnpH,KAAK8tH,SAAS9tH,EAAE+tH,UAAU5E,IAAG4xJ,GAAwB5xJ,GAAEomJ,KAAK9nN,GAAE91D,MAAM81D,GAAEznD,KAAK8tH,SAAS9tH,EAAE+tH,UAAUtmE,IAAGszN,GAAwBtzN,GAAE8nN,KAAKp1Q,GAAExI,MAAMwI,GAAE6F,KAAK8tH,SAAS9tH,EAAE+tH,UAAU5zH,IAAG4gR,GAAwB5gR,GAAEk1Q,KAAKp2O,GAAEtnC,MAAMsnC,GAAEj5B,KAAK8tH,SAAS9tH,EAAE+tH,UAAU90F,IAAG8hP,GAAwB9hP,GAAEo2O,KAAK/uO,GAAE3uC,MAAM2uC,GAAEtgC,KAAK8tH,SAAS9tH,EAAE+tH,UAAUztF,IAAGy6O,GAAwBz6O,GAAEgvO,KAAK,CAACsL,UAAUjpR,WAAWqO,GAAG0xQ,KAAK//Q,WAAW2uC,IAAGqxO,OAAOhgR,WAAWsnC,IAAGgiE,OAAOtpG,WAAWwI,IAAGi4Q,YAAYzgR,WAAW81D,IAAG4qN,YAAY1gR,WAAWw3H,IAAGmpJ,WAAW3gR,WAAWq7B,KAAI,YAAkCi2D,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,EAAEsgC,IAAG,MAAMrH,GAAEtnC,SAASsxF,GAAG,IAAI9oF,GAAExI,SAASqO,GAAG,IAAIijF,IAAI9oF,GAAExI,WAAWA,SAASqO,GAAGrO,SAAS2uC,MAAK,MAAMmnB,GAAE91D,MAAMA,SAASkxD,GAAGlxD,WAAWsnC,GAAEtnC,SAAS,MAAMw3H,GAAEx3H,MAAMA,SAASouD,GAAGpuD,WAAW81D,GAAE4nN,KAAKriP,GAAEr7B,MAAMA,SAAS+M,GAAG/M,WAAWw3H,GAAEkmJ,KAAK3vC,GAAE/tO,MAAMA,SAAS4iB,GAAG5iB,WAAWq7B,GAAEuiP,KAAK53P,GAAEhmB,MAAMA,SAASyG,GAAGzG,WAAW+tO,GAAE6vC,KAAK,OAAO59Q,MAAMA,SAASwI,IAAGxI,WAAWgmB,GAAE43P,KAAK,WAA2BtsL,EAAEpgC,GAAG,MAAM9C,EAAEs1N,EAAa,sBAAsB9gQ,EAAEg6P,GAAG58Q,WAAWsxF,IAAI,IAAInzE,EAAEne,SAASsxF,GAAG1hF,EAAE,OAAO,GAAG,MAAM,MAAM,CAACirI,KAAK,EAAE4mI,YAAYjE,GAAG6L,YAAYz5Q,GAAG,IAAIuyQ,GAAwBjxN,GAAG,CAAC,IAAIogC,GAAE,QAAQ6qC,SAAS7qC,GAAE8qC,UAAUj+G,GAAG6oQ,GAAO7oQ,EAAEne,SAAS4P,KAAK,CAACirI,KAAK76I,WAAWsxF,IAAGmwL,YAAYtjQ,EAAEkrQ,YAAYz5Q,GAAG,MAAMmsH,EAAE4lJ,EAAQzwN,EAAEnkD,GAAGqwH,GAAEukJ,EAAQzwN,EAAEnoC,IAAGgkC,GAAE/sD,MAAM+7H,EAAE59G,GAAG6uC,GAAE,IAAIoB,EAAErB,IAAG/9C,GAAE2yQ,EAAQzwN,EAAEhE,IAAG4uE,GAAE6lJ,EAAQzwN,EAAElrC,IAAG8gN,GAAEs8C,GAAoBp0Q,GAAEouH,GAAEtB,IAAGj5G,GAAEugQ,GAAoBp0Q,GAAEg+C,GAAE8uE,IAAG,IAAI+e,KAAK8rF,IAAG2iD,GAAsB3H,EAAQ76C,GAAErgO,GAAGk7Q,EAAQ76C,GAAEz4N,GAAGszQ,EAAQ76C,GAAEn4L,GAAGgzO,EAAQ76C,GAAEx/L,GAAGq6O,EAAQ76C,GAAEt+N,GAAGm5Q,EAAQ76C,GAAEhxK,IAAG6rN,EAAQ76C,GAAEtvG,IAAGmqJ,EAAQ76C,GAAEzrM,IAAGsmP,EAAQ76C,GAAEiH,GAAG4zC,EAAQ9+P,GAAEpc,GAAGk7Q,EAAQ9+P,GAAExU,GAAGszQ,EAAQ9+P,GAAE8rB,GAAGgzO,EAAQ9+P,GAAEykB,GAAGq6O,EAAQ9+P,GAAEra,GAAGm5Q,EAAQ9+P,GAAEizC,IAAG6rN,EAAQ9+P,GAAE20G,IAAGmqJ,EAAQ9+P,GAAEwY,IAAGsmP,EAAQ9+P,GAAEkrN,GAAGjyG,GAAE,MAAMshJ,GAAG,OAAOl0O,GAAEqgP,GAAiBnsJ,GAAEpuH,GAAE8sH,GAAE,EAAE,EAAE,EAAE6qG,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGuJ,GAAElwO,SAAS2mO,IAAG,GAAG,MAAM,KAAK3mO,cAAckwO,GAAEstC,KAAKx9Q,cAAckpC,GAAE6jB,KAAImjL,GAAElwO,WAAWkwO,GAAEutC,IAAIv0O,GAAEqgP,GAAiBnsJ,GAAEpuH,GAAE8sH,GAAE,EAAE,EAAE,EAAE97H,WAAWkwO,IAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG/xN,EAAEne,WAAW+sD,GAAE7jB,IAAG,IAAI2mJ,IAAE,EAAG7lI,GAAE,IAAIoE,EAAEllB,IAAG,EAAE,CAAC,MAAMooD,GAAEi4L,GAAiBv/N,GAAEh7C,GAAE8sH,GAAE,EAAE,EAAE,EAAEl5G,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGsuC,GAAEywN,EAAQ33N,GAAEj9C,GAAG6C,EAAE5P,WAAWA,WAAWsxF,GAAEpgC,KAAI2+H,GAAE7vL,qBAAqBA,WAAWA,WAAWme,EAAEne,SAAS4P,IAAI5P,SAAS4iB,IAAI46P,IAAI3tF,KAAI1xK,EAAEne,WAAWme,EAAEne,SAAS4P,IAAIo6C,GAAE,IAAIoE,EAAEkjC,IAAG4+I,GAAElwO,MAAMkwO,GAAElwO,SAAS4iB,WAAWitK,IAAG,IAAI1qC,GAAO+qF,KAAIs5C,GAASt5C,MAAKttN,EAAE,MAAM,IAAIk1G,WAAW,4FAA4F,IAAIqtB,GAAOhnI,IAAIqrQ,GAASrrQ,KAAKyE,EAAG,MAAGm8P,GAAe5gQ,IAAI,MAAY,IAAIi3B,MAAM,sBAA4B,IAAI0iF,WAAW,yFAAyF,GAAG93H,qBAAqBsW,GAAI6H,GAAG7H,GAAItW,SAAS4P,KAAK,MAAM,IAAIwlC,MAAM,sBAAsB,MAAM,CAACylG,KAAK76I,WAAWkwO,IAAGuxC,YAAYtjQ,EAAEkrQ,YAAY3M,GAAG9sQ,IAAI,YAAyB5P,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,IAAG,IAAIrH,GAAEmiP,GAAgCzpR,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,IAAG,GAAG,0BAAyB,yBAAwB,MAAM,IAAImpF,WAAW,yBAAyB,OAAOxwF,GAAE,YAAyCgqD,EAAEpgC,EAAE9C,EAAExrC,EAAEnc,EAAE4H,EAAEsgC,EAAErH,GAAE9+B,IAAG,IAAIstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEzqC,EAAE,GAAG6wL,GAAwB35Q,IAAG,CAAC,MAAM8oF,GAAEi4L,GAAiB5H,EAAQn5Q,GAAEugB,IAAG44P,EAAQn5Q,GAAE0kD,IAAGy0N,EAAQn5Q,GAAEwd,IAAG,EAAE,EAAE,EAAE+1G,GAAE7qE,EAAE9C,EAAExrC,EAAEnc,EAAE4H,EAAEsgC,GAAGrH,GAAEq6O,EAAQn5Q,GAAEuE,GAAG+oD,GAAE91D,WAAWsxF,GAAEhqD,SAAQwuB,GAAEixN,GAAyBhrJ,GAAE7qE,EAAE9C,EAAExrC,EAAEnc,EAAE4H,EAAEsgC,EAAE,GAAG,SAASrH,IAAG,cAAa,aAAY,aAAYuzG,KAAK9e,GAAE0lJ,YAAY3rN,IAAG4zN,EAAkB5zN,GAAEttD,KAAIuzH,GAAE,EAAE,MAAMqB,GAAEp9H,WAAW81D,GAAE0nN,KAAI,EAAG,EAAE,OAAO1nN,GAAEx/C,GAAIw/C,IAAG0hE,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAE4tQ,GAAGl2O,QAAO,WAAW,YAAY,WAAW,UAAU,SAAS60F,SAAS3E,GAAE4E,UAAUtmE,IAAGkxN,GAAOlxN,GAAE8nN,OAAOzhJ,SAAS9gG,GAAE+gG,UAAU5E,IAAGwvJ,GAAOxvJ,GAAEomJ,OAAOzhJ,SAAS4xG,GAAE3xG,UAAU/gG,IAAG2rP,GAAO3rP,GAAEuiP,OAAOzhJ,SAASh+G,GAAEi+G,UAAU2xG,IAAGi5C,GAAOj5C,GAAE2vC,OAAOvhJ,SAASvsH,GAAEwsH,UAAUj+G,IAAG6oQ,GAAO7oQ,GAAEu/P,KAAK,UAAU,WAAWvhJ,SAAS3E,GAAE4E,UAAUtmE,IAAGkxN,GAAOlxN,GAAE8nN,OAAOzhJ,SAAS9gG,GAAE+gG,UAAU5E,IAAGwvJ,GAAOxvJ,GAAEomJ,OAAOzhJ,SAAS4xG,GAAE3xG,UAAU/gG,IAAG2rP,GAAO3rP,GAAEuiP,OAAOzhJ,SAASh+G,GAAEi+G,UAAU2xG,IAAGi5C,GAAOj5C,GAAE2vC,KAAK,UAAU,WAAWvhJ,SAAS3E,GAAE4E,UAAUtmE,IAAGkxN,GAAOlxN,GAAE8nN,OAAOzhJ,SAAS9gG,GAAE+gG,UAAU5E,IAAGwvJ,GAAOxvJ,GAAEomJ,OAAOzhJ,SAAS4xG,GAAE3xG,UAAU/gG,IAAG2rP,GAAO3rP,GAAEuiP,KAAK,UAAU,gBAAgBzhJ,SAAS3E,GAAE4E,UAAUtmE,IAAGkxN,GAAOlxN,GAAE8nN,OAAOzhJ,SAAS9gG,GAAE+gG,UAAU5E,IAAGwvJ,GAAOxvJ,GAAEomJ,KAAK,UAAU,gBAAgBzhJ,SAAS3E,GAAE4E,UAAUtmE,IAAGkxN,GAAOlxN,GAAE8nN,KAAK,UAAU,aAAa,cAAc,MAAM,IAAIxoO,MAAM,sBAAsB,MAAM2X,GAAE/sD,WAAW4P,IAAGwtH,GAAEpwE,GAAEhtD,WAAWme,IAAGi/G,GAAEpuH,GAAEhP,WAAW+tO,IAAG3wG,GAAEtB,GAAE97H,WAAWq7B,IAAG+hG,GAAE0pG,GAAE9mO,WAAWw3H,IAAG4F,GAAEv6G,GAAE7iB,WAAW81D,IAAGsnE,GAAE,UAAUp9H,KAAI,CAAC+7H,GAAEhvE,GAAEC,GAAEh+C,GAAE8sH,GAAEgrG,GAAEjkN,IAAG,IAAIm6P,GAAGh9Q,IAAG,OAAO,OAAM,oBAAoB,oBAAoB,MAAM,CAAC66I,KAAK9e,GAAEmZ,MAAMnoF,GAAEooF,QAAQnoF,GAAEu0N,QAAQvyQ,GAAEkrI,aAAape,GAAE0lJ,aAAa16C,GAAE26C,YAAY5+P,IAAG,YAAmCyuE,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAG,MAAM4H,EAAEq1Q,EAAa,uBAAuB/0O,GAAEg4O,GAAar1L,EAAEpgC,EAAE9C,EAAErhD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,OAAM,MAAM,CAAC88C,MAAMynC,EAAEqpD,OAAOzpF,EAAEowN,MAAMlzN,EAAEysF,KAAK9tI,GAAG,MAAMu6B,GAAEtnC,SAAS2uC,IAAG,IAAInmC,GAAEstD,GAAE0hE,GAAEx3H,SAASsxF,GAAGj2D,GAAEr7B,SAASkxD,GAAG68K,GAAE/tO,SAASouD,GAAGjwC,GAAEne,SAAS+M,GAAGtG,IAAIqvD,GAAE6zN,GAAeljR,GAAG+B,GAAEm5Q,EAAQ7rN,GAAE9vC,KAAI,MAAMpW,GAAE,IAAIvB,EAAEsgC,IAAGotF,GAAE,IAAI1tH,EAAE,EAAEsgC,IAAG5lB,GAAE,IAAI1a,EAAE,EAAE,EAAEsgC,IAAG,OAAO/rB,OAAO,OAAO,UAAU,QAAQ,CAAC,IAAIpa,GAAE,MAAM,IAAIsvH,WAAW,qDAAqD,IAAIxmC,GAAEpgC,GAAE,IAAI,iBAAiB1oD,KAAI8oF,GAAEy0L,GAAUv9Q,GAAE,WAAW0oD,GAAE60N,GAAUv9Q,GAAE,eAAe28I,GAAO3tB,KAAI,CAAC,MAAMppE,GAAEw7N,GAAgBphR,GAAEstD,GAAElmD,QAAE,EAAO0hF,IAAGvkF,GAAEqwQ,GAAG,MAAMrwQ,GAAE88Q,YAAY,QAAQ,MAAMjnQ,GAAEknQ,GAAkBthR,GAAEstD,GAAE1H,GAAErhD,GAAEmkD,IAAGzqD,GAAEzG,SAAS2hR,EAAQ/+P,GAAEmqC,KAAI+I,GAAE1H,GAAE/yB,GAAEr7B,MAAMq7B,GAAE50B,IAAG+wH,GAAEx3H,WAAWw3H,GAAElwF,KAAI,UAAU,OAAO,CAAC,IAAI9+B,GAAE,MAAM,IAAIsvH,WAAW,oDAAoD,MAAMxmC,GAAE,iBAAiB9oF,GAAEu9Q,GAAUv9Q,GAAE,gBAAW,EAAO,MAAM28I,GAAO3tB,KAAI,CAAC,IAAItmE,KAAI8lM,WAAWlhM,GAAE+kF,KAAK3pF,IAAG64N,GAAiBvhR,GAAEstD,GAAElmD,GAAE0hF,KAAInzE,GAAEne,MAAMme,GAAEne,SAASkxD,KAAIsmE,GAAEx3H,WAAWw3H,GAAElwF,IAAG,MAAM69G,GAAO9pH,KAAI,CAAC,IAAI61B,KAAI8lM,WAAWlhM,GAAE+kF,KAAK3pF,IAAG64N,GAAiBvhR,GAAEstD,GAAEimE,GAAEzqC,KAAInzE,GAAEne,MAAMme,GAAEne,SAASkxD,KAAI71B,GAAEr7B,WAAWq7B,GAAEiM,IAAG,cAAc,CAAC,GAAG69G,GAAO3tB,KAAI2tB,GAAO9pH,KAAI8pH,GAAO4oF,IAAG,MAAM,IAAIvlO,GAAE,MAAM,IAAIsvH,WAAW,6DAA6D,MAAMxmC,GAAE,iBAAiB9oF,GAAEu9Q,GAAUv9Q,GAAE,gBAAW,EAAO,MAAM28I,GAAO3tB,KAAI,CAAC,IAAItmE,KAAI8lM,WAAWlhM,GAAE+kF,KAAK3pF,IAAG64N,GAAiBvhR,GAAEstD,GAAElmD,GAAE0hF,KAAInzE,GAAEne,MAAMme,GAAEne,SAASkxD,KAAIsmE,GAAEx3H,WAAWw3H,GAAElwF,IAAG,MAAM69G,GAAO9pH,KAAI,CAAC,IAAI61B,KAAI8lM,WAAWlhM,GAAE+kF,KAAK3pF,IAAG64N,GAAiBvhR,GAAEstD,GAAEimE,GAAEzqC,KAAInzE,GAAEne,MAAMme,GAAEne,SAASkxD,KAAI71B,GAAEr7B,WAAWq7B,GAAEiM,IAAG,MAAM69G,GAAO4oF,KAAI,CAAC,IAAI78K,KAAI8lM,WAAWlhM,GAAE+kF,KAAK3pF,IAAG64N,GAAiBvhR,GAAEstD,GAAE/sC,GAAEuoE,KAAInzE,GAAEne,MAAMme,GAAEne,SAASkxD,KAAI68K,GAAE/tO,WAAW+tO,GAAEzmM,IAAG,OAAO,MAAM,CAACuiB,MAAM7pD,WAAWw3H,IAAGmjB,OAAO36I,WAAWq7B,IAAGimP,MAAMthR,WAAW+tO,IAAGlzF,KAAK76I,WAAWme,KAAI,YAA8Bne,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAG,GAAGo1Q,GAAwBniR,GAAG,CAAC,MAAM4iB,EAAE++P,EAAQ3hR,EAAE+oB,IAAGtiB,EAAEk7Q,EAAQ3hR,EAAEktD,IAAG7+C,GAAEszQ,EAAQ3hR,EAAEgmB,IAAG2oB,GAAEk2O,GAAwBp+Q,EAAEmc,GAAG0kB,GAAEiiP,GAAiB3mQ,EAAEnc,EAAE4H,GAAEijF,EAAEpgC,EAAE9C,EAAErhD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO83Q,GAAwBp+Q,EAAE,IAAIi9Q,EAAa,sBAAjB,CAAwCp8O,KAAIqH,GAAE,OAAO,EAAE,YAAuC3uC,GAAG,OAAO,IAAI0jR,EAAa,uBAAjB,EAA0C/B,EAAQ3hR,EAAEo9H,KAAIukJ,EAAQ3hR,EAAE+sD,KAAI40N,EAAQ3hR,EAAEgtD,KAAI20N,EAAQ3hR,EAAEgP,KAAI2yQ,EAAQ3hR,EAAE87H,IAAI6lJ,EAAQ3hR,EAAE8mO,IAAI66C,EAAQ3hR,EAAE6iB,IAAI8+P,EAAQ3hR,EAAE2mO,KAAIg7C,EAAQ3hR,EAAEkpC,KAAIy4O,EAAQ3hR,EAAEkwO,KAAI,YAA0BlwO,EAAEsxF,EAAEpgC,GAAG,OAAOsrN,GAAGtrN,EAAEurN,GAAGnrL,EAAEtxF,IAAI,YAA0BA,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE+yN,GAAiB7vL,EAAE,EAAE,IAAI,MAAM,CAAC9nC,KAAKxpD,EAAEupD,MAAM6E,EAAE9E,IAAI63N,GAAiBjwN,EAAE,EAAE03N,EAAe5oR,EAAEouD,KAAK,YAAuBpuD,EAAEsxF,EAAEpgC,GAAG,GAAGlxD,EAAEsxF,GAAGtxF,EAAEkxD,EAAE,MAAM,IAAI4mE,WAAY,uBAAsBxmC,QAAQtxF,QAAQkxD,KAAK,YAAuBlxD,EAAEsxF,EAAEpgC,GAAGw0N,GAAcp0L,EAAE,EAAE,IAAIo0L,GAAcx0N,EAAE,EAAE03N,EAAe5oR,EAAEsxF,IAAI,WAAyBtxF,EAAEsxF,EAAEpgC,GAAGq0N,EAAoBvlR,EAAEsxF,EAAEpgC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,WAAoBlxD,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,GAAG8iQ,GAAc1lR,EAAE,EAAE,IAAI0lR,GAAcp0L,EAAE,EAAE,IAAIo0L,GAAcx0N,EAAE,EAAE,IAAIw0N,GAAct3N,EAAE,EAAE,KAAKs3N,GAAc34Q,EAAE,EAAE,KAAK24Q,GAAc9iQ,EAAE,EAAE,KAAK,WAAwB5iB,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,IAAGqyO,GAAchhR,EAAEsxF,EAAEpgC,GAAGgwN,EAAW9yN,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,IAAG,WAA6B3uC,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,IAAG,GAAG+2O,GAAc1lR,EAAEq+Q,GAAGC,IAAIt+Q,IAAIq+Q,IAAI,SAA6Br+Q,EAAEsxF,EAAEpgC,EAAE,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAE,IAAI3uC,IAAIs+Q,IAAI,SAA6Bt+Q,EAAEsxF,EAAEpgC,EAAE,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAE,GAAG,MAAM,IAAImpF,WAAW,uCAAuC,YAAkCxmC,GAAG,GAAGtxF,WAAWsxF,EAAE6sL,KAAKn+Q,cAAcsxF,EAAE8sL,IAAI,MAAM,IAAItmJ,WAAW,sCAAsC,YAAwB93H,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,MAAM9+B,GAAEm+Q,GAAa3mR,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,UAAUwuB,KAAI,CAAC91D,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,IAAG,CAAC,IAAI01O,GAAGlnN,IAAG,MAAM,IAAIgiE,WAAW,kDAAkD,MAAM93H,GAAE48Q,GAAG9mN,IAAG,GAAG,QAAO91D,KAAIwI,GAAE,MAAM,IAAIsvH,WAAW,qDAAqD,YAA2B93H,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAG,OAAOA,OAAO,WAAW,QAAQ,CAAC,MAAM4H,IAAG27Q,GAAehqR,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,GAAG,GAAG,OAAM,MAAM,CAACinC,MAAM,EAAE8wF,OAAO,EAAE2mI,MAAM,EAAEzmI,KAAK,GAAG,MAAMlsG,GAAE,CAAC6a,KAAKxpD,EAAEupD,MAAM+nC,EAAEhoC,IAAI4H,GAAG5pB,GAAE,CAACkiB,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,GAAG,IAAIpa,GAAE8+B,GAAEkiB,KAAK7a,GAAE6a,KAAKsM,GAAEm0N,GAAWjqR,EAAEsxF,EAAEpgC,EAAE1oD,GAAE,EAAE,EAAE,EAAE,aAAagvH,IAAGwyJ,GAAel0N,GAAEtM,KAAKsM,GAAEvM,MAAMuM,GAAExM,IAAI8E,EAAErhD,EAAE6V,GAAG,GAAG,OAAM,MAAM,WAAW,CAACinC,MAAMrhD,GAAEmyI,OAAO,EAAE2mI,MAAM,EAAEzmI,KAAK,GAAG,CAAChxF,MAAM,EAAE8wF,OAAO,GAAGnyI,GAAE84Q,MAAM,EAAEzmI,KAAK,GAAG,IAAIx/G,GAAEiM,GAAEiiB,MAAM5a,GAAE4a,MAAM,GAAGiuE,KAAInpH,KAAI7F,IAAG6F,GAAEgtB,IAAG,GAAGhtB,IAAGynD,GAAEm0N,GAAWjqR,EAAEsxF,EAAEpgC,EAAE1oD,GAAE6yB,GAAE,EAAE,EAAE,aAAam8F,IAAGwyJ,GAAel0N,GAAEtM,KAAKsM,GAAEvM,MAAMuM,GAAExM,IAAI8E,EAAErhD,EAAE6V,GAAG,OAAM,MAAM,WAAW,CAACinC,MAAMrhD,GAAEmyI,OAAOt/G,GAAEimP,MAAM,EAAEzmI,KAAK,GAAG,CAAChxF,MAAM,EAAE8wF,OAAOt/G,GAAE,GAAG7yB,GAAE84Q,MAAM,EAAEzmI,KAAK,GAAGrjB,KAAInpH,KAAIgtB,IAAGhtB,GAAEgtB,MAAKhtB,KAAI7F,IAAG6F,GAAEgtB,GAAE,GAAGhtB,IAAGynD,GAAEm0N,GAAWjqR,EAAEsxF,EAAEpgC,EAAE1oD,GAAE6yB,GAAE,EAAE,EAAE,cAAc,IAAI0yM,GAAE,EAAE,OAAOA,GAAEj4K,GAAEvM,QAAQjiB,GAAEiiB,MAAMjiB,GAAEgiB,IAAIwM,GAAExM,IAAIj7C,GAAE,GAAGynD,GAAExM,KAAKs/N,EAAethP,GAAEkiB,KAAKliB,GAAEiiB,OAAOjiB,GAAEgiB,KAAKhiB,GAAEgiB,KAAKs/N,EAAe9yN,GAAEtM,KAAKsM,GAAEvM,OAAOuM,GAAExM,KAAK,cAAcjuB,IAAG,GAAG7yB,GAAEA,GAAE,GAAG,CAACqhD,MAAMrhD,GAAEmyI,OAAOt/G,GAAEimP,MAAM,EAAEzmI,KAAKkzF,QAAO,WAAW,MAAM,CAAC,IAAI1/N,GAAEsgC,GAAErH,GAAE0iP,GAAehqR,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,GAAG,GAAG+rB,GAAE,CAAC6a,KAAKxpD,EAAEupD,MAAM+nC,EAAEhoC,IAAI4H,GAAG7iD,GAAE,CAACm7C,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,GAAG0kB,GAAE,IAAIqH,GAAE,CAAC6a,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,GAAGvU,GAAE,CAACm7C,KAAKxpD,EAAEupD,MAAM+nC,EAAEhoC,IAAI4H,GAAG5pB,IAAE,GAAI,IAAI9+B,GAAEqgR,GAAUx6Q,GAAEm7C,KAAKn7C,GAAEk7C,MAAMl7C,GAAEi7C,KAAKu/N,GAAUl6O,GAAE6a,KAAK7a,GAAE4a,MAAM5a,GAAE2a,KAAK,QAAQtpD,GAAE2uC,GAAE6a,KAAKxpD,GAAEqO,GAAEm7C,OAAOxpD,GAAEwI,IAAGmgR,GAAS3oR,IAAG,IAAI,IAAI,IAAI81D,GAAE,EAAE,MAAM,aAAaA,GAAE6mN,GAAGn0Q,GAAE,GAAGA,IAAG,GAAGstD,IAAGxuB,GAAE9+B,IAAG8+B,GAAE,CAACuiB,MAAM,EAAE8wF,OAAO,EAAE2mI,MAAMxrN,GAAE+kF,KAAKryI,YAAW,MAAM,IAAI4sC,MAAM,uBAAuB,YAAwBp1C,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,IAAG,IAAI0hE,GAAE/wH,EAAEzG,EAAEq7B,GAAEhtB,GAAEijF,EAAEy8I,GAAEp/L,GAAEuiB,EAAElrC,GAAEshB,GAAE8mB,EAAEjwC,GAAE3V,GAAEuE,EAAE6C,GAAEkmD,GAAElzC,EAAE,MAAMm5G,GAAE4qJ,GAAa,EAAE,EAAE,EAAE,EAAEnvJ,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,IAAG4nH,IAAGuE,GAAE1gG,IAAG0gG,GAAEgyG,IAAGhyG,GAAE/1G,IAAG+1G,GAAE59G,IAAG49G,GAAEnsH,IAAGmsH,GAAE,IAAIhzG,GAAE,EAAE,KAAKkgQ,UAAUlgQ,GAAEg3P,KAAKvoJ,GAAEwoJ,OAAO3kP,GAAEiuE,OAAOykI,GAAE0yC,YAAYz6P,GAAE06P,YAAYviQ,GAAEwiQ,WAAW/wQ,IAAGs5Q,GAAY1xJ,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,KAAI,MAAK,MAAM,IAAIwlC,MAAM,kEAAkE,OAAOoiF,IAAGuE,GAAE1gG,IAAG0gG,GAAEgyG,IAAGhyG,GAAE/1G,IAAG+1G,GAAE59G,IAAG49G,GAAEnsH,IAAGmsH,GAAE,CAACmZ,MAAM1d,GAAE2d,QAAQ95G,GAAEkmP,QAAQxzC,GAAE7zF,aAAal0H,GAAEw7P,aAAarjQ,GAAEsjQ,YAAY7xQ,IAAG,YAA2B0hF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAG,MAAM4H,EAAErO,WAAWkxD,EAAEogC,GAAG,IAAI3iD,GAAE,EAAErH,GAAE,EAAE9+B,GAAExI,WAAWA,YAAYqO,EAAEuvQ,KAAK9nN,GAAE91D,WAAWA,YAAYA,SAASqO,EAAEuvQ,IAAIA,KAAKpmJ,GAAEx3H,WAAWA,YAAYA,SAASqO,EAAEwvQ,IAAID,KAAKviP,GAAEr7B,WAAWA,SAASqO,EAAEyvQ,KAAK,QAAQ5oI,MAAMvmG,GAAEwmG,QAAQ7tG,GAAEi6O,QAAQlmP,GAAE6+G,aAAa1iB,GAAEgqJ,aAAa1rN,GAAE2rN,YAAYj5Q,IAAGq+Q,GAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAExrP,GAAEm8F,GAAE1hE,GAAEttD,GAAE4lD,EAAErhD,EAAEtG,IAAIyjR,GAAgB,EAAEv7O,GAAErH,GAAEjM,GAAEm8F,GAAE1hE,GAAEttD,GAAEoa,GAAG,YAA+B5iB,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,IAAG,IAAIkwE,GAAEp9H,EAAE+sD,GAAEukC,EAAEtkC,GAAEkE,GAAGgkF,MAAMlmI,GAAEmmI,QAAQrZ,GAAEylJ,QAAQz6C,GAAE5sF,aAAar3H,GAAE2+P,aAAa76C,EAAE86C,YAAYv4O,IAAGihP,GAAe/7N,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAE6oF,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,IAAG,MAAMsgO,GAAEy2C,GAAa,EAAE,EAAE,EAAE,EAAE33Q,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,EAAEz9L,IAAG8gP,GAAe1iP,GAAE9+B,GAAEstD,GAAEsnE,GAAErwE,GAAEC,OAAMkjL,OAAM1mL,KAAK4zE,GAAE7zE,MAAMwD,GAAEzD,IAAI0D,IAAGm8N,EAAe/rJ,GAAErwE,GAAEC,GAAEkjL,OAAMh7F,MAAMlmI,GAAEmmI,QAAQrZ,GAAEylJ,QAAQz6C,GAAE5sF,aAAar3H,GAAE2+P,aAAa76C,EAAE86C,YAAYv4O,IAAGghP,IAAiBh6C,GAAElhO,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,EAAEz9L,GAAEngB,MAAK,MAAM8mK,GAAEizF,GAAmB1lJ,GAAErwE,GAAEC,GAAE+uE,IAAG/xE,GAAE84N,GAAmBx7O,GAAE9+B,GAAEstD,GAAEimE,IAAGi2G,GAAEo4C,GAAyB,MAAMrhQ,IAAG+oN,GAAEu4C,GAAYn9N,IAAG4kL,GAAE+3C,YAAY73C,GAAE,IAAInoL,MAAM9T,GAAE4kG,OAAOksF,GAAEy6C,MAAM90P,GAAEquH,KAAKjlF,IAAGk0N,GAAkB/tJ,GAAE8zD,GAAE7lI,GAAE8nL,IAAG,QAAQj3F,KAAKjlF,GAAEs/E,MAAMlmI,GAAEmmI,QAAQrZ,GAAEylJ,QAAQz6C,GAAE5sF,aAAar3H,GAAE2+P,aAAa76C,EAAE86C,YAAYv4O,IAAGghP,GAAgBt0N,GAAE5mD,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,EAAEz9L,GAAEngB,KAAI,CAAC8gC,MAAM9T,GAAE4kG,OAAOksF,GAAEy6C,MAAM90P,GAAEquH,KAAKjlF,GAAEs/E,MAAMlmI,GAAEmmI,QAAQrZ,GAAEylJ,QAAQz6C,GAAE5sF,aAAar3H,GAAE2+P,aAAa76C,EAAE86C,YAAYv4O,IAAG,YAAiCooD,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEoD,GAAG,MAAM7H,EAAEne,WAAWkxD,EAAEogC,GAAG,GAAGtxF,QAAQme,EAAEq/P,IAAI,MAAM,CAAC3zN,MAAM,EAAE8wF,OAAO,EAAE2mI,MAAM,EAAEzmI,KAAK,EAAE3F,MAAM,EAAEC,QAAQ,EAAEosI,QAAQ,EAAErnI,aAAa,EAAEsnI,aAAa,EAAEC,YAAY,GAAG,MAAM7xQ,GAAE8zQ,EAAa,sBAAsB3nJ,GAAE,IAAInsH,GAAE0hF,GAAGvoE,GAAE,IAAInZ,GAAEshD,GAAGhE,GAAEk2N,GAAoBh1N,EAAE2tE,GAAEhvH,GAAGqwH,GAAEgmJ,GAAoBh1N,EAAErlC,GAAEhc,GAAG,IAAI88C,MAAMkD,GAAE4tF,OAAO3tF,GAAEs0N,MAAMtyQ,GAAE6rI,KAAK/e,IAAGwtJ,GAAsB3H,EAAQz0N,GAAEzmD,GAAGk7Q,EAAQz0N,GAAE7+C,GAAGszQ,EAAQz0N,GAAEve,GAAGgzO,EAAQz0N,GAAE5lB,GAAGq6O,EAAQz0N,GAAE1kD,GAAGm5Q,EAAQz0N,GAAE4I,IAAG6rN,EAAQz0N,GAAEsqE,IAAGmqJ,EAAQz0N,GAAE7xB,IAAGsmP,EAAQz0N,GAAE6gL,GAAG4zC,EAAQvkJ,GAAE32H,GAAGk7Q,EAAQvkJ,GAAE/uH,GAAGszQ,EAAQvkJ,GAAEzuF,GAAGgzO,EAAQvkJ,GAAE91F,GAAGq6O,EAAQvkJ,GAAE50H,GAAGm5Q,EAAQvkJ,GAAEtnE,IAAG6rN,EAAQvkJ,GAAE5F,IAAGmqJ,EAAQvkJ,GAAE/hG,IAAGsmP,EAAQvkJ,GAAE2wG,GAAGhhO,EAAE6V,EAAEoD,GAAG,MAAM8gN,GAAEyiD,GAAiBxtJ,GAAE3tE,EAAErhD,EAAEggD,GAAEC,GAAEh+C,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI6T,GAAE7iB,WAAWkxD,EAAE41K,IAAG,MAAMH,GAAEo8C,GAA4Bj8C,GAAE14K,EAAErhD,KAAK00Q,YAAY5+P,GAAEg4H,KAAK/e,IAAG4tJ,EAAkB7mQ,GAAE8jN,KAAI,MAAMzxF,MAAMhsG,GAAEisG,QAAQ+6F,GAAEqxC,QAAQ1xF,GAAE31C,aAAalwF,GAAEw3N,aAAaxvC,GAAEyvC,YAAY3vC,IAAGo4C,GAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAElqR,WAAW6iB,IAAG,QAAQ,MAAM,CAACgnC,MAAMkD,GAAE4tF,OAAO3tF,GAAEs0N,MAAMtyQ,GAAE6rI,KAAK/e,GAAEoZ,MAAMhsG,GAAEisG,QAAQ+6F,GAAEqxC,QAAQ1xF,GAAE31C,aAAalwF,GAAEw3N,aAAaxvC,GAAEyvC,YAAY3vC,IAAG,YAA+B9xO,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,GAAG,MAAMnc,EAAE64Q,GAAG/0M,OAAQ,CAACvqE,GAAEsxF,MAAK,MAAMvkF,GAAEukF,GAAE,GAAG1uE,GAAE0uE,GAAE,GAAU,MAAM,gBAAXA,GAAE,KAA6BpgC,GAAG9C,EAAExY,SAAShzB,KAAI5iB,GAAEX,KAAKujB,GAAE7V,IAAG/M,IAAI,IAAI,IAAIqO,GAAEi8Q,GAAgBh5L,EAAE,cAAcpgC,EAAE,QAAQ,GAAG9C,EAAExY,SAASvnC,IAAG,MAAM,IAAIypH,WAAY,8BAA6BrxH,EAAE0mD,KAAK,cAAc9+C,MAAK,MAAMsgC,GAAE47O,GAA4Bj5L,GAAG,IAAIhqD,GAAEkjP,GAAuBl5L,EAAE,SAAS,UAAUtxF,IAAIsnC,GAAE,SAAoCtnC,IAAG,OAAOA,QAAO,OAAO,MAAM,YAAY,QAAQ,MAAM,WAAW,WAAW,MAAM,gBAAgB,YAAY,MAAM,mBAAmB,OAAOA,IAApL,CAAwLsnC,KAAI,MAAM9+B,GAAE8hR,GAAgBh5L,EAAE,eAAepgC,EAAEnkD,GAAG,GAAGqhD,EAAExY,SAASptC,IAAG,MAAM,IAAIsvH,WAAY,+BAA8BrxH,EAAE0mD,KAAK,cAAc3kD,MAAK,MAAMstD,GAAEs0N,GAAyBxnQ,EAAEpa,IAAG,GAAG,cAAa6F,GAAEynD,IAAGs0N,GAAyB/7Q,GAAE7F,MAAK6F,GAAE,MAAM,IAAIypH,WAAY,eAAczpH,0CAAyC7F,MAAK,MAAMgvH,GAAE,CAACuoJ,KAAK,GAAGC,OAAO,GAAG12K,OAAO,GAAGm3K,YAAY,IAAIC,YAAY,IAAIC,WAAW,KAAKn4Q,IAAG,YAAO,QAAYiiR,GAAkC97O,GAAE6oF,IAAE,GAAI,CAACqyJ,YAAYx7Q,GAAEwzQ,kBAAkBlzO,GAAEi4O,aAAat/O,GAAEojP,aAAaliR,IAAG,YAAmCxI,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMxrC,EAAE,aAAY,EAAG,EAAEnc,EAAE8hR,GAAkBr3N,GAAG7iD,EAAEs8Q,GAAsB3qR,EAAEqqR,GAAYj8N,GAAG,OAAO,GAAG,aAAa,UAAUzf,GAAEgzO,EAAQrwL,EAAEvkF,GAAGu6B,GAAEq6O,EAAQl7Q,EAAEsG,GAAG,IAAImoI,MAAM1sI,GAAE2sI,QAAQr/E,GAAEyrN,QAAQ/pJ,GAAE0iB,aAAa7+G,GAAEmmP,aAAazzC,GAAE0zC,YAAYz7P,IAAG4kQ,GAAkBj8O,GAAErH,GAAEj5B,EAAEwzQ,kBAAkBxzQ,EAAEq8Q,aAAar8Q,EAAEw7Q,YAAYx7Q,EAAEu4Q,cAAc,OAAO,IAAIlD,EAAa,uBAAjB,CAAyC,EAAE,EAAE,EAAE,EAAE9gQ,EAAEpa,GAAEoa,EAAEkzC,GAAElzC,EAAE40G,GAAE50G,EAAEyY,GAAEzY,EAAEmrN,GAAEnrN,EAAEoD,IAAG,YAAqChmB,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,aAAY,EAAG,EAAE6V,EAAE+mQ,GAAez4N,GAAGzqD,EAAEk7Q,EAAQrwL,EAAEtrE,IAAG6kQ,GAAyBpkR,EAAEk7Q,EAAQ/+P,EAAEoD,IAAG,oCAAoC,MAAM3X,GAAEg8Q,GAAYj8N,GAAGzf,GAAEg8O,GAAsB3qR,EAAEqO,GAAE,OAAO,GAAG,MAAM,OAAOA,GAAEw7Q,YAAYl7O,GAAEk7O,YAAY,IAAIhgO,MAAMviB,GAAEqzG,OAAOnyI,GAAE84Q,MAAMxrN,GAAE+kF,KAAKrjB,IAAGsyJ,GAAkBrjR,EAAE6qF,EAAE1uE,EAAEvU,IAAG,cAAQsgC,GAAE+7O,cAAc,OAAM7I,qBAAqBh4N,MAAMviB,GAAEqzG,OAAOnyI,GAAE84Q,MAAMxrN,GAAE+kF,KAAKrjB,IAAGqvJ,GAAcv/O,GAAE9+B,GAAEstD,GAAE0hE,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE7oF,GAAEkzO,kBAAkBlzO,GAAE+7O,aAAa/7O,GAAEi4O,aAAat1L,IAAW,IAAIoyL,EAAa,uBAAjB,CAAyC32Q,EAAEu6B,GAAEv6B,EAAEvE,GAAEuE,EAAE+oD,GAAE/oD,EAAEyqH,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,YAAyCx3H,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,aAAY,EAAG,EAAE6V,EAAEkoQ,GAAmB55N,GAAG/yC,EAAEwjQ,EAAQrwL,EAAEtrE,IAAG6kQ,GAAyB1sQ,EAAEwjQ,EAAQ/+P,EAAEoD,IAAG,oCAAoC,MAAMpW,GAAEy6Q,GAAYj8N,GAAG2tE,GAAE4uJ,GAAsB3qR,EAAE4P,GAAE,WAAW,GAAG,aAAa,OAAO,IAAIi6C,MAAM9gC,GAAE4xH,OAAOztF,GAAEo0N,MAAMlkJ,GAAEyd,KAAK9tF,GAAEmoF,MAAMloF,GAAEmoF,QAAQnmI,GAAEuyQ,QAAQzlJ,GAAEoe,aAAa4sF,GAAE06C,aAAa3+P,GAAE4+P,YAAY96C,IAAG2iD,GAAsB3H,EAAQrwL,EAAE7qF,GAAGk7Q,EAAQrwL,EAAEjjF,GAAGszQ,EAAQrwL,EAAE3iD,GAAGgzO,EAAQrwL,EAAEhqD,GAAGq6O,EAAQrwL,EAAE9oF,GAAGm5Q,EAAQrwL,EAAEx7B,IAAG6rN,EAAQrwL,EAAEkmC,IAAGmqJ,EAAQrwL,EAAEj2D,IAAGsmP,EAAQrwL,EAAEy8I,GAAG4zC,EAAQ/+P,EAAEnc,GAAGk7Q,EAAQ/+P,EAAEvU,GAAGszQ,EAAQ/+P,EAAE+rB,GAAGgzO,EAAQ/+P,EAAE0kB,GAAGq6O,EAAQ/+P,EAAEpa,GAAGm5Q,EAAQ/+P,EAAEkzC,IAAG6rN,EAAQ/+P,EAAE40G,IAAGmqJ,EAAQ/+P,EAAEyY,IAAGsmP,EAAQ/+P,EAAEmrN,GAAG5vN,EAAE49G,GAAE8tJ,YAAYj6Q,IAAG,MAAMs5B,GAAEo5O,GAAuBhxL,GAAG,QAAEznC,MAAM9gC,GAAE4xH,OAAOztF,GAAEo0N,MAAMlkJ,GAAEyd,KAAK9tF,GAAEmoF,MAAMloF,GAAEmoF,QAAQnmI,GAAEuyQ,QAAQzlJ,GAAEoe,aAAa4sF,GAAE06C,aAAa3+P,GAAE4+P,YAAY96C,IAAGkgD,GAAc99P,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,GAAE5qG,GAAE8lJ,kBAAkB9lJ,GAAE2uJ,aAAa3uJ,GAAE6qJ,aAAa19O,OAAM2xG,KAAK9tF,GAAEmoF,MAAMloF,GAAEmoF,QAAQnmI,GAAEuyQ,QAAQzlJ,GAAEoe,aAAa4sF,GAAE06C,aAAa3+P,GAAE4+P,YAAY96C,IAAGujD,GAAgBn9N,GAAEC,GAAEh+C,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,GAAE5qG,GAAE8tJ,cAAqB,IAAInG,EAAa,uBAAjB,CAAyC32Q,EAAEgc,GAAEhc,EAAEmgD,GAAEngD,EAAEqwH,GAAErwH,EAAEggD,GAAEhgD,EAAEigD,GAAEjgD,EAAEiC,GAAEjC,EAAE+uH,GAAE/uH,EAAE+5N,GAAE/5N,EAAE8V,GAAE9V,EAAE45N,IAAG,YAAqC3mO,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,aAAY,EAAG,EAAE6V,EAAEmoQ,GAAe75N,GAAGzqD,EAAEkkR,GAAsB3qR,EAAEqqR,GAAYj8N,GAAG,OAAO,GAAG,aAAa,QAAQ,IAAI8mF,MAAM7mI,GAAE8mI,QAAQxmG,GAAE4yO,QAAQv7P,GAAEk0H,aAAa/7H,GAAEqjQ,aAAa5xQ,GAAE6xQ,YAAY1lJ,IAAGouJ,GAAexI,EAAQrwL,EAAEhqD,GAAGq6O,EAAQrwL,EAAE9oF,GAAGm5Q,EAAQrwL,EAAEx7B,IAAG6rN,EAAQrwL,EAAEkmC,IAAGmqJ,EAAQrwL,EAAEj2D,IAAGsmP,EAAQrwL,EAAEy8I,GAAG4zC,EAAQ/+P,EAAE0kB,GAAGq6O,EAAQ/+P,EAAEpa,GAAGm5Q,EAAQ/+P,EAAEkzC,IAAG6rN,EAAQ/+P,EAAE40G,IAAGmqJ,EAAQ/+P,EAAEyY,IAAGsmP,EAAQ/+P,EAAEmrN,IAAI,QAAE74F,MAAM7mI,GAAE8mI,QAAQxmG,GAAE4yO,QAAQv7P,GAAEk0H,aAAa/7H,GAAEqjQ,aAAa5xQ,GAAE6xQ,YAAY1lJ,IAAG8qJ,GAAc,EAAE,EAAE,EAAE,EAAEx4Q,GAAEsgC,GAAE3oB,GAAE7H,GAAEvO,GAAEmsH,GAAEt1H,EAAEo7Q,kBAAkBp7Q,EAAEikR,aAAajkR,EAAEmgR,iBAAiB1xI,MAAM7mI,GAAE8mI,QAAQxmG,GAAE4yO,QAAQv7P,GAAEk0H,aAAa/7H,GAAEqjQ,aAAa5xQ,GAAE6xQ,YAAY1lJ,IAAGmuJ,GAAgB,EAAE77Q,GAAEsgC,GAAE3oB,GAAE7H,GAAEvO,GAAEmsH,GAAEt1H,EAAEojR,cAAqB,IAAInG,EAAa,uBAAjB,CAAyC,EAAE,EAAE,EAAE,EAAE32Q,EAAEsB,GAAEtB,EAAE4hC,GAAE5hC,EAAEiZ,GAAEjZ,EAAEoR,GAAEpR,EAAE6C,GAAE7C,EAAEgvH,IAAG,YAA0C/7H,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,aAAY,EAAG,EAAE6V,EAAEooQ,GAAoB95N,GAAGzqD,EAAEk7Q,EAAQrwL,EAAEtrE,IAAG6kQ,GAAyBpkR,EAAEk7Q,EAAQ/+P,EAAEoD,IAAG,qCAAqC,MAAM3X,GAAEg8Q,GAAYj8N,GAAGzf,GAAEg8O,GAAsB3qR,EAAEqO,GAAE,OAAO,CAAC,OAAO,OAAO,QAAQ,QAAQA,GAAEw7Q,YAAYl7O,GAAEk7O,YAAY,MAAMviP,GAAEk7O,GAAe/7Q,EAAE,CAAC,YAAY,SAAS+B,GAAEi6Q,GAAsBnxL,EAAEhqD,GAAE,IAAI9+B,GAAE8gD,IAAI,EAAE,MAAMwM,GAAEutN,GAAuB58Q,EAAE+B,IAAGgvH,GAAEirJ,GAAsB7/P,EAAE0kB,GAAE,IAAIkwF,GAAEluE,IAAI,EAAE,MAAMjuB,GAAEgoP,GAAuB58Q,EAAE+wH,IAAG,IAAI3tE,MAAMkkL,GAAEpzF,OAAOx8H,IAAG2rQ,GAAkBrjR,EAAEqvD,GAAEz6B,GAAEhtB,IAAG,gBAAUsgC,GAAE+7O,cAAc,OAAM7I,qBAAqBh4N,MAAMkkL,GAAEpzF,OAAOx8H,IAAG0oQ,GAAc94C,GAAE5vN,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEwwB,GAAEkzO,kBAAkBlzO,GAAE+7O,aAAa/7O,GAAEi4O,aAAa9wN,KAAW,IAAI4tN,EAAa,uBAAjB,CAAyC32Q,EAAEghO,GAAEhhO,EAAEoR,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,YAAyCne,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMxrC,EAAE,aAAY,EAAG,EAAEnc,EAAEwkR,GAAwB/5N,GAAG7iD,EAAEszQ,EAAQrwL,EAAEtrE,IAAG6kQ,GAAyBx8Q,EAAEszQ,EAAQl7Q,EAAEuf,IAAG,oCAAoC,MAAM2oB,GAAE07O,GAAYj8N,GAAG9mB,GAAEqjP,GAAsB3qR,EAAE2uC,GAAE,WAAW,GAAG,aAAa,QAAQA,GAAEk7O,YAAYviP,GAAEuiP,YAAY,MAAMrhR,GAAEm5Q,EAAQrwL,EAAEvkF,GAAG+oD,GAAE6rN,EAAQl7Q,EAAEsG,GAAG,IAAIyqH,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEhzG,GAAEq0G,GAAErwE,GAAEC,GAAE,GAAG,YAAW68N,aAAa,aAAYA,aAAa,YAAWA,aAAa,WAAUA,YAAYryJ,GAAE,EAAEn8F,GAAE,EAAE0yM,GAAE,EAAE5vN,GAAE,IAAI+2H,MAAMtlI,GAAEulI,QAAQpZ,GAAEwlJ,QAAQx4P,GAAEmxH,aAAa9c,GAAEokJ,aAAaz0N,GAAE00N,YAAYz0N,IAAG49N,GAAkBpiR,GAAEstD,GAAExuB,GAAEu6O,kBAAkBv6O,GAAEojP,aAAapjP,GAAEuiP,YAAYviP,GAAEs/O,mBAAmB,CAAC,MAAM5mR,GAAE2hR,EAAQrwL,EAAEpkC,IAAG,IAAIg+N,GAAelrR,GAAE2hR,EAAQl7Q,EAAEymD,KAAI,MAAM,IAAI4qE,WAAW,oLAAoLjuE,MAAM2tE,GAAEmjB,OAAOt/G,GAAEimP,MAAMvzC,GAAElzF,KAAK18H,GAAE+2H,MAAMtlI,GAAEulI,QAAQpZ,GAAEwlJ,QAAQx4P,GAAEmxH,aAAa9c,GAAEokJ,aAAaz0N,GAAE00N,YAAYz0N,IAAGm+N,GAAwB3iR,GAAEstD,GAAE91D,GAAEqO,EAAEi5B,GAAEuiP,YAAYl7O,OAAMkb,MAAM2tE,GAAEmjB,OAAOt/G,GAAEimP,MAAMvzC,GAAElzF,KAAK18H,GAAE+2H,MAAMtlI,GAAEulI,QAAQpZ,GAAEwlJ,QAAQx4P,GAAEmxH,aAAa9c,GAAEokJ,aAAaz0N,GAAE00N,YAAYz0N,IAAG65N,GAAcrvJ,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEhzG,GAAEq0G,GAAErwE,GAAEC,GAAE1lB,GAAEu6O,kBAAkBv6O,GAAEojP,aAAapjP,GAAEs/O,aAAat1L,MAAMznC,MAAM2tE,GAAEmjB,OAAOt/G,GAAEimP,MAAMvzC,GAAElzF,KAAK18H,GAAE+2H,MAAMtlI,GAAEulI,QAAQpZ,GAAEwlJ,QAAQx4P,GAAEmxH,aAAa9c,GAAEokJ,aAAaz0N,GAAE00N,YAAYz0N,IAAGo+N,GAA0B5zJ,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEhzG,GAAEq0G,GAAErwE,GAAEC,GAAE1lB,GAAEu6O,kBAAkBv6O,GAAEojP,aAAapjP,GAAEs/O,aAAat1L,IAAI,OAAO,IAAIoyL,EAAa,uBAAjB,CAAyC9gQ,EAAE40G,GAAE50G,EAAEyY,GAAEzY,EAAEmrN,GAAEnrN,EAAEzE,GAAEyE,EAAEhT,GAAEgT,EAAEm5G,GAAEn5G,EAAEmG,GAAEnG,EAAEw6G,GAAEx6G,EAAEmqC,GAAEnqC,EAAEoqC,IAAG,YAAoBhtD,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,IAAG,IAAIsgC,GAAE3uC,EAAEsnC,GAAEgqD,EAAE9oF,GAAE0oD,EAAE4E,GAAElzC,EAAE40G,GAAE/wH,EAAE,OAAOkoC,IAAGyf,EAAE9mB,IAAGv6B,IAAIy8C,KAAK7a,GAAE4a,MAAMjiB,IAAG0hP,EAAoBr6O,GAAErH,OAAMkiB,KAAK7a,GAAE4a,MAAMjiB,GAAEgiB,IAAI9gD,IAAG6iR,GAAgB18O,GAAErH,GAAE9+B,GAAE6F,KAAImpH,IAAG,EAAE1hE,GAAEttD,IAAGgvH,KAAIhuE,KAAK7a,GAAE4a,MAAMjiB,GAAEgiB,IAAI9gD,IAAG2gR,EAAex6O,GAAErH,GAAE9+B,KAAI,CAACghD,KAAK7a,GAAE4a,MAAMjiB,GAAEgiB,IAAI9gD,IAAG,YAAiBxI,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,IAAG,IAAI0hE,GAAEx3H,EAAEq7B,GAAEi2D,EAAEy8I,GAAE78K,EAAElrC,GAAEooC,EAAEjwC,GAAEpR,EAAE6C,GAAEgT,EAAE40G,IAAG/wH,EAAE40B,IAAGhtB,GAAE0/N,IAAGp/L,GAAE3oB,IAAGshB,GAAEnpB,IAAG3V,GAAEoH,IAAGkmD,GAAE,IAAIimE,GAAE,EAAE,QAAQktJ,UAAUltJ,GAAEgkJ,KAAKvoJ,GAAEwoJ,OAAO3kP,GAAEiuE,OAAOykI,GAAE0yC,YAAYz6P,GAAE06P,YAAYviQ,GAAEwiQ,WAAW/wQ,IAAGs5Q,GAAY1xJ,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,KAAI,CAACq5Q,UAAUltJ,GAAEgkJ,KAAKvoJ,GAAEwoJ,OAAO3kP,GAAEiuE,OAAOykI,GAAE0yC,YAAYz6P,GAAE06P,YAAYviQ,GAAEwiQ,WAAW/wQ,IAAG,YAAqB0hF,EAAEpgC,EAAE9C,EAAExrC,EAAEnc,EAAE4H,EAAEsgC,EAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEqB,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,IAAG,MAAMgrG,GAAEsjD,GAAyBkB,GAA2Bh6L,EAAEpgC,EAAE9C,EAAExrC,EAAEnc,EAAE4H,EAAEsgC,EAAErH,GAAE9+B,GAAEstD,IAAGw1N,GAA2B9zJ,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEqB,GAAErwE,GAAEC,GAAEh+C,KAAI,IAAI6T,GAAE8jN,GAAEz9L,GAAEgnM,GAAErgD,GAAE7lI,GAAEgoL,EAAEF,GAAE/7L,GAAE8wL,GAAE,GAAG/qG,GAAE,GAAGsmJ,GAAetmJ,IAAG,CAAC,MAAM/uH,GAAE22Q,EAAa,uBAAuB36P,GAAE44P,EAAQ7lJ,GAAE91G,IAAGknC,GAAE,IAAIngD,GAAEukF,EAAEpgC,EAAE9C,EAAExrC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG4J,GAAE,IAAIzf,GAAEyqH,GAAEn8F,GAAE0yM,GAAE5vN,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGy3C,GAAE,iBAAiB7sC,GAAEg9P,GAAUh9P,GAAE,gBAAW,EAAOi2C,GAAE4qN,GAAgB7gQ,GAAE+yG,GAAE5uE,QAAE,EAAO0I,IAAG65K,GAAEm6C,GAAgB7gQ,GAAEi2C,GAAExyC,QAAE,EAAOopC,IAAG9I,GAAEs9N,GAAyB,MAAMtjD,IAAG1mE,GAAEg9G,GAAG,MAAMh9G,GAAEypH,YAAY/8N,KAAIjD,MAAMhnC,GAAE83H,OAAOgsF,GAAE26C,MAAMp4O,GAAE2xG,KAAKq1F,IAAG45C,GAAkB/gQ,GAAE+yG,GAAE2zG,GAAErvE,OAAMvlB,KAAKq1F,GAAEh7F,MAAM26C,GAAE16C,QAAQnrF,GAAEu3N,QAAQvvC,EAAE93F,aAAa43F,GAAE0vC,aAAazrO,GAAE0rO,YAAY56C,IAAGqjD,GAAgBh6C,GAAElwO,MAAMA,SAASyG,GAAGzG,SAAS4P,KAAI5P,MAAMA,SAASqO,GAAGrO,SAAS+7H,KAAI/7H,MAAMA,SAAS2uC,GAAG3uC,SAASo9H,KAAIp9H,MAAMA,SAASsnC,IAAGtnC,SAAS+sD,KAAI/sD,MAAMA,SAASwI,IAAGxI,SAASgtD,KAAIhtD,MAAMA,SAAS81D,IAAG91D,SAASgP,KAAI83N,SAAQ,CAAC,MAAM9mO,GAAE0jR,EAAa,sBAAsBl3P,GAAEm1P,EAAQ7lJ,GAAE5uE,IAAG0I,GAAE+rN,EAAQ7lJ,GAAE91G,IAAGg5C,GAAEuqN,GAAiB5H,EAAQ7lJ,GAAE/yG,IAAGyD,GAAEopC,GAAE07B,EAAEpgC,EAAE9C,EAAExrC,EAAEnc,EAAE4H,EAAEsgC,EAAErH,GAAE9+B,GAAEstD,IAAG25K,GAAE85C,GAAiB,IAAIvpR,GAAEg/D,IAAGxyC,GAAEopC,GAAE4hE,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAEmsH,GAAEqB,GAAErwE,GAAEC,GAAEh+C,IAAG,SAAS83N,IAAG,cAAa,aAAY,YAAWjkN,GAAE,EAAE8jN,GAAE,EAAEz9L,GAAE,EAAEgnM,GAAE,IAAIh7F,MAAM26C,GAAE16C,QAAQnrF,GAAEu3N,QAAQvvC,EAAE93F,aAAa43F,GAAE0vC,aAAazrO,GAAE0rO,YAAY56C,IAAG+jD,GAAkBjJ,EAAQ7lJ,GAAE/uH,GAAG0iO,GAAE,EAAE,aAAa3I,GAAE,kBAAkBj9K,MAAMhnC,GAAE83H,OAAOgsF,GAAE26C,MAAMp4O,GAAE2xG,KAAKq1F,GAAEh7F,MAAM26C,GAAE16C,QAAQnrF,GAAEu3N,QAAQvvC,EAAE93F,aAAa43F,GAAE0vC,aAAazrO,GAAE0rO,YAAY56C,IAAGskD,GAAwBxJ,EAAQ7lJ,GAAE/uH,GAAG0iO,GAAEjjN,GAAEopC,GAAEkxK,GAAEs2C,GAAG,YAAY,CAAC,GAAG,aAAY,cAAa,YAAW,MAAM,IAAItlJ,WAAW,iEAAiEj1G,GAAE8jN,GAAEz9L,GAAE,IAAI2xG,KAAKq1F,GAAEh7F,MAAM26C,GAAE16C,QAAQnrF,GAAEu3N,QAAQvvC,EAAE93F,aAAa43F,GAAE0vC,aAAazrO,GAAE0rO,YAAY56C,IAAGqjD,GAAgBtnQ,EAAEzE,GAAEne,MAAMA,SAASyG,GAAGzG,SAAS4P,KAAI5P,MAAMA,SAASqO,GAAGrO,SAAS+7H,KAAI/7H,MAAMA,SAAS2uC,GAAG3uC,SAASo9H,KAAIp9H,MAAMA,SAASsnC,IAAGtnC,SAAS+sD,KAAI/sD,MAAMA,SAASwI,IAAGxI,SAASgtD,KAAIhtD,MAAMA,SAAS81D,IAAG91D,SAASgP,KAAI83N,KAAI,OAAOu6C,GAAex+P,GAAE8jN,GAAEz9L,GAAEgnM,GAAErgD,GAAE7lI,GAAEgoL,EAAEF,GAAE/7L,GAAE8wL,IAAG,CAACh9K,MAAMhnC,GAAE83H,OAAOgsF,GAAE26C,MAAMp4O,GAAE2xG,KAAKq1F,GAAEh7F,MAAM26C,GAAE16C,QAAQnrF,GAAEu3N,QAAQvvC,EAAE93F,aAAa43F,GAAE0vC,aAAazrO,GAAE0rO,YAAY56C,IAAG,YAAoBv1I,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAG,IAAIsgC,GAAE6uO,GAAG7uO,GAAE3uC,MAAM2uC,GAAE3uC,SAASqO,IAAIsgC,GAAE3uC,MAAM2uC,GAAE3uC,WAAWA,SAASyG,GAAGm3Q,KAAKjvO,GAAE3uC,MAAM2uC,GAAE3uC,WAAWA,SAAS4iB,GAAGi7P,KAAKlvO,GAAE3uC,MAAM2uC,GAAE3uC,WAAWA,SAAS+M,GAAG+wQ,KAAKnvO,GAAE3uC,MAAM2uC,GAAE3uC,WAAWA,SAASouD,GAAGpuD,SAAS,QAAQ2uC,GAAE3uC,MAAM2uC,GAAE3uC,WAAWA,SAASkxD,GAAGlxD,SAAS,SAAS,MAAMsnC,GAAEtnC,MAAMsxF,EAAE3iD,IAAG,OAAOi3O,GAAyBt+O,IAAGA,GAAE,YAAqBtnC,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAE0kB,EAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,IAAG,IAAIh+C,GAAEmP,IAAG8qQ,UAAUntJ,GAAEikJ,KAAKj5C,GAAEk5C,OAAOn9P,GAAEymF,OAAOq9H,GAAE85C,YAAYv3O,GAAEw3O,YAAYxwC,GAAEywC,WAAW9wF,GAAG07F,GAAQn9N,EAAErhD,EAAE6V,EAAE0kB,EAAE9+B,GAAEstD,GAAElmD,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,IAAG/9C,IAAG8sH,GAAE,MAAM9xE,GAAE05N,EAAa,uBAAuB1xC,GAAE43C,GAAgBpyJ,GAAEsrJ,GAAmB9iR,EAAEsxF,EAAEpgC,EAAEsmE,IAAG,IAAIxtE,GAAE3uB,GAAE0yM,GAAE/nN,GAAEhX,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGg+C,IAAG,MAAM,CAACxD,KAAKm4N,EAAQ3vC,GAAEvrO,GAAG8iD,MAAMo4N,EAAQ3vC,GAAE3jO,GAAGi7C,IAAIq4N,EAAQ3vC,GAAErjM,GAAGoxO,KAAKj5C,GAAEk5C,OAAOn9P,GAAEymF,OAAOq9H,GAAE85C,YAAYv3O,GAAEw3O,YAAYxwC,GAAEywC,WAAW9wF,GAAG,YAA0B7vL,EAAEsxF,EAAEpgC,EAAE9C,EAAExrC,EAAEoD,EAAE7H,EAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,IAAG,MAAMh+C,GAAE00Q,EAAa,uBAAuB,GAAG,OAAiBt1N,EAAExrC,EAAEoD,EAAE7H,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAOqtQ,GAAW7J,EAAQ3hR,EAAE+M,GAAG6C,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,IAAG,MAAM+uE,GAAEsnJ,GAAoB9xL,EAAEtxF,EAAEkxD,GAAG41K,GAAE8iD,GAAgB14N,EAAE4xN,GAAmBnB,EAAQ7lJ,GAAEr1H,GAAGk7Q,EAAQ7lJ,GAAEztH,GAAGszQ,EAAQ7lJ,GAAEntF,GAAGuiB,GAAG,IAAIliD,GAAEo/C,EAAExrC,EAAEoD,EAAE7H,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG6uC,IAAGnqC,GAAE2gQ,GAAuB7B,EAAQ76C,GAAErgO,GAAGk7Q,EAAQ76C,GAAEz4N,GAAGszQ,EAAQ76C,GAAEn4L,GAAGgzO,EAAQ7lJ,GAAEx0F,GAAGq6O,EAAQ7lJ,GAAEtzH,GAAGm5Q,EAAQ7lJ,GAAEhmE,IAAG6rN,EAAQ7lJ,GAAEtE,IAAGmqJ,EAAQ7lJ,GAAEzgG,IAAGsmP,EAAQ7lJ,GAAEiyG,GAAG78K,GAAG,OAAOs6N,GAAW7J,EAAQgD,GAAcrzL,EAAEzuE,GAAE,cAAc9V,GAAG6C,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,IAAG,YAAqD/sD,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,gBAAe,EAAG,EAAE,IAAI88C,MAAMjnC,EAAE+3H,OAAOl0I,EAAE66Q,MAAMjzQ,GAAEwsI,KAAKlsG,GAAEumG,MAAM5tG,GAAE6tG,QAAQ3sI,GAAE+4Q,QAAQzrN,GAAEokF,aAAa1iB,GAAEgqJ,aAAanmP,GAAEomP,YAAY1zC,IAAG01C,GAAyBvyN,GAAG,MAAMlrC,GAAEylQ,GAAyBC,GAAiBt9N,IAAI,QAAEvE,MAAMjnC,EAAE+3H,OAAOl0I,EAAE66Q,MAAMjzQ,GAAEwsI,KAAKlsG,GAAEumG,MAAM5tG,GAAE6tG,QAAQ3sI,GAAE+4Q,QAAQzrN,GAAEokF,aAAa1iB,GAAEgqJ,aAAanmP,GAAEomP,YAAY1zC,IAAG49C,GAAYhK,EAAQrwL,EAAE8rC,IAAGukJ,EAAQrwL,EAAEvkC,IAAG40N,EAAQrwL,EAAEtkC,IAAG20N,EAAQrwL,EAAEtiF,IAAG2yQ,EAAQrwL,EAAEwqC,GAAG6lJ,EAAQrwL,EAAEw1I,GAAG66C,EAAQrwL,EAAEzuE,GAAG8+P,EAAQrwL,EAAEq1I,IAAGg7C,EAAQrwL,EAAEpoD,IAAGy4O,EAAQrwL,EAAE4+I,IAAGnjO,EAAE6V,EAAE7V,EAAEtG,EAAEsG,EAAEsB,GAAEtB,EAAE4hC,GAAE5hC,EAAEu6B,GAAEv6B,EAAEvE,GAAEuE,EAAE+oD,GAAE/oD,EAAEyqH,GAAEzqH,EAAEsuB,GAAEtuB,EAAEghO,GAAE/nN,KAAW,IAAI09P,EAAa,uBAAjB,CAAyC9gQ,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,IAAG,YAAoD/tO,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE,gBAAe,EAAG,GAAG8mF,MAAMtyH,EAAEuyH,QAAQ1uI,EAAE86Q,QAAQlzQ,EAAE6rI,aAAavrG,GAAE6yO,aAAal6O,GAAEm6O,YAAYj5Q,IAAG,SAAmCxI,GAAEsxF,IAAG,IAAIpgC,GAAEuyN,GAAyBzjR,IAAG,UAAUA,KAAkJ,CAAC,QAAQ,SAAS,QAAQ,QAArK,GAAG,OAAMA,IAAG,MAAM,IAAI83H,WAAY,kBAAiB93H,6EAA4E,OAAOkxD,GAAjO,CAAoOA,GAAqC4E,GAAE01N,GAAW7J,EAAQrwL,EAAEvkF,GAAGqhD,EAAExrC,EAAEwrC,EAAE3nD,EAAE2nD,EAAE//C,EAAE+/C,EAAEzf,GAAEyf,EAAE9mB,GAAE8mB,EAAE5lD,IAAG,OAAO,IAAIk7Q,EAAa,sBAAjB,CAAwC5tN,IAAG,YAA0D91D,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,gBAAe,EAAG,GAAG88C,MAAMjnC,EAAE+3H,OAAOx8H,EAAEmjQ,MAAM1xQ,GAAEirI,KAAK9e,GAAEmZ,MAAMnsH,GAAEosH,QAAQjoF,GAAEq0N,QAAQnkJ,GAAE8c,aAAantF,GAAEy0N,aAAax0N,GAAEy0N,YAAYzyQ,IAAGy0Q,GAAyBvyN,GAAG4qE,GAAE4vJ,GAAiBt9N,GAAG04K,GAAE66C,EAAQrwL,EAAEtrE,KAAIwjC,KAAK3mC,GAAE0mC,MAAMo9K,GAAEr9K,IAAIpgB,GAAE62O,KAAK7vC,GAAE8vC,OAAOnwF,GAAEvmF,OAAOt/C,GAAEy2N,YAAYzuC,GAAE0uC,YAAY5uC,GAAE6uC,WAAW5qO,IAAGswO,GAAY1E,EAAQrwL,EAAE7qF,GAAGk7Q,EAAQrwL,EAAEjjF,GAAGszQ,EAAQrwL,EAAE3iD,GAAGgzO,EAAQrwL,EAAEhqD,GAAGq6O,EAAQrwL,EAAE9oF,GAAGm5Q,EAAQrwL,EAAEx7B,IAAG6rN,EAAQrwL,EAAEkmC,IAAGmqJ,EAAQrwL,EAAEj2D,IAAGsmP,EAAQrwL,EAAEy8I,GAAGjH,GAAE/5N,EAAE6V,EAAE7V,EAAEoR,EAAEpR,EAAE6C,GAAE7C,EAAEgvH,GAAEhvH,EAAEgc,GAAEhc,EAAEmgD,GAAEngD,EAAEqwH,GAAErwH,EAAEggD,GAAEhgD,EAAEigD,GAAEjgD,EAAEiC,GAAE8sH,IAAG,OAAO0nJ,GAAuB3gQ,GAAE8jN,GAAEz9L,GAAEgnM,GAAErgD,GAAE7lI,GAAEgoL,GAAEF,GAAE/7L,GAAE+wL,IAAG,YAAsD9mO,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE,gBAAe,EAAG,GAAG8mF,MAAMnoI,EAAEooI,QAAQvyH,EAAE2+P,QAAQ96Q,EAAEyzI,aAAa7rI,GAAEmzQ,aAAa7yO,GAAE8yO,YAAYz7P,IAAGy9P,GAAyBvyN,GAAG,IAAI6uN,KAAK5hQ,GAAE6hQ,OAAOpwQ,GAAE05F,OAAOyyB,GAAE0kJ,YAAY13P,GAAE23P,YAAYxzN,GAAEyzN,WAAWvjJ,IAAGmuJ,GAAQ5J,EAAQrwL,EAAEhqD,GAAGq6O,EAAQrwL,EAAE9oF,GAAGm5Q,EAAQrwL,EAAEx7B,IAAG6rN,EAAQrwL,EAAEkmC,IAAGmqJ,EAAQrwL,EAAEj2D,IAAGsmP,EAAQrwL,EAAEy8I,GAAG3/K,EAAErhD,EAAEqhD,EAAExrC,EAAEwrC,EAAE3nD,EAAE2nD,EAAE//C,GAAE+/C,EAAEzf,GAAEyf,EAAEpoC,IAAG,QAAE+5P,KAAK5hQ,GAAE6hQ,OAAOpwQ,GAAE05F,OAAOyyB,GAAE0kJ,YAAY13P,GAAE23P,YAAYxzN,GAAEyzN,WAAWvjJ,IAAGmmJ,GAAaplQ,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAE,WAAkB,IAAIsmJ,EAAa,wBAAjB,CAA0CvlQ,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,IAAG,YAA2Dp9H,EAAEsxF,EAAEpgC,EAAE9C,GAAG,IAAIrhD,EAAE02Q,GAAyBvyN,GAAG,aAAalxD,IAAI+M,EAAE,CAAC88C,OAAO98C,EAAE88C,MAAM8wF,QAAQ5tI,EAAE4tI,OAAO2mI,OAAOv0Q,EAAEu0Q,MAAMzmI,MAAM9tI,EAAE8tI,KAAK3F,OAAOnoI,EAAEmoI,MAAMC,SAASpoI,EAAEooI,QAAQosI,SAASx0Q,EAAEw0Q,QAAQrnI,cAAcntI,EAAEmtI,aAAasnI,cAAcz0Q,EAAEy0Q,aAAaC,aAAa10Q,EAAE00Q,cAAc,IAAI53N,MAAMjnC,EAAE+3H,OAAOl0I,EAAE66Q,MAAMjzQ,GAAEwsI,KAAKlsG,GAAEumG,MAAM5tG,GAAE6tG,QAAQ3sI,GAAE+4Q,QAAQzrN,GAAEokF,aAAa1iB,GAAEgqJ,aAAanmP,GAAEomP,YAAY1zC,IAAGhhO,IAAI8tI,KAAKlsG,IAAGu7O,GAAgBv7O,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE,QAAQ,MAAM5vN,GAAEutQ,GAAiBt9N,GAAGx+C,GAAE+xQ,EAAQrwL,EAAEtrE,IAAG+1G,GAAEymJ,GAAe5yQ,GAAE,CAAC,YAAY,SAASmZ,GAAE05P,GAAsBnxL,EAAEyqC,GAAE,IAAI7uE,GAAEkwN,GAAG,MAAMwO,GAAmB1+N,GAAEnkC,GAAE,IAAIA,GAAEugC,IAAI,EAAE,IAAI8zE,GAAEimJ,GAAuBzzQ,GAAEmZ,IAAG,MAAMgkC,GAAE45N,GAAa/jQ,EAAEnc,EAAE4H,GAAEsgC,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGqe,GAAE+4N,GAAUn2Q,GAAE,WAAWZ,GAAE00Q,EAAa,uBAAuB,GAAG32N,GAAE,EAAE,CAAC,MAAM/sD,GAAE4pR,GAAgBh6Q,GAAEwtH,GAAE,IAAIpuH,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAG,EAAOg+C,IAAGskC,GAAEs4L,GAAgBh6Q,GAAE5P,GAAE,IAAIgP,GAAE,EAAE,EAAE,GAAE,EAAG,EAAE,EAAE,EAAE,EAAE,EAAE,QAAG,EAAOg+C,IAAGE,GAAE5D,IAAIuiO,GAAYj8Q,GAAE0hF,IAAG8rC,GAAEimJ,GAAuBzzQ,GAAEs9C,IAAG,MAAM4uE,GAAE,IAAI9sH,GAAE4T,EAAEnc,EAAE4H,GAAEsgC,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGm4L,GAAEujD,GAAYlsQ,IAAG,OAAOsmQ,GAA4B70Q,GAAE6yQ,GAAsBmH,GAAgBh6Q,GAAEwtH,GAAEtB,GAAE39G,GAAE6uC,IAAG+uE,GAAE,IAAI+qG,IAAG,YAA0D9mO,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE,gBAAe,EAAG,GAAG88C,MAAMjnC,EAAE+3H,OAAOl0I,EAAE66Q,MAAMjzQ,GAAEwsI,KAAKlsG,GAAEumG,MAAM5tG,GAAE6tG,QAAQ3sI,GAAE+4Q,QAAQzrN,GAAEokF,aAAa1iB,GAAEgqJ,aAAanmP,GAAEomP,YAAY1zC,IAAG01C,GAAyBvyN,GAAG/yC,GAAEutQ,GAAiBt9N,GAAGx+C,GAAE+xQ,EAAQrwL,EAAEpkC,IAAG6uE,GAAE4lJ,EAAQrwL,EAAEtrE,IAAG,OAAO+8P,GAA4BwG,GAAiB5H,EAAQrwL,EAAEvoE,IAAGnZ,GAAEmsH,GAAEhvH,EAAE6V,EAAE7V,EAAEtG,EAAEsG,EAAEsB,GAAEtB,EAAE4hC,GAAE5hC,EAAEu6B,GAAEv6B,EAAEvE,GAAEuE,EAAE+oD,GAAE/oD,EAAEyqH,GAAEzqH,EAAEsuB,GAAEtuB,EAAEghO,GAAE5vN,IAAGvO,GAAEmsH,IAAG,YAAgCzqC,EAAEpgC,EAAE9C,GAAG,GAAGpuD,QAAQkxD,EAAEusN,IAAI,OAAOnsL,EAAE,IAAI6qC,SAASpvH,EAAEqvH,UAAUx5G,GAAGokQ,GAAO11L,EAAEpgC,GAAG,GAAGlxD,QAAQ4iB,EAAE46P,IAAI,OAAOlsL,EAAE,MAAM7qF,EAAEzG,WAAW4iB,EAAE46P,KAAI,EAAG,EAAEnvQ,EAAEiI,GAAItW,WAAW4iB,EAAE5iB,SAAS,KAAK2uC,GAAE3uC,QAAQqO,EAAE6iD,GAAG5pB,GAAEtnC,cAAcqO,EAAE6iD,GAAG,OAAO9C,OAAO,OAAO3nD,EAAE,IAAIsG,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,UAAU,QAAQA,EAAE,IAAIsG,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,UAAU,SAASsG,EAAE/M,MAAM+M,EAAE/M,SAASyG,IAAI,UAAU,QAAQ,UAAU,YAAY6gC,IAAGqH,IAAGloC,EAAE,KAAKsG,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,UAAU,aAAa6gC,IAAGqH,IAAGloC,EAAE,KAAKsG,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,UAAU,cAAc6gC,IAAGqH,MAAK5hC,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,UAAU,YAAY6gC,KAAIv6B,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,UAAU,YAAY6gC,IAAGqH,IAAG,MAAI3uC,SAAWA,YAAYsW,GAAIvJ,GAAG/M,SAAS,QAAQ+M,EAAE/M,MAAM+M,EAAE/M,SAASyG,KAAK,OAAOzG,WAAW+M,EAAEmkD,GAAG,YAAsBogC,EAAEpgC,EAAE9C,EAAErhD,GAAG,IAAIqvH,UAAUx5G,GAAGwmQ,GAAwB93L,EAAE4sL,IAAI,MAAMz3Q,EAAEzG,WAAWsxF,EAAE1uE,GAAGvU,EAAEy2Q,GAAuBliQ,EAAE5iB,SAAS61D,GAAGzH,GAAG8C,GAAGnkD,GAAG,OAAO/M,MAAMyG,EAAE4H,GAAG,YAA0BrO,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAE,QAAQ,MAAMyxJ,UAAU5tP,GAAE0kP,KAAKhyC,GAAEiyC,OAAOh6P,GAAEsjF,OAAOnrF,GAAEsiQ,YAAY7wQ,GAAE8wQ,YAAY3kJ,GAAE4kJ,WAAW53P,IAAG+iQ,GAAU19N,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,KAAIhuE,KAAK0D,GAAE3D,MAAM6zE,GAAE9zE,IAAIyD,IAAGo8N,EAAenpR,EAAEsxF,EAAEpgC,EAAE71B,IAAG,MAAM,CAACmuB,KAAK0D,GAAE3D,MAAM6zE,GAAE9zE,IAAIyD,GAAEgzN,KAAKhyC,GAAEiyC,OAAOh6P,GAAEsjF,OAAOnrF,GAAEsiQ,YAAY7wQ,GAAE8wQ,YAAY3kJ,GAAE4kJ,WAAW53P,IAAG,YAAmBuoE,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,EAAEsgC,GAAErH,GAAE9+B,GAAE,QAAQ,IAAIstD,GAAE0nN,GAAG,OAAO7uO,QAAO,UAAU,OAAOmnB,GAAE91D,SAASsxF,OAAO,SAASx7B,GAAE91D,MAAMA,WAAW81D,GAAE4nN,IAAI19Q,SAASkxD,QAAQ,SAAS4E,GAAE91D,MAAMA,WAAW81D,GAAE4nN,IAAI19Q,SAASouD,QAAQ,cAAc0H,GAAE91D,MAAMA,WAAW81D,GAAE8nN,IAAI59Q,SAAS+M,QAAQ,cAAc+oD,GAAE91D,MAAMA,WAAW81D,GAAE8nN,IAAI59Q,SAAS4iB,QAAQ,aAAakzC,GAAE91D,MAAMA,WAAW81D,GAAE8nN,IAAI59Q,SAASyG,IAAI,MAAM+wH,GAAE,WAAUhvH,GAAEqtD,GAAGlnB,IAAGtT,GAAEypP,GAAuBhvN,GAAE91D,SAASw3H,GAAEnpH,GAAGi5B,IAAGymM,GAAE/tO,WAAWA,SAASq7B,GAAEr7B,SAASw3H,MAAK,OAAO7oF,QAAO,MAAM,MAAM,CAACs6O,UAAUl7C,GAAEgyC,KAAK,EAAEC,OAAO,EAAE12K,OAAO,EAAEm3K,YAAY,EAAEC,YAAY,EAAEC,WAAW,OAAO,OAAO,OAAOuI,GAAYn7C,GAAE,EAAE,EAAE,EAAE,EAAE,OAAO,SAAS,OAAOm7C,GAAY53L,EAAEy8I,GAAE,EAAE,EAAE,EAAE,OAAO,SAAS,OAAOm7C,GAAY53L,EAAEpgC,EAAE68K,GAAE,EAAE,EAAE,OAAO,cAAc,OAAOm7C,GAAY53L,EAAEpgC,EAAE9C,EAAE2/K,GAAE,EAAE,OAAO,cAAc,OAAOm7C,GAAY53L,EAAEpgC,EAAE9C,EAAErhD,EAAEghO,GAAE,OAAO,aAAa,OAAOm7C,GAAY53L,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEmrN,YAAW,MAAM,IAAI34L,MAAO,gBAAezG,OAAM,YAAmB3uC,EAAEsxF,GAAG,OAAOy6L,GAAkBpK,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAGgzO,EAAQrwL,EAAE7qF,GAAGk7Q,EAAQrwL,EAAEjjF,GAAGszQ,EAAQrwL,EAAE3iD,GAAG,OAAOksG,KAAK,YAA0B76I,EAAEsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAE68Q,GAAgB5pR,EAAEsxF,EAAEpgC,OAAE,EAAO9C,GAAG,MAAM,CAAC4oM,WAAWjqP,EAAE8tI,KAAKmxI,GAAU16L,EAAEvkF,IAAI,YAAmC/M,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,GAAG,MAAM6V,EAAE++P,EAAQ3hR,EAAEktD,IAAGzmD,EAAEk7Q,EAAQ3hR,EAAEgmB,IAAG,OAAO+8P,GAA4BwG,GAAiB5H,EAAQ3hR,EAAE+oB,IAAGnG,EAAEnc,EAAE6qF,EAAEpgC,EAAE9C,EAAErhD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG6V,EAAEnc,GAAG,YAAmC6qF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,EAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,IAAG,IAAI5vN,GAAEmzE,EAAE1hF,GAAEshD,EAAE6qE,GAAE3tE,EAAEgvE,GAAErwH,EAAEggD,GAAEnqC,EAAEoqC,GAAEvmD,EAAEuI,GAAEX,EAAEytH,GAAEntF,GAAEm4L,GAAEx/L,GAAEzkB,GAAEra,GAAE,IAAI25Q,GAAwBp0C,KAAI,aAAY,cAAa,aAAY,YAAW,mBAAkB,OAAM,MAAM,CAAClkL,MAAM1rC,GAAEw8H,OAAO/qI,GAAE0xQ,MAAMvlJ,GAAE8e,KAAKzd,GAAE8X,MAAMnoF,GAAEooF,QAAQnoF,GAAEu0N,QAAQvyQ,GAAEkrI,aAAape,GAAE0lJ,aAAa16C,GAAE26C,YAAY5+P,IAAG,IAAI8jN,GAAEogD,GAAyB,EAAEh6N,GAAEC,GAAEh+C,GAAE8sH,GAAEgrG,GAAEjkN,GAAE,GAAG,MAAMqmB,GAAE0zO,GAAG58Q,WAAW2mO,KAAIuJ,GAAEyxC,EAAQ5zC,GAAE7gL,IAAG2iI,GAAE8xF,EAAQ5zC,GAAE/nN,IAAGgkC,EAAEu/N,GAAiB5H,EAAQ5zC,GAAEhlN,IAAGmnN,GAAErgD,GAAE1xK,GAAEvO,GAAEmsH,GAAEqB,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG40G,GAAEu3C,GAAiB,IAAI7F,EAAa,sBAAjB,CAAwC15N,GAAGkmL,GAAErgD,GAAE,EAAE,EAAE,EAAE3mJ,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG4oM,GAAE9xO,WAAWgyO,GAAEhoL,GAAG,OAAOhqD,qBAAqBA,WAAWA,WAAW2mO,GAAEmL,IAAG9xO,SAASkpC,KAAIs0O,QAAQ3zN,MAAM1rC,GAAEw8H,OAAO/qI,GAAE0xQ,MAAMvlJ,GAAE8e,KAAKzd,IAAGuuJ,GAAYxtQ,GAAEvO,GAAEmsH,GAAEqB,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEl0F,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE6kM,KAAIpH,GAAEwgD,GAAannR,WAAW2mO,GAAEmL,IAAGh8K,GAAE0hE,GAAEn8F,MAAK65G,MAAMnoF,GAAEooF,QAAQnoF,GAAEu0N,QAAQvyQ,GAAEkrI,aAAape,GAAE0lJ,aAAa16C,GAAE26C,YAAY5+P,IAAGqnQ,GAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAElqR,WAAW2mO,IAAG,UAAU,CAAC98K,MAAM1rC,GAAEw8H,OAAO/qI,GAAE0xQ,MAAMvlJ,GAAE8e,KAAKzd,GAAE8X,MAAMnoF,GAAEooF,QAAQnoF,GAAEu0N,QAAQvyQ,GAAEkrI,aAAape,GAAE0lJ,aAAa16C,GAAE26C,YAAY5+P,IAAG,YAAuByuE,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,EAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,IAAG,IAAI5vN,GAAEmzE,EAAE1hF,GAAEshD,EAAE6qE,GAAE3tE,EAAErlC,GAAEhc,EAAEmgD,GAAEtqC,EAAEw6G,GAAE32H,EAAEsmD,GAAE1+C,EAAE2+C,GAAEre,GAAE3/B,GAAEs4B,GAAEw0F,GAAE97H,SAASwI,IAAG,MAAMs+N,GAAE48C,EAAa,uBAAuB,IAAI7gQ,GAAE8jN,GAAEz9L,GAAEgnM,EAAErgD,GAAEk+C,GAAE,GAAGl+C,GAAE,CAAC,GAAGsyF,GAAwBtyF,IAAG82C,GAAE92C,GAAEA,GAAE85F,GAAe95F,aAAYuyF,GAAevyF,IAAG,MAAM,IAAI76D,UAAU,qDAAqDnyG,GAAE8+P,EAAQ9xF,GAAE7pK,IAAG,GAAG,aAAY,cAAa,aAAY,WAAU,CAAC,IAAIsrE,GAAEpgC,GAAE9C,GAAE0tE,GAAEirJ,GAAyB,EAAE75N,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAExG,GAAE,GAAGm+N,KAAIr1I,GAAE26L,GAA0BtlD,GAAExoN,GAAEvO,GAAEmsH,GAAEhzG,OAAM8xH,KAAK3pF,GAAEuwN,YAAY3lJ,GAAEutJ,YAAYj7N,IAAGs7N,EAAkB5tJ,GAAExqC,KAAIpoD,GAAElpC,SAASouD,IAAGrlC,IAAGmoC,GAAEhE,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE,EAAE,OAAOwoH,QAAO,OAAO,CAAC,IAAI30G,GAAE,MAAM,IAAIi1G,WAAW,mDAAmD,MAAMxmC,GAAE,IAAIw1I,GAAE3oN,IAAG+yC,GAAE,iBAAiBruC,GAAEkjQ,GAAUljQ,GAAE,gBAAW,EAAOurC,GAAEw7N,GAAgB/mQ,GAAEgtK,GAAEv+F,QAAE,EAAOpgC,IAAGnkD,GAAE68Q,GAAgB/mQ,GAAEgtK,GAAE,IAAIi3C,GAAE3oN,GAAEvO,GAAEmsH,SAAG,EAAO7qE,IAAG2+H,GAAEzhI,GAAErlC,IAAGijQ,GAAU59N,GAAErhD,IAAG,MAAM6V,GAAEgnQ,GAAgB/mQ,GAAEgtK,GAAE,IAAIi3C,GAAE,EAAE,EAAE,EAAE/9M,SAAG,EAAOmoC,IAAGzqD,GAAE22Q,GAAG,MAAM32Q,GAAEojR,YAAY,OAAO,MAAMx7Q,GAAEy7Q,GAAkBjnQ,GAAEgtK,GAAEjtK,GAAEnc,IAAGojD,MAAM1rC,IAAG9P,GAAE,MAAMsgC,GAAEkhJ,GAAEA,GAAE+5F,GAAgB/mQ,GAAEgtK,GAAE,IAAIi3C,GAAEz4N,SAAG,EAAO6iD,IAAGnoC,IAAGijQ,GAAUr9O,GAAEkhJ,IAAG,MAAMvoJ,GAAE,IAAIw/L,GAAE/9M,GAAE,GAAE,EAAG,GAAG,IAAI8xH,KAAKryI,IAAGuhR,GAAiBlnQ,GAAEgtK,GAAEvoJ,GAAE4pB,IAAG1oD,GAAEk0Q,GAAGl0Q,IAAG,MAAMgvH,GAAEx3H,WAAWA,SAASwI,IAAG0gC,IAAG4yF,GAAE97H,MAAMA,MAAMA,WAAWw3H,GAAEx3H,SAASme,KAAIne,WAAWA,SAAS+oB,IAAGmgB,KAAI4yF,IAAG,MAAMiyG,GAAE+2C,GAAuBhpJ,GAAE97H,WAAWw3H,GAAEx3H,SAAS81D,KAAIz6B,IAAG60M,EAAEg8C,GAAqBpwJ,GAAEtE,IAAGr5G,GAAEne,WAAWA,SAAS+tO,GAAEv2G,KAAIsE,GAAE0hJ,GAAG5tQ,GAAEmsH,GAAEhzG,GAAE,EAAE,UAAU,QAAQ,CAAC,IAAIlG,GAAE,MAAM,IAAIi1G,WAAW,oDAAoD,MAAMxmC,GAAE,IAAIw1I,GAAE3oN,GAAEvO,IAAGshD,GAAE,iBAAiBruC,GAAEkjQ,GAAUljQ,GAAE,gBAAW,EAAOurC,GAAEw7N,GAAgB/mQ,GAAEgtK,GAAEv+F,QAAE,EAAOpgC,IAAGnkD,GAAE68Q,GAAgB/mQ,GAAEgtK,GAAE,IAAIi3C,GAAE3oN,GAAEvO,GAAEmsH,SAAG,EAAO7qE,IAAG2+H,GAAEzhI,GAAErlC,IAAGijQ,GAAU59N,GAAErhD,IAAG,MAAM6V,GAAEg6P,GAAG7zP,IAAGtiB,GAAE,IAAIqgO,GAAE,EAAE/9M,GAAE,GAAE,EAAG,GAAG,IAAI1a,GAAE,MAAM2oP,WAAWnnE,GAAEh1C,KAAKxsI,IAAG07Q,GAAiBlnQ,GAAEgtK,GAAEppL,GAAEyqD,KAAIwrN,GAAG3zP,KAAI2zP,GAAGruQ,KAAIuB,IAAGgT,GAAEmG,IAAG1a,KAAI2oP,WAAWnnE,GAAEh1C,KAAKxsI,IAAG07Q,GAAiBlnQ,GAAEgtK,GAAEppL,GAAEyqD,KAAI7iD,GAAEquQ,GAAGruQ,IAAG,MAAMsgC,GAAE3uC,WAAWA,SAASqO,IAAG66B,IAAG4yF,GAAE97H,MAAMA,MAAMA,WAAW2uC,GAAE3uC,SAAS4P,KAAI5P,WAAWA,SAAS+oB,IAAGmgB,KAAI4yF,IAAG,MAAMx0F,GAAEw9O,GAAuBhpJ,GAAE97H,WAAW2uC,GAAE3uC,SAAS81D,KAAIz6B,IAAG60M,EAAEg8C,GAAqBpwJ,GAAEntF,IAAG/+B,GAAE5P,WAAWA,SAASsnC,GAAEqH,KAAImtF,GAAE0hJ,GAAGzhJ,GAAEhzG,GAAE,EAAE,UAAU,OAAO,CAAC,IAAIlG,GAAE,MAAM,IAAIi1G,WAAW,mDAAmD,MAAMxmC,GAAEsrL,GAAG7zP,IAAGmoC,GAAE,IAAI41K,GAAE,EAAE,EAAE/9M,GAAE,GAAE,EAAG,GAAGqlC,GAAE,iBAAiBvrC,GAAEkjQ,GAAUljQ,GAAE,gBAAW,EAAO,IAAI9V,GAAE,MAAMiqP,WAAWnnE,GAAEh1C,KAAK9tI,IAAGg9Q,GAAiBlnQ,GAAEgtK,GAAE3+H,GAAE9C,KAAIsuN,GAAG3zP,KAAI2zP,GAAG3vQ,KAAIgvH,IAAGzqC,GAAEvoE,IAAGhc,KAAIiqP,WAAWnnE,GAAEh1C,KAAK9tI,IAAGg9Q,GAAiBlnQ,GAAEgtK,GAAE3+H,GAAE9C,KAAIrhD,GAAE2vQ,GAAG3vQ,IAAG,MAAM6V,GAAE5iB,WAAWA,SAAS+M,IAAGm8B,IAAG4yF,GAAE97H,MAAMA,MAAMA,WAAW4iB,GAAE5iB,SAAS+7H,KAAI/7H,WAAWA,SAAS+oB,IAAGmgB,KAAI4yF,IAAG,MAAMr1H,GAAEq+Q,GAAuBhpJ,GAAE97H,WAAW4iB,GAAE5iB,SAAS81D,KAAIz6B,IAAG60M,EAAEg8C,GAAqBpwJ,GAAEl5G,IAAGm5G,GAAE/7H,WAAWA,SAASyG,GAAEmc,KAAIk5G,GAAE0hJ,GAAGz0P,GAAE,EAAE,UAAU,MAAM,CAAC,MAAMuoE,GAAEpoD,GAAE4yF,GAAE97H,MAAMA,WAAWsxF,GAAEtxF,SAAS+oB,KAAI+yG,IAAG,MAAM5qE,GAAE4zN,GAAuBhpJ,GAAE97H,WAAWsxF,GAAEtxF,SAAS81D,KAAIz6B,IAAG60M,EAAEg8C,GAAqBpwJ,GAAExqC,IAAGvoE,GAAE/oB,WAAWA,SAASkxD,GAAEogC,KAAIwqC,GAAE0hJ,GAAG,UAAU,OAAO,CAAe,IAAItsN,GAAElxD,WAAWA,SAASktD,IAAGltD,SAAS,QAAQkxD,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASo9H,IAAGp9H,SAAS,QAAQkxD,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAAS+sD,IAAG+wN,KAAK5sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgtD,IAAG6wN,KAAK3sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgP,IAAG4uQ,KAAK1sN,GAAElxD,MAAMkxD,GAAE4qE,IAAGo0G,EAAEg8C,GAAqBh7N,GAAElxD,SAASsxF,QAAI,MAAMljC,GAAE02N,GAAuB5zN,GAAElxD,SAASsxF,MAAEx7B,IAAGz6B,IAAG6xB,GAAEltD,WAAWA,SAASouD,GAAEpuD,SAASsxF,SAAKwqC,GAAE0hJ,GAAGpgJ,GAAErwE,GAAEC,GAAEh+C,GAAE,EAAE,UAAU,SAAS,CAAc,IAAIkiD,GAAElxD,WAAWA,SAASo9H,IAAGp9H,SAAS,OAAOkxD,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAAS+sD,IAAG+wN,KAAK5sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgtD,IAAG6wN,KAAK3sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgP,IAAG4uQ,KAAK1sN,GAAElxD,MAAMkxD,GAAE4qE,IAAGo0G,EAAEg8C,GAAqBh7N,GAAElxD,SAASsxF,OAAI,MAAMljC,GAAE02N,GAAuB5zN,GAAElxD,SAASsxF,KAAEx7B,IAAGz6B,IAAG+hG,GAAEp9H,WAAWA,SAASouD,GAAEpuD,SAASsxF,QAAKwqC,GAAE0hJ,GAAGzwN,GAAEC,GAAEh+C,GAAE,EAAE,UAAU,SAAS,CAAa,IAAIkiD,GAAElxD,WAAWA,SAAS+sD,IAAG+wN,IAAI5sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgtD,IAAG6wN,KAAK3sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgP,IAAG4uQ,KAAK1sN,GAAElxD,MAAMkxD,GAAE4qE,IAAGo0G,EAAEg8C,GAAqBh7N,GAAElxD,SAASsxF,MAAI,MAAMljC,GAAE02N,GAAuB5zN,GAAElxD,SAASsxF,IAAEx7B,IAAGz6B,IAAG0xB,GAAE/sD,WAAWA,SAASouD,GAAEpuD,SAASsxF,OAAKwqC,GAAE0hJ,GAAGxwN,GAAEh+C,GAAE,EAAE,UAAU,cAAc,CAAa,IAAIkiD,GAAElxD,WAAWA,SAASgtD,IAAG6wN,IAAI3sN,GAAElxD,MAAMkxD,GAAElxD,WAAWA,SAASgP,IAAG4uQ,KAAK1sN,GAAElxD,MAAMkxD,GAAE4qE,IAAGo0G,EAAEg8C,GAAqBh7N,GAAElxD,SAASsxF,MAAI,MAAMljC,GAAE02N,GAAuB5zN,GAAElxD,SAASsxF,IAAEx7B,IAAGz6B,IAAG2xB,GAAEhtD,WAAWA,SAASouD,GAAEpuD,SAASsxF,OAAKwqC,GAAE0hJ,GAAGxuQ,GAAE,EAAE,UAAU,cAAc,CAAa,IAAIkiD,GAAElxD,WAAWA,SAASgP,IAAG4uQ,IAAI1sN,GAAElxD,MAAMkxD,GAAE4qE,IAAGo0G,EAAEg8C,GAAqBh7N,GAAElxD,SAASsxF,MAAI,MAAMljC,GAAE02N,GAAuB5zN,GAAElxD,SAASsxF,IAAEx7B,IAAGz6B,IAAGrsB,GAAEhP,WAAWA,SAASouD,GAAEpuD,SAASsxF,OAAKwqC,GAAE0hJ,GAAG,UAAU,aAAattC,EAAElwO,WAAW87H,IAAGA,GAAEgpJ,GAAuB9kR,SAAS87H,IAAG97H,SAAS81D,IAAGz6B,IAAG,MAAM,CAACwuB,MAAM1rC,GAAEw8H,OAAO/qI,GAAE0xQ,MAAMvlJ,GAAE8e,KAAK9xH,GAAEmsH,MAAMhoF,GAAEioF,QAAQ/X,GAAEmkJ,QAAQx0N,GAAEmtF,aAAaltF,GAAEw0N,aAAaxyQ,GAAEyyQ,YAAYzhR,WAAW87H,IAAGxxD,MAAM4lK,GAAG,YAAwBlwO,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,GAAG,UAAUnc,EAAE4H,KAAI,CAAC,CAACrO,EAAEouD,GAAG,CAACkjC,EAAEvkF,GAAG,CAACmkD,EAAEtuC,IAAI,GAAGnc,IAAI4H,GAAE,OAAO89Q,GAAiB1lR,EAAE4H,IAAG,OAAO,EAAE,YAAiCijF,EAAEpgC,GAAG,IAAIirE,SAAS/tE,EAAEguE,UAAUrvH,GAAGi6Q,GAAO11L,EAAEpgC,GAAG,OAAOlxD,WAAW+M,EAAEywQ,MAAMpvN,EAAEpuD,WAAWouD,EAAEqvN,IAAI1wQ,EAAE/M,MAAM+M,EAAEmkD,IAAI,CAACirE,SAAS/tE,EAAEguE,UAAUrvH,GAAG,YAAwBukF,EAAEpgC,GAAG,MAAMirE,SAAS/tE,EAAEguE,UAAUrvH,GAAGi6Q,GAAO11L,EAAEpgC,GAAG,OAAOi0F,GAAOp4I,KAAKgyQ,GAAeztL,KAAKytL,GAAe7tN,GAAG9C,EAAEpuD,WAAWouD,EAAEqvN,IAAI,YAA8BnsL,EAAEpgC,GAAG,MAAMirE,SAAS/tE,EAAEguE,UAAUrvH,GAAGi6Q,GAAO11L,EAAEpgC,GAAG,OAAOlxD,WAAWouD,GAAGpuD,WAAW+M,GAAG/M,WAAWkxD,GAAG,YAA0BlxD,GAAG,MAAMsxF,EAAE86L,GAASpsR,GAAG,YAAO,eAAoBg5H,OAAOo7B,WAAWp7B,OAAO1nC,EAAE/zF,SAAS,KAAK+zF,EAAE,YAAkBA,GAAG,IAAIpgC,EAAEogC,EAAE,GAAG,iBAAiBA,EAAE,CAAC,MAAMtxF,EAAEsxF,EAAE2lC,OAAOqG,aAAat9H,GAAG,mBAAmBA,IAAIkxD,EAAEosN,GAAGt9Q,EAAEsxF,EAAE,CAAC,YAAY,GAAG,iBAAiBpgC,EAAE,MAAM,IAAI8jE,UAAU,mCAAmC,OAAyBh1H,SAAnB,iBAAiBkxD,EAAWA,EAAE3zD,SAAS,IAAc2zD,GAAG,MAAM+2N,GAAI,MAAK,IAAI32L,EAAEtxF,SAASggC,KAAKyjD,MAAM,KAAK,MAAM,KAAK,MAAMvyB,EAAElxD,SAASggC,KAAKyjD,OAAOr1B,EAAEpuD,MAAMA,WAAWkxD,EAAE2sN,IAAIvsL,GAAG,OAAOA,EAAEtxF,YAAYkxD,EAAE2sN,IAAI79Q,cAAcouD,EAAEgwN,IAAIA,GAAGp+Q,WAAWouD,EAAE+vN,IAAIA,GAAG/vN,IAA9K,GAAqL,cAA2B,OAAO,IAAIoyD,IAAI+mK,kBAAkB3H,SAAS,YAA0B5/Q,GAAG,OAAOA,EAAE,GAAE,EAAGA,EAAE,EAAE,EAAEA,EAAE,YAA0BA,GAAG,QAAG,MAAW,OAAOo9Q,GAAG,MAAM,GAAGgE,GAASphR,IAAI,SAAS,OAAOA,EAAE,MAAM,IAAIg1H,UAAU,6CAA6C,OAAOh1H,EAAE,cAAiBA,IAAI,YAA6BA,EAAEsxF,GAAG,MAAMpgC,EAAEksN,GAAG,MAAM,OAAOlsN,EAAElxD,GAAGsxF,EAAEpgC,EAAE,YAAqBlxD,GAAG,MAAMsxF,EAAE8rL,GAAG,MAAM,OAAOwO,GAAmBt6L,EAAEo6L,GAAiB1rR,GAAG,IAAIsxF,EAAE,YAAmBtxF,EAAEsxF,EAAEpgC,EAAE9C,GAAG,IAAIrhD,EAAE/M,EAAEsxF,GAAG,QAAG,MAAW,CAAC,GAAGvkF,EAAEmyQ,GAASnyQ,IAAImkD,EAAEtb,SAAS7oC,GAAG,MAAM,IAAI+qH,WAAY,GAAExmC,oBAAoBpgC,EAAE/D,KAAK,cAAcpgD,KAAK,OAAOA,EAAE,OAAOqhD,EAAE,YAA2BpuD,GAAG,OAAO2+Q,GAAG/oO,SAASitO,GAAe7iR,IAAI,YAAwBA,GAAG,OAAOA,EAAE6H,QAAQ,SAAU7H,IAAI,MAAMsxF,EAAEtxF,EAAEiiH,WAAW,GAAG,OAAOtpB,OAAOkkH,aAAavrH,EAAE,MAAO,MAAM81L,GAAG,IAAI7/Q,OAAQ,IAAGyoO,GAAEt/L,WAAW,YAAgB4gD,EAAEpgC,EAAE9C,EAAErhD,EAAEukF,EAAEpgC,GAAGtuC,EAAE0uE,EAAEljC,IAAI,IAAI3nD,EAAEzG,SAASkxD,GAAG7iD,EAAErO,SAASouD,GAAGzf,GAAE5hC,EAAEu6B,GAAE1kB,EAAE,KAAK5iB,cAAcA,WAAWqO,EAAE5H,GAAGg3Q,KAAK,CAAC,MAAMvsN,GAAElxD,SAASA,MAAMyG,EAAE4H,GAAGrO,SAAS,IAAIouD,GAAEkjC,EAAEpgC,IAAG,GAAG9C,KAAIzf,GAAEloC,EAAEyqD,GAAEviB,GAAEyf,OAAM,CAAC,GAAGA,KAAI9mB,GAAE,MAAM,IAAI8N,MAAO,8BAA6BzG,QAAOyf,QAAO9mB,MAAKj5B,EAAE6iD,GAAE5pB,GAAE8mB,IAAG,OAAO//C,EAAE,MAAMwnD,GAAG,CAACkqN,KAAK,MAAMC,OAAO,KAAK12K,OAAO,IAAIm3K,YAAY,IAAIC,YAAY,IAAIC,WAAW,GAAG0L,GAAGp1J,OAAO,QAAQq1J,GAAGr1J,OAAO,MAAMs1J,GAAGt1J,OAAO,MAAMu1J,GAAGv1J,OAAO,QAAQw1J,GAAGx1J,OAAO,YAAYy1J,GAAGz1J,OAAO,WAAW01J,GAAG11J,OAAO,YAAY21J,GAAG31J,OAAO,YAAY41J,GAAG51J,OAAO,eAAeihG,GAAGjhG,OAAO,UAAU61J,GAAG71J,OAAO,WAAWnZ,GAAW99G,IAAI,CAACc,MAAMd,EAAEwmH,YAAW,EAAG0Q,UAAS,EAAGzQ,cAAa,IAAKsmK,GAAG34H,WAAWmoH,KAAKt9E,eAAe+tF,GAAGpuR,OAAOqe,OAAOgwQ,GAAGruR,OAAOw3F,UAAU3wF,eAAeynR,GAAG91J,QAAQ/gC,MAAM,YAAqBr2F,EAAEsxF,GAAG,IAAIpgC,EAAElxD,EAAEsxF,GAAG,MAAM,mBAAmBpgC,IAAIA,EAAE,IAAI67N,GAAG/sR,EAAEk4N,IAAIhnK,EAAElxD,EAAE8sR,MAAM9sR,EAAEsxF,GAAGpgC,GAAGA,EAAE,YAA4BlxD,EAAEsxF,EAAE,IAAI,KAAK3lF,gBAAgBwhR,IAAoB,OAAO,IAAIA,GAAmBntR,EAAEsxF,GAAG,MAAMpgC,OAAE,MAAW9C,EAAE8C,EAAE87N,GAAG,GAAG17L,GAAG,GAAGvkF,EAAE,IAAIggR,GAAG/sR,EAAEouD,GAAGxrC,EAAE7V,EAAEw6Q,kBAAkB,GAAGr2N,EAAE,CAAC,MAAMlxD,EAAEgtR,GAAG,GAAGpqQ,GAAG,UAAU0uE,MAAKtxF,EAAEktR,GAAGD,GAAG7+N,EAAE,CAACkjC,aAAYtxF,EAAEsxF,IAAG3lF,KAAKmhR,IAAI9sR,OAAO2L,KAAKmhR,IAAI1+N,EAAEziD,KAAKusN,IAAIt1M,EAAEgyH,OAAOjpI,KAAKghR,IAAI5/Q,EAAEpB,KAAKihR,IAAIhqQ,EAAEg9P,SAASj0Q,KAAKkhR,IAAIjqQ,EAAEu9P,SAASx0Q,KAAK0gR,IAAIe,GAAUzhR,KAAK2gR,IAAIe,GAAe1hR,KAAK4gR,IAAIe,GAAc3hR,KAAK6gR,IAAIe,GAAU5hR,KAAK8gR,IAAIe,GAAc7hR,KAAK+gR,IAAIe,GAAa7uR,OAAO0nH,eAAe6mK,GAAmB,OAAO,CAACj2J,UAAS,EAAGp2H,MAAM,mBAAmBqsR,GAAmBO,mBAAmB,SAAS1tR,EAAEsxF,GAAG,OAAOy7L,GAAGW,mBAAmB1tR,EAAEsxF,IAAI,MAAMq8L,GAAG,CAACpG,gBAAgBzpK,GAAY,WAA2B,OAAOnyG,KAAKghR,IAAIpF,oBAAqBroL,OAAO4e,GAAY,SAAgB99G,KAAKsxF,GAAG,IAAIs8L,QAAQ18N,EAAE6mF,UAAU3pF,GAAGy/N,GAAiB7tR,EAAE2L,MAAM,OAAGulD,GAAG9C,EAASA,EAAE8wC,OAAOhuC,EAAEu2N,mBAA0B97Q,KAAKghR,IAAIztL,OAAOl/F,KAAKsxF,KAAMw8L,YAAYhwK,GAAY,SAAqB99G,EAAEsxF,GAAG,GAAGy8L,GAAiB/tR,IAAI+tR,GAAiBz8L,GAAG,CAAC,IAAI08L,GAAiBhuR,EAAEsxF,GAAG,MAAM,IAAI0jC,UAAU,uEAAuE,MAAM44J,QAAQ18N,EAAE6mF,UAAU3pF,GAAGy/N,GAAiB7tR,EAAE2L,OAAOiiR,QAAQ7gR,EAAEgrI,UAAUn1H,GAAGirQ,GAAiBv8L,EAAE3lF,MAAM,GAAGulD,GAAGnkD,GAAGqhD,GAAGxrC,GAAGwrC,IAAIxrC,EAAE,OAAOwrC,EAAE0/N,YAAY58N,EAAEu2N,kBAAkB16Q,EAAE06Q,mBAAmB,OAAO97Q,KAAKghR,IAAImB,YAAY9tR,EAAEsxF,MAAO,kBAAkBy7L,GAAG32L,YAAYu3L,GAAGM,cAAcnwK,GAAY,SAAuB99G,KAAKsxF,GAAG,IAAIs8L,QAAQ18N,EAAE6mF,UAAU3pF,GAAGy/N,GAAiB7tR,EAAE2L,MAAM,OAAGulD,GAAG9C,EAASA,EAAE6/N,cAAc/8N,EAAEu2N,mBAA0B97Q,KAAKghR,IAAIsB,cAAcjuR,KAAKsxF,MAAO,uBAAuBy7L,GAAG32L,YAAYu3L,GAAGO,mBAAmBpwK,GAAY,SAA4B99G,EAAEsxF,GAAG,GAAGy8L,GAAiB/tR,IAAI+tR,GAAiBz8L,GAAG,CAAC,IAAI08L,GAAiBhuR,EAAEsxF,GAAG,MAAM,IAAI0jC,UAAU,8EAA8E,MAAM44J,QAAQ18N,EAAE6mF,UAAU3pF,GAAGy/N,GAAiB7tR,EAAE2L,OAAOiiR,QAAQ7gR,EAAEgrI,UAAUn1H,GAAGirQ,GAAiBv8L,EAAE3lF,MAAM,GAAGulD,GAAGnkD,GAAGqhD,GAAGxrC,GAAGwrC,IAAIxrC,EAAE,OAAOwrC,EAAE8/N,mBAAmBh9N,EAAEu2N,kBAAkB16Q,EAAE06Q,mBAAmB,OAAO97Q,KAAKghR,IAAIuB,mBAAmBluR,EAAEsxF,MAAO67L,GAAmB/2L,UAAUx3F,OAAO8Z,OAAOq0Q,GAAG32L,UAAUu3L,IAAI/uR,OAAO0nH,eAAe6mK,GAAmB,YAAY,CAACj2J,UAAS,EAAG1Q,YAAW,EAAGC,cAAa,IAAK,MAAM0nK,GAAGhB,GAAmB,YAAentR,EAAE,GAAGsxF,EAAE,IAAI,MAAMpgC,EAAE87N,GAAG,GAAGhtR,GAAG,UAAUA,IAAI,CAAC,OAAO,QAAQ,MAAM,OAAO,SAAS,SAAS,UAAU,YAAY,eAAe,YAAY,aAAakxD,EAAElxD,GAAGA,KAAKsxF,EAAEA,EAAEtxF,GAAGkxD,EAAElxD,IAAG,MAAOA,SAAI,MAAWA,WAAWkxD,EAAElxD,GAAG,OAAOkxD,EAAE,YAAmBlxD,GAAG,IAAIsxF,EAAE88L,GAAMpuR,EAAE,CAACwpD,MAAK,EAAGD,OAAM,EAAGD,KAAI,EAAG+kO,SAAQ,EAAGC,cAAa,EAAGC,WAAU,IAAK,OAAOC,GAAel9L,KAAKA,EAAE07L,GAAG,GAAG17L,EAAE,CAACyuL,KAAK,UAAUC,OAAO,UAAU12K,OAAO,aAAahY,EAAE,YAAwBtxF,GAAG,IAAIsxF,EAAE88L,GAAMpuR,EAAE,CAACspD,KAAI,EAAGy2N,MAAK,EAAGC,QAAO,EAAG12K,QAAO,EAAG+kL,SAAQ,EAAGI,WAAU,EAAGH,cAAa,EAAGC,WAAU,EAAGG,WAAU,IAAK,MAAM,SAASp9L,GAAG,UAAUA,IAAIA,EAAE07L,GAAG17L,EAAE,CAAC9nC,KAAK,UAAUD,MAAM,aAAa+nC,EAAE,YAAuBtxF,GAAG,IAAIsxF,EAAE88L,GAAMpuR,EAAE,CAACwpD,MAAK,EAAGu2N,MAAK,EAAGC,QAAO,EAAG12K,QAAO,EAAG+kL,SAAQ,EAAGI,WAAU,EAAGH,cAAa,EAAGC,WAAU,EAAGG,WAAU,IAAK,MAAM,UAAUp9L,GAAG,QAAQA,IAAIA,EAAE07L,GAAG,GAAG17L,EAAE,CAAC/nC,MAAM,UAAUD,IAAI,aAAagoC,EAAE,YAAmBtxF,GAAG,IAAIsxF,EAAE88L,GAAMpuR,EAAE,CAAC+/Q,MAAK,EAAGC,QAAO,EAAG12K,QAAO,EAAGmlL,WAAU,EAAGH,cAAa,EAAGI,WAAU,IAAK,OAAOC,GAAer9L,KAAKA,EAAE07L,GAAG,GAAG17L,EAAE,CAAC9nC,KAAK,UAAUD,MAAM,UAAUD,IAAI,aAAagoC,EAAE,YAAuBtxF,GAAG,IAAIsxF,EAAE88L,GAAMpuR,EAAE,CAACsuR,cAAa,IAAK,OAAOE,GAAel9L,IAAIq9L,GAAer9L,KAAKA,EAAE07L,GAAG,GAAG17L,EAAE,CAAC9nC,KAAK,UAAUD,MAAM,UAAUD,IAAI,UAAUy2N,KAAK,UAAUC,OAAO,UAAU12K,OAAO,aAAahY,EAAE,YAAsBtxF,GAAG,IAAIsxF,EAAEtxF,EAAE,OAAOwuR,GAAel9L,IAAIq9L,GAAer9L,KAAKA,EAAE07L,GAAG,GAAG17L,EAAE,CAAC9nC,KAAK,UAAUD,MAAM,UAAUD,IAAI,UAAUy2N,KAAK,UAAUC,OAAO,UAAU12K,OAAO,aAAahY,EAAE,YAAwBtxF,GAAG,MAAM,SAASA,GAAG,UAAUA,GAAG,QAAQA,GAAG,YAAYA,GAAG,cAAcA,EAAE,YAAwBA,GAAG,MAAM,SAASA,GAAG,WAAWA,GAAG,WAAWA,GAAG,cAAcA,GAAG,cAAcA,EAAE,YAA0BA,GAAG,OAAOoiR,GAAepiR,IAAIkgR,GAAelgR,IAAIqiR,GAAmBriR,IAAImiR,GAAwBniR,IAAIwkR,GAAoBxkR,IAAI+jR,GAAmB/jR,IAAI2jR,GAAkB3jR,GAAG,YAA0BA,EAAEsxF,GAAG,SAASy8L,GAAiB/tR,KAAK+tR,GAAiBz8L,IAAQ4uL,GAAelgR,KAAKkgR,GAAe5uL,IAAQ8wL,GAAepiR,KAAKoiR,GAAe9wL,IAAQ+wL,GAAmBriR,KAAKqiR,GAAmB/wL,IAAQ6wL,GAAwBniR,KAAKmiR,GAAwB7wL,IAAQkzL,GAAoBxkR,KAAKwkR,GAAoBlzL,IAAQyyL,GAAmB/jR,KAAK+jR,GAAmBzyL,IAAOqyL,GAAkB3jR,KAAK2jR,GAAkBryL,IAAU,YAA0BtxF,EAAEsxF,GAAG,MAAMpgC,EAAEwyN,EAAa,4BAA4B,GAAGxD,GAAelgR,GAAG,CAAC,MAAMouD,EAAE,IAAI8C,EAAE,KAAK,EAAE,EAAEywN,EAAQ3hR,EAAEsnC,GAAGq6O,EAAQ3hR,EAAEwI,GAAGm5Q,EAAQ3hR,EAAE81D,IAAG6rN,EAAQ3hR,EAAEw3H,IAAGmqJ,EAAQ3hR,EAAEq7B,IAAGsmP,EAAQ3hR,EAAE+tO,GAAGz8I,EAAEu7L,KAAK,MAAM,CAACe,QAAQjJ,GAAcrzL,EAAEs7L,IAAIx+N,EAAE,cAAc2pF,UAAU62I,GAAYt9L,EAAEk7L,KAAK,GAAGhI,GAAoBxkR,GAAG,CAAC,MAAMouD,EAAEuzN,EAAQ3hR,EAAEyG,GAAGsG,EAAE40Q,EAAQ3hR,EAAEqO,GAAGuU,EAAE++P,EAAQ3hR,EAAE2uC,GAAGrH,EAAE+4O,GAA6BsB,EAAQ3hR,EAAEgmB,KAAI,GAAGshB,IAAIgqD,EAAEu7L,IAAI,MAAM,IAAI/0J,WAAY,8CAA6CxwF,6BAA6BgqD,EAAEu7L,OAAO,MAAMrkR,GAAE,IAAI0oD,EAAE9C,EAAErhD,EAAE6V,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE0kB,GAAG,MAAM,CAACsmP,QAAQjJ,GAAcrzL,EAAEs7L,IAAIpkR,GAAE,cAAcuvI,UAAU62I,GAAYt9L,EAAEg7L,KAAK,GAAGvI,GAAmB/jR,GAAG,CAAC,MAAMouD,EAAEuzN,EAAQ3hR,EAAEyG,GAAGsG,EAAE40Q,EAAQ3hR,EAAEqO,GAAGuU,EAAE++P,EAAQ3hR,EAAE2uC,GAAGrH,EAAE+4O,GAA6BsB,EAAQ3hR,EAAEgmB,KAAI,GAAGshB,IAAIgqD,EAAEu7L,IAAI,MAAM,IAAI/0J,WAAY,6CAA4CxwF,6BAA6BgqD,EAAEu7L,OAAO,MAAMrkR,GAAE,IAAI0oD,EAAE9C,EAAErhD,EAAE6V,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE0kB,GAAG,MAAM,CAACsmP,QAAQjJ,GAAcrzL,EAAEs7L,IAAIpkR,GAAE,cAAcuvI,UAAU62I,GAAYt9L,EAAEi7L,KAAK,GAAGnK,GAAepiR,GAAG,CAAC,MAAMouD,EAAEuzN,EAAQ3hR,EAAEyG,GAAGsG,EAAE40Q,EAAQ3hR,EAAEqO,GAAGuU,EAAE++P,EAAQ3hR,EAAE2uC,GAAGrH,EAAE+4O,GAA6BsB,EAAQ3hR,EAAEgmB,KAAI,GAAG,eAAeshB,IAAIgqD,EAAEu7L,IAAI,MAAM,IAAI/0J,WAAY,yCAAwCxwF,6BAA6BgqD,EAAEu7L,OAAO,MAAMrkR,GAAE,IAAI0oD,EAAE9C,EAAErhD,EAAE6V,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE0uE,EAAEu7L,KAAK,MAAM,CAACe,QAAQjJ,GAAcrzL,EAAEs7L,IAAIpkR,GAAE,cAAcuvI,UAAU62I,GAAYt9L,EAAE+6L,KAAK,GAAGhK,GAAmBriR,GAAG,CAAC,MAAMouD,EAAEuzN,EAAQ3hR,EAAEyG,GAAGsG,EAAE40Q,EAAQ3hR,EAAEqO,GAAGuU,EAAE++P,EAAQ3hR,EAAE2uC,GAAGxwB,EAAEwjQ,EAAQ3hR,EAAEsnC,GAAG13B,GAAE+xQ,EAAQ3hR,EAAEwI,GAAGuzH,GAAE4lJ,EAAQ3hR,EAAE81D,IAAG/sC,GAAE44P,EAAQ3hR,EAAEw3H,IAAGtqE,GAAEy0N,EAAQ3hR,EAAEq7B,IAAG+hG,GAAEukJ,EAAQ3hR,EAAE+tO,GAAGhhL,GAAEszN,GAA6BsB,EAAQ3hR,EAAEgmB,KAAI,GAAG,gBAAe+mC,KAAIukC,EAAEu7L,IAAI,MAAM,IAAI/0J,WAAY,6CAA4C/qE,8BAA6BukC,EAAEu7L,OAAO,IAAI7/N,GAAEhtD,EAAE,MAAM,iBAAgBgtD,GAAE,IAAIkE,EAAE9C,EAAErhD,EAAE6V,EAAEzE,EAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAE9rC,EAAEu7L,MAAM,CAACe,QAAQjJ,GAAcrzL,EAAEs7L,IAAI5/N,GAAE,cAAc+qF,UAAU62I,GAAYt9L,EAAEm7L,KAAK,GAAGtK,GAAwBniR,GAAG,MAAM,IAAIg1H,UAAU,iGAAiG,OAAO2uJ,GAAkB3jR,GAAG,CAAC4tR,QAAQ5tR,EAAE+3I,UAAU62I,GAAYt9L,EAAEo7L,KAAK,GAAU9tR,OAAO4+G,OAAO,CAACuX,UAAU,KAAKkqE,eAAekvF,KAAK,SAAc1iR,YAAYzL,GAAG,GAAGk2F,UAAUx4F,OAAO,EAAE,MAAM,IAAIs3H,UAAU,kDAAkD,MAAM1jC,EAAE86L,GAASpsR,GAAG4lR,GAAyBt0L,GAAGu1I,GAAEl7N,MAAM05Q,GAAQ15Q,KAAKoB,EAAEukF,GAAOu9L,mBAAe,IAAIlL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKoB,GAAG,OAAO/M,WAAW8uR,GAAex9L,EAAEwsL,KAAS2J,wBAAoB,IAAI9D,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEtxF,SAAS2hR,EAAQh2Q,KAAKoB,IAAI,OAAO/M,WAAW8uR,GAAex9L,EAAEusL,KAASkR,wBAAoB,IAAIpL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOg6J,GAAiBF,GAAe9uR,SAAS2hR,EAAQh2Q,KAAKoB,IAAI6wQ,KAASqR,uBAAmB,IAAItL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOg6J,GAAiBhvR,SAAS2hR,EAAQh2Q,KAAKoB,KAAKY,IAAI3N,GAAG,IAAI2jR,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk6J,GAA2C,MAAMvjR,KAAK3L,GAAGmvR,SAASnvR,GAAG,IAAI2jR,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk6J,GAA2C,WAAWvjR,KAAK3L,GAAGovR,MAAMpvR,EAAEsxF,GAAG,IAAIqyL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOq6J,GAA0B,QAAQ1jR,KAAK3L,EAAEsxF,GAAGg+L,MAAMtvR,EAAEsxF,GAAG,IAAIqyL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOq6J,GAA0B,QAAQ1jR,KAAK3L,EAAEsxF,GAAG52E,MAAM1a,GAAG,IAAI2jR,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,QAAG,MAAW,MAAM,IAAIA,UAAU,iCAAiC,MAAM1jC,EAAE,iBAAiBtxF,EAAEuvR,GAAoB,eAAevvR,GAAG0rR,GAAiB1rR,GAAGkxD,EAAEq5N,GAA4Bj5L,GAAGljC,EAAEo8N,GAAuBl5L,EAAE,cAAc1uE,EAAE0nQ,GAAgBh5L,EAAE,eAAe,OAAO4wL,IAAIuI,GAAkCv5N,EAAE,CAAC6uN,KAAK,GAAGC,OAAO,KAAK12K,OAAO,MAAMm3K,YAAY,MAAMC,YAAY,MAAMC,WAAW,QAAQ/9P,IAAG,GAAI,MAAMnc,EAAE0gR,GAAaxF,EAAQh2Q,KAAKoB,GAAGmkD,EAAEtuC,EAAEwrC,GAAG,OAAO,IAAIohO,GAAQ/oR,GAAG8yF,OAAOjI,GAAG,IAAIqyL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAEq3N,GAAkBj3L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKoB,GAAG6V,EAAE++P,EAAQzwN,EAAEnkD,GAAG,OAAO/M,QAAQA,SAASouD,GAAGpuD,SAAS4iB,IAAIrlB,SAASyC,GAAG,IAAI2jR,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEo6L,GAAiB1rR,GAAGkxD,EAAEu+N,GAAyBn+L,GAAGljC,EAAEo8N,GAAuBl5L,EAAE,SAAS1uE,EAAE0nQ,GAAgBh5L,EAAE,eAAe,YAAO,GAAQ,GAAG,WAAW,MAAM,IAAIwmC,WAAW,sDAAsD,IAAIrxH,EAAE6qF,EAAEsuL,cAAS,IAASn5Q,IAAIA,EAAEk8Q,GAA4Bl8Q,IAAI,MAAMs7Q,UAAU1zQ,GAAE/I,KAAKqpC,GAAEqzO,UAAU16O,IAAGooP,GAA+B9sQ,EAAEsuC,GAAG1oD,GAAE2+Q,GAAaxF,EAAQh2Q,KAAKoB,GAAGu6B,GAAEqH,GAAEyf,GAAG,OAAOuhO,GAAwB,IAAIH,GAAQhnR,IAAG/B,EAAE4H,IAAGuhR,SAAS,IAAIjM,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO26J,GAAwBhkR,UAAK,EAAO,QAAQkkR,eAAe7vR,EAAEsxF,GAAG,IAAIqyL,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAIm5J,GAAGnuR,EAAEsxF,GAAG4N,OAAOvzF,MAAMo9F,UAAU,MAAM,IAAIisB,UAAU,yDAAyD86J,gBAAgB9vR,GAAG,IAAI2jR,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,uCAAuC,MAAM1jC,EAAEtxF,EAAEmgR,SAAS,QAAG,MAAW,MAAM,IAAInrJ,UAAU,gDAAgD,MAAM9jE,EAAE8yN,GAA4B1yL,GAAGljC,EAAEpuD,EAAE4/Q,SAAS,QAAG,MAAW,MAAM,IAAI5qJ,UAAU,gDAAgD,MAAMpyG,EAAE+/P,GAA4Bv0N,GAAG,OAAO20N,GAA4BpB,EAAQh2Q,KAAKoB,GAAG6V,EAAEsuC,GAAG6+N,mBAAmB/vR,GAAG,IAAI2jR,GAAkBh4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqxL,GAA4B3iR,GAAG,OAAO+iR,GAA4BpB,EAAQh2Q,KAAKoB,GAAGukF,EAAE,mCAAmCA,GAAG,MAAMpgC,EAAE0tN,GAASttL,GAAGljC,EAAEpuD,WAAWA,SAASkxD,GAAG4sN,IAAI,OAAO8H,GAAyBx3N,GAAG,IAAIohO,GAAQphO,gCAAgCkjC,GAAG,MAAMpgC,EAAE0tN,GAASttL,GAAGljC,EAAEpuD,WAAWA,SAASkxD,GAAG2sN,IAAI,OAAO+H,GAAyBx3N,GAAG,IAAIohO,GAAQphO,gCAAgCkjC,GAAG,MAAMpgC,EAAEk7N,GAAS96L,GAAGljC,EAAEpuD,WAAWkxD,EAAE0sN,IAAI,OAAOgI,GAAyBx3N,GAAG,IAAIohO,GAAQphO,+BAA+BpuD,GAAG,MAAMsxF,EAAE86L,GAASpsR,GAAG,OAAO4lR,GAAyBt0L,GAAG,IAAIk+L,GAAQl+L,eAAetxF,GAAG,OAAO2jR,GAAkB3jR,GAAG,IAAIwvR,GAAQ7N,EAAQ3hR,EAAE+M,IAAIw7Q,GAAkBvoR,kBAAkBsxF,EAAEpgC,GAAG,MAAM9C,EAAEm6N,GAAkBj3L,GAAG1uE,EAAE2lQ,GAAkBr3N,GAAGzqD,EAAEk7Q,EAAQvzN,EAAErhD,GAAGsB,EAAEszQ,EAAQ/+P,EAAE7V,GAAG,OAAO/M,WAAWyG,EAAE4H,IAAG,EAAGrO,cAAcyG,EAAE4H,GAAG,EAAE,GAAG2hR,EAAmBR,GAAQ,oBAAoB,MAAMS,GAAGztR,MAAM4zF,UAAUxgD,SAASs6O,GAAG1tR,MAAM4zF,UAAU/2F,KAAK8wR,GAAG/7H,WAAWmoH,KAAKt9E,eAAemxF,GAAG5tR,MAAM4zF,UAAUvwE,KAAKwqQ,EAAG5hR,KAAK6H,IAAIg6Q,EAAG7hR,KAAKkpH,MAAM44J,EAAG3xR,OAAO8Z,OAAO83Q,EAAG5xR,OAAOosL,QAAQylG,GAAG9lR,IAAI+lR,GAAGt5J,QAAQmmI,QAAQozB,GAAGhmR,IAAIyrF,UAAUzoF,IAAIijR,GAAGjmR,IAAIyrF,UAAUvoF,OAAOgjR,GAAG,GAAG,SAAeplR,YAAYzL,GAAG,GAAGk2F,UAAUx4F,OAAO,EAAE,MAAM,IAAIo6H,WAAW,oCAAoC,MAAMxmC,EAAE4tL,GAASl/Q,GAAG,IAAI4iR,GAAkBtxL,GAAG,MAAM,IAAIwmC,WAAY,+BAA8BxmC,KAAKu1I,GAAEl7N,MAAM05Q,GAAQ15Q,KAAKkkL,GAAEgzF,GAAevxL,IAAQ1yE,SAAK,IAAIonQ,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKkkL,IAAGihG,eAAe9wR,EAAEsxF,GAAG,IAAI00L,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,kBAAkB,MAAM9jE,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKkkL,IAAG,OAAOghG,GAAGziO,GAAG0iO,eAAe9wR,EAAEkxD,EAAE9C,GAAG2iO,oBAAoB/wR,EAAEsxF,GAAG,IAAI00L,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,kBAAkB,MAAM9jE,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKkkL,IAAG,OAAOghG,GAAGziO,GAAG2iO,oBAAoB/wR,EAAEkxD,EAAE9C,GAAG4iO,mBAAmBhxR,EAAEsxF,GAAG,IAAI00L,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,kBAAkB,MAAM9jE,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKkkL,IAAG,OAAOghG,GAAGziO,GAAG4iO,mBAAmBhxR,EAAEkxD,EAAE9C,GAAG6iO,OAAOjxR,GAAG,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAE,GAAGpgC,EAAE,IAAIvmD,IAAI,CAAC,OAAO,QAAQ,YAAY,MAAM,OAAO,SAAS,SAAS,cAAc,cAAc,eAAe,UAAUyjD,KAAKpuD,EAAE,CAAC,GAAG,iBAAiBouD,EAAE,MAAM,IAAI4mE,UAAU,kBAAkB,IAAI9jE,EAAElmD,IAAIojD,GAAG,MAAM,IAAI0pE,WAAY,sBAAqB1pE,KAAK8C,EAAEttC,OAAOwqC,GAAG8hO,GAAG1yR,KAAK8zF,EAAEljC,GAAG,OAAOyiO,GAAGlP,EAAQh2Q,KAAKkkL,KAAIohG,OAAO3/L,GAAG4/L,YAAYlxR,EAAEsxF,GAAG,IAAI00L,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAEigO,GAASnxR,GAAGouD,EAAEmiO,EAAG,MAAM3E,GAAmBx9N,EAAE8C,EAAE,GAAG,MAAC,IAAS,MAAMnkD,EAAEokR,GAAS7/L,GAAG1uE,EAAE2tQ,EAAG,MAAM3E,GAAmBhpQ,EAAE7V,EAAE,GAAG,MAAC,IAAS,MAAMtG,GAAEiqR,GAAG9tQ,GAAGvU,GAAEwiR,GAAGlP,EAAQh2Q,KAAKkkL,KAAIuhG,kBAAkB3qR,IAAGkoC,GAAE4hP,EAAG,MAAMjpP,GAAEopP,GAAGtiO,GAAG,UAAUpuD,MAAKsnC,GAAE,CAAC,IAAIgqD,GAAEA,GAAEw0L,GAAKmK,GAAG5hR,GAAE,CAACrO,KAAI4iB,EAAE5iB,IAAGouD,EAAEpuD,SAAG,SAAa2uC,GAAE3uC,IAAGsxF,IAAG,OAAOs6L,GAAmBj9O,GAAE/rB,EAAE,IAAI+rB,GAAE0iP,QAAQrxR,EAAEsxF,EAAEpgC,GAAG,IAAI80N,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM5mE,EAAEu7N,GAAe3pR,GAAG+M,EAAEukR,GAAmBhgM,GAAG1uE,EAAEugQ,GAAmBuI,GAAiBx6N,KAAK2pF,KAAKp0I,IAAGyjR,GAAgBvI,EAAQ50Q,EAAEiC,IAAG2yQ,EAAQ50Q,EAAE+uH,GAAG6lJ,EAAQ50Q,EAAE+5N,GAAG66C,EAAQ50Q,EAAE8V,GAAG8+P,EAAQ50Q,EAAE45N,IAAGg7C,EAAQ50Q,EAAEm8B,IAAGy4O,EAAQ50Q,EAAEmjO,IAAG,OAAO7hO,GAAEszQ,EAAQh2Q,KAAKkkL,IAAG,OAAOghG,GAAGxiR,IAAGgjR,QAAQjjO,EAAEuzN,EAAQ50Q,EAAEqwH,IAAGukJ,EAAQ50Q,EAAEggD,IAAG40N,EAAQ50Q,EAAEigD,IAAGvmD,GAAEmc,EAAEvU,IAAGkjR,UAAUvxR,EAAEsxF,EAAEpgC,GAAG,IAAI80N,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM5mE,EAAEu7N,GAAe3pR,GAAG+M,EAAE48Q,GAAer4L,GAAG,IAAI1uE,EAAE0nQ,GAAgBoB,GAAiBx6N,GAAG,cAAc,OAAO,QAAQ,SAAStuC,IAAIA,EAAE,OAAO,MAAMinC,MAAMpjD,GAAEk0I,OAAOtsI,GAAEizQ,MAAM3yO,GAAEksG,KAAKvzG,IAAGupP,GAAGlP,EAAQh2Q,KAAKkkL,KAAI0hG,UAAUnjO,EAAErhD,EAAE6V,GAAG,OAAO,IAAI8gQ,EAAa,uBAAjB,CAAyCj9Q,GAAE4H,GAAEsgC,GAAErH,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGkiB,KAAKxpD,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIrmI,KAAK8nC,GAAG/nC,MAAMvpD,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,GAAG+uJ,GAAmBzyL,GAAG,MAAM,IAAI0jC,UAAU,0CAA0C,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAItmI,MAAM+nC,GAAG2yL,UAAUjkR,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,IAAIyyL,GAAmBzyL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIo0F,UAAU3yL,GAAGhoC,IAAItpD,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+uJ,GAAmBzyL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIvmI,IAAIgoC,GAAGwuL,IAAI9/Q,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIiwF,IAAIxuL,GAAGkgM,QAAQxxR,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAI2hG,QAAQlgM,GAAGmgM,UAAUzxR,GAAG,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAG,OAAO6wR,GAAGlP,EAAQh2Q,KAAKkkL,KAAI4hG,UAAUngM,GAAGogM,UAAU1xR,GAAG,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAG,OAAO6wR,GAAGlP,EAAQh2Q,KAAKkkL,KAAI6hG,UAAUpgM,GAAGqgM,WAAW3xR,GAAG,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAG,OAAO6wR,GAAGlP,EAAQh2Q,KAAKkkL,KAAI8hG,WAAWrgM,GAAGsgM,WAAW5xR,GAAG,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAG,OAAO6wR,GAAGlP,EAAQh2Q,KAAKkkL,KAAI+hG,WAAWtgM,GAAGugM,WAAW7xR,GAAG,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAG,OAAO6wR,GAAGlP,EAAQh2Q,KAAKkkL,KAAIgiG,WAAWvgM,GAAGwgM,YAAY9xR,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIiiG,YAAYxgM,GAAGygM,WAAW/xR,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIkiG,WAAWzgM,GAAG0gM,aAAahyR,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAImiG,aAAa1gM,GAAG2gM,WAAWjyR,GAAG,IAAIsxF,EAAEtxF,EAAE,IAAIgmR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwvJ,GAAoBlzL,KAAKA,EAAEq4L,GAAer4L,IAAIu/L,GAAGlP,EAAQh2Q,KAAKkkL,KAAIoiG,WAAW3gM,GAAG/zF,WAAW,IAAIyoR,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKkkL,IAAG+/F,SAAS,IAAI5J,GAAmBr6Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKkkL,gBAAe7vL,GAAG,OAAOkyR,GAAyBlO,GAA4BhkR,KAAK,YAA6BA,GAAG,IAAIA,EAAE6G,WAAW,KAAK,MAAM,IAAIixH,WAAY,uBAAsB93H,sCAAsC,MAAMsxF,GAAGtxF,EAAE+X,MAAM,GAAG,GAAGupF,MAAMhQ,GAAG,MAAM,IAAIwmC,WAAY,uBAAsB93H,KAAK,OAAOsxF,EAAE,YAAwBtxF,EAAEsxF,GAAE,GAAI,MAAO,IAAGtxF,EAAEzC,WAAWgpR,SAAS,EAAE,OAAOj1L,EAAE,IAAI,KAAK,YAAkCtxF,EAAEsxF,EAAEpgC,EAAE,IAAI,IAAI3H,MAAM6E,EAAE61N,UAAUl3Q,GAAG/M,EAAE,QAAG,MAAW,CAAC,QAAG,MAAW,MAAM,IAAIg1H,UAAU,0CAA0C,WAAW1jC,GAAGo0L,GAAct3N,EAAE,EAAE8C,GAAG,kBAAkB9C,EAAE+yN,GAAiB/yN,EAAE,EAAE8C,IAAInkD,EAAEolR,GAAe/jO,OAAO,CAAC,MAAMpuD,EAAEoyR,GAAoBrlR,GAAG,QAAG,OAAYqhD,IAAIpuD,EAAE,MAAM,IAAI83H,WAAY,aAAY/qH,eAAeqhD,oCAAoC,GAAGrhD,IAAIolR,GAAenyR,GAAG,MAAM,IAAI83H,WAAY,uBAAsB/qH,KAAK,GAAGqhD,EAAEpuD,EAAEouD,EAAE,GAAGA,EAAE8C,EAAE,MAAM,IAAI4mE,WAAY,sBAAqB/qH,KAAK,OAAMslR,SAAIryR,GAAJ,CAAMupD,MAAM6E,EAAE61N,UAAUl3Q,IAAGijR,EAAmBsC,GAAS,qBAAqBlW,GAAgB,yBAAyBkW,GAAS7vR,MAAM25Q,GAAgB,sCAAsCkW,GAASl8L,UAAUi7L,SAASjV,GAAgB,6CAA6CkW,GAASl8L,UAAU06L,gBAAgB1U,GAAgB,wCAAwCkW,GAASl8L,UAAUm7L,WAAWnV,GAAgB,kCAAkCkW,GAASl8L,UAAU9sC,KAAK8yN,GAAgB,wCAAwCkW,GAASl8L,UAAUq7L,WAAWrV,GAAgB,wCAAwCkW,GAASl8L,UAAUs7L,WAAWtV,GAAgB,0CAA0CkW,GAASl8L,UAAU07L,aAAa1V,GAAgB,yCAAyCkW,GAASl8L,UAAUy7L,YAAYzV,GAAgB,yCAAyCkW,GAASl8L,UAAU27L,YAAY3V,GAAgB,kCAAkCkW,GAASl8L,UAAU0pL,KAAK1D,GAAgB,sCAAsCkW,GAASl8L,UAAUo7L,SAASpV,GAAgB,qCAAqCkW,GAASl8L,UAAU66L,QAAQ7U,GAAgB,yCAAyCkW,GAASl8L,UAAU67L,YAAY7V,GAAgB,0CAA0CkW,GAASl8L,UAAU86L,aAAa9U,GAAgB,oCAAoCkW,GAASl8L,UAAU7sC,OAAO6yN,GAAgB,wCAAwCkW,GAASl8L,UAAU6tL,WAAW7H,GAAgB,iDAAiDkW,GAASl8L,UAAU46L,oBAAoB5U,GAAgB,2CAA2CkW,GAASl8L,UAAU47L,cAAc5V,GAAgB,yCAAyCkW,GAASl8L,UAAUu7L,YAAYvV,GAAgB,mCAAmCkW,GAASl8L,UAAU5sC,MAAM4yN,GAAgB,kDAAkDkW,GAASl8L,UAAU26L,qBAAqB3U,GAAgB,yCAAyCkW,GAASl8L,UAAUw7L,YAAYf,GAAG0B,QAAQ,CAACzB,eAAe9wR,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAEq0N,GAAsBziR,EAAE,CAAC,MAAM,QAAQ,YAAY,QAAQ,CAAC,OAAO,QAAQ,MAAM+M,EAAEo2Q,GAAmB7xL,GAAGljC,EAAEokO,GAAyBpkO,GAAG,IAAI5E,KAAK5mC,EAAE2mC,MAAM9iD,EAAE6iD,IAAIj7C,IAAG+/C,EAAE,QAAQ5E,KAAK5mC,EAAE2mC,MAAM9iD,EAAE6iD,IAAIj7C,IAAGg9Q,GAAgBzoQ,EAAEnc,EAAE4H,GAAEtB,IAAI+1Q,GAAmBlgQ,EAAEnc,EAAE4H,GAAE6iD,IAAI6/N,oBAAoB/wR,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAEq0N,GAAsBziR,EAAE,CAAC,QAAQ,YAAY,QAAQ,CAAC,SAAS,MAAM+M,EAAEo2Q,GAAmB7xL,GAAGljC,EAAEokO,GAAyBpkO,GAAG,IAAI5E,KAAK5mC,EAAE2mC,MAAM9iD,GAAG2nD,EAAE,QAAQ5E,KAAK5mC,EAAE2mC,MAAM9iD,GAAG,SAA8BzG,GAAEsxF,GAAEpgC,IAAG,IAAI9C,GAAEpuD,GAAE+M,GAAEukF,GAAE,OAAOpgC,QAAO,SAAS8vN,GAAc5yN,GAAErhD,GAAE,GAAG,UAAU,cAAcy8C,KAAK4E,GAAE7E,MAAMx8C,IAAGk0Q,GAAiB7yN,GAAErhD,KAAI,MAAM,CAACy8C,KAAK4E,GAAE7E,MAAMx8C,IAAhL,CAAoL6V,EAAEnc,EAAEsG,IAAI23Q,GAAwB9hQ,EAAEnc,EAAEyqD,EAAE,IAAI8/N,mBAAmBhxR,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAEq0N,GAAsBziR,EAAE,CAAC,MAAM,QAAQ,YAAY,QAAQ,CAAC,QAAQ,MAAM+M,EAAEo2Q,GAAmB7xL,GAAG,QAAG,MAAW/nC,YAAO,MAAWC,WAAM,MAAWy6N,UAAU,MAAM,IAAIjvJ,UAAU,gDAAgD,MAAMpyG,OAAE,MAAWqhQ,UAAU71N,EAAEokO,GAAyBpkO,GAAG,IAAI7E,MAAM9iD,EAAE6iD,IAAIj7C,GAAEm7C,KAAK7a,IAAGyf,EAAE,QAAQ7E,MAAM9iD,EAAE6iD,IAAIj7C,IAAGg9Q,GAAgBzoQ,EAAE+rB,GAAE,KAAKloC,EAAE4H,GAAEtB,IAAIq3Q,GAAuB39Q,EAAE4H,GAAE6iD,EAAE,OAAO+/N,OAAOjxR,GAAGA,EAAEoxR,kBAAkBpxR,GAAG,MAAMsxF,EAAE,IAAIm/L,GAAG,QAAQv/N,EAAE,EAAEA,EAAElxD,EAAEtC,OAAOwzD,IAAI,CAAC,MAAM9C,EAAEpuD,EAAEkxD,GAAG40N,GAAK6K,GAAGr/L,EAAE,CAACljC,IAAI,YAAY03N,GAAK6K,GAAGr/L,EAAE,CAAC,cAAc,iBAAiBw0L,GAAK6K,GAAGr/L,EAAE,CAAC,UAAU,MAAM,IAAIw0L,GAAK8K,GAAGt/L,EAAE,MAAM+/L,QAAQrxR,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAE0kB,GAAG,IAAI9+B,GAAEm5Q,EAAQ3hR,EAAEyG,GAAGqvD,GAAE6rN,EAAQ3hR,EAAEqO,GAAGmpH,GAAEmqJ,EAAQ3hR,EAAE2uC,GAAG,QAAQ6a,KAAKhhD,GAAE+gD,MAAMuM,GAAExM,IAAIkuE,IAAGyyJ,GAAWzhR,GAAEstD,GAAE0hE,GAAElmC,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,IAAIkgQ,GAAmBt6Q,GAAEstD,GAAE0hE,GAAElwF,IAAIiqP,UAAU,CAACvxR,EAAEsxF,EAAEpgC,IAAI66N,GAAkBpK,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAGgzO,EAAQrwL,EAAE7qF,GAAGk7Q,EAAQrwL,EAAEjjF,GAAGszQ,EAAQrwL,EAAE3iD,GAAGuiB,GAAG1H,KAAKxpD,GAAG2hR,EAAQ3hR,EAAEyG,GAAGq5Q,MAAK,EAAG0R,UAAS,EAAGjoO,MAAMvpD,GAAG2hR,EAAQ3hR,EAAEqO,GAAG41Q,UAAUjkR,GAAGmyR,GAAexQ,EAAQ3hR,EAAEqO,IAAIi7C,IAAItpD,GAAG2hR,EAAQ3hR,EAAE2uC,GAAG8iP,UAAUzxR,GAAG8oR,EAAUnH,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,IAAI+iP,UAAU1xR,GAAG6oR,GAAUlH,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,IAAIgjP,WAAW3xR,GAAGyyR,GAAW9Q,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,IAAIo6O,KAAK6I,WAAW5xR,GAAGyyR,GAAW9Q,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,IAAI6a,KAAKqoO,WAAW,IAAI,EAAEC,YAAY9xR,GAAG4oR,EAAejH,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,IAAI0jR,WAAW/xR,GAAG,IAAIsxF,EAAEtxF,EAAE,OAAOigR,GAAQ3uL,EAAE7qF,KAAK6qF,EAAEq4L,GAAer4L,IAAIq3L,GAAShH,EAAQrwL,EAAE7qF,IAAI,IAAI,KAAKurR,aAAa,IAAI,GAAGC,WAAWjyR,GAAG,IAAIsxF,EAAEtxF,EAAE,OAAOigR,GAAQ3uL,EAAE7qF,KAAK6qF,EAAEq4L,GAAer4L,IAAIq3L,GAAShH,EAAQrwL,EAAE7qF,MAAM,SAAqBgF,YAAYzL,GAAG,GAAG2L,KAAKhL,IAAI,IAAII,IAAI4K,KAAK+mR,MAAM,EAAE/mR,KAAKgnR,KAAK,EAAEhnR,KAAKinR,OAAO,EAAEjnR,KAAK83E,IAAI2wE,WAAW4qG,YAAY5qG,WAAW4qG,YAAYv7K,MAAMzjD,KAAKyjD,WAAM,MAAW,CAAC,IAAI6N,EAAE,EAAE,UAAUpgC,KAAKlxD,EAAEW,IAAIqqL,UAAU,CAAC,KAAK15F,EAAEuhM,GAAeC,kBAAkB,MAAMnnR,KAAKhL,IAAIM,OAAOiwD,KAAKlwD,IAAIhB,GAAG,MAAMsxF,EAAE3lF,KAAKhL,IAAIK,IAAIhB,GAAG,OAAOsxF,IAAI3lF,KAAKgnR,OAAOhnR,KAAKonR,UAAUpnR,KAAK+mR,QAAQphM,EAAErwF,IAAIjB,EAAEsxF,GAAG3lF,KAAKhL,IAAIM,IAAIjB,EAAEsxF,GAAG3lF,KAAKinR,SAASjnR,KAAKonR,SAASA,SAAQ,CAAEC,UAAUhzR,GAAG,GAAG6yR,GAAeI,UAAUjyR,IAAIhB,GAAG,MAAM,IAAI83H,WAAW,yBAAyB+6J,GAAeI,UAAUhyR,IAAIjB,EAAE2L,MAAMA,KAAKonR,kCAAkC/yR,GAAG,IAAIsxF,EAAEuhM,GAAeI,UAAUjyR,IAAIhB,GAAG,OAAOsxF,IAAIA,EAAE,IAAIuhM,GAAeA,GAAeI,UAAUhyR,IAAIjB,EAAEsxF,IAAIA,GAAG,aAA6B4hM,QAAQlzR,EAAEmzR,SAAS7hM,EAAE8hM,OAAOliO,IAAI,MAAO,GAAEs1N,GAAcxmR,MAAMsmR,GAAsBh1L,MAAMg1L,GAAsBp1N,YAAY,YAAwBlxD,EAAEsxF,GAAG,MAAM,CAACznC,MAAM7pD,EAAEwpD,KAAK8nC,EAAE9nC,KAAKmxF,OAAO36I,EAAEupD,MAAM+nC,EAAE/nC,MAAMsxF,KAAK76I,EAAEspD,IAAIgoC,EAAEhoC,KAAKupO,GAAeI,UAAU,IAAIhiQ,QAAQ4hQ,GAAeC,kBAAkB,IAAI,SAAiBrnR,cAAcE,KAAK0nR,UAAU,QAAQ1nR,KAAK2nR,QAAO,EAAG3nR,KAAK4nR,kBAAiB,EAAGC,eAAe,YAAO,SAAcz7I,YAAYpsI,KAAKosI,UAAU,IAAIo4I,GAAI,cAAaxkR,KAAKiT,KAAK,CAAC0qC,IAAI,UAAUC,MAAM,UAAUC,KAAK,UAAUs2N,IAAIn0Q,KAAK0nR,UAAUzT,SAAS,SAASj0Q,KAAKosI,UAAU07I,kBAAkBzzR,EAAEsxF,GAAG,MAAM9nC,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,GAAG/M,EAAE4iB,EAAEuwC,KAAKC,UAAU,CAAC+yM,KAAK,oBAAoB+sB,QAAQhiO,EAAEiiO,SAAS/kO,EAAEglO,OAAOrmR,EAAE6R,GAAGjT,KAAKiT,KAAKnY,GAAE6qF,EAAEtwF,IAAI4hB,GAAG,GAAGnc,GAAE,OAAOA,GAAE,MAAM4H,GAAE1C,KAAK6nR,eAAe,IAAI7kP,GAAErH,GAAE,IAAIA,GAAEosP,GAAmB,CAACR,QAAQhiO,EAAEiiO,SAAS/kO,EAAEglO,OAAOrmR,IAAI4hC,GAAEtgC,GAAE4/Q,cAAc,IAAIjuP,KAAKsH,IAAmGv6B,CAAnGu6B,MAAUtnC,IAAG,MAAM,IAAI83H,WAAY,qBAAoB3kE,KAAKC,UAAU,CAAC8/N,QAAQhiO,EAAEiiO,SAAS/kO,EAAEglO,OAAOrmR,OAAO,MAAMvE,GAAE,GAAG,QAAQK,KAAK7I,GAAEc,MAAMwwF,MAAK3iD,GAAE,CAAC,GAAG,cAAanmC,GAAEgpR,SAASlgM,IAAG,qBAAoB9oF,GAAEgpR,SAASlgM,IAAG,aAAY,CAAC,MAAMtxF,GAAE,kBAAkByH,KAAK6pF,IAAG,IAAItxF,IAAG,MAAKtC,SAASsC,GAAE,KAAKA,GAAE,GAAG,MAAM,IAAI83H,WAAY,qBAAoBxmC,MAAK,GAAG9oF,GAAE+gD,MAAMvpD,GAAE,IAAIA,GAAE,GAAG,EAAEwI,GAAE+gD,MAAM,EAAE,MAAM,IAAIuuE,WAAY,iBAAgBxmC,WAAUhqD,WAAU37B,KAAKiT,+EAA+E,GAAGpW,GAAE+gD,MAAM,GAAG,MAAM,IAAIuuE,WAAY,iBAAgBxmC,WAAUhqD,WAAU37B,KAAKiT,+EAA+E5e,GAAE,KAAKwI,GAAEmrR,WAAW3zR,GAAE,IAAI,QAAQA,KAAIwI,GAAE8gD,KAAKgoC,IAAG3lF,KAAK2nR,QAAQ,YAAW,UAAS,UAAShiM,GAAEA,GAAEtnF,MAAM,MAAM,GAAGxB,GAAEs3Q,IAAIxuL,GAAEiN,UAAU,OAAO12F,QAAQ,kBAAkB,IAAIA,QAAQ,IAAI,KAAKY,eAAe,QAAG,OAAW+oR,QAAQ,MAAM,IAAI15J,WAAY,0DAAyDnsH,KAAKiT,iDAAiD,GAAGjT,KAAKioR,cAAc,CAAC,MAAM9T,IAAIxuL,GAAEkgM,QAAQtgO,IAAGvlD,KAAKioR,cAAcprR,GAAExI,GAAGwI,GAAEs3Q,IAAIxuL,GAAE9oF,GAAEgpR,QAAQtgO,GAAEvlD,KAAKkoR,cAAcloR,KAAKkoR,aAAa7zR,GAAG,MAAM81D,GAAEnqD,KAAKmoR,mBAAmBtrR,GAAE8oF,EAAE,aAAY,GAAI,QAAG,OAAW9nC,KAAK,MAAM,IAAIsuE,WAAY,2BAA0B3kE,KAAKC,UAAUpzD,MAAM,QAAG,OAAWupD,MAAM,MAAM,IAAIuuE,WAAY,4BAA2B3kE,KAAKC,UAAUpzD,MAAM,QAAG,OAAWspD,IAAI,MAAM,IAAIwuE,WAAY,0BAAyB3kE,KAAKC,UAAUpzD,MAAM,OAAOsxF,EAAErwF,IAAI2hB,EAAEkzC,IAAG,CAAC,YAAY,UAAUv3D,QAAS2yD,KAAI,MAAM9C,GAAE+E,KAAKC,UAAU,CAAC+yM,KAAK,oBAAoB38M,KAAKsM,GAAEtM,KAAKD,MAAMuM,GAAEvM,MAAMD,IAAIwM,GAAExM,IAAIloB,SAAS8vB,GAAEtyC,GAAGjT,KAAKiT,KAAK0yE,EAAErwF,IAAImtD,GAAEpuD,KAAM81D,GAAEi+N,qBAAqB/zR,GAAG,MAAM8/Q,IAAIxuL,EAAE/nC,MAAM2H,EAAE1H,KAAK4E,EAAE9E,IAAIv8C,EAAEykR,QAAQ5uQ,EAAEqhQ,UAAUx9Q,GAAEktR,WAAWtlR,IAAGrO,EAAE,QAAG,OAAW,MAAM,IAAI83H,WAAW,iCAAiC,QAAG,YAAY,MAAW,MAAM,IAAI9C,UAAU,+BAA+B,QAAG,YAAY,OAAW,MAAM,IAAIA,UAAU,kCAAkC,QAAG,MAAW,MAAM,IAAI8C,WAAW,eAAe,QAAG,OAAW,CAAC,GAAG,iBAAiBrxH,GAAE,MAAM,IAAIqxH,WAAW,0CAA0CrxH,IAAG,IAAI,mBAAmB+rF,KAAK/rF,IAAG,MAAM,IAAIqxH,WAAY,sBAAqBrxH,MAAK,GAAGkF,KAAKqoR,YAAY,CAAC,QAAG,OAAY1iM,IAAI3lF,KAAKqoR,YAAY,MAAM,IAAIl8J,WAAY,eAAcnsH,KAAKqoR,oBAAoB1iM,KAAK,QAAG,YAAY,OAAY1uE,IAAIwrC,EAAE,MAAM,IAAI0pE,WAAY,WAAUl1G,yBAAyBwrC,KAAK,GAAGziD,KAAK2nR,aAAQ,MAAWxT,WAAM,IAAS9/Q,EAAEwxR,SAAS,MAAM,IAAI15J,WAAW,4DAA4Dg8J,mBAAmB9zR,EAAEsxF,EAAEpgC,EAAE,YAAY9C,GAAE,GAAI,GAAG,mBAAmB6lO,aAAa,MAAM,IAAIn8J,WAAW,6CAA6C,IAAI/qH,EAAE/M,EAAE,GAAG2L,KAAKooR,qBAAqBhnR,GAAGpB,KAAKqoR,YAAY,CAAC,MAAMxqO,KAAKxpD,GAAEwxR,QAAQlgM,IAAGvkF,EAAEA,EAAEslR,SAAItlR,GAAJ,CAAM+yQ,IAAIn0Q,KAAKqoR,YAAYxqO,UAAK,OAAWxpD,GAAEsxF,GAAEkgM,aAAQ,OAAWlgM,GAAEtxF,KAAG,MAAM4iB,EAAEjX,KAAKqmR,aAAajlR,EAAEukF,GAAG,IAAI/nC,MAAM9iD,GAAEw9Q,UAAU51Q,IAAGtB,EAAE,QAAQw8C,MAAM9iD,GAAEw9Q,UAAU51Q,IAAGmkR,GAAyBzlR,EAAEmkD,EAAEtuC,IAAIyvQ,SAAItlR,GAAJ,CAAMw8C,MAAM9iD,GAAEw9Q,UAAU51Q,KAAG6lR,sBAAsBl0R,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEziD,KAAKqmR,aAAahyR,EAAEkxD,GAAG,IAAI3H,MAAMx8C,EAAEu8C,IAAI1mC,GAAG5iB,EAAE,MAAM,cAAc0lR,GAAc34Q,EAAE,EAAEqhD,GAAGs3N,GAAc9iQ,EAAE,EAAEjX,KAAKwoR,mBAAmBn0R,MAAM+M,EAAEo0Q,GAAiBp0Q,EAAE,EAAEqhD,GAAGxrC,EAAEu+P,GAAiBv+P,EAAE,EAAEjX,KAAKwoR,mBAAmB9B,SAAIryR,GAAJ,CAAMupD,MAAMx8C,OAAMslR,SAAIryR,GAAJ,CAAMupD,MAAMx8C,EAAEu8C,IAAI1mC,IAAGwxQ,kBAAkBp0R,EAAEsxF,EAAE,YAAYpgC,GAAG,MAAM9C,EAAEpuD,EAAE,IAAI+M,EAAEpB,KAAKmoR,mBAAmB9zR,EAAEkxD,EAAEogC,GAAE,GAAIvkF,EAAEpB,KAAKuoR,sBAAsBnnR,EAAEukF,EAAEpgC,GAAG,MAAM1H,KAAK5mC,EAAE2mC,MAAM9iD,GAAE6iD,IAAIj7C,IAAGtB,EAAE4hC,GAAEwkB,KAAKC,UAAU,CAAC+yM,KAAK,oBAAoB38M,KAAK5mC,EAAE2mC,MAAM9iD,GAAE6iD,IAAIj7C,GAAE+yB,SAASkwD,EAAE1yE,GAAGjT,KAAKiT,KAAK,IAAI0oB,GAAE9+B,GAAE0oD,EAAElwD,IAAI2tC,IAAiB,GAAXnmC,SAAc,MAAWghD,WAAM,MAAWD,YAAO,MAAWD,MAAM8E,EAAE5E,OAAOz8C,EAAEy8C,MAAM4E,EAAE7E,QAAQx8C,EAAEw8C,OAAO6E,EAAE9E,MAAMv8C,EAAEu8C,OAAOhiB,GAAE6rB,KAAKC,UAAU,CAAC+yM,KAAK,oBAAoB38M,KAAK4E,EAAE5E,KAAKD,MAAM6E,EAAE7E,MAAMD,IAAI8E,EAAE9E,IAAIloB,SAASkwD,EAAE1yE,GAAGjT,KAAKiT,KAAKpW,GAAE0oD,EAAElwD,IAAIsmC,IAAG9+B,IAAG,OAAOA,GAAE,IAAIstD,GAAEnqD,KAAK0oR,gBAAgB,CAAC7qO,KAAK5mC,EAAE2mC,MAAM9iD,GAAE6iD,IAAIj7C,KAAI,MAAMimR,GAAyBt0R,KAAI,IAAIouD,GAAEziD,KAAK4oR,WAAWz+N,GAAE91D,IAAG,GAAG+M,EAAEu8C,IAAI39C,KAAK6oR,mBAAmBznR,GAAG,CAAC,IAAI/M,GAAE2L,KAAK8nR,kBAAkBrlO,GAAE8C,GAAG,KAAKlxD,GAAEupD,QAAQ9iD,IAAGzG,GAAEwpD,OAAO5mC,GAAG,CAAC,GAAG,aAAa,MAAM,IAAIk1G,WAAY,OAAMzpH,8BAA6B5H,cAAamc,KAAKwrC,GAAEziD,KAAK4oR,WAAWnmO,IAAE,GAAIpuD,GAAE2L,KAAK8nR,kBAAkBrlO,GAAE8C,IAAI,OAAO9C,IAAG,IAAIopE,GAAE,EAAEn8F,GAAE1vB,KAAK8nR,kBAAkB39N,GAAE5E,GAAG68K,GAAE0mD,GAAe1nR,EAAEsuB,IAAM,OAAMwuB,OAAO,OAAM8wF,QAAQ,OAAME,OAA6C/kF,GAAEnqD,KAAK4oR,WAAWz+N,GAAjD,IAAIi4K,GAAElkL,MAAM,GAAGkkL,GAAEpzF,OAAOozF,GAAElzF,MAA4Bx/G,GAAE1vB,KAAK8nR,kBAAkB39N,GAAE5E,GAAG68K,GAAE0mD,GAAe1nR,EAAEsuB,IAAG,OAAMwuB,OAAO,OAAM8wF,OAAO7kF,GAAEw+N,GAAyBvmD,GAAElzF,MAAMrjB,GAAE7rH,KAAK+oR,qBAAqB3nR,EAAEsuB,KAAG,IAAIrV,GAAE,EAAE,KAAKwxG,IAAG,CAAC1hE,GAAEnqD,KAAK4oR,WAAWz+N,GAAE0hE,GAAExxG,IAAG,MAAMhmB,GAAEq7B,GAAEA,GAAE1vB,KAAK8nR,kBAAkB39N,GAAE5E,GAAG,MAAMtuC,GAAE40G,GAAE,GAAGA,GAAE7rH,KAAK+oR,qBAAqB3nR,EAAEsuB,IAAGm8F,GAAE,GAAGu2G,GAAE0mD,GAAe1nR,EAAEsuB,IAAG,OAAMwuB,OAAO,OAAM8wF,OAAO7kF,GAAEw+N,GAAyBvmD,GAAElzF,MAAMrjB,GAAE,UAAU50G,IAAG40G,KAAI50G,GAAE,GAAGoD,GAAE,EAAEA,IAAG,MAAM,CAAC,GAAG,aAAa,MAAM,IAAI8xG,WAAY,2CAA0C3kE,KAAKC,UAAUuhO,MAAIvmO,OAAOziD,KAAK+oR,qBAAqBr5P,GAAEr7B,IAAG,IAAI81D,GAAEnqD,KAAK4oR,WAAWz+N,IAAE,IAAK0hE,GAAE,GAAG,GAAGtmE,EAAEjwD,IAAI0tC,GAAEmnB,IAAGxuB,IAAG4pB,EAAEjwD,IAAIqmC,GAAEwuB,SAAG,MAAWtM,WAAM,MAAWD,YAAO,MAAWD,UAAK,MAAW26N,WAAWt4Q,KAAK2nR,cAAS,IAASvmR,EAAE+yQ,UAAK,MAAW0R,SAAS,MAAM,IAAI15J,WAAW,+BAA+B,OAAOhiE,GAAE8+N,uBAAuB50R,EAAEsxF,GAAG,MAAMpgC,EAAE,CAAC1H,KAAKm4N,EAAQ3hR,EAAEyG,GAAG8iD,MAAMo4N,EAAQ3hR,EAAEqO,GAAGi7C,IAAIq4N,EAAQ3hR,EAAE2uC,IAAI,OAAOhjC,KAAK8nR,kBAAkBviO,EAAEogC,GAAGojM,qBAAqB10R,EAAEsxF,GAAG,MAAMpgC,EAAEuxN,GAAsBziR,EAAE,CAAC,MAAM,QAAQ,QAAQ,CAAC,MAAM,QAAQ,SAASouD,EAAEq0N,GAAsBnxL,EAAE,CAAC,MAAM,QAAQ,QAAQ,CAAC,MAAM,QAAQ,SAAS,OAAOpgC,EAAE1H,OAAO4E,EAAE5E,KAAK2iO,GAAiBj7N,EAAE1H,KAAK4E,EAAE5E,MAAM0H,EAAE3H,QAAQ6E,EAAE7E,MAAM4iO,GAAiBj7N,EAAE3H,MAAM6E,EAAE7E,OAAO2H,EAAE5H,MAAM8E,EAAE9E,IAAI6iO,GAAiBj7N,EAAE5H,IAAI8E,EAAE9E,KAAK,EAAEurO,aAAa70R,EAAEsxF,EAAE,YAAYpgC,GAAG,MAAM9C,EAAEziD,KAAKyoR,kBAAkBp0R,EAAEsxF,EAAEpgC,GAAG,OAAOvlD,KAAK8nR,kBAAkBrlO,EAAE8C,GAAGqjO,WAAWv0R,EAAEsxF,GAAG,OAAO24L,GAAWjqR,EAAEwpD,KAAKxpD,EAAEupD,MAAMvpD,EAAEspD,IAAI,EAAE,EAAE,EAAEgoC,EAAE,aAAawjM,gBAAgB90R,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEziD,KAAKyoR,kBAAkBp0R,EAAE,YAAYkxD,GAAGnkD,EAAEpB,KAAK4oR,WAAWnmO,EAAEkjC,GAAG,OAAO3lF,KAAK8nR,kBAAkB1mR,EAAEmkD,GAAG6jO,kBAAkB/0R,EAAEsxF,EAAEpgC,EAAE9C,GAAG,IAAIrhD,EAAE/M,EAAE,MAAMspD,IAAI1mC,GAAG7V,EAAE,QAAQ/M,GAAE,EAAEkxD,GAAEm/N,EAAG/+L,GAAGtxF,GAAEkxD,GAAElxD,KAAI,CAAC,MAAMupD,MAAMvpD,IAAG+M,EAAEmkD,GAAEnkD,EAAEtG,GAAE6qF,EAAE,GAAG7iF,KAAKC,IAAIkU,EAAEjX,KAAKqpR,oBAAoBjoR,EAAEqhD,IAAIziD,KAAKmmR,YAAY/kR,EAAEqhD,GAAG//C,GAAE1C,KAAKyoR,kBAAkBrnR,EAAE,YAAYqhD,GAAG,IAAIzf,GAAEhjC,KAAK4oR,WAAWlmR,GAAE5H,IAAG,GAAGsG,EAAEpB,KAAK8nR,kBAAkB9kP,GAAEyf,GAAGkjC,EAAE,EAAE,CAAC,MAAMA,GAAE3lF,KAAKqmR,aAAa9gO,GAAE9C,GAAG,KAAKrhD,EAAEw8C,MAAM,GAAGvpD,GAAEsxF,IAAG3iD,GAAEhjC,KAAK4oR,WAAW5lP,IAAE,GAAI5hC,EAAEpB,KAAK8nR,kBAAkB9kP,GAAEyf,GAAGrhD,EAAEu8C,MAAM1mC,IAAI7V,EAAEpB,KAAKkpR,aAAaxC,SAAItlR,GAAJ,CAAMu8C,IAAI1mC,IAAG,YAAYwrC,IAAI,GAAG,cAAcrhD,EAAEu8C,MAAM1mC,EAAE,MAAM,IAAIk1G,WAAY,OAAMl1G,gDAAgD,OAAO7V,EAAEkoR,YAAYj1R,GAAG6pD,MAAMynC,EAAE,EAAEqpD,OAAOzpF,EAAE,EAAEowN,MAAMlzN,EAAE,EAAEysF,KAAK9tI,EAAE,GAAG6V,EAAEnc,IAAG,MAAM+iD,KAAKn7C,GAAEi7C,IAAI3a,GAAEs1O,UAAU38O,IAAGtnC,EAAEwI,GAAEmD,KAAKmoR,mBAAmB,CAACtqO,KAAKn7C,GAAEijF,EAAE2yL,UAAU38O,GAAEgiB,IAAI3a,IAAGloC,IAAGqvD,GAAEnqD,KAAKopR,kBAAkBvsR,GAAE0oD,EAAEtuC,EAAEnc,IAAW,OAAOkF,KAAKmpR,gBAAgBh/N,GAAlC/oD,EAAE,EAAEqhD,EAAkC3nD,IAAGyuR,cAAcl1R,EAAEsxF,EAAEpgC,EAAE9C,GAAG,IAAIrhD,EAAE,EAAE6V,EAAE,EAAEnc,GAAE,EAAE4H,GAAE,EAAE,OAAO6iD,OAAO,MAAMnkD,EAAEpB,KAAKwpR,kBAAkBn1R,EAAEsxF,EAAEljC,GAAG,UAAU,OAAO,CAAC,MAAM8C,GAAEvlD,KAAKwpR,kBAAkBn1R,EAAEsxF,EAAEljC,GAAGrhD,EAAEmkD,GAAE,EAAEtuC,GAAGsuC,GAAEnkD,GAAG,EAAE,UAAU,YAAY,OAAO,CAAC,MAAM6V,GAAEjX,KAAK+oR,qBAAqBpjM,EAAEtxF,GAAG,IAAI4iB,GAAE,MAAM,CAACinC,MAAM,EAAE8wF,OAAO,EAAE2mI,MAAM,EAAEzmI,KAAK,GAAG,MAAMlsG,GAAE2iD,EAAE9nC,KAAKxpD,EAAEwpD,KAAKliB,GAAEgqD,EAAEhoC,IAAItpD,EAAEspD,IAAI,GAAG,YAAY3a,GAAE,CAAC,IAAIuiB,GAAE,EAAEogC,EAAE2yL,UAAUjkR,EAAEikR,YAAY/yN,GAAE,GAAGogC,EAAE2yL,UAAUjkR,EAAEikR,YAAY/yN,IAAE,GAAIA,KAAIA,GAAEziD,KAAKmpH,KAAKtwF,KAAIj5B,GAAE6iD,GAAEtuC,GAAE,EAAE+rB,GAAE/rB,GAAE+rB,GAAE,IAAInmC,GAAEstD,GAAEznD,GAAE1C,KAAKspR,YAAYj1R,EAAE,CAAC6pD,MAAMx7C,IAAG,YAAY+/C,GAAGpuD,EAAE,GAAGyG,IAAGmc,GAAEpa,GAAEstD,GAAEA,GAAEnqD,KAAKopR,kBAAkBvsR,GAAEoa,GAAE,YAAYwrC,GAAG0H,GAAExM,MAAMtpD,EAAEspD,MAAMwM,GAAEnqD,KAAKkpR,aAAaxC,SAAIv8N,IAAJ,CAAMxM,IAAItpD,EAAEspD,MAAK,YAAY8E,UAAUziD,KAAK+oR,qBAAqBpjM,EAAEx7B,IAAGlzC,IAAG,GAAGnc,IAAGmc,GAAE7V,EAAEpB,KAAKwpR,kBAAkB3sR,GAAE8oF,EAAEljC,GAAG,OAAO,MAAM,CAACvE,MAAMx7C,GAAEssI,OAAOl0I,GAAE66Q,MAAM1+P,EAAEi4H,KAAK9tI,GAAG+kR,YAAY9xR,EAAEsxF,GAAG,MAAMhoC,IAAI4H,GAAGlxD,EAAEouD,EAAEziD,KAAKwoR,mBAAmBn0R,GAAG+M,EAAEpB,KAAK6oR,mBAAmBx0R,GAAG,GAAG+M,IAAIqhD,EAAE,OAAOrhD,EAAE,MAAM6V,EAAEsuC,GAAG9C,EAAErhD,EAAEqhD,EAAErhD,EAAEtG,GAAEkF,KAAKyoR,kBAAkBp0R,EAAE,YAAYsxF,GAAGjjF,GAAE1C,KAAK4oR,WAAW9tR,GAAEmc,GAAG+rB,GAAEhjC,KAAK8nR,kBAAkBplR,GAAEijF,GAAGhqD,GAAE37B,KAAK4oR,WAAWlmR,IAAGsgC,GAAE2a,KAAK,OAAO39C,KAAK8nR,kBAAkBnsP,GAAEgqD,GAAGhoC,IAAI0rO,oBAAoBh1R,EAAEsxF,GAAG,MAAMhoC,IAAI4H,EAAE3H,MAAM6E,EAAE5E,KAAKz8C,GAAG/M,EAAE,IAAI4iB,EAAE,CAAC4mC,KAAK4E,EAAE,EAAErhD,EAAEA,EAAE,EAAEw8C,MAAM6E,EAAE9E,IAAI,GAAG,MAAM7iD,GAAE2nD,EAAE,EAAEA,EAAE,EAAEziD,KAAKqmR,aAAapvQ,EAAE0uE,GAAG1uE,EAAEyvQ,SAAIzvQ,GAAJ,CAAM2mC,MAAM9iD,KAAG,MAAM4H,GAAE1C,KAAK6oR,mBAAmB5xQ,GAAG+rB,GAAEhjC,KAAKwoR,mBAAmBvxQ,GAAG,GAAGvU,KAAIsgC,GAAE,OAAOA,GAAE,MAAMrH,GAAE37B,KAAKyoR,kBAAkBp0R,EAAE,YAAYsxF,GAAG9oF,GAAEmD,KAAK4oR,WAAWjtP,IAAG4pB,GAAG,OAAOvlD,KAAK8nR,kBAAkBjrR,GAAE8oF,GAAGhoC,IAAI8rO,oBAAoBp1R,GAAG,MAAM,CAACwpD,KAAKxpD,EAAEwpD,KAAKD,MAAM,EAAE06N,UAAU,MAAM36N,IAAI,GAAG+rO,qBAAqBr1R,GAAG,MAAM,CAACwpD,KAAKxpD,EAAEwpD,KAAKD,MAAMvpD,EAAEupD,MAAMD,IAAI,GAAG6rO,kBAAkBn1R,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEziD,KAAKyoR,kBAAkBp0R,EAAE,YAAYkxD,GAAGnkD,EAAEpB,KAAKyoR,kBAAkB9iM,EAAE,YAAYpgC,GAAG,OAAOvlD,KAAK2pR,aAAalnO,EAAErhD,GAAGuoR,aAAat1R,EAAEsxF,GAAG,OAAOy6L,GAAkB/rR,EAAEwpD,KAAKxpD,EAAEupD,MAAMvpD,EAAEspD,IAAIgoC,EAAE9nC,KAAK8nC,EAAE/nC,MAAM+nC,EAAEhoC,IAAI,OAAOuxF,KAAKm2I,mBAAmBhxR,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAErhD,EAAE6V,EAAEnc,GAAE4H,IAAG41Q,UAAUt1O,GAAE2a,IAAIhiB,IAAGtnC,EAAE,QAAG,OAAW,CAAC,IAAIwpD,KAAK4E,GAAE0xN,IAAI/yQ,GAAEykR,QAAQ5uQ,IAAG5iB,EAAE,QAAG,cAAa,IAAS+M,SAAG,QAAY,MAAM,IAAIioH,UAAU,2FAA2FivJ,UAAUt1O,GAAE2a,IAAIhiB,IAAG37B,KAAK8nR,kBAAkB9nR,KAAKyoR,kBAAkBp0R,EAAEsxF,EAAEpgC,GAAGA,IAAI,MAAM1oD,GAAEmD,KAAK8nR,kBAAkB,CAACjqO,KAAK,KAAKD,MAAM,GAAGD,IAAI,IAAI4H,GAAG4E,GAAEttD,GAAEy7Q,UAAUt1O,IAAGnmC,GAAEy7Q,YAAYt1O,IAAGnmC,GAAE8gD,KAAKhiB,GAAE9+B,GAAEghD,KAAKhhD,GAAEghD,KAAK,EAAE,QAAQxpD,GAAE,EAAEA,GAAE,IAAIA,KAAI,CAAC,MAAMwI,GAAEmD,KAAKmoR,mBAAmB,CAACxqO,IAAIhiB,GAAE28O,UAAUt1O,GAAE6a,KAAKsM,GAAE91D,IAAGkxD,GAAGsmE,GAAE7rH,KAAKyoR,kBAAkB5rR,GAAE,YAAY0oD,GAAG71B,GAAE1vB,KAAK8nR,kBAAkBj8J,GAAEtmE,GAAG,KAAK1H,KAAK4E,EAAE7E,MAAMx8C,EAAEu8C,IAAI1mC,GAAG40G,IAAGn8F,GAAE4oP,YAAYt1O,IAAGtT,GAAEiuB,MAAMhiB,GAAE,MAAM,CAACiiB,MAAMx8C,EAAEu8C,IAAI1mC,EAAE4mC,KAAK4E,GAAG,cAAckjC,SAAI,IAAS7qF,IAAG40B,GAAE4oP,YAAYx9Q,GAAEw9Q,WAAW5oP,GAAEiuB,IAAI7iD,GAAE6iD,OAAO7iD,GAAE40B,GAAEhtB,GAAEmpH,IAAG,GAAG,sBAAiB,OAAW,OAAOnpH,GAAE,MAAM,IAAIypH,WAAY,aAAYnsH,KAAKiT,0BAA0B+vB,cAAarH,OAAM,iBAA2BiuP,GAAW9pR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,SAASjT,KAAKsoR,aAAa,YAAYtoR,KAAKgvI,OAAO,CAAC66I,OAAO,CAACC,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAI66I,QAAQ,CAACD,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,CAAC9+C,IAAI,GAAGrtF,IAAI,KAAKinR,OAAO,CAACF,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,CAAC9+C,IAAI,GAAGrtF,IAAI,KAAKknR,MAAM,CAACH,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAIg7I,OAAO,CAACJ,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAIi7I,KAAK,CAACL,UAAK,EAAOl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAI,SAAS,CAAC46I,KAAK,EAAEl0B,aAAQ,EAAO0iB,UAAU,OAAOppI,KAAK,IAAI,UAAU,CAAC46I,KAAK,EAAEl0B,aAAQ,EAAO0iB,UAAU,MAAMppI,KAAK,IAAIk7I,MAAM,CAACN,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAIm7I,KAAK,CAACP,KAAK,EAAEl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAIo7I,MAAM,CAACR,KAAK,GAAGl0B,QAAQ,EAAE0iB,UAAU,MAAMppI,KAAK,IAAIq7I,MAAM,CAACT,KAAK,GAAGl0B,QAAQ,GAAG0iB,UAAU,MAAMppI,KAAK,IAAIs7I,GAAG,CAACV,KAAK,GAAGl0B,QAAQ,GAAG0iB,UAAU,MAAMppI,KAAK,IAAIu7I,KAAK,CAACX,KAAK,GAAGl0B,QAAQ,GAAG0iB,UAAU,MAAMppI,KAAK,KAAKlvI,KAAK2nR,QAAO,EAAGrB,WAAWjyR,GAAG,MAAMwpD,KAAK8nC,GAAGtxF,EAAE,OAAO,EAAEsxF,EAAE,GAAG,GAAG,EAAE0gM,aAAahyR,GAAG,OAAO2L,KAAKsmR,WAAWjyR,GAAG,GAAG,GAAGw0R,mBAAmBx0R,GAAG,OAAO2L,KAAK0qR,kBAAkBr2R,EAAE,OAAOm0R,mBAAmBn0R,GAAG,OAAO2L,KAAK0qR,kBAAkBr2R,EAAE,OAAOq2R,kBAAkBr2R,EAAEsxF,GAAG,MAAM/nC,MAAM2H,EAAE1H,KAAK4E,GAAGpuD,EAAE+M,EAAEpB,KAAK2qR,aAAaloO,EAAE8C,GAAGtuC,EAAE4tQ,EAAG7kR,KAAKgvI,QAAQ5oI,KAAM/R,IAAGA,GAAE,GAAGikR,YAAYl3Q,GAAI,QAAG,MAAW,MAAM,IAAI+qH,WAAY,2BAA0B5mE,KAAK,MAAMzqD,GAAEmc,EAAE,GAAGi4H,KAAK,MAAM,iBAAiBp0I,GAAEA,GAAEA,GAAE6qF,GAAG+iM,gBAAgBr0R,GAAG,MAAMwpD,KAAK8nC,GAAGtxF,EAAE,MAAM,CAACwpD,KAAK8nC,EAAE,KAAK/nC,MAAM,EAAED,IAAI,GAAGgtO,aAAat2R,EAAEsxF,GAAG,OAAO3lF,KAAKsmR,WAAW,CAACzoO,KAAKxpD,IAAI,MAAMmyR,GAAe,GAAE,GAAIA,GAAe7gM,EAAE,EAAEA,EAAEA,EAAE,GAAG6gM,GAAe7gM,GAAGwiM,mBAAmB9zR,EAAEsxF,EAAEpgC,EAAE,YAAY9C,GAAE,GAAI,IAAI5E,KAAKz8C,EAAEykR,QAAQ5uQ,EAAE2mC,MAAM9iD,GAAEw9Q,UAAU51Q,GAAEi7C,IAAI3a,GAAEglP,WAAWrsP,IAAGtnC,EAAE,QAAG,YAAY,QAAa+M,EAAE6V,QAAG,YAAY,QAAaA,EAAE7V,GAAGqhD,EAAE,CAAC,GAAG9mB,GAAE,CAAC,MAAMtnC,GAAE2L,KAAKgvI,OAAOrzG,IAAG,IAAItnC,GAAE,MAAM,IAAI83H,WAAY,0CAAyCxwF,MAAK7gC,GAAEkF,KAAKsmR,WAAW,CAACzoO,KAAKz8C,IAAI/M,GAAEy1R,KAAKz1R,GAAEuhQ,QAAQlzP,UAAE1C,KAAK2qR,aAAavpR,EAAEtG,IAAS,CAAC+iD,KAAKz8C,EAAEw8C,MAAM9iD,GAAE6iD,IAAI3a,GAAEmxO,SAAI,EAAO0R,QAAQ5uQ,EAAEqhQ,UAAU51Q,IAAG,GAAG1C,KAAKooR,qBAAqB/zR,QAAG,OAAW,GAAGqO,GAAEyhD,SAAS,KAAK,CAAC,GAAG,YAAW,MAAM,IAAIgoE,WAAY,mDAAkDzpH,MAAK,GAAG5H,GAAE,GAAGkF,KAAKsmR,WAAW,CAACzoO,KAAKz8C,IAAI,CAAC,GAAG,aAAa,MAAM,IAAI+qH,WAAY,4CAA2C/qH,8BAA8BtG,GAAE,EAAE4H,GAAE,WAAW,CAAC5H,GAAE2rR,GAAoB/jR,IAAG1C,KAAKsmR,WAAW,CAACzoO,KAAKz8C,KAAKtG,IAAG,GAAGA,KAAI,MAAMzG,GAAE2L,KAAKqmR,aAAa,CAACxoO,KAAKz8C,IAAI,GAAGtG,GAAE,GAAGA,GAAEzG,GAAE,MAAM,IAAI83H,WAAY,sBAAqBzpH,cAAa,cAAcq3Q,GAAcj/Q,GAAE,EAAEkF,KAAKqmR,aAAa,CAACxoO,KAAKz8C,KAAK24Q,GAAc/2O,GAAE,EAAEhjC,KAAKwoR,mBAAmB,CAAC3qO,KAAKz8C,EAAEw8C,MAAM9iD,QAAOA,GAAE06Q,GAAiB16Q,GAAE,EAAEkF,KAAKqmR,aAAa,CAACxoO,KAAKz8C,KAAK4hC,GAAEwyO,GAAiBxyO,GAAE,EAAEhjC,KAAKwoR,mBAAmB,CAAC3qO,KAAKz8C,EAAEw8C,MAAM9iD,YAAM,OAAW4H,GAAE1C,KAAK2qR,aAAavpR,EAAEtG,YAAWkF,KAAK2qR,aAAavpR,EAAEtG,MAAK4H,GAAE,MAAM,IAAIypH,WAAY,aAAYzpH,kCAAiC5H,qBAAoBsG,KAAK,OAAMslR,SAAIryR,GAAJ,CAAMspD,IAAI3a,GAAE4a,MAAM9iD,GAAEw9Q,UAAU51Q,GAAEm7C,KAAKz8C,EAAEykR,QAAQ5uQ,KAAI,iBAAgC2yQ,GAAW9pR,cAAcwO,SAASi8E,WAAWvqF,KAAKsoR,aAAa,QAAQtoR,KAAK4qR,sBAAsB,IAAI,GAAG,GAAG5qR,KAAK6qR,kBAAkB,SAAS7qR,KAAKqoR,YAAY,KAAK/B,WAAWjyR,EAAEsxF,GAAG,OAAO,UAAUwgM,YAAY,CAACtoO,KAAKxpD,EAAEwpD,KAAKD,MAAM,GAAGD,IAAI,GAAGgoC,EAAnD,CAAsD0gM,eAAe,OAAO,GAAGwC,qBAAqB,OAAO,GAAGL,qBAAqB,OAAO,GAAGE,gBAAgBr0R,GAAG,MAAMwpD,KAAK8nC,GAAG3lF,KAAKmoR,mBAAmB9zR,GAAG,MAAM,CAACwpD,KAAK8mO,EAAGh/L,EAAE3lF,KAAK4qR,sBAAsB5qR,KAAK6qR,mBAAmB,IAAIjtO,MAAM,EAAED,IAAI,IAAI,iBAA4BmtO,GAAkBhrR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,WAAW,iBAAoC63Q,GAAkBhrR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,oBAAoB,iBAAgC63Q,GAAkBhrR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,gBAAgB,iBAAiC63Q,GAAkBhrR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,iBAAiB,iBAAgC63Q,GAAkBhrR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,gBAAgB,iBAA8B63Q,GAAkBhrR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,YAAY,iBAA4B22Q,GAAW9pR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,UAAUjT,KAAKsoR,aAAa,QAAQtoR,KAAKqoR,YAAY,KAAK/B,WAAWjyR,EAAEsxF,GAAG,OAAOolM,GAActgM,UAAU67L,WAAWz0R,KAAKmO,KAAK3L,EAAEsxF,GAAG0gM,eAAe,OAAO,GAAGwC,mBAAmBx0R,GAAG,MAAMupD,MAAM+nC,GAAGtxF,EAAE,OAAO,OAAO,GAAGsxF,GAAG,EAAE,GAAG,GAAG6iM,mBAAmBn0R,GAAG,MAAMupD,MAAM+nC,GAAGtxF,EAAE,OAAO,OAAO,GAAGsxF,GAAG,EAAE,GAAG,GAAG+iM,gBAAgBr0R,GAAG,MAAMwpD,KAAK8nC,GAAG3lF,KAAKmoR,mBAAmB9zR,GAAG,MAAM,CAACwpD,KAAK8nC,EAAE,IAAI/nC,MAAM,EAAED,IAAI,IAAI,iBAA2BisO,GAAW9pR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,SAASjT,KAAKsoR,aAAa,QAAQtoR,KAAKqoR,YAAY,OAAOroR,KAAKgvI,OAAO,CAAC,EAAE,CAACj9I,OAAO,GAAG6rD,MAAM,EAAED,IAAI,GAAGmsO,KAAK,CAAC/3R,OAAO,GAAG6rD,MAAM,EAAED,IAAI,KAAK,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAED,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAED,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAED,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAED,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAED,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAED,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,GAAGD,IAAI,IAAI,EAAE,CAAC5rD,OAAO,GAAG6rD,MAAM,GAAGD,IAAI,IAAI,GAAG,CAAC5rD,OAAO,GAAG6rD,MAAM,GAAGD,IAAI,IAAI,GAAG,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAEotO,UAAS,EAAGrtO,IAAI,IAAI,GAAG,CAAC5rD,OAAO,GAAG6rD,MAAM,EAAEotO,UAAS,EAAGrtO,IAAI,KAAK39C,KAAKirR,mBAAmB,uBAAuB52P,KAAK,qBAAqB62P,mBAAmB,oBAAoB,CAACjX,SAAS,OAAlG,CAA0GqS,WAAWjyR,GAAG,OAAO82R,GAAoB92R,EAAEwpD,KAAK,IAAIwoO,eAAe,OAAO,GAAGwC,mBAAmBx0R,GAAG,OAAO2L,KAAKorR,aAAa/2R,GAAGtC,OAAOy2R,mBAAmBn0R,GAAG,OAAO2L,KAAKorR,aAAa/2R,GAAGtC,OAAOq5R,aAAa/2R,GAAG,MAAMupD,MAAM+nC,GAAGtxF,EAAE,IAAIkxD,EAAEvlD,KAAKgvI,OAAOrpD,GAAG,QAAG,MAAW,MAAM,IAAIwmC,WAAY,kBAAiBxmC,KAAK,OAAO3lF,KAAKsmR,WAAWjyR,IAAIkxD,EAAEukO,OAAOvkO,EAAEA,EAAEukO,MAAMvkO,EAAEmjO,gBAAgBr0R,GAAG,MAAMsxF,EAAE3lF,KAAKmoR,mBAAmB9zR,GAAGkxD,EAAEvlD,KAAKorR,aAAazlM,GAAG,OAAO24L,GAAW34L,EAAE9nC,KAAK,IAAI0H,EAAEylO,SAAS,EAAE,GAAGzlO,EAAE3H,MAAM2H,EAAE5H,IAAI,EAAE,EAAE,EAAEgoC,EAAEhoC,IAAI,EAAE,aAAauqO,aAAa7zR,GAAG,GAAG2L,KAAKirR,oBAAoB52R,EAAEwpD,KAAK,EAAE,MAAM,IAAIsuE,WAAY,aAAYnsH,KAAKiT,8GAA8G,YAA6B5e,GAAG,OAAOA,EAAE,GAAG,IAAIA,EAAE,KAAK,GAAGA,EAAE,KAAK,GAAG,iBAAkCu1R,GAAW9pR,YAAYzL,EAAEsxF,GAAGr3E,QAAQtO,KAAKsoR,aAAa,QAAQtoR,KAAKqrR,0BAA0B,IAAIh3P,KAAK,wBAAwB62P,mBAAmB,sBAAsB,CAACjX,SAAS,QAAQ/4Q,WAAW,MAAM8E,KAAKsrR,iCAAgC,EAAGtrR,KAAKiT,GAAG5e,EAAE,MAAMk3R,KAAKhmO,EAAEimO,UAAU/oO,GAAG,SAAoBpuD,GAAG,IAAIsxF,GAAEpgC,GAAElxD,EAAE,GAAG,OAAMtC,OAAO,MAAM,IAAIo6H,WAAW,uCAAuC,GAAG,OAAMp6H,QAAQwzD,GAAE,GAAGkmO,UAAU,MAAM,IAAIt/J,WAAW,6DAA6D,GAAG,OAAMp6H,SAASwzD,GAAE,GAAGxkD,KAAK,MAAM,IAAIorH,WAAW,wDAAwD,GAAG5mE,GAAEn9C,OAAQ/T,IAAG,SAAQo3R,WAAY15R,OAAO,EAAE,MAAM,IAAIo6H,WAAW,4DAA4D5mE,GAAE3yD,QAASyB,KAAI,GAAGA,GAAEq3R,WAAWr3R,GAAEs3R,cAAct3R,GAAEo3R,UAAU,CAAC,GAAG9lM,GAAE,MAAM,IAAIwmC,WAAW,sDAAsDxmC,GAAEtxF,GAAEA,GAAEs3R,YAAY,CAAC9tO,KAAKxpD,GAAEu3R,YAAY,EAAE,YAAYv3R,GAAE0M,KAAK,MAAM,IAAIorH,WAAW,qDAAsD5mE,GAAEA,GAAEn9C,OAAQ/T,IAAGA,GAAE0M,MAAOwkD,GAAE3yD,QAASyB,KAAI,MAAMo3R,UAAU9lM,IAAGtxF,GAAE,GAAGsxF,GAAE,CAAC,MAAMljC,GAAE8C,GAAEn/C,KAAM/R,IAAGA,GAAE0M,OAAO4kF,IAAI,QAAG,OAAW,MAAM,IAAIwmC,WAAY,8CAA6CxmC,MAAKtxF,GAAEo3R,UAAUhpO,GAAEpuD,GAAEs3R,YAAYlpO,GAAEkpO,YAAYt3R,GAAEw3R,SAASppO,GAAEopO,cAAS,IAASx3R,GAAEs3R,YAAY/tO,QAAQvpD,GAAEs3R,YAAY/tO,MAAM,QAAG,OAAW+tO,YAAYhuO,MAAMtpD,GAAEs3R,YAAYhuO,IAAI,KAAM8mO,GAAG5yR,KAAK0zD,GAAG,CAAClxD,GAAEsxF,MAAK,GAAGtxF,GAAEo3R,UAAU,OAAO,EAAE,GAAG9lM,GAAE8lM,UAAU,OAAM,EAAG,IAAIp3R,GAAEw3R,WAAWlmM,GAAEkmM,SAAS,MAAM,IAAI1/J,WAAW,uCAAuC,OAAOxmC,GAAEkmM,SAAShuO,KAAKxpD,GAAEw3R,SAAShuO,OAAQ,MAAM4E,GAAE8C,GAAEA,GAAExzD,OAAO,GAAG05R,UAAU,GAAGhpO,IAAGA,KAAI8C,GAAEA,GAAExzD,OAAO,GAAG,MAAM,IAAIo6H,WAAW,8CAA8C,OAAO5mE,GAAE3yD,QAAS,CAACyB,GAAEsxF,MAAKtxF,GAAEy3R,YAAY,OAAOvmO,GAAExzD,OAAO,EAAE4zF,MAAM,CAAC4lM,KAAKhmO,GAAEimO,UAAU7lM,IAAGpgC,GAAE,IAAl9C,CAAu9CogC,GAAG3lF,KAAKwrR,UAAU/oO,EAAEziD,KAAKurR,KAAKhmO,EAAE+gO,WAAWjyR,GAAG,MAAMwpD,KAAK8nC,GAAG3lF,KAAK0oR,gBAAgB,CAAC9qO,MAAM,EAAED,IAAI,EAAEE,KAAKxpD,EAAEwpD,OAAO,OAAOstO,GAAoBxlM,GAAG0gM,eAAe,OAAO,GAAGwC,mBAAmBx0R,GAAG,MAAMupD,MAAM+nC,GAAGtxF,EAAE,OAAO,MAAM2L,KAAKsmR,WAAWjyR,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,IAAIoB,QAAQkwF,IAAI,EAAE,GAAG,GAAG6iM,mBAAmBn0R,GAAG,OAAO2L,KAAK6oR,mBAAmBx0R,GAAG03R,gBAAgB13R,GAAG,MAAM23R,EAAW,CAACrmM,GAAEpgC,MAAK,MAAM9C,GAAEpuD,EAAEsxF,IAAG,GAAG,UAASljC,IAAG8C,GAAE,MAAM,IAAI4mE,WAAY,SAAQxmC,MAAKljC,qCAAoC8C,OAAM0mO,EAAYtmM,KAAI,IAAIpgC,GAAE,MAAM9C,GAAEikO,SAAIryR,GAAJ,CAAMwpD,KAAK8nC,KAAGvkF,GAAEpB,KAAKurR,KAAKnlR,KAAM,CAAC/R,GAAE+M,MAAK,GAAGA,KAAIpB,KAAKurR,KAAKx5R,OAAO,EAAE,CAAC,GAAGsC,GAAEo3R,UAAU,CAAC,GAAG9lM,GAAE,EAAE,MAAM,IAAIwmC,WAAY,eAAcxmC,yBAAwBtxF,GAAE0M,QAAQ,OAAOwkD,GAAElxD,GAAEs3R,YAAY9tO,KAAK8nC,IAAE,EAAG,OAAOpgC,GAAEogC,GAAEtxF,GAAEs3R,YAAY9tO,MAAMxpD,GAAEu3R,YAAY,EAAE,IAAG,EAAG,OAAO5rR,KAAK+oR,qBAAqBtmO,GAAEpuD,GAAEs3R,cAAc,IAAIpmO,GAAEogC,GAAEtxF,GAAEs3R,YAAY9tO,MAAMxpD,GAAEu3R,YAAY,EAAE,IAAG,KAAO,IAAIxqR,GAAE,MAAM,IAAI+qH,WAAY,QAAOxmC,iCAAgC,MAAM,CAACkgM,QAAQtgO,GAAE4uN,IAAI/yQ,GAAEL,OAAO,IAAI88C,KAAK8nC,EAAEkgM,QAAQtgO,EAAE4uN,IAAI1xN,GAAGpuD,EAAE,GAAG,UAAUwxR,QAAQtgO,EAAE4uN,IAAI1xN,GAAGwpO,EAAYtmM,IAAIqmM,EAAW,MAAMvpO,GAAGupO,EAAW,UAAUzmO,OAAO,CAAC,GAAG,QAAQ,MAAM,IAAI4mE,WAAW,qDAAqD,CAAC,MAAM93H,QAAE,WAAW,EAAO2L,KAAKurR,KAAKnlR,KAAM/R,IAAGA,GAAE0M,OAAO0hD,GAAGpuD,GAAEy3R,cAAcrpO,GAAI,IAAIpuD,GAAE,MAAM,IAAI83H,WAAY,OAAM1pE,eAAe8C,iCAAiC,GAAGA,EAAE,GAAGlxD,GAAEo3R,UAAU,MAAM,IAAIt/J,WAAY,YAAW1pE,+BAA+BkjC,KAAKA,EAAEtxF,GAAEo3R,UAAUp3R,GAAEs3R,YAAY9tO,KAAK0H,EAAEA,EAAElxD,GAAEs3R,YAAY9tO,MAAMxpD,GAAEu3R,YAAY,EAAE,GAAGI,EAAW,OAAOrmM,KAAKkgM,QAAQtgO,EAAE4uN,IAAI1xN,GAAGwpO,EAAYtmM,KAAK,OAAM+gM,SAAIryR,GAAJ,CAAMwpD,KAAK8nC,EAAEkgM,QAAQtgO,EAAE4uN,IAAI1xN,IAAG0lO,mBAAmB9zR,EAAEsxF,EAAEpgC,EAAE,aAAa,IAAI9C,EAAEpuD,EAAE,MAAMupD,MAAMx8C,EAAEk3Q,UAAUrhQ,GAAGwrC,EAAE,YAAO,QAAaA,EAAEikO,SAAIjkO,GAAJ,CAAM7E,MAAM6oO,GAAoBxvQ,MAAKjX,KAAKooR,qBAAqB3lO,GAAGA,EAAEziD,KAAK+rR,gBAAgBtpO,GAAGn0C,MAAM65Q,mBAAmB1lO,EAAEkjC,EAAEpgC,GAAGmjO,gBAAgBr0R,GAAG,MAAMsxF,EAAE3lF,KAAKmoR,mBAAmB9zR,IAAIwpD,KAAK0H,EAAE3H,MAAM6E,EAAE9E,IAAIv8C,GAAGukF,GAAG6lM,UAAUv0Q,GAAGjX,KAAK,OAAO0/Q,GAAgBn6N,EAAEtuC,EAAE40Q,SAAShuO,MAAM5mC,EAAE20Q,YAAY,EAAE,GAAGnpO,EAAErhD,EAAE,aAAa8mR,aAAa7zR,GAAG,GAAG2L,KAAKsrR,iCAAiCtrR,KAAKqrR,2BAA8BhN,GAAehqR,EAAEwpD,KAAKxpD,EAAEupD,MAAMvpD,EAAEspD,IAAI,KAAK,GAAG,IAAI,EAAE,MAAM,IAAIwuE,WAAY,aAAYnsH,KAAKiT,sHAAuH,iBAAiCi5Q,GAAoBpsR,YAAYzL,EAAEsxF,GAAGr3E,MAAMja,EAAEsxF,GAAG2gM,WAAWjyR,GAAG,MAAMwpD,KAAK8nC,GAAGtxF,EAAE,OAAOsxF,EAAE,GAAG,GAAG,EAAE0gM,eAAe,OAAO,GAAGwC,mBAAmBx0R,GAAG,MAAMupD,MAAM+nC,GAAGtxF,EAAE,OAAO,OAAO2L,KAAKsmR,WAAWjyR,GAAG,EAAE,EAAE,GAAGm0R,mBAAmBn0R,GAAG,OAAO2L,KAAK6oR,mBAAmBx0R,IAAI,iBAA4B83R,GAAmBrsR,cAAcwO,MAAM,UAAU,CAAC,CAACvN,KAAK,OAAO8qR,SAAS,CAAChuO,MAAK,KAAMD,MAAM,EAAED,IAAI,QAAQ,iBAA2BwuO,GAAmBrsR,cAAcwO,MAAM,SAAS,CAAC,CAACvN,KAAK,OAAO8qR,SAAS,CAAChuO,KAAK,IAAID,MAAM,EAAED,IAAI,KAAK,CAAC58C,KAAK,OAAO0qR,UAAU,WAAW,iBAA6BU,GAAmBrsR,cAAcwO,MAAM,WAAW,CAAC,CAACvN,KAAK,OAAO8qR,SAAS,CAAChuO,MAAK,KAAMD,MAAM,EAAED,IAAI,KAAK,CAAC58C,KAAK,OAAO8qR,SAAS,CAAChuO,KAAK,EAAED,MAAM,EAAED,IAAI,IAAIguO,YAAY,CAAC9tO,KAAK,UAAU,iBAAwBquO,GAAoBpsR,cAAcwO,MAAM,MAAM,CAAC,CAACvN,KAAK,SAAS8qR,SAAS,CAAChuO,KAAK,KAAKD,MAAM,EAAED,IAAI,IAAI,CAAC58C,KAAK,aAAa0qR,UAAU,YAAYzrR,KAAKsrR,iCAAgC,GAAI,iBAA6BY,GAAoBpsR,cAAcwO,MAAM,WAAW,CAAC,CAACvN,KAAK,KAAK6qR,aAAY,EAAGC,SAAS,CAAChuO,MAAK,IAAKD,MAAM,EAAED,IAAI,MAAM39C,KAAKsrR,iCAAgC,GAAI,iBAA4BY,GAAoBpsR,cAAcwO,MAAM,UAAU,CAAC,CAACvN,KAAK,KAAK8qR,SAAS,CAAChuO,KAAK,EAAED,MAAM,EAAED,IAAI,IAAI,CAAC58C,KAAK,MAAM0qR,UAAU,QAAQxD,cAAc5zR,GAAG,IAAI8/Q,IAAIxuL,EAAEkgM,QAAQtgO,GAAGlxD,EAAE,MAAM,UAAU,UAAUsxF,EAAE,OAAO,UAAU,UAAUA,EAAE,MAAM,CAACwuL,IAAIxuL,EAAEkgM,QAAQtgO,IAAI,iBAA6B2mO,GAAoBpsR,cAAcwO,MAAM,WAAW,CAAC,CAACvN,KAAK,QAAQ8qR,SAAS,CAAChuO,KAAK,KAAKD,MAAM,EAAED,IAAI,GAAGguO,YAAY,CAAC9tO,KAAK,KAAKD,MAAM,EAAED,IAAI,IAAI,CAAC58C,KAAK,SAAS8qR,SAAS,CAAChuO,KAAK,KAAKD,MAAM,EAAED,IAAI,GAAGguO,YAAY,CAAC9tO,KAAK,KAAKD,MAAM,EAAED,IAAI,IAAI,CAAC58C,KAAK,QAAQ8qR,SAAS,CAAChuO,KAAK,KAAKD,MAAM,GAAGD,IAAI,IAAIguO,YAAY,CAAC9tO,KAAK,KAAKD,MAAM,GAAGD,IAAI,KAAK,CAAC58C,KAAK,SAAS8qR,SAAS,CAAChuO,KAAK,KAAKD,MAAM,EAAED,IAAI,IAAIguO,YAAY,CAAC9tO,KAAK,KAAKD,MAAM,EAAED,IAAI,KAAK,CAAC58C,KAAK,QAAQ8qR,SAAS,CAAChuO,KAAK,KAAKD,MAAM,EAAED,IAAI,GAAGguO,YAAY,CAAC9tO,KAAK,KAAKD,MAAM,EAAED,IAAI,IAAI,CAAC58C,KAAK,KAAK8qR,SAAS,CAAChuO,KAAK,EAAED,MAAM,EAAED,IAAI,IAAI,CAAC58C,KAAK,MAAM0qR,UAAU,QAAQzrR,KAAKsrR,iCAAgC,EAAGtrR,KAAK0nR,UAAU,OAAO1nR,KAAK4nR,kBAAiB,EAAGK,cAAc5zR,EAAEsxF,GAAG,MAAMwuL,IAAI5uN,EAAEsgO,QAAQpjO,GAAGpuD,GAAGwpD,KAAKz8C,GAAGukF,EAAE,OAAO3lF,KAAKurR,KAAKnlR,KAAM/R,GAAGA,EAAE0M,OAAOwkD,GAAI,CAAC4uN,IAAI5uN,EAAEsgO,QAAQpjO,GAAGrhD,EAAE,EAAE,CAAC+yQ,IAAI,MAAM0R,QAAQ,EAAEzkR,GAAG,CAAC+yQ,IAAI,KAAK0R,QAAQzkR,IAAI,iBAAgCwoR,GAAW9pR,cAAcwO,SAASi8E,WAAWvqF,KAAKsoR,aAAa,YAAYtoR,KAAK2nR,QAAO,EAAGrB,WAAWjyR,EAAEsxF,GAAG,MAAMpgC,EAAEvlD,KAAKosR,aAAa/3R,EAAEwpD,KAAK8nC,GAAG,OAAO,OAAQpgC,GAAGxzD,MAAX,CAAkBs0R,aAAahyR,EAAEsxF,GAAG,OAAO3lF,KAAKsmR,WAAWjyR,EAAEsxF,GAAG,GAAG,GAAGkjM,qBAAqB,OAAO,GAAGL,qBAAqB,OAAO,GAAG4D,aAAa/3R,EAAEsxF,GAAG,QAAG,MAAW,MAAM,IAAI0jC,UAAU,gBAAgB,MAAM9jE,EAAEiC,KAAKC,UAAU,CAAC+yM,KAAK,eAAe6xB,aAAah4R,EAAE4e,GAAGjT,KAAKiT,KAAKwvC,EAAEkjC,EAAEtwF,IAAIkwD,GAAG,GAAG9C,EAAE,OAAOA,EAAE,MAAMrhD,EAAEpB,KAAK6nR,eAAeyE,EAAgB,CAACj4R,GAAEsxF,MAAK,MAAMpgC,GAAEwiO,GAAmB,CAACR,QAAQlzR,GAAEmzR,SAAS,EAAEC,OAAO,IAAIhlO,GAAE,IAAIpuB,KAAKkxB,IAAG9C,GAAE8pO,WAAW5mM,GAAE,GAAG,MAAM1uE,GAAE7V,EAAEkhR,cAAc7/N,IAAG3nD,GAAEmc,GAAE7Q,KAAM/R,IAAG,aAAY6I,MAAO/H,MAAMuN,IAAGuU,GAAE7Q,KAAM/R,IAAG,WAAU6I,MAAO/H,MAAM,IAAI6tC,GAAE/rB,GAAE7Q,KAAM/R,IAAG,mBAAkB6I,MAAO,QAAG,OAAW,MAAM,IAAIivH,WAAY,0DAAyDnsH,KAAKiT,iDAAiD,OAAO+vB,IAAGA,GAAE7tC,MAAM,CAACq3R,oBAAoB1xR,GAAE2xR,YAAY/pR,GAAEgqR,qBAAqB1pP,KAAI,IAAI/rB,GAAE,IAAIu1Q,oBAAoB1xR,GAAE2xR,YAAY/pR,GAAEgqR,qBAAqB1pP,IAAGspP,EAAgBj4R,EAAE4iB,IAAG,MAAMnc,KAAImc,IAAG,KAAKu1Q,oBAAoB1xR,GAAE2xR,YAAY/pR,IAAG4pR,EAAgBj4R,EAAE4iB,MAAKA,IAAGvU,GAAE,EAAE,MAAMi5B,GAAE,GAAG,IAAI9+B,GAAEstD,GAAE0hE,GAAE,EAAEn8F,IAAE,EAAG,KAAK88P,oBAAoB1xR,GAAE2xR,YAAY/pR,GAAEgqR,qBAAqB1pP,IAAGspP,EAAgBj4R,EAAE4iB,KAAIpa,KAAI8+B,GAAEwuB,IAAGg8N,YAAYtpR,GAAE,GAAG6F,IAAGsgC,KAAI3uC,EAAEq7B,IAAE,GAAIiM,GAAE7gC,IAAG,CAAC6xR,WAAW9gK,MAAK50G,IAAG,IAAIpa,GAAE6F,GAAEynD,GAAErvD,UAAS40B,IAAG,OAAOiM,GAAEwuB,IAAGg8N,YAAYtpR,GAAE,GAAG6F,GAAEijF,EAAErwF,IAAIiwD,EAAE5pB,IAAGA,GAAE+sP,gBAAgBr0R,GAAG,MAAMwpD,KAAK8nC,EAAE/nC,MAAM2H,GAAGlxD,EAAE,MAAM,CAACwpD,KAAK8nC,EAAE/nC,MAAM2H,GAAG,GAAG,GAAGA,EAAE,EAAE5H,IAAI,GAAGwqO,mBAAmB9zR,EAAEsxF,EAAEpgC,EAAE,YAAY9C,GAAE,GAAI,IAAI5E,KAAKz8C,EAAEw8C,MAAM3mC,EAAE+wQ,WAAWltR,GAAE6iD,IAAIj7C,GAAE41Q,UAAUt1O,GAAE6iP,QAAQlqP,IAAGtnC,EAAE,GAAGouD,EAAE,CAAC,GAAGrhD,EAAEu6B,GAAE7gC,IAAG,WAAU,MAAM,IAAIqxH,WAAY,iCAAgCrxH,MAAK,MAAMzG,GAAEmyR,GAAevvQ,OAAE,QAAYsuC,GAAG,GAAEtuC,IAAInc,IAAG,KAAK2nD,GAAEziD,KAAKosR,aAAahrR,EAAEukF,GAAGpgC,IAAG,QAAG,OAAW,MAAM,IAAI4mE,WAAY,mBAAkB5mE,sBAAqBnkD,KAAK,OAAO6V,EAAEwrC,GAAEkqO,WAAW,CAAC9uO,KAAKz8C,EAAEw8C,MAAM3mC,EAAE0mC,IAAIj7C,GAAEyxQ,SAAI,EAAO0R,QAAQlqP,GAAE28O,UAAUjkR,IAAG,GAAG2L,KAAKooR,qBAAqB/zR,QAAG,QAAa+M,EAAEu6B,SAAG,SAAaA,GAAEv6B,QAAG,MAAW,CAAC,MAAM/M,GAAE2L,KAAKosR,aAAahrR,EAAEukF,GAAG,IAAIljC,GAAEzf,GAAE9mC,QAAQ,IAAI,OAAOkQ,MAAM,GAAG,MAAMq2C,GAAE,KAAKA,GAAEA,GAAEr2C,MAAM,IAAI,IAAItR,GAAEzG,GAAEouD,IAAG,GAAGxrC,EAAEnc,IAAGA,GAAE6xR,gBAAW,OAAY3pP,GAAEmhB,SAAS,MAAM,YAAW,gBAAgB,CAAC,IAAIwhC,GAAE3iD,GAAE52B,MAAM,GAAE,GAAI,MAAMu5E,GAAE,KAAKA,GAAEA,GAAEv5E,MAAM,IAAItR,GAAEzG,GAAEsxF,IAAG7qF,KAAImc,EAAEnc,GAAE6xR,WAAW3pP,GAAEwjP,GAAe7gM,KAAI,QAAG,MAAW,MAAM,IAAIwmC,WAAY,mBAAkBnpF,sBAAqB5hC,kBAAa,OAAW,CAAC,MAAM/M,GAAE2L,KAAKosR,aAAahrR,EAAEukF,GAAGljC,GAAEoiO,EAAGxwR,IAAGyG,GAAE2nD,GAAE1wD,OAAO,WAAWwzD,GAAGw0N,GAAc9iQ,EAAE,EAAEnc,IAAGi/Q,GAAcr3Q,GAAE,EAAE1C,KAAKwoR,wBAAwBvxQ,EAAEu+P,GAAiBv+P,EAAE,EAAEnc,IAAG4H,GAAE8yQ,GAAiB9yQ,GAAE,EAAE1C,KAAKwoR,uBAAuB,MAAM7sP,GAAE8mB,GAAEr8C,KAAM,EAAC,CAAE/R,MAAKA,GAAEs4R,aAAa11Q,GAAI,QAAG,OAAW,MAAM,IAAIk1G,WAAY,iBAAgBl1G,qBAAqB7V,KAAK4hC,GAAEwjP,GAAe7qP,GAAE,GAAGz/B,QAAQ,MAAM,KAAI,OAAO,GAAGzG,QAAQ,OAAlB,KAA8B,CAAC,MAAMpB,GAAE2L,KAAKosR,aAAahrR,EAAEukF,GAAG,IAAIpgC,GAAEviB,GAAE9mC,QAAQ,IAAI,OAAOkQ,MAAM,GAAG,MAAMm5C,GAAE,KAAKA,GAAEA,GAAEn5C,MAAM,IAAI,MAAMq2C,GAAEpuD,GAAEkxD,IAAG,IAAI9C,GAAE,MAAM,IAAI0pE,WAAY,uBAAsBnpF,sBAAqB5hC,KAAK,GAAG6V,IAAIwrC,GAAEkqO,WAAW,MAAM,IAAIxgK,WAAY,aAAYnpF,kCAAiC/rB,qBAAqB7V,KAAK,OAAMslR,SAAIryR,GAAJ,CAAMwpD,KAAKz8C,EAAEykR,QAAQlqP,GAAEiiB,MAAM3mC,EAAEqhQ,UAAUt1O,GAAE2a,IAAIj7C,MAAI,iBAA4BkqR,GAAkB9sR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,WAAW,iBAA0B25Q,GAAkB9sR,cAAcwO,SAASi8E,WAAWvqF,KAAKiT,GAAG,SAAS,SAAqBnT,YAAYzL,GAAG2L,KAAK6sR,OAAOx4R,EAAE8wR,eAAe9wR,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE,IAAIykO,GAAe9lR,EAAE01Q,GAAsBziR,EAAE2L,KAAKslR,OAAO,CAAC,MAAM,QAAQ,YAAY,SAAS,IAAIruQ,EAAEugQ,GAAmB7xL,IAAI9nC,KAAK/iD,GAAE8iD,MAAMl7C,GAAEi7C,IAAI3a,IAAGhjC,KAAK6sR,OAAOpE,kBAAkBrnR,EAAE6V,EAAEwrC,GAAG9mB,GAAEw7O,GAAmBr8Q,GAAE4H,GAAEsgC,GAAEuiB,GAAG,OAAO9C,EAAE4kO,UAAU1rP,IAAGA,GAAEypP,oBAAoB/wR,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE,IAAIykO,GAAe9lR,EAAE01Q,GAAsBziR,EAAE2L,KAAKslR,OAAO,CAAC,QAAQ,YAAY,SAAS,IAAIruQ,EAAEugQ,GAAmB7xL,IAAI9nC,KAAK/iD,GAAE8iD,MAAMl7C,GAAEi7C,IAAI3a,IAAGhjC,KAAK6sR,OAAOpE,kBAAkB/B,SAAItlR,GAAJ,CAAMu8C,IAAI,IAAG1mC,EAAEwrC,GAAG9mB,GAAEo9O,GAAwBj+Q,GAAE4H,GAAE6iD,EAAEviB,IAAG,OAAOyf,EAAE4kO,UAAU1rP,IAAGA,GAAE0pP,mBAAmBhxR,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAE,IAAIykO,GAAe9lR,EAAE01Q,GAAsBziR,EAAE2L,KAAKslR,OAAO,CAAC,MAAM,QAAQ,YAAY,SAAS,IAAIruQ,EAAEugQ,GAAmB7xL,IAAI9nC,KAAK/iD,GAAE8iD,MAAMl7C,GAAEi7C,IAAI3a,IAAGhjC,KAAK6sR,OAAOxH,mBAAmBjkR,EAAE6V,EAAEwrC,GAAG9mB,GAAE88O,GAAuB/1Q,GAAEsgC,GAAEuiB,EAAEzqD,IAAG,OAAO2nD,EAAE4kO,UAAU1rP,IAAGA,GAAE2pP,OAAOjxR,GAAG,IAAIsxF,EAAEtxF,EAAE,OAAOiwR,GAAGzyR,KAAK8zF,EAAE,UAAUA,EAAE,IAAIA,EAAE,MAAM,YAAYA,EAAE8/L,kBAAkBpxR,GAAG,MAAMsxF,EAAE,IAAIm/L,GAAG,QAAQv/N,EAAE,EAAEA,EAAElxD,EAAEtC,OAAOwzD,IAAI,CAAC,MAAM9C,EAAEpuD,EAAEkxD,GAAG,OAAO40N,GAAK6K,GAAGr/L,EAAE,CAACljC,IAAIA,OAAO,MAAM03N,GAAK6K,GAAGr/L,EAAE,CAAC,YAAYw0L,GAAK6K,GAAGr/L,EAAE,CAAC,SAAS,UAAU,UAAUw0L,GAAK6K,GAAGr/L,EAAE,CAAC,QAAQw0L,GAAK6K,GAAGr/L,EAAE,CAAC,SAAS,UAAU,OAAOw0L,GAAK6K,GAAGr/L,EAAE,CAAC,QAAQw0L,GAAK6K,GAAGr/L,EAAE,CAAC,YAAY,UAAU,QAAQw0L,GAAK6K,GAAGr/L,EAAE,CAAC,cAAc3lF,KAAK6sR,OAAOjF,mBAAmBzN,GAAK6K,GAAGr/L,EAAE,CAAC,QAAQw0L,GAAK6K,GAAGr/L,EAAE,CAAC,aAAa,UAAU,YAAYw0L,GAAK6K,GAAGr/L,EAAE,CAAC,UAAU3lF,KAAK6sR,OAAOjF,mBAAmBzN,GAAK6K,GAAGr/L,EAAE,CAAC,QAAQw0L,GAAK6K,GAAGr/L,EAAE,CAAC,aAAa,UAAU,MAAM3lF,KAAK6sR,OAAOjF,mBAAmBzN,GAAK6K,GAAGr/L,EAAE,CAAC,QAAQw0L,GAAK6K,GAAGr/L,EAAE,CAAC,cAAc,MAAM,IAAIw0L,GAAK8K,GAAGt/L,EAAE,KAAK+/L,QAAQrxR,EAAEsxF,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,IAAG,MAAM4H,GAAEwkR,GAAe4F,kBAAkBz4R,GAAG2uC,GAAEhjC,KAAK6sR,OAAO5D,uBAAuB50R,EAAEqO,IAAGi5B,GAAE37B,KAAK6sR,OAAOvD,YAAYtmP,GAAE,CAACkb,MAAMynC,EAAEqpD,OAAOzpF,EAAEowN,MAAMlzN,EAAEysF,KAAK9tI,GAAG6V,EAAEvU,IAAG7F,GAAEmD,KAAK6sR,OAAOpE,kBAAkB9sP,GAAE,YAAYj5B,KAAIm7C,KAAKsM,GAAEvM,MAAMiuE,GAAEluE,IAAIjuB,IAAG7yB,GAAEulO,GAAE+0C,GAAmBhtN,GAAE0hE,GAAEn8F,GAAE50B,IAAG,OAAO,IAAIosR,GAAexkR,IAAG2kR,UAAUjlD,IAAGA,GAAEwjD,UAAUvxR,EAAEsxF,EAAEpgC,GAAG,MAAM9C,EAAEykO,GAAe4F,kBAAkBz4R,GAAG+M,EAAE8lR,GAAe4F,kBAAkBnnM,GAAG1uE,EAAEjX,KAAK6sR,OAAO5D,uBAAuB50R,EAAEouD,GAAG3nD,GAAEkF,KAAK6sR,OAAO5D,uBAAuBtjM,EAAEvkF,GAAG,OAAOpB,KAAK6sR,OAAOtD,cAActyQ,EAAEnc,GAAEyqD,EAAE9C,GAAG5E,KAAKxpD,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAG,OAAO2L,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAG9nC,KAAKD,MAAMvpD,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAG,OAAO2L,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAG/nC,MAAMD,IAAItpD,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAG,OAAO2L,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAGhoC,IAAIw2N,IAAI9/Q,GAAG,IAAI2L,KAAK6sR,OAAOlF,OAAO,OAAO,MAAMhiM,EAAEuhM,GAAe4F,kBAAkBz4R,GAAG,OAAO2L,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAGwuL,IAAI0R,QAAQxxR,GAAG,IAAI2L,KAAK6sR,OAAOlF,OAAO,OAAO,MAAMhiM,EAAEuhM,GAAe4F,kBAAkBz4R,GAAG,OAAO2L,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAGkgM,QAAQvN,UAAUjkR,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAG,OAAO2L,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAG2yL,UAAUwN,UAAUzxR,GAAG,OAAO6wR,GAAG0B,QAAQd,UAAUzxR,GAAG0xR,UAAU1xR,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAGkxD,EAAEvlD,KAAK6sR,OAAO/E,kBAAkBzzR,EAAEsxF,GAAGljC,EAAEziD,KAAK6sR,OAAOpD,oBAAoBlkO,GAAG,OAAOvlD,KAAK6sR,OAAOrD,kBAAkB/mO,EAAE8C,EAAEogC,GAAG,EAAEqgM,WAAW3xR,GAAG,OAAO6wR,GAAG0B,QAAQZ,WAAW3xR,GAAG4xR,WAAW5xR,GAAG,OAAO6wR,GAAG0B,QAAQX,WAAW5xR,GAAG6xR,WAAW7xR,GAAG,OAAO6wR,GAAG0B,QAAQV,WAAW7xR,GAAG8xR,YAAY9xR,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAGkxD,EAAEvlD,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAGljC,EAAEziD,KAAK6sR,OAAOrE,mBAAmBjjO,GAAG,GAAG9C,IAAIziD,KAAK6sR,OAAOhE,mBAAmBtjO,GAAG,OAAO9C,EAAE,MAAMrhD,EAAEpB,KAAK6sR,OAAOnD,qBAAqBnkO,GAAGtuC,EAAEjX,KAAK6sR,OAAOzD,kBAAkBhoR,EAAE,EAAE,YAAYukF,GAAG,OAAO3lF,KAAK6sR,OAAOrD,kBAAkBpoR,EAAE6V,EAAE0uE,GAAGygM,WAAW/xR,GAAG,IAAIsxF,EAAEtxF,EAAEigR,GAAQ3uL,EAAE7qF,KAAK6qF,EAAEq4L,GAAer4L,IAAI,MAAMpgC,EAAE2hO,GAAe4F,kBAAkBnnM,GAAGljC,EAAEziD,KAAK6sR,OAAO5D,uBAAuBtjM,EAAEpgC,GAAGnkD,EAAEpB,KAAK6sR,OAAOpD,oBAAoBhnO,GAAGxrC,EAAEjX,KAAK6sR,OAAOvD,YAAYloR,EAAE,CAAC88C,MAAM,GAAG,YAAYqH,GAAG,OAAOvlD,KAAK6sR,OAAOrD,kBAAkBpoR,EAAE6V,EAAEsuC,GAAG8gO,aAAahyR,GAAG,MAAMsxF,EAAEuhM,GAAe4F,kBAAkBz4R,GAAGkxD,EAAEvlD,KAAK6sR,OAAO5D,uBAAuB50R,EAAEsxF,GAAG,OAAO3lF,KAAK6sR,OAAOxG,aAAa9gO,EAAEogC,GAAG2gM,WAAWjyR,GAAG,IAAIsxF,EAAEtxF,EAAEigR,GAAQ3uL,EAAE7qF,KAAK6qF,EAAEq4L,GAAer4L,IAAI,MAAMpgC,EAAE2hO,GAAe4F,kBAAkBnnM,GAAGljC,EAAEziD,KAAK6sR,OAAO5D,uBAAuBtjM,EAAEpgC,GAAG,OAAOvlD,KAAK6sR,OAAOvG,WAAW7jO,EAAE8C,IAAI,UAAUlxD,IAAI,CAAC04R,GAAaC,GAAcC,GAAeC,GAAcC,GAAaC,GAAcC,GAAYC,GAAUC,GAAaC,GAAeC,GAAcC,GAAe3C,GAAc4C,GAAsBC,GAAkBC,GAAmBC,GAAkBC,IAAiB,CAAC,MAAMpoM,EAAE,IAAItxF,EAAE6wR,GAAGv/L,EAAE1yE,IAAI,IAAI+6Q,GAAeroM,GAAG,SAAgB7lF,YAAYzL,EAAEsxF,EAAEpgC,EAAE9C,EAAE,WAAWk3N,GAAwB35Q,KAAKkzQ,GAAwB7+Q,GAAG6+Q,GAAwBvtL,GAAGutL,GAAwB3tN,GAAG8yN,GAA4B51N,IAAQwrO,iBAAa,IAAIxX,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqrJ,GAA6BsB,EAAQh2Q,KAAKqa,KAAQ85P,UAAM,IAAIsC,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO6kK,GAAYlY,EAAQh2Q,KAAKqa,IAAGra,MAAU6lR,cAAU,IAAIpP,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8kK,GAAgBnY,EAAQh2Q,KAAKqa,IAAGra,MAAU69C,WAAO,IAAI44N,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+kK,GAAapY,EAAQh2Q,KAAKqa,IAAGra,MAAU49C,YAAQ,IAAI64N,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOglK,GAAcrY,EAAQh2Q,KAAKqa,IAAGra,MAAUs4Q,gBAAY,IAAI7B,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOilK,GAAkBtY,EAAQh2Q,KAAKqa,IAAGra,MAAU29C,UAAM,IAAI84N,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO62J,GAAYlK,EAAQh2Q,KAAKqa,IAAGra,MAAU8lR,gBAAY,IAAIrP,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOklK,GAAkBvY,EAAQh2Q,KAAKqa,IAAGra,MAAU+lR,gBAAY,IAAItP,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmlK,GAAkBxY,EAAQh2Q,KAAKqa,IAAGra,MAAUgmR,iBAAa,IAAIvP,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOolK,GAAmBzY,EAAQh2Q,KAAKqa,IAAGra,MAAUimR,iBAAa,IAAIxP,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqlK,GAAmB1Y,EAAQh2Q,KAAKqa,IAAGra,MAAUkmR,iBAAa,IAAIzP,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOslK,GAAmB3Y,EAAQh2Q,KAAKqa,IAAGra,MAAUmmR,kBAAc,IAAI1P,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOulK,GAAoB5Y,EAAQh2Q,KAAKqa,IAAGra,MAAUomR,iBAAa,IAAI3P,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwlK,GAAmB7Y,EAAQh2Q,KAAKqa,IAAGra,MAAUqmR,mBAAe,IAAI5P,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOylK,GAAqB9Y,EAAQh2Q,KAAKqa,IAAGra,MAAUsmR,iBAAa,IAAI7P,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO0lK,GAAmB/Y,EAAQh2Q,KAAKqa,IAAGra,MAAMgvR,KAAK36R,EAAEsxF,GAAG,IAAI8wL,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,oBAAoB4lK,GAAyB56R,GAAG,MAAMkxD,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKqa,IAAGjZ,EAAEy1Q,GAAep0N,EAAE,CAAC,MAAM,QAAQ,YAAY,SAAS,IAAIxrC,EAAE6/P,GAAsB92Q,KAAKoB,EAAE,IAAI,OAAO6V,EAAEi4Q,GAAoBzsO,EAAExrC,EAAE6/P,GAAsBziR,EAAE+M,EAAE,YAAY6V,EAAE6/P,GAAsB7/P,EAAE7V,EAAE,IAAIs2Q,GAAuBj1N,EAAExrC,EAAEsuC,GAAG4pO,aAAa96R,GAAG,IAAIoiR,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAE0yL,GAA4BhkR,GAAG,OAAO,IAAI+6R,GAAUpZ,EAAQh2Q,KAAKlF,GAAGk7Q,EAAQh2Q,KAAK0C,GAAGszQ,EAAQh2Q,KAAKgjC,GAAG2iD,GAAG3jF,IAAI3N,EAAEsxF,GAAG,IAAI8wL,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAEogO,GAAmBtxR,GAAGouD,EAAEs9N,GAAiBp6L,GAAG,OAAOs4L,GAAgBjI,EAAQh2Q,KAAKqa,IAAGra,KAAKulD,EAAE9C,GAAG+gO,SAASnvR,EAAEsxF,GAAG,IAAI8wL,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAE8pO,GAA8B1J,GAAmBtxR,IAAIouD,EAAEs9N,GAAiBp6L,GAAG,OAAOs4L,GAAgBjI,EAAQh2Q,KAAKqa,IAAGra,KAAKulD,EAAE9C,GAAGghO,MAAMpvR,EAAEsxF,GAAG,IAAI8wL,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOimK,GAA4B,QAAQtvR,KAAK3L,EAAEsxF,GAAGg+L,MAAMtvR,EAAEsxF,GAAG,IAAI8wL,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOimK,GAA4B,QAAQtvR,KAAK3L,EAAEsxF,GAAGiI,OAAOv5F,GAAG,IAAIoiR,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAG,UAAUA,IAAI,CAACyG,EAAE4H,EAAEsgC,GAAI,GAAGgzO,EAAQh2Q,KAAK3L,KAAK2hR,EAAQrwL,EAAEtxF,GAAG,OAAM,EAAG,OAAOk7R,GAAevZ,EAAQh2Q,KAAKqa,IAAG27P,EAAQrwL,EAAEtrE,KAAIzoB,SAASyC,GAAG,IAAIoiR,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmmK,GAAqBxvR,KAAKyvR,GAAqB1P,GAAiB1rR,KAAK4vR,SAAS,IAAIxN,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmmK,GAAqBxvR,MAAMkkR,eAAe7vR,EAAEsxF,GAAG,IAAI8wL,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAIm5J,GAAGnuR,EAAEsxF,GAAG4N,OAAOvzF,MAAMo9F,UAAU,MAAM,IAAIisB,UAAU,2DAA2DqmK,gBAAgBr7R,GAAG,IAAIoiR,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKlF,GAAGyqD,EAAEywN,EAAQh2Q,KAAK0C,GAAG+/C,EAAEuzN,EAAQh2Q,KAAKgjC,GAAG5hC,EAAE40Q,EAAQh2Q,KAAKqa,IAAG,QAAG,MAAW,OAAOw9P,GAAuBlyL,EAAEpgC,EAAE9C,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAErhD,GAAG,MAAM6V,EAAEmoQ,GAAe/qR,GAAG,OAAOwjR,GAAuBlyL,EAAEpgC,EAAE9C,EAAEuzN,EAAQ/+P,EAAE0kB,GAAGq6O,EAAQ/+P,EAAEpa,GAAGm5Q,EAAQ/+P,EAAEkzC,IAAG6rN,EAAQ/+P,EAAE40G,IAAGmqJ,EAAQ/+P,EAAEyY,IAAGsmP,EAAQ/+P,EAAEmrN,GAAGhhO,GAAG+iR,gBAAgB9vR,GAAG,IAAIoiR,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAI1jC,EAAEpgC,EAAE,GAAGkwN,GAASphR,GAAG,GAAGglR,GAAmBhlR,GAAGsxF,EAAEtxF,MAAM,CAAC,MAAMouD,GAAEpuD,EAAE4/Q,cAAS,IAASxxN,GAAEkjC,EAAEqxL,GAA4B3iR,IAAIsxF,EAAEqxL,GAA4Bv0N,IAAG8C,EAAElxD,EAAEs7R,gBAAgBhqM,EAAEqxL,GAA4B3iR,GAAG,MAAMouD,EAAEuzN,EAAQh2Q,KAAKlF,GAAGmc,EAAE++P,EAAQh2Q,KAAK0C,GAAG8P,EAAEwjQ,EAAQh2Q,KAAKgjC,GAAG/+B,GAAE+xQ,EAAQh2Q,KAAKqa,IAAG,IAAI+1G,GAAE,EAAEhzG,GAAE,EAAEmkC,GAAE,EAAEkwE,GAAE,EAAErwE,GAAE,EAAEC,GAAE,EAAE,gBAASkE,IAAIA,EAAE65N,GAAe75N,GAAG6qE,GAAE4lJ,EAAQzwN,EAAE5pB,GAAGve,GAAE44P,EAAQzwN,EAAE1oD,GAAG0kD,GAAEy0N,EAAQzwN,EAAE4E,IAAGsnE,GAAEukJ,EAAQzwN,EAAEsmE,IAAGzqE,GAAE40N,EAAQzwN,EAAE71B,IAAG2xB,GAAE20N,EAAQzwN,EAAE68K,IAAWg1C,GAA4BpB,EAAQgD,GAAcrzL,EAAEkyL,GAAuBp1N,EAAExrC,EAAEzE,EAAE49G,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEp9C,IAAG,cAAc7C,GAAGukF,EAAE1hF,IAAG2rR,mBAAmB,IAAInZ,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAE2hR,EAAQh2Q,KAAKqa,IAAG,OAAOy+P,GAA4BzkR,EAAEyiR,GAAsB92Q,KAAK62Q,GAAexiR,EAAE,CAAC,YAAY,SAAS,KAAKw7R,kBAAkB,IAAIpZ,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAE2hR,EAAQh2Q,KAAKqa,IAAG,OAAOk+P,GAA2BlkR,EAAEyiR,GAAsB92Q,KAAK62Q,GAAexiR,EAAE,CAAC,MAAM,cAAc,KAAKy7R,eAAe,IAAIrZ,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM,CAACmrJ,SAASwB,EAAQh2Q,KAAKqa,IAAGotQ,OAAOzR,EAAQh2Q,KAAKgjC,GAAGwkP,SAASxR,EAAQh2Q,KAAK0C,GAAG6kR,QAAQvR,EAAQh2Q,KAAKlF,IAAIi1R,cAAc,IAAItZ,GAAez2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk9J,GAAyBvQ,EAAQh2Q,KAAKqa,iBAAgBhmB,EAAEsxF,GAAG,MAAMpgC,EAAEw6N,GAAiBp6L,GAAG,OAAO8wL,GAAepiR,IAAImjR,GAAmBjyN,GAAG4xN,GAAmBnB,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAGgzO,EAAQ3hR,EAAEgmB,MAAK2jQ,GAAe3pR,EAAEkxD,kBAAkBlxD,EAAEsxF,GAAG,MAAMpgC,EAAEy4N,GAAe3pR,GAAGouD,EAAEu7N,GAAer4L,GAAG,OAAO04L,GAAerI,EAAQzwN,EAAEzqD,GAAGk7Q,EAAQzwN,EAAE7iD,GAAGszQ,EAAQzwN,EAAEviB,GAAGgzO,EAAQvzN,EAAE3nD,GAAGk7Q,EAAQvzN,EAAE//C,GAAGszQ,EAAQvzN,EAAEzf,KAAKqhP,EAAmB+K,GAAU,sBAAsB,SAAoBtvR,YAAYzL,EAAEsxF,EAAEpgC,EAAE9C,EAAE,EAAErhD,EAAE,EAAE6V,EAAE,EAAEnc,GAAE,EAAE4H,GAAE,EAAEsgC,GAAE,EAAErH,GAAE,WAAWk+O,GAA4B75Q,KAAKkzQ,GAAwB7+Q,GAAG6+Q,GAAwBvtL,GAAGutL,GAAwB3tN,QAAG,MAAW,EAAE2tN,GAAwBzwN,QAAG,MAAW,EAAEywN,GAAwB9xQ,QAAG,MAAW,EAAE8xQ,GAAwBj8P,QAAG,OAAW,EAAEi8P,GAAwBp4Q,SAAG,OAAW,EAAEo4Q,GAAwBxwQ,SAAG,OAAW,EAAEwwQ,GAAwBlwO,IAAGq1O,GAA4B18O,KAAQsyP,iBAAa,IAAIvX,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqrJ,GAA6BsB,EAAQh2Q,KAAKqa,KAAQwjC,WAAO,IAAI64N,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+kK,GAAapY,EAAQh2Q,KAAKqa,IAAGra,MAAU49C,YAAQ,IAAI84N,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOglK,GAAcrY,EAAQh2Q,KAAKqa,IAAGra,MAAUs4Q,gBAAY,IAAI5B,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOilK,GAAkBtY,EAAQh2Q,KAAKqa,IAAGra,MAAU29C,UAAM,IAAI+4N,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO62J,GAAYlK,EAAQh2Q,KAAKqa,IAAGra,MAAUo0Q,WAAO,IAAIsC,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAK27B,GAAO04O,aAAS,IAAIqC,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKnD,GAAO8gG,aAAS,IAAI+4K,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKmqD,IAAO2qN,kBAAc,IAAI4B,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAK6rH,IAAOkpJ,kBAAc,IAAI2B,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAK0vB,IAAOslP,iBAAa,IAAI0B,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKoiO,GAAO+xC,UAAM,IAAIuC,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO6kK,GAAYlY,EAAQh2Q,KAAKqa,IAAGra,MAAU6lR,cAAU,IAAInP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8kK,GAAgBnY,EAAQh2Q,KAAKqa,IAAGra,MAAU8lR,gBAAY,IAAIpP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOklK,GAAkBvY,EAAQh2Q,KAAKqa,IAAGra,MAAU+lR,gBAAY,IAAIrP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmlK,GAAkBxY,EAAQh2Q,KAAKqa,IAAGra,MAAUgmR,iBAAa,IAAItP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOolK,GAAmBzY,EAAQh2Q,KAAKqa,IAAGra,MAAUimR,iBAAa,IAAIvP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqlK,GAAmB1Y,EAAQh2Q,KAAKqa,IAAGra,MAAUkmR,iBAAa,IAAIxP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOslK,GAAmB3Y,EAAQh2Q,KAAKqa,IAAGra,MAAUomR,iBAAa,IAAI1P,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwlK,GAAmB7Y,EAAQh2Q,KAAKqa,IAAGra,MAAUmmR,kBAAc,IAAIzP,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOulK,GAAoB5Y,EAAQh2Q,KAAKqa,IAAGra,MAAUqmR,mBAAe,IAAI3P,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOylK,GAAqB9Y,EAAQh2Q,KAAKqa,IAAGra,MAAUsmR,iBAAa,IAAI5P,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO0lK,GAAmB/Y,EAAQh2Q,KAAKqa,IAAGra,MAAMgvR,KAAK36R,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,oBAAoB4lK,GAAyB56R,GAAG,MAAMkxD,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKqa,IAAGjZ,EAAEy1Q,GAAep0N,EAAE,CAAC,MAAM,OAAO,cAAc,cAAc,SAAS,QAAQ,YAAY,aAAa,SAAS,SAAS,IAAIxrC,EAAE6/P,GAAsB92Q,KAAKoB,EAAE,IAAI6V,EAAEi4Q,GAAoBzsO,EAAExrC,EAAE6/P,GAAsBziR,EAAE+M,EAAE,YAAY6V,EAAE6/P,GAAsB7/P,EAAE7V,EAAE,IAAI,MAAMy8C,KAAK/iD,GAAE8iD,MAAMl7C,GAAEi7C,IAAI3a,GAAEoxO,KAAKz4O,GAAE04O,OAAOx3Q,GAAE8gG,OAAOxzC,GAAE2qN,YAAYjpJ,GAAEkpJ,YAAYrlP,GAAEslP,WAAW5yC,IAAG20C,GAAgCt0N,EAAExrC,EAAEsuC,GAAG,OAAOsyN,GAAuB/8Q,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE3/K,GAAGutO,cAAc37R,GAAG,IAAIqiR,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKlF,GAAGyqD,EAAEywN,EAAQh2Q,KAAK0C,GAAG+/C,EAAEuzN,EAAQh2Q,KAAKgjC,GAAG5hC,EAAE40Q,EAAQh2Q,KAAKqa,IAAG,QAAG,MAAW,OAAOw9P,GAAuBlyL,EAAEpgC,EAAE9C,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAErhD,GAAG,MAAM6V,EAAEmoQ,GAAe/qR,GAAG,OAAOwjR,GAAuBlyL,EAAEpgC,EAAE9C,EAAEuzN,EAAQ/+P,EAAE0kB,GAAGq6O,EAAQ/+P,EAAEpa,GAAGm5Q,EAAQ/+P,EAAEkzC,IAAG6rN,EAAQ/+P,EAAE40G,IAAGmqJ,EAAQ/+P,EAAEyY,IAAGsmP,EAAQ/+P,EAAEmrN,GAAGhhO,GAAG6uR,cAAc57R,GAAG,IAAIqiR,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAGkxD,EAAEywN,EAAQrwL,EAAE7qF,GAAG2nD,EAAEuzN,EAAQrwL,EAAEjjF,GAAGtB,EAAE40Q,EAAQrwL,EAAE3iD,GAAG,IAAI/rB,EAAE++P,EAAQrwL,EAAEtrE,IAAG,MAAM7H,GAAEwjQ,EAAQh2Q,KAAK27B,GAAG13B,GAAE+xQ,EAAQh2Q,KAAKnD,GAAGuzH,GAAE4lJ,EAAQh2Q,KAAKmqD,IAAG/sC,GAAE44P,EAAQh2Q,KAAK6rH,IAAGtqE,GAAEy0N,EAAQh2Q,KAAK0vB,IAAG+hG,GAAEukJ,EAAQh2Q,KAAKoiO,GAAG,OAAOnrN,EAAEi5Q,GAAqBla,EAAQh2Q,KAAKqa,IAAGpD,GAAG4gQ,GAAuBtyN,EAAE9C,EAAErhD,EAAEoR,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAEx6G,GAAGk4Q,aAAa96R,GAAG,IAAIqiR,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAE0yL,GAA4BhkR,GAAG,OAAO,IAAI87R,GAAcna,EAAQh2Q,KAAKlF,GAAGk7Q,EAAQh2Q,KAAK0C,GAAGszQ,EAAQh2Q,KAAKgjC,GAAGgzO,EAAQh2Q,KAAK27B,GAAGq6O,EAAQh2Q,KAAKnD,GAAGm5Q,EAAQh2Q,KAAKmqD,IAAG6rN,EAAQh2Q,KAAK6rH,IAAGmqJ,EAAQh2Q,KAAK0vB,IAAGsmP,EAAQh2Q,KAAKoiO,GAAGz8I,GAAG3jF,IAAI3N,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+mK,GAAiD,MAAMpwR,KAAK3L,EAAEsxF,GAAG69L,SAASnvR,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+mK,GAAiD,WAAWpwR,KAAK3L,EAAEsxF,GAAG89L,MAAMpvR,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOgnK,GAAgC,QAAQrwR,KAAK3L,EAAEsxF,GAAGg+L,MAAMtvR,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOgnK,GAAgC,QAAQrwR,KAAK3L,EAAEsxF,GAAG52E,MAAM1a,GAAG,IAAIqiR,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,QAAG,MAAW,MAAM,IAAIA,UAAU,iCAAiC,MAAM1jC,EAAE,iBAAiBtxF,EAAEuvR,GAAoB,eAAevvR,GAAG0rR,GAAiB1rR,GAAGkxD,EAAEq5N,GAA4Bj5L,GAAGljC,EAAEo8N,GAAuBl5L,EAAE,cAAcvkF,EAAEu9Q,GAAgBh5L,EAAE,eAAe,OAAO4wL,GAAG,CAAC,QAAQt/P,EAAE,CAAC0mC,IAAI,EAAEy2N,KAAK,GAAGC,OAAO,GAAG12K,OAAO,GAAGm3K,YAAY,IAAIC,YAAY,IAAIC,WAAW,KAAK5zQ,GAAG09Q,GAAkCv5N,EAAEtuC,EAAE,OAAO,IAAIzE,GAAEwjQ,EAAQh2Q,KAAKlF,GAAGmJ,GAAE+xQ,EAAQh2Q,KAAK0C,GAAG0tH,GAAE4lJ,EAAQh2Q,KAAKgjC,GAAG5lB,GAAE44P,EAAQh2Q,KAAK27B,GAAG4lB,GAAEy0N,EAAQh2Q,KAAKnD,GAAG40H,GAAEukJ,EAAQh2Q,KAAKmqD,IAAG/I,GAAE40N,EAAQh2Q,KAAK6rH,IAAGxqE,GAAE20N,EAAQh2Q,KAAK0vB,IAAGrsB,GAAE2yQ,EAAQh2Q,KAAKoiO,GAAG,QAAQvkL,KAAKrrC,GAAEorC,MAAM35C,GAAE05C,IAAIyyE,GAAEgkJ,KAAKh3P,GAAEi3P,OAAO9yN,GAAEo8C,OAAO8zB,GAAEqjJ,YAAY1zN,GAAE2zN,YAAY1zN,GAAE2zN,WAAW3xQ,IAAGk4Q,GAAiB/oQ,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAEkiD,EAAEnkD,EAAEqhD,IAAIo1N,GAAuBrlQ,GAAEvO,GAAEmsH,GAAEhzG,GAAEmkC,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE2yQ,EAAQh2Q,KAAKqa,KAAIuzE,OAAOv5F,GAAG,IAAIqiR,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEw5L,GAAmB9qR,GAAG,UAAUA,IAAI,CAACyG,EAAE4H,EAAEsgC,EAAErH,EAAE9+B,EAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAI,GAAG4zC,EAAQh2Q,KAAK3L,KAAK2hR,EAAQrwL,EAAEtxF,GAAG,OAAM,EAAG,OAAOk7R,GAAevZ,EAAQh2Q,KAAKqa,IAAG27P,EAAQrwL,EAAEtrE,KAAIzoB,SAASyC,GAAG,IAAIqiR,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEo6L,GAAiB1rR,GAAGkxD,EAAEkqO,GAAqB9pM,GAAGljC,EAAEqhO,GAAyBn+L,GAAGvkF,EAAEy9Q,GAAuBl5L,EAAE,SAAS1uE,EAAE0nQ,GAAgBh5L,EAAE,eAAe,YAAO,GAAQ,GAAG,WAAW,MAAM,IAAIwmC,WAAW,sDAAsD,MAAMiqJ,UAAUt7Q,GAAEnB,KAAK+I,GAAE2zQ,UAAUrzO,IAAG+gP,GAA+B9sQ,EAAEwrC,GAAG,OAAO6tO,GAAyBtwR,KAAKlF,GAAEyqD,EAAE,CAAC5rD,KAAK+I,GAAE2zQ,UAAUrzO,GAAEi4O,aAAa75Q,IAAI6iR,SAAS,IAAIvN,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOinK,GAAyBtwR,KAAK,QAAQkkR,eAAe7vR,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAIm5J,GAAGnuR,EAAEsxF,GAAG4N,OAAOvzF,MAAMo9F,UAAU,MAAM,IAAIisB,UAAU,+DAA+D86J,gBAAgB9vR,EAAEsxF,GAAG,IAAI+wL,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAEyxN,GAA4B3iR,GAAG,OAAO+iR,GAA4BpB,EAAQgD,GAAczzN,EAAEvlD,KAAKu5Q,GAAyBwG,GAAiBp6L,KAAKvkF,GAAGmkD,EAAEywN,EAAQh2Q,KAAKqa,KAAIk2Q,cAAc,IAAI7Z,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOstJ,GAAuB32Q,MAAM4vR,mBAAmB,IAAIlZ,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAE2hR,EAAQh2Q,KAAKqa,IAAG,OAAOy+P,GAA4BzkR,EAAEyiR,GAAsB92Q,KAAK62Q,GAAexiR,EAAE,CAAC,YAAY,SAAS,KAAKw7R,kBAAkB,IAAInZ,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAE2hR,EAAQh2Q,KAAKqa,IAAG,OAAOk+P,GAA2BlkR,EAAEyiR,GAAsB92Q,KAAK62Q,GAAexiR,EAAE,CAAC,MAAM,cAAc,KAAKm8R,cAAc,IAAI9Z,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOonK,GAAuBzwR,MAAM8vR,eAAe,IAAIpZ,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM,CAACmrJ,SAASwB,EAAQh2Q,KAAKqa,IAAGotQ,OAAOzR,EAAQh2Q,KAAKgjC,GAAG0tP,QAAQ1a,EAAQh2Q,KAAK27B,GAAGg1P,eAAe3a,EAAQh2Q,KAAK0vB,IAAGkhQ,eAAe5a,EAAQh2Q,KAAK6rH,IAAGglK,UAAU7a,EAAQh2Q,KAAKnD,GAAG2qR,SAASxR,EAAQh2Q,KAAK0C,GAAGouR,cAAc9a,EAAQh2Q,KAAKoiO,GAAG2uD,UAAU/a,EAAQh2Q,KAAKmqD,IAAGo9N,QAAQvR,EAAQh2Q,KAAKlF,IAAIi1R,cAAc,IAAIrZ,GAAmB12Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk9J,GAAyBvQ,EAAQh2Q,KAAKqa,iBAAgBhmB,EAAEsxF,GAAG,MAAMpgC,EAAEw6N,GAAiBp6L,GAAG,OAAO+wL,GAAmBriR,IAAImjR,GAAmBjyN,GAAGsyN,GAAuB7B,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAGgzO,EAAQ3hR,EAAEsnC,GAAGq6O,EAAQ3hR,EAAEwI,GAAGm5Q,EAAQ3hR,EAAE81D,IAAG6rN,EAAQ3hR,EAAEw3H,IAAGmqJ,EAAQ3hR,EAAEq7B,IAAGsmP,EAAQ3hR,EAAE+tO,GAAG4zC,EAAQ3hR,EAAEgmB,MAAK8kQ,GAAmB9qR,EAAEkxD,kBAAkBlxD,EAAEsxF,GAAG,MAAMpgC,EAAE45N,GAAmB9qR,GAAGouD,EAAE08N,GAAmBx5L,GAAG,UAAUtxF,IAAI,CAACyG,EAAE4H,EAAEsgC,EAAErH,EAAE9+B,EAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAG,CAAC,MAAMz8I,EAAEqwL,EAAQzwN,EAAElxD,GAAG+M,GAAE40Q,EAAQvzN,EAAEpuD,GAAG,GAAGsxF,IAAIvkF,GAAE,OAAOo/Q,GAAiB76L,EAAEvkF,IAAG,OAAO,GAAGijR,EAAmB8L,GAAc,0BAA0B,SAAerwR,YAAYzL,EAAE,EAAEsxF,EAAE,EAAEpgC,EAAE,EAAE9C,EAAE,EAAErhD,EAAE,EAAE6V,EAAE,EAAEnc,GAAE,EAAE4H,GAAE,EAAEsgC,GAAE,EAAErH,GAAE,GAAG,MAAM9+B,QAAE,MAAW,EAAE22Q,GAAoBn/Q,GAAG81D,QAAE,MAAW,EAAEqpN,GAAoB7tL,GAAGkmC,QAAE,MAAW,EAAE2nJ,GAAoBjuN,GAAG71B,QAAE,MAAW,EAAE8jP,GAAoB/wN,GAAG2/K,QAAE,MAAW,EAAEoxC,GAAoBpyQ,GAAGiZ,QAAE,MAAW,EAAEm5P,GAAoBv8P,GAAGzE,QAAE,OAAW,EAAEghQ,GAAoB14Q,IAAGmJ,QAAE,OAAW,EAAEuvQ,GAAoB9wQ,IAAG0tH,QAAE,OAAW,EAAEojJ,GAAoBxwO,IAAG5lB,QAAE,OAAW,EAAEo2P,GAAoB73O,IAAG+5O,GAAe74Q,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEvO,GAAEmsH,GAAEhzG,IAAG89M,GAAEl7N,MAAM05Q,GAAQ15Q,KAAKyxH,GAAE50H,IAAG68Q,GAAQ15Q,KAAKohD,GAAE+I,IAAGuvN,GAAQ15Q,KAAKqhD,GAAEwqE,IAAG6tJ,GAAQ15Q,KAAKqD,GAAEqsB,IAAGgqP,GAAQ15Q,KAAKmwH,EAAEiyG,IAAGs3C,GAAQ15Q,KAAKm7N,EAAE9gN,IAAGq/P,GAAQ15Q,KAAKkX,EAAE1E,IAAGknQ,GAAQ15Q,KAAKg7N,GAAE/2N,IAAGy1Q,GAAQ15Q,KAAKu9B,GAAE6yF,IAAGspJ,GAAQ15Q,KAAKukO,GAAEnnN,IAAO8gC,YAAQ,IAAI63N,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKyxH,IAAOud,aAAS,IAAI+mI,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKohD,IAAOu0N,YAAQ,IAAII,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKqhD,IAAO6tF,WAAO,IAAI6mI,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKqD,IAAOkmI,YAAQ,IAAIwsI,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKmwH,GAAOqZ,cAAU,IAAIusI,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKm7N,GAAOy6C,cAAU,IAAIG,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKkX,GAAOq3H,mBAAe,IAAIwnI,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKg7N,IAAO66C,mBAAe,IAAIE,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKu9B,IAAOu4O,kBAAc,IAAIC,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKukO,IAAOt4G,WAAO,IAAI8pJ,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2xJ,GAAahF,EAAQh2Q,KAAKyxH,IAAGukJ,EAAQh2Q,KAAKohD,IAAG40N,EAAQh2Q,KAAKqhD,IAAG20N,EAAQh2Q,KAAKqD,IAAG2yQ,EAAQh2Q,KAAKmwH,GAAG6lJ,EAAQh2Q,KAAKm7N,GAAG66C,EAAQh2Q,KAAKkX,GAAG8+P,EAAQh2Q,KAAKg7N,IAAGg7C,EAAQh2Q,KAAKu9B,IAAGy4O,EAAQh2Q,KAAKukO,KAAQysD,YAAQ,IAAIjb,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,OAAiB2sJ,EAAQh2Q,KAAKyxH,IAAGukJ,EAAQh2Q,KAAKohD,IAAG40N,EAAQh2Q,KAAKqhD,IAAG20N,EAAQh2Q,KAAKqD,IAAG2yQ,EAAQh2Q,KAAKmwH,GAAG6lJ,EAAQh2Q,KAAKm7N,GAAG66C,EAAQh2Q,KAAKkX,GAAG8+P,EAAQh2Q,KAAKg7N,IAAGg7C,EAAQh2Q,KAAKu9B,IAAGy4O,EAAQh2Q,KAAKukO,IAA9K,CAAkLyqD,KAAK36R,GAAG,IAAI0hR,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEmxL,GAAsBziR,EAAE,CAAC,OAAO,QAAQ,eAAe,eAAe,UAAU,SAAS,cAAc,UAAU,QAAQ,SAAS,YAAY6pD,MAAMqH,EAAEywN,EAAQh2Q,KAAKyxH,IAAGud,OAAOvsF,EAAEuzN,EAAQh2Q,KAAKohD,IAAGu0N,MAAMv0Q,EAAE40Q,EAAQh2Q,KAAKqhD,IAAG6tF,KAAKj4H,EAAE++P,EAAQh2Q,KAAKqD,IAAGkmI,MAAMzuI,GAAEk7Q,EAAQh2Q,KAAKmwH,GAAGqZ,QAAQ9mI,GAAEszQ,EAAQh2Q,KAAKm7N,GAAGy6C,QAAQ5yO,GAAEgzO,EAAQh2Q,KAAKkX,GAAGq3H,aAAa5yG,GAAEq6O,EAAQh2Q,KAAKg7N,IAAG66C,aAAah5Q,GAAEm5Q,EAAQh2Q,KAAKu9B,IAAGu4O,YAAY3rN,GAAE6rN,EAAQh2Q,KAAKukO,KAAI5+I,EAAE,OAAO,IAAIsrM,GAAS1rO,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,IAAG+mO,UAAU,IAAInb,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOgmK,GAA8BrvR,MAAM2K,MAAM,IAAIorQ,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAI4nK,GAASnuR,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKyxH,KAAI3uH,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKohD,KAAIt+C,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKqhD,KAAIv+C,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKqD,KAAIP,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKmwH,IAAIrtH,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKm7N,IAAIr4N,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKkX,IAAIpU,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKg7N,KAAIl4N,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKu9B,KAAIz6B,KAAK6H,IAAIqrQ,EAAQh2Q,KAAKukO,MAAKviO,IAAI3N,EAAEsxF,GAAG,IAAIowL,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8nK,GAA4C,MAAMnxR,KAAK3L,EAAEsxF,GAAG69L,SAASnvR,EAAEsxF,GAAG,IAAIowL,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8nK,GAA4C,WAAWnxR,KAAK3L,EAAEsxF,GAAG52E,MAAM42E,GAAG,IAAIowL,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,QAAG,MAAW,MAAM,IAAIA,UAAU,iCAAiC,IAAI9jE,EAAEywN,EAAQh2Q,KAAKyxH,IAAGhvE,EAAEuzN,EAAQh2Q,KAAKohD,IAAGhgD,EAAE40Q,EAAQh2Q,KAAKqhD,IAAGpqC,EAAE++P,EAAQh2Q,KAAKqD,IAAGvI,EAAEk7Q,EAAQh2Q,KAAKmwH,GAAGztH,GAAEszQ,EAAQh2Q,KAAKm7N,GAAGn4L,GAAEgzO,EAAQh2Q,KAAKkX,GAAGykB,GAAEq6O,EAAQh2Q,KAAKg7N,IAAGn+N,GAAEm5Q,EAAQh2Q,KAAKu9B,IAAG4sB,GAAE6rN,EAAQh2Q,KAAKukO,IAAG14G,GAAE8zJ,GAA2Bp6N,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,IAAG,MAAMz6B,GAAE,iBAAiBi2D,EAAEi+L,GAAoB,eAAej+L,GAAGo6L,GAAiBp6L,GAAG,IAAIy8I,GAAEu8C,GAAgBjvP,GAAE,cAAc,gBAAW,EAAO,CAAC,SAASld,GAAEstQ,GAAyBpwP,IAAG,MAAMzrB,GAAE26Q,GAA4BlvP,IAAG0gG,GAAEyuJ,GAAuBnvP,GAAE,cAAc,IAAItS,GAAEuhQ,GAAgBjvP,GAAE,eAAe,gBAAW,GAAQ6xB,IAAE,EAAGnkC,KAAImkC,IAAE,EAAGnkC,GAAE,cAAcyuG,GAAE4yJ,GAAyB5yJ,GAAEzuG,IAAG,IAAI8mK,IAAE,EAAG,GAAGk+C,KAAIl+C,IAAE,EAAGk+C,GAAEv2G,IAAG,cAAau2G,GAAEv2G,KAAItqE,KAAI2iI,GAAE,MAAM,IAAI/3D,WAAW,2DAA2D,GAAGsyJ,GAAyBr8C,GAAEhlN,MAAKglN,GAAE,MAAM,IAAIj2G,WAAY,eAAci2G,0CAAyChlN,MAAK,MAAMihC,GAAE,CAAC+1N,KAAK,GAAGC,OAAO,GAAG12K,OAAO,GAAGm3K,YAAY,IAAIC,YAAY,IAAIC,WAAW,KAAK53P,IAAG,YAAO,QAAY0hQ,GAAkC76Q,GAAEo6C,IAAE,KAAMH,MAAMqH,EAAEypF,OAAOvsF,EAAEkzN,MAAMv0Q,EAAE8tI,KAAKj4H,GAAGm6Q,GAA0B7rO,EAAE9C,EAAErhD,EAAE6V,EAAEmrN,GAAE5vN,OAAM0rC,MAAMqH,EAAEypF,OAAOvsF,EAAEkzN,MAAMv0Q,EAAE8tI,KAAKj4H,EAAEsyH,MAAMzuI,EAAE0uI,QAAQ9mI,GAAEkzQ,QAAQ5yO,GAAEurG,aAAa5yG,GAAEk6O,aAAah5Q,GAAEi5Q,YAAY3rN,IAAG+wN,GAAc31N,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAElmD,GAAEmZ,GAAEgzG,GAAE59G,OAAM0rC,MAAMqH,EAAEypF,OAAOvsF,EAAEkzN,MAAMv0Q,EAAE8tI,KAAKj4H,EAAEsyH,MAAMzuI,EAAE0uI,QAAQ9mI,GAAEkzQ,QAAQ5yO,GAAEurG,aAAa5yG,GAAEk6O,aAAah5Q,GAAEi5Q,YAAY3rN,IAAGs1N,GAA0Bl6N,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAElmD,GAAEmZ,GAAEgzG,GAAE59G,OAAM08H,KAAKj4H,EAAEsyH,MAAMzuI,EAAE0uI,QAAQ9mI,GAAEkzQ,QAAQ5yO,GAAEurG,aAAa5yG,GAAEk6O,aAAah5Q,GAAEi5Q,YAAY3rN,IAAGo0N,GAAgBtnQ,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,GAAEi4K,GAAE5vN,OAAM0rC,MAAMqH,EAAEypF,OAAOvsF,EAAEkzN,MAAMv0Q,EAAE8tI,KAAKj4H,GAAG,SAAiC0uE,GAAEpgC,GAAE9C,GAAErhD,GAAE6V,GAAEnc,GAAG,MAAM4H,GAAEq1Q,EAAa,uBAAuB/0O,GAAEg4O,GAAar1L,GAAEpgC,GAAE9C,GAAErhD,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,OAAM,MAAM,CAAC88C,MAAMynC,GAAEqpD,OAAOzpF,GAAEowN,MAAMlzN,GAAEysF,KAAK9tI,IAAG,MAAMu6B,GAAEtnC,SAAS2uC,IAAG,IAAInmC,GAAEstD,GAAE0hE,GAAEx3H,SAASsxF,IAAGj2D,GAAEr7B,SAASkxD,IAAG68K,GAAE/tO,SAASouD,IAAGjwC,GAAEne,SAAS+M,IAAGtG,IAAIqvD,GAAE6zN,GAAeljR,GAAG+B,GAAEm5Q,EAAQ7rN,GAAE9vC,KAAI,MAAMpW,GAAE,IAAIvB,GAAEsgC,IAAGotF,GAAE,IAAI1tH,GAAE,EAAEsgC,IAAG5lB,GAAE,IAAI1a,GAAE,EAAE,EAAEsgC,IAAG,OAAO/rB,QAAO,OAAO,CAAC,IAAIpa,GAAE,MAAM,IAAIsvH,WAAW,oDAAoD,MAAMxmC,GAAE,iBAAiB9oF,GAAEu9Q,GAAUv9Q,GAAE,gBAAW,EAAO,IAAI0oD,GAAE9C,GAAErhD,GAAE,MAAMiqP,WAAW9lM,GAAE2pF,KAAKzsF,IAAG27N,GAAiBvhR,GAAEstD,GAAElmD,GAAE0hF,KAAItxF,qBAAqBsW,GAAI6H,IAAGne,SAAS08Q,GAAGtuN,OAAMjwC,GAAEne,WAAWme,GAAEne,SAASouD,KAAIopE,GAAEx3H,MAAMw3H,GAAElwF,IAAGwuB,GAAE5E,KAAI8lM,WAAW9lM,GAAE2pF,KAAKzsF,IAAG27N,GAAiBvhR,GAAEstD,GAAElmD,GAAE0hF,KAAI,MAAM0lK,WAAW9lM,GAAE2pF,KAAK9tI,IAAGg9Q,GAAiBvhR,GAAEstD,GAAEimE,GAAEzqC,KAAItxF,qBAAqBsW,GAAI6H,IAAGne,SAAS08Q,GAAG3vQ,OAAMoR,GAAEne,WAAWme,GAAEne,SAAS+M,KAAIsuB,GAAEr7B,MAAMq7B,GAAEiM,IAAGwuB,GAAE5E,KAAI8lM,WAAW9lM,GAAE2pF,KAAK9tI,IAAGg9Q,GAAiBvhR,GAAEstD,GAAEimE,GAAEzqC,KAAIpgC,GAAE04N,GAAgBphR,GAAEstD,GAAElmD,QAAE,EAAO0hF,IAAG,MAAM1uE,GAAE,iBAAiBpa,GAAEu9Q,GAAUv9Q,GAAE,kBAAa,EAAO/B,GAAE22Q,GAAG,MAAM32Q,GAAEojR,YAAY,QAAQ,IAAIx7Q,GAAEy7Q,GAAkBthR,GAAEstD,GAAE5E,GAAEzqD,GAAEmc,IAAG+rB,GAAEgzO,EAAQtzQ,GAAE0+C,IAAG,KAAK/sD,qBAAqBsW,GAAI+kB,IAAGr7B,SAAS08Q,GAAG/tO,OAAM,CAACtT,GAAEr7B,WAAWq7B,GAAEr7B,SAAS2uC,KAAI6oF,GAAEx3H,MAAMw3H,GAAElwF,IAAGwuB,GAAE5E,GAAEA,GAAE04N,GAAgBphR,GAAEstD,GAAElmD,QAAE,EAAO0hF,IAAG,MAAMljC,GAAEgvN,GAAG,MAAMhvN,GAAEy7N,YAAY,QAAQx7Q,GAAEy7Q,GAAkBthR,GAAEstD,GAAE5E,GAAE9C,GAAExrC,IAAG+rB,GAAEgzO,EAAQtzQ,GAAE0+C,IAAG,UAAU,QAAQ,CAAC,IAAIvkD,GAAE,MAAM,IAAIsvH,WAAW,qDAAqD,MAAMxmC,GAAE,iBAAiB9oF,GAAEu9Q,GAAUv9Q,GAAE,gBAAW,EAAO,IAAI0oD,GAAE9C,GAAE,MAAM4oM,WAAW9lM,GAAE2pF,KAAKzsF,IAAG27N,GAAiBvhR,GAAEstD,GAAEimE,GAAEzqC,KAAItxF,qBAAqBsW,GAAI6H,IAAGne,SAAS08Q,GAAGtuN,OAAMjwC,GAAEne,WAAWme,GAAEne,SAASouD,KAAI/yB,GAAEr7B,MAAMq7B,GAAEiM,IAAGwuB,GAAE5E,KAAI8lM,WAAW9lM,GAAE2pF,KAAKzsF,IAAG27N,GAAiBvhR,GAAEstD,GAAEimE,GAAEzqC,KAAI,UAAU,OAAO,CAAC,IAAI9oF,GAAE,MAAM,IAAIsvH,WAAW,oDAAoD,MAAMxmC,GAAE,iBAAiB9oF,GAAEu9Q,GAAUv9Q,GAAE,gBAAW,EAAO,IAAI0oD,GAAE9C,GAAE,MAAM4oM,WAAW9lM,GAAE2pF,KAAKzsF,IAAG27N,GAAiBvhR,GAAEstD,GAAE/sC,GAAEuoE,KAAItxF,qBAAqBsW,GAAI6H,IAAGne,SAAS08Q,GAAGtuN,OAAMjwC,GAAEne,WAAWme,GAAEne,SAASouD,KAAI2/K,GAAE/tO,MAAM+tO,GAAEzmM,IAAGwuB,GAAE5E,KAAI8lM,WAAW9lM,GAAE2pF,KAAKzsF,IAAG27N,GAAiBvhR,GAAEstD,GAAE/sC,GAAEuoE,KAAI,OAAO,MAAM,CAACznC,MAAM7pD,WAAWw3H,IAAGmjB,OAAO36I,WAAWq7B,IAAGimP,MAAMthR,WAAW+tO,IAAGlzF,KAAK76I,WAAWme,KAArjE,CAA0jE+yC,EAAE9C,EAAErhD,EAAE6V,EAAEmrN,GAAE5vN,KAAI,IAAIy+Q,GAAS1rO,EAAE9C,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAEstD,IAAGwU,MAAMtqE,GAAG,IAAI0hR,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAI1jC,EAAEqwL,EAAQh2Q,KAAKyxH,IAAGlsE,EAAEywN,EAAQh2Q,KAAKohD,IAAGqB,EAAEuzN,EAAQh2Q,KAAKqhD,IAAGjgD,EAAE40Q,EAAQh2Q,KAAKqD,IAAG4T,EAAE++P,EAAQh2Q,KAAKmwH,GAAGr1H,GAAEk7Q,EAAQh2Q,KAAKm7N,GAAGz4N,GAAEszQ,EAAQh2Q,KAAKkX,GAAG8rB,GAAEgzO,EAAQh2Q,KAAKg7N,IAAGr/L,GAAEq6O,EAAQh2Q,KAAKu9B,IAAG1gC,GAAEm5Q,EAAQh2Q,KAAKukO,IAAG,QAAG,MAAW,MAAM,IAAIl7G,UAAU,gCAAgC,MAAMl/D,GAAE,iBAAiB91D,EAAEuvR,GAAoB,OAAOvvR,GAAG0rR,GAAiB1rR,GAAGw3H,GAAEi0J,GAAyB31N,IAAGz6B,GAAEivP,GAAgBx0N,GAAE,OAAO,WAAWosN,IAAI,IAAIn0C,KAAIlkL,MAAMynC,EAAEqpD,OAAOzpF,EAAEowN,MAAMlzN,EAAEysF,KAAK9tI,GAAGgwR,GAA0BzrM,EAAEpgC,EAAE9C,EAAErhD,EAAEsuB,GAAEm8F,KAAI2qJ,GAAwB3qJ,MAAKu2G,GAAEk+C,GAA0Bz0J,GAAElmC,EAAEpgC,EAAE9C,EAAE,IAAI,IAAIpoC,GAAEyjQ,GAAgC18Q,EAAE6V,EAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAE6yB,GAAE0yM,IAAG,GAAG,yBAAwB,OAAO,IAAI,GAAG,yBAAwB,OAAM,MAAOlzF,KAAK9tI,EAAEmoI,MAAMtyH,EAAEuyH,QAAQ1uI,GAAE86Q,QAAQlzQ,GAAE6rI,aAAavrG,GAAE6yO,aAAal6O,GAAEm6O,YAAYj5Q,IAAGwd,IAAG,MAAMskD,MAAMnsD,IAAG0oQ,GAAcv1L,EAAEpgC,EAAE9C,EAAErhD,EAAE6V,EAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAE,EAAE6yB,GAAE,QAAQm8F,IAAG,OAAOr5G,GAAE5gB,SAASyC,GAAG,IAAI0hR,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEo6L,GAAiB1rR,GAAGkxD,EAAEu+N,GAAyBn+L,GAAGljC,EAAEo8N,GAAuBl5L,EAAE,SAASvkF,EAAEu9Q,GAAgBh5L,EAAE,eAAe,YAAO,GAAQ,GAAG,YAAY,aAAa,MAAM,IAAIwmC,WAAW,oEAAoE,MAAMiqJ,UAAUn/P,EAAEtd,KAAKmB,GAAEu7Q,UAAU3zQ,IAAGqhR,GAA+B3iR,EAAEmkD,GAAG,OAAO8rO,GAAyBrxR,KAAKiX,EAAE,CAACtd,KAAKmB,GAAEu7Q,UAAU3zQ,GAAEu4Q,aAAax4N,IAAIwhO,SAAS,IAAIlO,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOgoK,GAAyBrxR,MAAMkkR,eAAe7vR,EAAEsxF,GAAG,IAAIowL,GAAmB/1Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM,oBAAoBunJ,WAAM,SAAc0gB,eAAe,IAAI1gB,KAAK0gB,eAAej9R,EAAEsxF,GAAG4N,OAAOvzF,OAAOivB,QAAQkuJ,KAAK,8EAA8Ek0G,GAAyBrxR,OAAOo9F,UAAU,MAAM,IAAIisB,UAAU,0DAA0Dh1H,GAAG,OAAO0hR,GAAmB1hR,GAAG,IAAI48R,GAASjb,EAAQ3hR,EAAEo9H,IAAGukJ,EAAQ3hR,EAAE+sD,IAAG40N,EAAQ3hR,EAAEgtD,IAAG20N,EAAQ3hR,EAAEgP,IAAG2yQ,EAAQ3hR,EAAE87H,GAAG6lJ,EAAQ3hR,EAAE8mO,GAAG66C,EAAQ3hR,EAAE6iB,GAAG8+P,EAAQ3hR,EAAE2mO,IAAGg7C,EAAQ3hR,EAAEkpC,IAAGy4O,EAAQ3hR,EAAEkwO,KAAIohD,GAAmBtxR,kBAAkBsxF,EAAEpgC,EAAE9C,GAAG,MAAMrhD,EAAEukR,GAAmBhgM,GAAG1uE,EAAE0uQ,GAAmBpgO,GAAGzqD,EAAEglR,GAAyBC,GAAiBt9N,IAAI//C,GAAEszQ,EAAQ50Q,EAAEqwH,IAAGzuF,GAAEgzO,EAAQ50Q,EAAEggD,IAAGzlB,GAAEq6O,EAAQ50Q,EAAEigD,IAAG,IAAIxkD,GAAEm5Q,EAAQ50Q,EAAEiC,IAAG,MAAM8mD,GAAE6rN,EAAQ50Q,EAAE+uH,GAAGtE,GAAEmqJ,EAAQ50Q,EAAE+5N,GAAGzrM,GAAEsmP,EAAQ50Q,EAAE8V,GAAGkrN,GAAE4zC,EAAQ50Q,EAAE45N,IAAG3gN,GAAE27P,EAAQ50Q,EAAEm8B,IAAG,IAAI/qB,GAAEwjQ,EAAQ50Q,EAAEmjO,IAAG,MAAMtgO,GAAE+xQ,EAAQ/+P,EAAEw6G,IAAGrB,GAAE4lJ,EAAQ/+P,EAAEmqC,IAAGhkC,GAAE44P,EAAQ/+P,EAAEoqC,IAAG,IAAIE,GAAEy0N,EAAQ/+P,EAAE5T,IAAG,MAAM6gL,GAAE8xF,EAAQ/+P,EAAEk5G,GAAG9xE,GAAE23N,EAAQ/+P,EAAEkkN,GAAGkL,GAAE2vC,EAAQ/+P,EAAEC,GAAGivN,GAAE6vC,EAAQ/+P,EAAE+jN,IAAG5wL,GAAE4rO,EAAQ/+P,EAAEsmB,IAAG,IAAI29L,GAAE86C,EAAQ/+P,EAAEstN,IAAG,MAAM1jN,GAAE0wQ,GAAqBz2R,EAAE4H,GAAEsgC,GAAErH,GAAE9+B,IAAGotD,EAAEsnO,GAAqBz2R,EAAEmJ,GAAEmsH,GAAEhzG,GAAEmkC,IAAG,IAAI7+C,IAAG,QAAO,QAAO,QAAO,QAAO,WAAUwsI,KAAKryI,IAAGu0R,GAA0B1uR,GAAEsgC,GAAErH,GAAE9+B,GAAE,MAAM/B,MAAMo0I,KAAK3tF,IAAG6vO,GAA0BntR,GAAEmsH,GAAEhzG,GAAEmkC,GAAE,MAAMzmD,KAAK,MAAMu4D,GAAE+nN,GAAyBv+Q,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE/nN,GAAE7H,GAAEqO,IAAGijN,GAAEs3C,GAAyB75N,GAAE2iI,GAAE7lI,GAAEgoL,GAAEF,GAAE/7L,GAAE8wL,GAAEjxK,GAAG,OAAOu2N,GAAiBnsR,WAAWA,WAAWg/D,GAAEywK,OAAMugD,EAAmB4M,GAAS,qBAAqB,MAAMO,GAAGv+R,OAAO8Z,OAAO,SAAoBjN,YAAYzL,EAAEsxF,EAAEpgC,EAAE,UAAU9C,EAAE,MAAMq3N,GAA4B95Q,KAAKkzQ,GAAwB7+Q,GAAG6+Q,GAAwBvtL,GAAG0yL,GAA4B9yN,GAAG2tN,GAAwBzwN,IAAQ61N,gBAAY,IAAIF,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOilK,GAAkBtY,EAAQh2Q,KAAKqa,IAAGra,MAAU29C,UAAM,IAAIy6N,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO62J,GAAYlK,EAAQh2Q,KAAKqa,IAAGra,MAAUiuR,iBAAa,IAAI7V,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqrJ,GAA6BsB,EAAQh2Q,KAAKqa,KAAI20Q,KAAK36R,EAAEsxF,GAAG,IAAIyyL,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,oBAAoB4lK,GAAyB56R,GAAG,MAAMkxD,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKqa,IAAGjZ,EAAEy1Q,GAAep0N,EAAE,CAAC,MAAM,QAAQ,YAAY,SAAS,IAAIxrC,EAAE6/P,GAAsB92Q,KAAKoB,EAAE,IAAI,OAAO6V,EAAEi4Q,GAAoBzsO,EAAExrC,EAAE6/P,GAAsBziR,EAAE+M,EAAE,YAAY6V,EAAE6/P,GAAsB7/P,EAAE7V,EAAE,IAAIm3Q,GAA2B91N,EAAExrC,EAAEsuC,GAAGqoC,OAAOv5F,GAAG,IAAI+jR,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAE8rM,GAAmBp9R,GAAG,UAAUA,IAAI,CAACqO,EAAEsgC,EAAEloC,GAAI,GAAGk7Q,EAAQh2Q,KAAK3L,KAAK2hR,EAAQrwL,EAAEtxF,GAAG,OAAM,EAAG,OAAOk7R,GAAevZ,EAAQh2Q,KAAKqa,IAAG27P,EAAQrwL,EAAEtrE,KAAIzoB,SAASyC,GAAG,IAAI+jR,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqoK,GAAyB1xR,KAAKyvR,GAAqB1P,GAAiB1rR,KAAK4vR,SAAS,IAAI7L,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqoK,GAAyB1xR,MAAMkkR,eAAe7vR,EAAEsxF,GAAG,IAAIyyL,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAIm5J,GAAGnuR,EAAEsxF,GAAG4N,OAAOvzF,MAAMo9F,UAAU,MAAM,IAAIisB,UAAU,kDAAkDknK,YAAYl8R,GAAG,IAAI+jR,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,gCAAgC,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKqa,IAAGkrC,EAAEsxN,GAAelxL,EAAE,CAAC,MAAM,cAAcljC,EAAEq0N,GAAsB92Q,KAAKulD,EAAE,IAAInkD,EAAEy1Q,GAAelxL,EAAE,CAAC,SAAS,IAAI1uE,EAAEi4Q,GAAoBvpM,EAAEljC,EAAEq0N,GAAsBziR,EAAE+M,EAAE,KAAK6V,EAAE6/P,GAAsB7/P,EAAE,IAAI,IAAIjY,IAAI,IAAIumD,KAAKnkD,KAAK,IAAI,MAAMtG,GAAE02R,GAAG,MAAM,OAAO12R,GAAE26B,SAAS,SAASiiP,GAAuB/xL,EAAE1uE,EAAEnc,IAAGg1R,eAAe,IAAI1X,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM,CAACmrJ,SAASwB,EAAQh2Q,KAAKqa,IAAGotQ,OAAOzR,EAAQh2Q,KAAKgjC,GAAGwkP,SAASxR,EAAQh2Q,KAAK0C,GAAG6kR,QAAQvR,EAAQh2Q,KAAKlF,IAAIi1R,cAAc,IAAI3X,GAAmBp4Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk9J,GAAyBvQ,EAAQh2Q,KAAKqa,iBAAgBhmB,EAAEsxF,GAAG,MAAMpgC,EAAEw6N,GAAiBp6L,GAAG,OAAOyyL,GAAmB/jR,IAAImjR,GAAmBjyN,GAAGkzN,GAAuBzC,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAGgzO,EAAQ3hR,EAAEgmB,IAAG27P,EAAQ3hR,EAAEyG,KAAK22R,GAAmBp9R,EAAEkxD,IAAI8+N,EAAmBsN,GAAc,0BAA0B,MAAM1P,GAAQ,IAAI,IAAIlK,EAAa,sBAAjB,CAAwCuE,MAAMsV,GAAc,CAACv9R,EAAEsxF,EAAEksM,QAAqB,MAAMtsO,EAAEyxN,GAA4BrxL,GAAGljC,EAAE41N,GAA4BhkR,GAAG,OAAOojR,GAAoBlyN,EAAE08N,KAAUx/N,IAAIqvO,GAAiB,CAACz9R,EAAEw9R,OAAoBpa,GAAoBT,GAA4B3iR,GAAG4tR,KAAU,WAAW8P,GAAc,CAAC19R,EAAEsxF,EAAEksM,QAAqB,MAAMtsO,EAAEyxN,GAA4BrxL,GAAGljC,EAAE41N,GAA4BhkR,GAAG,OAAO+iR,GAA4BkF,KAAK/2N,EAAE9C,IAAIuvO,GAAG,CAAC/P,WAAQ2P,iBAAcE,oBAAiBG,UAAU,CAAC59R,EAAEsxF,EAAEksM,OAAoBlb,GAAuBib,GAAcv9R,EAAEsxF,IAAIusM,aAAa,CAAC79R,EAAEw9R,OAAoBlb,GAAuBmb,GAAiBz9R,IAAI89R,aAAa,CAAC99R,EAAEw9R,OAAoBpB,GAAuBqB,GAAiBz9R,IAAI+9R,WAAW,IAAIP,KAAkBE,iBAAcM,iBAAiB,CAACh+R,EAAEw9R,OAAoBE,GAAc,UAAU19R,IAAIi3H,OAAOklJ,aAAa,gBAAgBv9Q,OAAO0nH,eAAeq3K,GAAG1mK,OAAOklJ,YAAY,CAACr7Q,MAAM,eAAeo2H,UAAS,EAAG1Q,YAAW,EAAGC,cAAa,IAAK,MAAMw3K,GAAGr/R,OAAOqe,OAAO,YAA8Bjd,EAAEsxF,EAAEpgC,GAAG,IAAI9C,EAAEuzN,EAAQ3hR,EAAEsnC,GAAGv6B,EAAE40Q,EAAQ3hR,EAAEwI,GAAGoa,EAAE++P,EAAQ3hR,EAAE81D,IAAGrvD,EAAEk7Q,EAAQ3hR,EAAEw3H,IAAGnpH,GAAEszQ,EAAQ3hR,EAAEq7B,IAAGsT,GAAEgzO,EAAQ3hR,EAAE+tO,GAAG,GAAG78K,EAAE,CAAC,MAAM5rD,KAAKtF,GAAEgiR,UAAU1wL,GAAEs1L,aAAat/O,IAAG4pB,IAAI6uN,KAAK3xN,EAAE4xN,OAAOjzQ,EAAEu8F,OAAO1mF,EAAE69P,YAAYh6Q,EAAEi6Q,YAAYryQ,GAAEsyQ,WAAWhyO,IAAGm9O,GAAU19N,EAAErhD,EAAE6V,EAAEnc,EAAE4H,GAAEsgC,GAAE2iD,GAAEtxF,GAAEsnC,KAAI,MAAO,GAAEg/O,GAAsBl4N,MAAMk4N,GAAsBv5Q,KAAK05Q,GAAwB7jQ,EAAEnc,EAAE4H,GAAEsgC,GAAE2iD,KAAK,SAAgB7lF,YAAYzL,EAAE,EAAEsxF,EAAE,EAAEpgC,EAAE,EAAE9C,EAAE,EAAErhD,EAAE,EAAE6V,EAAE,GAAG,MAAMnc,QAAE,MAAW,EAAEo4Q,GAAwB7+Q,GAAGqO,QAAE,MAAW,EAAEwwQ,GAAwBvtL,GAAG3iD,QAAE,MAAW,EAAEkwO,GAAwB3tN,GAAGlrC,QAAE,MAAW,EAAE64P,GAAwBzwN,GAAGjwC,QAAE,MAAW,EAAE0gQ,GAAwB9xQ,GAAG6C,QAAE,MAAW,EAAEivQ,GAAwBj8P,GAAGs+P,EAAWz6Q,GAAE4H,GAAEsgC,GAAE3oB,GAAE7H,GAAEvO,IAAGi3N,GAAEl7N,MAAM05Q,GAAQ15Q,KAAK27B,EAAE7gC,IAAG4+Q,GAAQ15Q,KAAKnD,EAAE6F,IAAGg3Q,GAAQ15Q,KAAKmqD,GAAEnnB,IAAG02O,GAAQ15Q,KAAK6rH,GAAExxG,IAAGq/P,GAAQ15Q,KAAK0vB,GAAEld,IAAGknQ,GAAQ15Q,KAAKoiO,EAAEn+N,IAAOmwQ,WAAO,IAAIG,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAK27B,GAAO04O,aAAS,IAAIE,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKnD,GAAO8gG,aAAS,IAAI42K,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKmqD,IAAO2qN,kBAAc,IAAIP,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAK6rH,IAAOkpJ,kBAAc,IAAIR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAK0vB,IAAOslP,iBAAa,IAAIT,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKoiO,GAAG4sD,KAAK36R,EAAEsxF,GAAG,IAAI4uL,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,oBAAoB4lK,GAAyB56R,GAAG,MAAMkxD,EAAEiyN,GAAmBuI,GAAiBp6L,IAAIljC,EAAEk1N,GAAqBtjR,EAAE,WAAW+M,EAAEu2Q,GAAqB33Q,MAAM,IAAIo0Q,KAAKn9P,EAAEo9P,OAAOv5Q,GAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAYp5O,GAAEq5O,WAAWn4Q,IAAGy1R,GAAGlxR,EAAEqhD,GAAG,QAAQ2xN,KAAKn9P,EAAEo9P,OAAOv5Q,GAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAYp5O,GAAEq5O,WAAWn4Q,IAAG+6Q,GAAa3gQ,EAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,GAAE0oD,IAAI,IAAIgtO,GAAUt7Q,EAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,IAAGmF,IAAI3N,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmpK,GAA6C,MAAMxyR,KAAK3L,GAAGmvR,SAASnvR,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmpK,GAA6C,WAAWxyR,KAAK3L,GAAGovR,MAAMpvR,EAAEsxF,GAAG,IAAI4uL,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOopK,GAA4B,QAAQzyR,KAAK3L,EAAEsxF,GAAGg+L,MAAMtvR,EAAEsxF,GAAG,IAAI4uL,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOopK,GAA4B,QAAQzyR,KAAK3L,EAAEsxF,GAAG52E,MAAM1a,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,QAAG,MAAW,MAAM,IAAIA,UAAU,iCAAiC,MAAM1jC,EAAE,iBAAiBtxF,EAAEuvR,GAAoB,eAAevvR,GAAG0rR,GAAiB1rR,GAAGkxD,EAAEq5N,GAA4Bj5L,GAAGljC,EAAEo8N,GAAuBl5L,EAAE,cAAcvkF,EAAEu9Q,GAAgBh5L,EAAE,eAAe,OAAO4wL,IAAIuI,GAAkCv5N,EAAE,CAAC6uN,KAAK,GAAGC,OAAO,GAAG12K,OAAO,GAAGm3K,YAAY,IAAIC,YAAY,IAAIC,WAAW,KAAK5zQ,IAAG,GAAI,IAAI6V,EAAE++P,EAAQh2Q,KAAK27B,GAAG7gC,GAAEk7Q,EAAQh2Q,KAAKnD,GAAG6F,GAAEszQ,EAAQh2Q,KAAKmqD,IAAGnnB,GAAEgzO,EAAQh2Q,KAAK6rH,IAAGxxG,GAAE27P,EAAQh2Q,KAAK0vB,IAAGld,GAAEwjQ,EAAQh2Q,KAAKoiO,GAAG,QAAQgyC,KAAKn9P,EAAEo9P,OAAOv5Q,GAAE6iG,OAAOj7F,GAAEoyQ,YAAY9xO,GAAE+xO,YAAY16P,GAAE26P,WAAWxiQ,IAAG2tQ,GAAUlpQ,EAAEnc,GAAE4H,GAAEsgC,GAAE3oB,GAAE7H,GAAE+yC,EAAEnkD,EAAEqhD,IAAI,IAAI8vO,GAAUt7Q,EAAEnc,GAAE4H,GAAEsgC,GAAE3oB,GAAE7H,IAAGo7E,OAAOv5F,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEy5L,GAAe/qR,GAAG,UAAUA,IAAI,CAACsnC,EAAE9+B,EAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAI,GAAG4zC,EAAQh2Q,KAAK3L,KAAK2hR,EAAQrwL,EAAEtxF,GAAG,OAAM,EAAG,OAAM,EAAGzC,SAASyC,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEo6L,GAAiB1rR,GAAGkxD,EAAEu+N,GAAyBn+L,GAAGljC,EAAEo8N,GAAuBl5L,EAAE,SAASvkF,EAAEu9Q,GAAgBh5L,EAAE,eAAe,YAAO,GAAQ,GAAG,WAAW,MAAM,IAAIwmC,WAAW,sDAAsD,MAAMiqJ,UAAUn/P,EAAEtd,KAAKmB,GAAEu7Q,UAAU3zQ,IAAGqhR,GAA+B3iR,EAAEmkD,GAAG,OAAOmtO,GAAqB1yR,KAAKiX,EAAE,CAACtd,KAAKmB,GAAEu7Q,UAAU3zQ,GAAEu4Q,aAAax4N,IAAIwhO,SAAS,IAAI1P,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqpK,GAAqB1yR,KAAK,QAAQkkR,eAAe7vR,EAAEsxF,GAAG,IAAI4uL,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAIm5J,GAAGnuR,EAAEsxF,GAAG4N,OAAOvzF,MAAMo9F,UAAU,MAAM,IAAIisB,UAAU,2DAA2DqmK,gBAAgBr7R,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAGkxD,EAAEywN,EAAQrwL,EAAE7qF,GAAG2nD,EAAEuzN,EAAQrwL,EAAEjjF,GAAGtB,EAAE40Q,EAAQrwL,EAAE3iD,GAAG/rB,EAAE++P,EAAQrwL,EAAEtrE,IAAG,OAAOw9P,GAAuBtyN,EAAE9C,EAAErhD,EAAE40Q,EAAQh2Q,KAAK27B,GAAGq6O,EAAQh2Q,KAAKnD,GAAGm5Q,EAAQh2Q,KAAKmqD,IAAG6rN,EAAQh2Q,KAAK6rH,IAAGmqJ,EAAQh2Q,KAAK0vB,IAAGsmP,EAAQh2Q,KAAKoiO,GAAGnrN,GAAGktQ,gBAAgB9vR,GAAG,IAAIkgR,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,oBAAoB,MAAM1jC,EAAEtxF,EAAE49R,UAAU,QAAG,MAAW,MAAM,IAAI5oK,UAAU,yBAAyB,MAAM9jE,EAAEy4N,GAAer4L,GAAGljC,EAAEpuD,EAAE4/Q,SAAS,QAAG,MAAW,MAAM,IAAI5qJ,UAAU,6BAA6B,MAAMpyG,EAAE+/P,GAA4Bv0N,GAAGjwC,EAAEwjQ,EAAQzwN,EAAEzqD,GAAGmJ,GAAE+xQ,EAAQzwN,EAAE7iD,GAAG0tH,GAAE4lJ,EAAQzwN,EAAEviB,GAAG5lB,GAAE44P,EAAQzwN,EAAElrC,IAAGknC,GAAEy0N,EAAQh2Q,KAAK27B,GAAG81F,GAAEukJ,EAAQh2Q,KAAKnD,GAAGukD,GAAE40N,EAAQh2Q,KAAKmqD,IAAG9I,GAAE20N,EAAQh2Q,KAAK6rH,IAAGxoH,GAAE2yQ,EAAQh2Q,KAAK0vB,IAAGygG,GAAE6lJ,EAAQh2Q,KAAKoiO,GAAG,OAAOg1C,GAA4BpB,EAAQgD,GAAc/hQ,EAAE,IAAI8gQ,EAAa,4BAAjB,CAA8CvlQ,EAAEvO,GAAEmsH,GAAE7uE,GAAEkwE,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAE/yG,IAAG,cAAchc,GAAG6V,EAAEmG,IAAG0yQ,eAAe,IAAIvb,GAAev0Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM,CAACqnK,QAAQ1a,EAAQh2Q,KAAK27B,GAAGg1P,eAAe3a,EAAQh2Q,KAAK0vB,IAAGkhQ,eAAe5a,EAAQh2Q,KAAK6rH,IAAGglK,UAAU7a,EAAQh2Q,KAAKnD,GAAGi0R,cAAc9a,EAAQh2Q,KAAKoiO,GAAG2uD,UAAU/a,EAAQh2Q,KAAKmqD,iBAAgB91D,EAAEsxF,GAAG,MAAMpgC,EAAEiyN,GAAmBuI,GAAiBp6L,IAAI,OAAO4uL,GAAelgR,GAAG,IAAIk+R,GAAUvc,EAAQ3hR,EAAEsnC,GAAGq6O,EAAQ3hR,EAAEwI,GAAGm5Q,EAAQ3hR,EAAE81D,IAAG6rN,EAAQ3hR,EAAEw3H,IAAGmqJ,EAAQ3hR,EAAEq7B,IAAGsmP,EAAQ3hR,EAAE+tO,IAAIg9C,GAAe/qR,EAAEkxD,kBAAkBlxD,EAAEsxF,GAAG,MAAMpgC,EAAE65N,GAAe/qR,GAAGouD,EAAE28N,GAAez5L,GAAG,UAAUtxF,IAAI,CAACsnC,EAAE9+B,EAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAG,CAAC,MAAMz8I,EAAEqwL,EAAQzwN,EAAElxD,GAAG+M,GAAE40Q,EAAQvzN,EAAEpuD,GAAG,GAAGsxF,IAAIvkF,GAAE,OAAOo/Q,GAAiB76L,EAAEvkF,IAAG,OAAO,GAAGijR,EAAmBkO,GAAU,sBAAsB,SAAezyR,YAAYzL,GAAG,GAAGk2F,UAAUx4F,OAAO,EAAE,MAAM,IAAIo6H,WAAW,4CAA4C,MAAMxmC,EAAE20L,GAA+BjmR,GAAG6mO,GAAEl7N,MAAM05Q,GAAQ15Q,KAAKiX,EAAE0uE,GAAO1yE,SAAK,IAAIomQ,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKiX,GAAG07Q,wBAAwBt+R,GAAG,IAAIglR,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEi3L,GAAkBvoR,GAAGkxD,EAAEywN,EAAQh2Q,KAAKiX,GAAG,OAAOykQ,GAAuBn2N,GAAG+xN,GAA0B/xN,GAAGm3N,GAAkCn3N,EAAEywN,EAAQrwL,EAAEvkF,IAAIwxR,mBAAmBv+R,GAAG,IAAIglR,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwpK,GAAmB7yR,KAAK48Q,GAAkBvoR,IAAIy+R,oBAAoBz+R,EAAEsxF,EAAE,WAAW,IAAI0zL,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOouJ,GAAoBz3Q,KAAK48Q,GAAkBvoR,GAAGgkR,GAA4B1yL,IAAIotM,cAAc1+R,EAAEsxF,GAAG,IAAI0zL,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2vJ,GAAch5Q,KAAKm/Q,GAAmB9qR,GAAGklR,GAAyBwG,GAAiBp6L,KAAKqtM,uBAAuBrtM,GAAG,IAAI0zL,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAE45N,GAAmBx5L,GAAGljC,EAAEs1N,EAAa,sBAAsB32Q,EAAE40Q,EAAQh2Q,KAAKiX,GAAG,GAAGykQ,GAAuBt6Q,GAAG,CAAC,MAAMukF,EAAEuyL,GAAuBlC,EAAQzwN,EAAEzqD,GAAGk7Q,EAAQzwN,EAAE7iD,GAAGszQ,EAAQzwN,EAAEviB,GAAGgzO,EAAQzwN,EAAE5pB,GAAGq6O,EAAQzwN,EAAE1oD,GAAGm5Q,EAAQzwN,EAAE4E,IAAG6rN,EAAQzwN,EAAEsmE,IAAGmqJ,EAAQzwN,EAAE71B,IAAGsmP,EAAQzwN,EAAE68K,IAAI,GAAG,SAAS,MAAM,IAAIj2G,WAAW,uCAAuC,MAAMl1G,GAAEqgQ,GAA0Bl2Q,GAAG,MAAM,CAAC,IAAIqhD,EAAEpuD,WAAWsxF,EAAEtxF,SAAS4iB,OAAswB,OAAOoD,SAArtBsrE,GAAEpgC,GAAE9C,GAAErhD,GAAE6V,GAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,IAAG,MAAMstD,GAAE+tN,GAAuB3yN,GAAE9C,GAAErhD,GAAE6V,GAAEnc,GAAE4H,GAAEsgC,GAAErH,GAAE9+B,IAAG,GAAG,UAAS,MAAM,IAAIsvH,WAAW,uCAAuC,IAAIN,GAAEx3H,WAAW81D,GAAEooN,IAAIl+Q,WAAWw3H,GAAE2mJ,MAAM3mJ,GAAE1hE,IAAG,IAAIz6B,GAAEr7B,MAAM81D,GAAEooN,IAAIl+Q,cAAcq7B,GAAE+iP,MAAM/iP,GAAEy6B,IAAG,MAAMi4K,GAAEs6C,GAAkC/2L,GAAEkmC,IAAGxxG,GAAEqiQ,GAAkC/2L,GAAEj2D,IAAG,OAAO0yM,KAAI/nN,GAAE,CAAC+nN,IAAG,CAACA,GAAE/nN,KAAIrlB,IAAK62H,KAAI,MAAMn8F,GAAEr7B,WAAW81D,GAAE91D,SAASw3H,KAAIu2G,GAAEy5C,GAA8Bl2L,GAAEj2D,IAAG,GAAG61B,KAAI68K,GAAEvkL,MAAM4E,KAAI2/K,GAAExkL,OAAOx8C,KAAIghO,GAAEzkL,KAAK1mC,KAAImrN,GAAEgyC,MAAMt5Q,KAAIsnO,GAAEiyC,QAAQ3xQ,KAAI0/N,GAAEzkI,QAAQ36D,KAAIo/L,GAAE0yC,aAAan5O,KAAIymM,GAAE2yC,aAAal4Q,KAAIulO,GAAE4yC,WAAW,OAAOtlP,KAAKtnB,OAAQ/T,SAAG,QAA6IgmB,CAA/HjZ,EAAE40Q,EAAQzwN,EAAEzqD,GAAGk7Q,EAAQzwN,EAAE7iD,GAAGszQ,EAAQzwN,EAAEviB,GAAGgzO,EAAQzwN,EAAE5pB,GAAGq6O,EAAQzwN,EAAE1oD,GAAGm5Q,EAAQzwN,EAAE4E,IAAG6rN,EAAQzwN,EAAEsmE,IAAGmqJ,EAAQzwN,EAAE71B,IAAGsmP,EAAQzwN,EAAE68K,IAAaptO,IAAKX,GAAG,IAAIouD,EAAEpuD,IAAK4+R,kBAAkB5+R,GAAG,IAAIglR,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEi3L,GAAkBvoR,GAAGkxD,EAAEywN,EAAQh2Q,KAAKiX,GAAG,GAAGykQ,GAAuBn2N,IAAI,UAAU,OAAO,KAAK,IAAI9C,EAAEuzN,EAAQrwL,EAAEvkF,GAAG,MAAMtG,EAAEi9Q,EAAa,sBAAsB,OAAOt1N,EAAE85N,GAA+Bh3N,EAAE9C,GAAG,SAAS,KAAK,IAAI3nD,EAAE2nD,GAAGywO,sBAAsB7+R,GAAG,IAAIglR,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEi3L,GAAkBvoR,GAAGkxD,EAAEywN,EAAQh2Q,KAAKiX,GAAG,GAAGykQ,GAAuBn2N,IAAI,UAAU,OAAO,KAAK,IAAI9C,EAAEuzN,EAAQrwL,EAAEvkF,GAAG,MAAMtG,EAAEi9Q,EAAa,sBAAsB,OAAOt1N,EAAEo6N,GAAmCt3N,EAAE9C,GAAG,SAAS,KAAK,IAAI3nD,EAAE2nD,GAAG7wD,WAAW,IAAIynR,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKiX,GAAGgtQ,SAAS,IAAI5K,GAAmBr5Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQh2Q,KAAKiX,eAAe5iB,GAAG,OAAO8+R,GAAyBnc,GAA4B3iR,KAAKgwR,EAAmB+O,GAAS,qBAAqB3iB,GAAgB,sDAAsD2iB,GAAS3oM,UAAUkoM,yBAAyBliB,GAAgB,qDAAqD2iB,GAAS3oM,UAAUuoM,wBAAwB,MAAMK,GAAGpgS,OAAO8Z,OAAO,SAAqBjN,YAAYzL,EAAEsxF,EAAEpgC,EAAE,UAAU9C,EAAE,GAAGu3N,GAA6Bh6Q,KAAKkzQ,GAAwB7+Q,GAAG6+Q,GAAwBvtL,GAAG0yL,GAA4B9yN,GAAG2tN,GAAwBzwN,IAAQ5E,WAAO,IAAIg7N,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+kK,GAAapY,EAAQh2Q,KAAKqa,IAAGra,MAAU49C,YAAQ,IAAIi7N,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOglK,GAAcrY,EAAQh2Q,KAAKqa,IAAGra,MAAUs4Q,gBAAY,IAAIO,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOilK,GAAkBtY,EAAQh2Q,KAAKqa,IAAGra,MAAUiuR,iBAAa,IAAIpV,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqrJ,GAA6BsB,EAAQh2Q,KAAKqa,KAAQ85P,UAAM,IAAI0E,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO6kK,GAAYlY,EAAQh2Q,KAAKqa,IAAGra,MAAU6lR,cAAU,IAAIhN,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8kK,GAAgBnY,EAAQh2Q,KAAKqa,IAAGra,MAAUmmR,kBAAc,IAAItN,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOulK,GAAoB5Y,EAAQh2Q,KAAKqa,IAAGra,MAAUomR,iBAAa,IAAIvN,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwlK,GAAmB7Y,EAAQh2Q,KAAKqa,IAAGra,MAAUqmR,mBAAe,IAAIxN,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOylK,GAAqB9Y,EAAQh2Q,KAAKqa,IAAGra,MAAUsmR,iBAAa,IAAIzN,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO0lK,GAAmB/Y,EAAQh2Q,KAAKqa,IAAGra,MAAMgvR,KAAK36R,EAAEsxF,GAAG,IAAIkzL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,oBAAoB4lK,GAAyB56R,GAAG,MAAMkxD,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKqa,IAAGjZ,EAAEy1Q,GAAep0N,EAAE,CAAC,QAAQ,YAAY,SAAS,IAAIxrC,EAAE6/P,GAAsB92Q,KAAKoB,EAAE,IAAI,OAAO6V,EAAEi4Q,GAAoBzsO,EAAExrC,EAAE6/P,GAAsBziR,EAAE+M,EAAE,YAAY6V,EAAE6/P,GAAsB7/P,EAAE7V,EAAE,IAAI03Q,GAA4Br2N,EAAExrC,EAAEsuC,GAAGvjD,IAAI3N,EAAEsxF,GAAG,IAAIkzL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOiqK,GAAkD,MAAMtzR,KAAK3L,EAAEsxF,GAAG69L,SAASnvR,EAAEsxF,GAAG,IAAIkzL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOiqK,GAAkD,WAAWtzR,KAAK3L,EAAEsxF,GAAG89L,MAAMpvR,EAAEsxF,GAAG,IAAIkzL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOkqK,GAAiC,QAAQvzR,KAAK3L,EAAEsxF,GAAGg+L,MAAMtvR,EAAEsxF,GAAG,IAAIkzL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOkqK,GAAiC,QAAQvzR,KAAK3L,EAAEsxF,GAAGiI,OAAOv5F,GAAG,IAAIwkR,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAE05L,GAAoBhrR,GAAG,UAAUA,IAAI,CAACyG,EAAE4H,EAAEsgC,GAAI,GAAGgzO,EAAQh2Q,KAAK3L,KAAK2hR,EAAQrwL,EAAEtxF,GAAG,OAAM,EAAG,OAAOk7R,GAAevZ,EAAQh2Q,KAAKqa,IAAG27P,EAAQrwL,EAAEtrE,KAAIzoB,SAASyC,GAAG,IAAIwkR,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmqK,GAA0BxzR,KAAKyvR,GAAqB1P,GAAiB1rR,KAAK4vR,SAAS,IAAIpL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmqK,GAA0BxzR,MAAMkkR,eAAe7vR,EAAEsxF,GAAG,IAAIkzL,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAIm5J,GAAGnuR,EAAEsxF,GAAG4N,OAAOvzF,MAAMo9F,UAAU,MAAM,IAAIisB,UAAU,gEAAgEknK,YAAYl8R,GAAG,IAAIwkR,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,gCAAgC,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKqa,IAAGkrC,EAAEsxN,GAAelxL,EAAE,CAAC,YAAY,SAASljC,EAAEq0N,GAAsB92Q,KAAKulD,EAAE,IAAInkD,EAAEy1Q,GAAelxL,EAAE,CAAC,QAAQ,IAAI1uE,EAAEi4Q,GAAoBvpM,EAAEljC,EAAEq0N,GAAsBziR,EAAE+M,EAAE,KAAK6V,EAAE6/P,GAAsB7/P,EAAE,IAAI,IAAIjY,IAAI,IAAIumD,KAAKnkD,KAAK,IAAI,MAAMtG,GAAEu4R,GAAG,MAAM,OAAOv4R,GAAE26B,SAAS,SAASiiP,GAAuB/xL,EAAE1uE,EAAEnc,IAAGg1R,eAAe,IAAIjX,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM,CAACmrJ,SAASwB,EAAQh2Q,KAAKqa,IAAGotQ,OAAOzR,EAAQh2Q,KAAKgjC,GAAGwkP,SAASxR,EAAQh2Q,KAAK0C,GAAG6kR,QAAQvR,EAAQh2Q,KAAKlF,IAAIi1R,cAAc,IAAIlX,GAAoB74Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk9J,GAAyBvQ,EAAQh2Q,KAAKqa,iBAAgBhmB,EAAEsxF,GAAG,MAAMpgC,EAAEw6N,GAAiBp6L,GAAG,OAAOkzL,GAAoBxkR,IAAImjR,GAAmBjyN,GAAGwzN,GAAwB/C,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAEgmB,IAAG27P,EAAQ3hR,EAAE2uC,KAAKq8O,GAAoBhrR,EAAEkxD,kBAAkBlxD,EAAEsxF,GAAG,MAAMpgC,EAAE85N,GAAoBhrR,GAAGouD,EAAE48N,GAAoB15L,GAAG,OAAO04L,GAAerI,EAAQzwN,EAAEzqD,GAAGk7Q,EAAQzwN,EAAE7iD,GAAGszQ,EAAQzwN,EAAEviB,GAAGgzO,EAAQvzN,EAAE3nD,GAAGk7Q,EAAQvzN,EAAE//C,GAAGszQ,EAAQvzN,EAAEzf,KAAKqhP,EAAmBoP,GAAe,2BAA2B,MAAMC,GAAGlR,GAAG/3L,UAAUmxL,gBAAgB+X,GAAG1gS,OAAO8Z,OAAO,SAAoBjN,YAAYzL,EAAEsxF,EAAEpgC,EAAE,WAAW,GAAGglC,UAAUx4F,OAAO,EAAE,MAAM,IAAIs3H,UAAU,kDAAkD6wJ,GAAiCl6Q,KAAKygR,GAASpsR,GAAG2iR,GAA4BrxL,GAAG0yL,GAA4B9yN,IAAQ0oO,iBAAa,IAAIzX,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqrJ,GAA6BsB,EAAQh2Q,KAAKqa,KAAQ+3Q,iBAAa,IAAI5b,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmxJ,GAA6BxE,EAAQh2Q,KAAKuhD,KAAQ1D,WAAO,IAAI24N,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO+kK,GAAapY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAW49C,YAAQ,IAAI44N,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOglK,GAAcrY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWs4Q,gBAAY,IAAI9B,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOilK,GAAkBtY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAW29C,UAAM,IAAI64N,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO62J,GAAYlK,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWo0Q,WAAO,IAAIoC,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQ4d,GAAS5zR,MAAM27B,GAAO04O,aAAS,IAAImC,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQ4d,GAAS5zR,MAAMnD,GAAO8gG,aAAS,IAAI64K,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQ4d,GAAS5zR,MAAMmqD,IAAO2qN,kBAAc,IAAI0B,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQ4d,GAAS5zR,MAAM6rH,IAAOkpJ,kBAAc,IAAIyB,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQ4d,GAAS5zR,MAAM0vB,IAAOslP,iBAAa,IAAIwB,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2sJ,EAAQ4d,GAAS5zR,MAAMoiO,GAAO+xC,UAAM,IAAIqC,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO6kK,GAAYlY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAW6lR,cAAU,IAAIrP,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8kK,GAAgBnY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWkjR,mBAAe,IAAI1M,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKoB,GAAG,OAAO/M,WAAW8uR,GAAex9L,EAAEwsL,KAAS2J,wBAAoB,IAAItF,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqwL,EAAQh2Q,KAAKoB,GAAG,OAAO/M,WAAW8uR,GAAex9L,EAAEusL,KAASkR,wBAAoB,IAAI5M,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOg6J,GAAiBF,GAAenN,EAAQh2Q,KAAKoB,GAAG6wQ,KAASqR,uBAAmB,IAAI9M,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOg6J,GAAiBrN,EAAQh2Q,KAAKoB,IAAQ0kR,gBAAY,IAAItP,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOklK,GAAkBvY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAW+lR,gBAAY,IAAIvP,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOmlK,GAAkBxY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWgmR,iBAAa,IAAIxP,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOolK,GAAmBzY,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWimR,iBAAa,IAAIzP,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOqlK,GAAmB1Y,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAW6zR,iBAAa,IAAIrd,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEiuM,GAAS5zR,MAAMulD,EAAEwyN,EAAa,4BAA4Bt1N,EAAEuzN,EAAQrwL,EAAE7qF,GAAGmc,EAAE++P,EAAQrwL,EAAEjjF,GAAGi5B,EAAEq6O,EAAQrwL,EAAE3iD,GAAGnmC,EAAE,IAAI0oD,EAAE9C,EAAExrC,EAAE0kB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGwuB,GAAEm0N,GAAW77N,EAAExrC,EAAE0kB,EAAE,EAAE,EAAE,EAAE,EAAE,UAAUkwF,GAAE,IAAItmE,EAAE4E,GAAEtM,KAAKsM,GAAEvM,MAAMuM,GAAExM,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGjuB,GAAEsmP,EAAQh2Q,KAAKuhD,IAAG6gL,GAAE4zC,EAAQgD,GAActpP,GAAE7yB,EAAE,cAAcuE,GAAGiZ,GAAE27P,EAAQgD,GAActpP,GAAEm8F,GAAE,cAAczqH,GAAG,OAAOm/Q,GAAqBlsR,WAAWgmB,GAAE+nN,IAAGiwC,IAAQ6T,iBAAa,IAAI1P,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOslK,GAAmB3Y,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWmmR,kBAAc,IAAI3P,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOulK,GAAoB5Y,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWomR,iBAAa,IAAI5P,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwlK,GAAmB7Y,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWqmR,mBAAe,IAAI7P,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOylK,GAAqB9Y,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWsmR,iBAAa,IAAI9P,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO0lK,GAAmB/Y,EAAQh2Q,KAAKqa,IAAGu5Q,GAAS5zR,OAAWlN,aAAS,IAAI0jR,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOwpK,GAAmB7c,EAAQh2Q,KAAKuhD,IAAGy0N,EAAQh2Q,KAAKod,KAAQ02Q,wBAAoB,IAAItd,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO6vJ,GAAwBlD,EAAQh2Q,KAAKuhD,IAAGy0N,EAAQh2Q,KAAKod,KAAI4xQ,KAAK36R,EAAEsxF,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,IAAIosJ,GAASphR,GAAG,MAAM,IAAIg1H,UAAU,gCAAgC4lK,GAAyB56R,GAAG,MAAMkxD,EAAEw6N,GAAiBp6L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKqa,IAAG,IAAIjZ,EAAEy1Q,GAAep0N,EAAE,CAAC,MAAM,OAAO,cAAc,cAAc,SAAS,QAAQ,YAAY,aAAa,SAAS,SAASrhD,EAAE1N,KAAK,UAAU,IAAIujB,EAAE6/P,GAAsB92Q,KAAKoB,EAAE,CAAC,WAAW6V,EAAEi4Q,GAAoBzsO,EAAExrC,EAAE6/P,GAAsBziR,EAAE+M,EAAE,YAAY6V,EAAE6/P,GAAsB7/P,EAAE7V,EAAE,CAAC,WAAW,MAAMtG,GAAEy+Q,GAAyBh0N,GAAG7iD,GAAE82Q,GAAiBj0N,EAAE,UAAU,IAAI1H,KAAK7a,GAAE4a,MAAMjiB,GAAEgiB,IAAI9gD,GAAEu3Q,KAAKjqN,GAAEkqN,OAAOxoJ,GAAEluB,OAAOjuE,GAAEolP,YAAY1yC,GAAE2yC,YAAYviQ,GAAEwiQ,WAAW/wQ,IAAG8yQ,GAAgCt0N,EAAExrC,EAAEsuC,GAAG,MAAM6qE,GAAEknJ,GAA0BrgQ,EAAEnkB,QAAQsqB,GAAE44P,EAAQh2Q,KAAKuhD,IAAG,OAAO61N,GAA4BC,GAA2Br0O,GAAErH,GAAE9+B,GAAEstD,GAAE0hE,GAAEn8F,GAAE0yM,GAAE5vN,GAAEvO,GAAE,SAASmsH,GAAEhzG,GAAEtiB,GAAE4H,IAAE,GAAI0a,GAAEqlC,GAAGwtO,cAAc57R,GAAG,IAAImiR,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEq4L,GAAe3pR,GAAGkxD,EAAEywN,EAAQrwL,EAAE7qF,GAAG2nD,EAAEuzN,EAAQrwL,EAAEjjF,GAAGuU,EAAE++P,EAAQrwL,EAAE3iD,GAAG,IAAIxwB,EAAEwjQ,EAAQrwL,EAAEtrE,IAAG,MAAMpW,GAAE2vR,GAAS5zR,MAAMowH,GAAE4lJ,EAAQ/xQ,GAAE03B,GAAGve,GAAE44P,EAAQ/xQ,GAAEpH,GAAG40H,GAAEukJ,EAAQ/xQ,GAAEkmD,IAAG/I,GAAE40N,EAAQ/xQ,GAAE4nH,IAAGxqE,GAAE20N,EAAQ/xQ,GAAEyrB,IAAGrsB,GAAE2yQ,EAAQ/xQ,GAAEm+N,GAAG5vN,EAAE09Q,GAAqBla,EAAQh2Q,KAAKqa,IAAG7H,GAAG,MAAM29G,GAAE6lJ,EAAQh2Q,KAAKuhD,IAAG,OAAO61N,GAA4BpB,EAAQgD,GAAc7oJ,GAAE,IAAI4nJ,EAAa,4BAAjB,CAA8CxyN,EAAE9C,EAAExrC,EAAEm5G,GAAEhzG,GAAEq0G,GAAErwE,GAAEC,GAAEh+C,GAAEmP,GAAG,cAAcpR,GAAG+uH,GAAE39G,GAAGw9Q,cAAc37R,GAAG,IAAImiR,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEoyL,EAAa,wBAAwBxyN,OAAE,MAAW,IAAIogC,EAAEy5L,GAAe/qR,GAAGouD,EAAEmxO,GAAS5zR,MAAMiX,EAAE++P,EAAQvzN,EAAE3nD,GAAG0X,EAAEwjQ,EAAQvzN,EAAE//C,GAAGuB,GAAE+xQ,EAAQvzN,EAAEzf,GAAGotF,GAAE4lJ,EAAQh2Q,KAAKqa,IAAG+C,GAAE44P,EAAQzwN,EAAE5pB,GAAG81F,GAAEukJ,EAAQzwN,EAAE1oD,GAAGukD,GAAE40N,EAAQzwN,EAAE4E,IAAG9I,GAAE20N,EAAQzwN,EAAEsmE,IAAGxoH,GAAE2yQ,EAAQzwN,EAAE71B,IAAGygG,GAAE6lJ,EAAQzwN,EAAE68K,GAAGjH,GAAE66C,EAAQh2Q,KAAKuhD,IAAG,OAAO61N,GAA4BpB,EAAQgD,GAAc79C,GAAE,IAAI48C,EAAa,4BAAjB,CAA8C9gQ,EAAEzE,EAAEvO,GAAEmZ,GAAEq0G,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAEC,IAAG,cAAchvH,GAAG+5N,GAAE/qG,IAAG2jK,aAAa1/R,GAAG,IAAImiR,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEqxL,GAA4B3iR,GAAG,OAAO+iR,GAA4BpB,EAAQh2Q,KAAKoB,GAAGukF,EAAEqwL,EAAQh2Q,KAAKqa,KAAI80Q,aAAa96R,GAAG,IAAImiR,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAE0yL,GAA4BhkR,GAAG,OAAO+iR,GAA4BpB,EAAQh2Q,KAAKoB,GAAG40Q,EAAQh2Q,KAAKuhD,IAAGokC,GAAG3jF,IAAI3N,EAAEsxF,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2qK,GAAiD,MAAMh0R,KAAK3L,EAAEsxF,GAAG69L,SAASnvR,EAAEsxF,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO2qK,GAAiD,WAAWh0R,KAAK3L,EAAEsxF,GAAG89L,MAAMpvR,EAAEsxF,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO4qK,GAAgC,QAAQj0R,KAAK3L,EAAEsxF,GAAGg+L,MAAMtvR,EAAEsxF,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO4qK,GAAgC,QAAQj0R,KAAK3L,EAAEsxF,GAAG52E,MAAM42E,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,QAAG,MAAW,MAAM,IAAIA,UAAU,iCAAiC,MAAM9jE,EAAE,iBAAiBogC,EAAEi+L,GAAoB,eAAej+L,GAAGo6L,GAAiBp6L,GAAGljC,EAAEm8N,GAA4Br5N,GAAGtuC,EAAE4nQ,GAAuBt5N,EAAE,cAAc/yC,EAAEmsQ,GAAgBp5N,EAAE,eAAe,OAAOgxN,GAAG,CAAC,QAAQtyQ,EAAE,CAAC05C,IAAI,EAAEy2N,KAAK,GAAGC,OAAO,GAAG12K,OAAO,GAAGm3K,YAAY,IAAIC,YAAY,IAAIC,WAAW,KAAKxiQ,GAAGssQ,GAAkCr8N,EAAEx+C,EAAE,OAAO,MAAMmsH,GAAEwjK,GAAS5zR,MAAM,IAAIyxH,GAAEukJ,EAAQ5lJ,GAAEt1H,GAAGsmD,GAAE40N,EAAQ5lJ,GAAE1tH,GAAG2+C,GAAE20N,EAAQ5lJ,GAAEptF,GAAG3/B,GAAE2yQ,EAAQ5lJ,GAAEz0F,GAAGw0F,GAAE6lJ,EAAQ5lJ,GAAEvzH,GAAGs+N,GAAE66C,EAAQ5lJ,GAAEjmE,IAAGjzC,GAAE8+P,EAAQ5lJ,GAAEvE,IAAGmvG,GAAEg7C,EAAQ5lJ,GAAE1gG,IAAG6N,GAAEy4O,EAAQ5lJ,GAAEgyG,GAAG,MAAMmC,GAAEwzC,EAAa,4BAA4B7zF,GAAE8xF,EAAQh2Q,KAAKuhD,IAAGlD,GAAE23N,EAAQh2Q,KAAKqa,IAAGgsN,GAAE2yC,GAAc90F,GAAE,IAAIqgD,GAAEyxC,EAAQ5lJ,GAAEt1H,GAAGk7Q,EAAQ5lJ,GAAE1tH,GAAGszQ,EAAQ5lJ,GAAEptF,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,cAAcmjM,GAAEy3C,GAAiBv3C,GAAEniD,GAAE7lI,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGjU,GAAE/1C,WAAW8xO,GAAE9xO,SAAS2hR,EAAQ3vC,GAAEjlO,KAAK,GAAG/M,kBAAkB+1C,GAAEynO,IAAI,MAAM,IAAI1lJ,WAAW,gFAAgF,QAAEtuE,KAAK4zE,GAAE7zE,MAAMwD,GAAEzD,IAAI0D,GAAE+yN,KAAK/wQ,GAAEgxQ,OAAOlkJ,GAAExyB,OAAOw9H,GAAE25C,YAAY59P,GAAE69P,YAAY/5C,GAAEg6C,WAAWz3O,IAAGg+O,GAAiB9pJ,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,GAAEz9L,GAAEklB,EAAEjwC,EAAEyE,EAAE5iB,WAAW+1C,MAAYgtO,GAA4BC,GAA2B5lJ,GAAErwE,GAAEC,GAAEh+C,GAAE8sH,GAAEgrG,GAAEjkN,GAAE8jN,GAAEz9L,GAAE,SAAS27O,GAAwBh1F,GAAE8xF,EAAQh2Q,KAAKod,KAAI8mK,GAAE,aAAa,UAAS,GAAIA,GAAE8xF,EAAQh2Q,KAAKqa,KAAIuzE,OAAOjI,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAE+5N,GAAwB35L,GAAGljC,EAAEuzN,EAAQh2Q,KAAKoB,GAAG6V,EAAE++P,EAAQzwN,EAAEnkD,GAAG,QAAQ/M,QAAQA,SAASouD,GAAGpuD,SAAS4iB,OAAQsoQ,GAAevJ,EAAQh2Q,KAAKuhD,IAAGy0N,EAAQzwN,EAAEhE,MAAKguO,GAAevZ,EAAQh2Q,KAAKqa,IAAG27P,EAAQzwN,EAAElrC,KAAKzoB,SAASyC,GAAG,IAAImiR,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM1jC,EAAEo6L,GAAiB1rR,GAAGkxD,EAAEkqO,GAAqB9pM,GAAGljC,EAAEqhO,GAAyBn+L,GAAGvkF,EAAwC60Q,GAA+CtwL,EAAnC,SAAS,CAAC,OAAO,SAAS,QAAY1uE,EAAE4nQ,GAAuBl5L,EAAE,SAAS7qF,GAAE6jR,GAAgBh5L,EAAE,eAAe,YAAO,GAAQ,GAAG,YAAW,MAAM,IAAIwmC,WAAW,sDAAsD,MAAMzpH,GAA0CuzQ,GAAgEtwL,EAApD,eAAe,CAAC,OAAO,QAAQ,YAAY,SAAaywL,UAAUpzO,GAAErpC,KAAKgiC,GAAE06O,UAAUx5Q,IAAGknR,GAA+BjpR,GAAE2nD,GAAG,OAAOyxO,GAA8Bl0R,KAAKgjC,GAAEuiB,EAAE7iD,GAAEtB,EAAE,CAACzH,KAAKgiC,GAAE06O,UAAUx5Q,GAAEo+Q,aAAahkQ,IAAIitQ,eAAe7vR,EAAEsxF,GAAG,IAAI6wL,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAM9jE,EAAEw6N,GAAiBp6L,GAAGljC,EAAEkxO,GAAG,MAAM,GAAG1T,GAAmBx9N,EAAE8C,EAAE,CAAC,kBAAa,MAAW0uN,SAAS,MAAM,IAAI5qJ,UAAU,uEAAkE,IAAS5mE,EAAE5E,WAAM,MAAWD,YAAO,MAAWD,UAAK,MAAW+kO,cAAS,MAAWE,gBAAW,MAAWxO,WAAM,MAAWC,aAAQ,MAAW12K,aAAQ,MAAWolL,gBAAW,MAAWD,gBAAW,MAAWH,eAAelgO,EAAEkgO,aAAa,SAAS,IAAIvhR,EAAEo5Q,GAA6BxE,EAAQh2Q,KAAKuhD,KAAI,GAAGm6N,GAAuBt6Q,GAAG,MAAM,IAAI+qH,WAAW,4DAA4D/qH,EAAEk5Q,GAA+Bl5Q,GAAGqhD,EAAEwxN,SAAS7yQ,EAAE,MAAM6V,EAAE,IAAIurQ,GAAGnuR,EAAEouD,GAAG3nD,GAAEq/Q,GAAKuZ,GAAGz8Q,EAAE,IAAIu9P,SAAS9xQ,GAAEgyQ,GAA6BsB,EAAQh2Q,KAAKqa,KAAI,GAAG,gBAAe,gBAAevf,KAAI4H,GAAE,MAAM,IAAIypH,WAAY,6CAA4CzpH,8BAA6B5H,MAAK,OAAOmc,EAAEs8E,OAAOyiL,EAAQh2Q,KAAKod,KAAI6mQ,SAAS,IAAIzN,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO6qK,GAA8Bl0R,KAAK,QAAQo9F,UAAU,MAAM,IAAIisB,UAAU,+DAA+D8qK,aAAa,IAAI3d,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAEu/R,GAAS5zR,MAAM2lF,EAAEoyL,EAAa,4BAA4BxyN,EAAEywN,EAAQh2Q,KAAKqa,IAAGooC,EAAE,IAAIkjC,EAAEqwL,EAAQ3hR,EAAEyG,GAAGk7Q,EAAQ3hR,EAAEqO,GAAGszQ,EAAQ3hR,EAAE2uC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEuiB,GAAGtuC,EAAE++P,EAAQh2Q,KAAKuhD,IAAG,OAAO61N,GAA4BpB,EAAQgD,GAAc/hQ,EAAEwrC,EAAE,cAAcrhD,GAAG6V,EAAEsuC,GAAG6uO,YAAY,IAAI5d,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO,IAAI0uJ,EAAa,sBAAjB,CAAwC/B,EAAQh2Q,KAAKoB,IAAImvR,cAAc,IAAI/Z,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOstJ,GAAuBid,GAAS5zR,OAAOwwR,cAAc,IAAIha,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOonK,GAAuBmD,GAAS5zR,OAAO0vR,kBAAkB,IAAIlZ,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOuqK,GAAS5zR,MAAM4vR,mBAAmB,IAAIpZ,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAE2hR,EAAQh2Q,KAAKqa,IAAG,OAAOy+P,GAA4BzkR,EAAEyiR,GAAsB92Q,KAAK62Q,GAAexiR,EAAE,CAAC,YAAY,SAAS,KAAKw7R,kBAAkB,IAAIrZ,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAE2hR,EAAQh2Q,KAAKqa,IAAG,OAAOk+P,GAA2BlkR,EAAEyiR,GAAsB92Q,KAAK62Q,GAAexiR,EAAE,CAAC,MAAM,cAAc,KAAKy7R,eAAe,IAAItZ,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,MAAMh1H,EAAEu/R,GAAS5zR,MAAM2lF,EAAEqwL,EAAQh2Q,KAAKuhD,IAAG,MAAM,CAACizN,SAASwB,EAAQh2Q,KAAKqa,IAAGotQ,OAAOzR,EAAQ3hR,EAAE2uC,GAAG0tP,QAAQ1a,EAAQ3hR,EAAEsnC,GAAGg1P,eAAe3a,EAAQ3hR,EAAEq7B,IAAGkhQ,eAAe5a,EAAQ3hR,EAAEw3H,IAAGglK,UAAU7a,EAAQ3hR,EAAEwI,GAAG2qR,SAASxR,EAAQ3hR,EAAEqO,GAAGouR,cAAc9a,EAAQ3hR,EAAE+tO,GAAG2uD,UAAU/a,EAAQ3hR,EAAE81D,IAAGo9N,QAAQvR,EAAQ3hR,EAAEyG,GAAGhI,OAAO+/R,GAAmBltM,EAAEqwL,EAAQh2Q,KAAKod,KAAI62P,SAAStuL,GAAGoqM,cAAc,IAAIvZ,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAOk9J,GAAyBvQ,EAAQh2Q,KAAKqa,KAAIg6Q,cAAc,IAAI7d,GAAwBx2Q,MAAM,MAAM,IAAIqpH,UAAU,oBAAoB,OAAO8pK,GAAyBnd,EAAQh2Q,KAAKuhD,iBAAgBltD,EAAEsxF,GAAG,MAAMpgC,EAAEw6N,GAAiBp6L,GAAG,OAAO6wL,GAAwBniR,IAAIklR,GAAyBh0N,GAAGi0N,GAAiBj0N,EAAE,UAAUiyN,GAAmBjyN,GAAG6xN,GAA4BpB,EAAQ3hR,EAAE+M,GAAG40Q,EAAQ3hR,EAAEktD,IAAGy0N,EAAQ3hR,EAAEgmB,MAAKilQ,GAAwBjrR,EAAEkxD,kBAAkBogC,EAAEpgC,GAAG,MAAM9C,EAAE68N,GAAwB35L,GAAG1uE,EAAEqoQ,GAAwB/5N,GAAGzqD,EAAEk7Q,EAAQvzN,EAAErhD,GAAGsB,EAAEszQ,EAAQ/+P,EAAE7V,GAAG,OAAO/M,WAAWA,SAASyG,GAAGzG,SAASqO,KAAI,EAAGrO,cAAcA,SAASyG,GAAGzG,SAASqO,IAAI,EAAE,GAAG,YAAkBrO,GAAG,OAAOojR,GAAoBzB,EAAQ3hR,EAAEktD,IAAGy0N,EAAQ3hR,EAAE+oB,IAAG44P,EAAQ3hR,EAAEgmB,KAAIgqQ,EAAmBiQ,GAAc,0BAA0B,IAAIC,EAAGthS,OAAO4+G,OAAO,CAACuX,UAAU,KAAKu9J,YAASsK,YAASpN,WAAQ2Q,IAAIxC,GAAG5C,aAAUe,iBAAcwB,iBAAcY,aAAUkB,kBAAeL,YAASkB,mBAAgB,aAA6B,MAAM3uM,EAAEtxF,WAAWA,UAAU2L,MAAMkyQ,IAAI,OAAO,IAAI2R,GAAQl+L,GAAG,MAAM8uM,EAAG,CAAC5Q,GAAQ8C,GAASyI,GAAUe,GAAcc,GAASU,GAAcY,GAAUa,GAASK,GAAea,IAAe,UAAUjgS,KAAKogS,EAAG,CAAC,MAAM9uM,EAAE1yF,OAAO0+P,yBAAyBt9P,EAAE,cAAcsxF,EAAEm1B,cAAcn1B,EAAEk1B,YAAYl1B,EAAE4lC,YAAY5lC,EAAEm1B,cAAa,EAAGn1B,EAAEk1B,YAAW,EAAGl1B,EAAE4lC,UAAS,EAAGt4H,OAAO0nH,eAAetmH,EAAE,YAAYsxF,wHCCr4yM+7C,EAAczuI,OAAOw3F,UAgBzB,SAPA,WAAqBt1F,IACnB,IAAIu/R,GAAOv/R,IAASA,GAAM2K,YAG1B,OAAO3K,MAFqB,mBAARu/R,IAAsBA,GAAKjqM,WAAci3C,EAE5C+nE,ECAnBtoJ,EANA,WAAiBq5M,GAAMjlO,IACrB,OAAO,SAAS+oI,GACd,OAAOk8F,GAAKjlO,GAAU+oI,MCL1B/8G,EAFiBozO,EAAQ1hS,OAAOC,KAAMD,QCCtC,IAGI6G,EAHc7G,OAAOw3F,UAGQ3wF,eAsBjC,MC1BAukD,EAFkC,iBAAV+uC,QAAsBA,QAAUA,OAAOn6F,SAAWA,QAAUm6F,OCEpF,IAAIwnM,GAA0B,iBAAR/gO,MAAoBA,MAAQA,KAAK5gE,SAAWA,QAAU4gE,KAK5E,SAFWghO,GAAcD,IAAYzgM,SAAS,cAATA,GCDrC9pD,GAFansB,UCAb,IAAIwjH,GAAczuI,OAAOw3F,UAGrB3wF,EAAiB4nI,GAAY5nI,eAO7Bg7R,EAAuBpzJ,GAAY9vI,SAGnCmjS,GAAiBzpK,GAASA,oBAAqB12H,ECfnD,IAOIkgS,GAPc7hS,OAAOw3F,UAOc74F,SCHvC,IAIImjS,GAAiBzpK,GAASA,oBAAqB12H,EAkBnD,SATA,YAAoBO,IAClB,OAAa,MAATA,QACeP,IAAVO,GAdQ,qBADL,gBAiBJ4/R,IAAkBA,MAAkB9hS,OAAOkC,IFGrD,YAAmBA,IACjB,IAAI6/R,GAAQl7R,EAAejI,KAAKsD,GAAO4/R,IACnCl7B,EAAM1kQ,GAAM4/R,IAEhB,IACE5/R,GAAM4/R,SAAkBngS,EACxB,IAAIqgS,IAAW,CACf,CADe,MACR5gS,IAAP,CAEF,IAAIkD,GAASu9R,EAAqBjjS,KAAKsD,IACvC,OAAI8/R,KACED,GACF7/R,GAAM4/R,IAAkBl7B,SAEjB1kQ,GAAM4/R,KAGVx9R,GEnBH29R,CAAU//R,IDNhB,YAAwBA,IACtB,OAAO2/R,GAAqBjjS,KAAKsD,ICM7BggS,CAAehgS,KCMrBimC,GALA,YAAkBjmC,IAChB,IAAI+H,UAAc/H,GAClB,OAAgB,MAATA,KAA0B,UAAR+H,IAA4B,YAARA,GAAQ,ECSvDqgC,EAVA,YAAoBpoC,IAClB,IAAKyM,GAASzM,IACZ,OAAO,EAIT,IAAI0kQ,GAAMu7B,GAAWjgS,IACrB,MA5BY,qBA4BL0kQ,IA3BI,8BA2BcA,IA7BZ,0BA6B6BA,IA1B7B,kBA0BgDA,EAAOw7B,EC9BtE,ICCMC,GDDFC,GAAar3Q,yBCAbs3Q,IACEF,GAAM,SAASx5R,KDCNy5R,OCDyBA,MDCzBA,GCD4CA,eAA4B,KACvE,iBAAmBD,GAAO,GCJ1C,IAGIG,GAHYthM,SAAS1J,UAGI74F,SAqB7B,SAZA,YAAkB4oQ,IAChB,GAAY,MAARA,GAAc,CAChB,IACE,OAAOi7B,GAAa5jS,KAAK2oQ,GACzB,CADyBA,MAClBnmQ,IAAP,CACF,IACE,OAAQmmQ,GAAO,EACf,CADe,MACRnmQ,IAAP,EAEJ,MAAO,ICbT,IAGIqhS,GAAe,8BAafC,GAAa/5R,OAAO,IAVRu4F,SAAS1J,UAII74F,SAOdC,KAVGoB,OAAOw3F,UAMQ3wF,gBAIGoC,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhF,SARA,YAAsB/G,IACpB,SAAKyM,GAASzM,KFxBhB,YAAkBqlQ,IAChB,QAASg7B,IAAeA,MAAch7B,GEuBdo7B,CAASzgS,OAGnB+2F,EAAW/2F,IAASwgS,GAAaD,IAChC7uM,KAAKgvM,GAAS1gS,MC3B/B2gS,GALA,YAAmBr9K,GAAQxjH,IACzB,IAAIE,ECJN,YAAkBsjH,GAAQxjH,IACxB,OAAiB,MAAVwjH,QAAiB7jH,EAAY6jH,GAAOxjH,IDG/Bk9H,CAAS1Z,GAAQxjH,IAC7B,OAAO8gS,GAAa5gS,GAASA,OAAQP,GEPvCohS,GAFe1wL,GAAUpnF,GAAM,YCE/B+3Q,GAFU3wL,GAAUpnF,GAAM,OCE1Bg4Q,GAFc5wL,GAAUpnF,GAAM,WCE9Bi4Q,GAFU7wL,GAAUpnF,GAAM,OCE1B4iC,GAFcwkD,GAAUpnF,GAAM,WCK9B,IAAIk4Q,GAAS,eAETC,GAAa,mBACbC,GAAS,eACTC,GAAa,mBAEbC,GAAc,oBAGdC,GAAqBZ,GAASa,IAC9BC,GAAgBd,GAASzgS,IACzBwhS,GAAoBf,GAASj5Q,IAC7Bi6Q,GAAgBhB,GAAS72R,IACzB83R,GAAoBjB,GAASvwQ,IAS7ByxQ,GAAS3B,IAGRsB,IAAYK,GAAO,IAAIL,GAAS,IAAI7kK,YAAY,MAAQ2kK,IACxDphS,IAAO2hS,GAAO,IAAI3hS,KAAQghS,IAC1Bx5Q,IAAWm6Q,GAAOn6Q,eAAsBy5Q,IACxCr3R,IAAO+3R,GAAO,IAAI/3R,KAAQs3R,IAC1BhxQ,IAAWyxQ,GAAO,IAAIzxQ,KAAYixQ,MACrCQ,GAAS,SAAS5hS,IAChB,IAAIoC,GAAS69R,GAAWjgS,IACpBu/R,EA/BQ,mBA+BDn9R,GAAsBpC,GAAM2K,iBAAclL,EACjDoiS,GAAatC,EAAOmB,GAASnB,GAAQ,GAEzC,GAAIsC,GACF,OAAQA,SACDP,GAAoB,OAAOD,QAC3BG,GAAe,OAAOP,QACtBQ,GAAmB,OAAOP,QAC1BQ,GAAe,OAAOP,QACtBQ,GAAmB,OAAOP,GAGnC,OAAOh/R,KAIX,SAAew/R,GC7BfE,GAJA,YAAsB9hS,IACpB,OAAgB,MAATA,IAAiC,iBAATA,EAAS,ECR1C+hS,GAJA,YAAyB/hS,IACvB,OAAOgiS,GAAahiS,KAVR,sBAUkBigS,GAAWjgS,GAAUiiS,ECVrD,IAAI11J,GAAczuI,OAAOw3F,UAGrB3wF,GAAiB4nI,GAAY5nI,eAG7BilO,GAAuBr9F,GAAYq9F,qBAoBnCs4D,GAAcC,GAAgB,WAAa,OAAO/sM,UAApB,IAAsC+sM,GAAkB,SAASniS,IACjG,OAAOgiS,GAAahiS,KAAU2E,GAAejI,KAAKsD,GAAO,YACtD4pO,GAAqBltO,KAAKsD,GAAO,WAGtC,SAAekiS,GCVfE,GAFc1gS,MAAM4E,QCWpB+7R,GALA,YAAkBriS,IAChB,MAAuB,iBAATA,IACZA,IAAQ,GAAMA,GAAQ,GAAK,GAAKA,IA9Bb,gBA8BsBq8Q,ECC7CimB,GAJA,YAAqBtiS,IACnB,OAAgB,MAATA,IAAiBuiS,GAASviS,GAAMpD,UAAYm6F,EAAW/2F,KCzBhE,IAAIwiS,GAAgC,iBAAXxsK,SAAuBA,UAAYA,QAAQntH,UAAYmtH,QAG5EysK,GAAaD,IAAgC,iBAAVzsK,QAAsBA,SAAWA,OAAOltH,UAAYktH,OAMvF2sK,GAHgBD,IAAcA,GAAWzsK,UAAYwsK,GAG5Bz5Q,eAActpB,EAwB3C,UArBqBijS,GAASA,GAAOC,cAAWljS,ICHhD,cACE,OAAO,GCTT,IA2BImjS,GAAiB,GACrBA,GAZiB,yBAYYA,GAXZ,yBAYjBA,GAXc,sBAWYA,GAVX,uBAWfA,GAVe,uBAUYA,GATZ,uBAUfA,GATsB,8BASYA,GARlB,wBAShBA,GARgB,yBAQY,EAC5BA,GAjCc,sBAiCYA,GAhCX,kBAiCfA,GApBqB,wBAoBYA,GAhCnB,oBAiCdA,GApBkB,qBAoBYA,GAhChB,iBAiCdA,GAhCe,kBAgCYA,GA/Bb,qBAgCdA,GA/Ba,gBA+BYA,GA9BT,mBA+BhBA,GA9BgB,mBA8BYA,GA7BZ,mBA8BhBA,GA7Ba,gBA6BYA,GA5BT,mBA6BhBA,GA5BiB,qBA4BY,EAc7B,MC9CAC,GANA,YAAmBx9B,IACjB,OAAO,SAASrlQ,IACd,OAAOqlQ,GAAKrlQ,MCNhB,IAAIwiS,GAAgC,iBAAXxsK,SAAuBA,UAAYA,QAAQntH,UAAYmtH,QAG5EysK,GAAaD,IAAgC,iBAAVzsK,QAAsBA,SAAWA,OAAOltH,UAAYktH,OAMvF+sK,GAHgBL,IAAcA,GAAWzsK,UAAYwsK,IAGtB9C,UAiBnC,SAdgB,WACd,IAIE,OAFY+C,IAAcA,GAAWM,SAAWN,GAAWM,QAAQ,QAAQ17L,OAOpEy7L,IAAeA,GAAYh9F,SAAWg9F,GAAYh9F,QAAQ,OACjE,CADiE,MAC1D5mM,IAAP,EAXY,GCVhB,IAAI8jS,GAAmBC,IAAYA,gBAqBnC,SAFmBD,GAAmBE,GAAUF,IH8BhD,YAA0BhjS,IACxB,OAAOgiS,GAAahiS,KAClBuiS,GAASviS,GAAMpD,WAAagmS,GAAe3C,GAAWjgS,MI9C1D,IAOI2E,GAHc7G,OAAOw3F,UAGQ3wF,eA2DjC,SAxBA,YAAiB3E,IACf,GAAa,MAATA,GACF,OAAO,EAET,GAAIkkI,GAAYlkI,MACXsG,GAAQtG,KAA0B,iBAATA,IAA4C,mBAAhBA,GAAMmF,QAC1Dw9R,GAAS3iS,KAAUmjS,GAAanjS,KAAUkiS,GAAYliS,KAC1D,OAAQA,GAAMpD,OAEhB,IAAI8nQ,GAAMk9B,GAAO5hS,IACjB,GApDW,gBAoDP0kQ,IAnDO,gBAmDUA,GACnB,OAAQ1kQ,GAAMoL,KAEhB,GAAIg4R,GAAYpjS,IACd,OjClDJ,WAAkBsjH,IAChB,IAAK8/K,GAAY9/K,IACf,OAAO+/K,EAAW//K,IAEpB,IAAIlhH,GAAS,GACb,QAAStC,KAAOhC,OAAOwlH,IACjB3+G,EAAejI,KAAK4mH,GAAQxjH,IAAe,eAAPA,GACtCsC,GAAO7D,KAAKuB,GAGhB,OAAOsC,GiCwCGkhS,CAAStjS,IAAOpD,OAE1B,QAASkD,KAAOE,GACd,GAAI2E,GAAejI,KAAKsD,GAAOF,GAC7B,OAAO,EAGX,OAAO,GC7CTyjS,GALA,YAAkBvjS,IAChB,MAAuB,iBAATA,IACXgiS,GAAahiS,KArBF,mBAqBYigS,GAAWjgS,GAAUwjS,ECnBjD,IAGIC,GAActtK,GAASA,kBAAmB12H,EAC1CikS,GAAiBD,GAAcA,GAAYhnS,cAAWgD,EA0B1D,SAhBA,YAAsBO,IAEpB,GAAoB,iBAATA,GACT,OAAOA,GAET,GAAIsG,GAAQtG,IAEV,OClBJ,YAAkBu5F,GAAOoqM,IAKvB,QAJIhlR,GAAQ,EACR/hB,GAAkB,MAAT28F,GAAgB,EAAIA,GAAM38F,OACnCwF,GAASV,MAAM9E,MAEV+hB,EAAQ/hB,IACfwF,GAAOuc,GAASglR,GAASpqM,GAAM56E,GAAQA,EAAO46E,IAEhD,OAAOn3F,GDUEwhS,CAAS5jS,GAAO6jS,IAAgB,GAEzC,GAAIC,GAAS9jS,IACX,OAAO0jS,GAAiBA,GAAehnS,KAAKsD,IAAS,GAEvD,IAAIoC,GAAUpC,GAAQ,GACtB,MAAkB,KAAVoC,IAAkB,EAAIpC,KA3BjB,IA2BwC,KAAOoC,IEN9D2hS,GAJA,YAAkB/jS,IAChB,OAAgB,MAATA,GAAgB,GAAK6jS,GAAa7jS,KCP3CgkS,GANA,YAAmBzqM,GAAOrpE,GAAO+E,GAC/B,IAAIr4B,GAAS28F,GAAM38F,OACnBq4B,cAAcx1B,IAARw1B,EAAoBr4B,GAASq4B,GAC1B/E,IAAS+E,GAAOr4B,GAAU28F,GCLrC,YAAmBA,GAAOrpE,GAAO+E,GAC/B,IAAItW,IAAQ,EACR/hB,GAAS28F,GAAM38F,OAEfszB,GAAQ,IACVA,IAASA,GAAQtzB,GAAS,EAAKA,GAASszB,KAE1C+E,EAAMA,EAAMr4B,GAASA,GAASq4B,GACpB,IACRA,GAAOr4B,IAETA,GAASszB,GAAQ+E,EAAM,EAAMA,EAAM/E,KAAW,EAC9CA,MAAW,EAGX,QADI9tB,GAASV,MAAM9E,MACV+hB,GAAQ/hB,IACfwF,GAAOuc,IAAS46E,GAAM56E,GAAQuR,IAEhC,OAAO9tB,GDboC6hS,CAAU1qM,GAAOrpE,GAAO+E,IEbrE,IAWIivQ,GAAez9R,OAAO,uFAa1B,SAJA,YAAoBmhG,IAClB,OAAOs8L,GAAaxyM,KAAKkW,KCrB3B,IAAIu8L,GAAgB,kBAQhBC,GAAW,IAAMD,GAAgB,IACjCE,GAAU,kDACVC,GAAS,2BAETC,GAAc,KAAOJ,GAAgB,IACrCK,GAAa,kCACbC,GAAa,qCAIbC,GAPa,MAAQL,GAAU,IAAMC,GAO1BK,KACXC,GAAW,oBAEXC,GAAQD,GAAWF,GADP,gBAAwB,CAACH,GAAaC,GAAYC,IAAYp4O,KAAK,KAAO,IAAMu4O,GAAWF,GAAW,KAElHI,GAAW,MAAQ,CAACP,GAAcF,GAAU,IAAKA,GAASG,GAAYC,GAAYL,IAAU/3O,KAAK,KAAO,IAGxG04O,GAAYt+R,OAAO69R,GAAS,MAAQA,GAAS,KAAOQ,GAAWD,GAAO,KAa1E,MCtBAvnB,GANA,YAAuB11K,IACrB,OAAOo9L,GAAWp9L,IDuBpB,YAAwBA,IACtB,OAAOA,GAAOvjG,MAAM0gS,KAAc,GCvB9BE,CAAer9L,ICNrB,YAAsBA,IACpB,OAAOA,GAAO1+F,MAAM,IDMhBg8R,CAAat9L,KEKnB,IAAIu9L,GCPJ,YAAyB//J,IACvB,OAAO,SAASx9B,IACdA,GAASnrG,GAASmrG,IAElB,IAAIw9L,EAAaJ,GAAWp9L,IACxBy9L,GAAcz9L,SACdnoG,EAEA6lS,GAAMF,EACNA,EAAW,GACXx9L,GAAOrlG,OAAO,GAEdgjS,GAAWH,EACXI,GAAUJ,EAAY,GAAG/4O,KAAK,IAC9Bu7C,GAAO3wF,MAAM,GAEjB,OAAOquR,GAAIlgK,MAAgBmgK,IDTdE,CAAgB,eAEjC,SAAeN,GECfO,GAJA,YAAoB99L,IAClB,OAAOu9L,GAAW1oS,GAASmrG,IAAQjgG,gBCmDrCg+R,GC/DA,YAAwBriL,IACtB,OAAO,SAASxjH,IACd,OAAiB,MAAVwjH,QAAiB7jH,EAAY6jH,GAAOxjH,KD2D5B8lS,CAjEG,CAEpB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IACnC,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAER,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,KAAM,OAAU,KAC1B,OAAU,KAAM,OAAU,KAC1B,OAAU,KAAM,OAAU,MErD5B,IAAIC,GAAU,8CAeVC,GAAcr/R,OANJ,kDAMoB,KClBlC,IAAIs/R,GAAc,4CCAlB,IAAIC,GAAmB,qECAvB,IAAI7B,GAAgB,kBAKhB8B,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BAEfC,GAAeC,8OAIfC,EAAU,IAAMF,GAAe,IAE/BG,GAAW,OACXC,GAAY,IAAMP,GAAiB,IACnCQ,EAAU,IAAMP,GAAe,IAC/BQ,GAAS,KAAOvC,GAAgBiC,GAAeG,GAAWN,GAAiBC,GAAeC,GAAe,IAIzG3B,GAAa,kCACbC,GAAa,qCACbkC,GAAU,IAAMR,GAAe,IAI/BS,GAAc,MAAQH,EAAU,IAAMC,GAAS,IAC/CG,EAAc,MAAQF,GAAU,IAAMD,GAAS,IAC/CI,EAAkB,qCAClBC,EAAkB,qCAClBrC,EAAWC,gFACXC,GAAW,oBAIXC,GAAQD,GAAWF,EAHP,gBAAwB,CAbtB,KAAOP,GAAgB,IAaaK,GAAYC,IAAYp4O,KAAK,KAAO,IAAMu4O,GAAWF,EAAW,KAIlHsC,GAAU,MAAQ,CAACR,GAAWhC,GAAYC,IAAYp4O,KAAK,KAAO,IAAMw4O,GAGxEoC,GAAgBxgS,OAAO,CACzBkgS,GAAU,IAAMF,EAAU,IAAMK,EAAkB,MAAQ,CAACR,EAASK,GAAS,KAAKt6O,KAAK,KAAO,IAC9Fw6O,EAAc,IAAME,EAAkB,MAAQ,CAACT,EAASK,GAAUC,GAAa,KAAKv6O,KAAK,KAAO,IAChGs6O,GAAU,IAAMC,GAAc,IAAME,EACpCH,GAAU,IAAMI,EATD,mDADA,mDAafR,GACAS,IACA36O,KAAK,KAAM,KAab,MClCA66O,GAVA,YAAet/L,GAAQpW,GAASq3J,GAI9B,OAHAjhJ,GAASnrG,GAASmrG,SAGFnoG,KAFhB+xF,GAAUq3J,OAAQppP,EAAY+xF,IFhBhC,YAAwBoW,IACtB,OAAOo+L,GAAiBt0M,KAAKkW,IEkBpBu/L,CAAev/L,IDmC1B,YAAsBA,IACpB,OAAOA,GAAOvjG,MAAM4iS,KAAkB,GCpCJG,CAAax/L,IHnBjD,YAAoBA,IAClB,OAAOA,GAAOvjG,MAAM0hS,KAAgB,GGkBqBsB,CAAWz/L,IAE7DA,GAAOvjG,MAAMmtF,KAAY,IC1BlC,IAGI81M,GAAS7gS,OAHA,YAGe,KCexB8gS,GDNJ,YAA0B1oS,IACxB,OAAO,SAAS+oG,IACd,OEPJ,YAAqBrO,GAAOoqM,GAAUv3M,EAAao7M,IACjD,IAAI7oR,IAAQ,EACR/hB,GAAkB,MAAT28F,GAAgB,EAAIA,GAAM38F,OAKvC,IAHI4qS,IAAa5qS,KACfwvF,EAAcmN,KAAQ56E,OAEfA,GAAQ/hB,IACfwvF,EAAcu3M,GAASv3M,EAAamN,GAAM56E,IAAQA,GAAO46E,IAE3D,OAAOnN,EFHEq7M,CAAYC,GLoBvB,YAAgB9/L,IACdA,UAASnrG,GAASmrG,MACDA,GAAO7gG,QAAQ8+R,GAAS8B,IAAc5gS,QAAQ++R,GAAa,IKtBjD8B,CAAOhgM,IAAQ7gG,QAAQugS,GAAQ,KAAMzoS,GAAU,KCI5DgpS,CAAiB,SAASzlS,GAAQ0lS,GAAMnpR,GACtDmpR,UAAOA,GAAKngS,cACLvF,IAAUuc,EAAQopR,GAAWD,IAAQA,MAG9C,SAAeP,GECf1rB,GALA,YAAkB77Q,IAChB,MAAuB,iBAATA,KACVsG,GAAQtG,KAAUgiS,GAAahiS,KArBrB,mBAqB+BigS,GAAWjgS,GAAUgoS,ECFpEzpB,GAJA,YAAev+Q,IACb,OAAgB,MAATA,EAAS,EChBlBsmC,GAFmBk5P,EAAQ1hS,OAAOu4H,eAAgBv4H,QCElD,IAOIwiS,GAJYthM,SAAS1J,UAII74F,SAGzBkI,GANc7G,OAAOw3F,UAMQ3wF,eAG7BsjS,GAAmB3H,GAAa5jS,KAAKoB,QA2CzC,SAbA,YAAuBkC,IACrB,IAAKgiS,GAAahiS,KA5CJ,mBA4CcigS,GAAWjgS,IACrC,OAAO,EAET,IAAIs0M,GAAQ4zF,GAAaloS,IACzB,GAAc,OAAVs0M,GACF,OAAO,EAET,IAAIirF,EAAO56R,GAAejI,KAAK43M,GAAO,gBAAkBA,GAAM3pM,YAC9D,MAAsB,mBAAR40R,GAAsBA,aAAgBA,GAClDe,GAAa5jS,KAAK6iS,IAAS0I,ICtB/BE,GAJA,YAAYnoS,GAAOmoJ,IACjB,OAAOnoJ,KAAUmoJ,IAAUnoJ,IAAUA,IAASmoJ,IAAUA,IChC1D,IAGIigJ,GAAW,mBAoBf,MCKAC,GAdA,YAAwBroS,GAAO2e,GAAO2kG,GACpC,IAAK72G,GAAS62G,GACZ,OAAO,EAET,IAAIv7G,UAAc4W,GAClB,SAAY,UAAR5W,GACKm8H,GAAY5gB,IDPvB,YAAiBtjH,GAAOpD,IACtB,IAAImL,SAAc/H,GAClBpD,YAAmB,MAAVA,GAfY,iBAewBA,MAGlC,UAARmL,GACU,UAARA,GAAoBqgS,GAAS12M,KAAK1xF,MAChCA,IAAQ,GAAMA,GAAQ,GAAK,GAAKA,GAAQpD,GCAf0rS,CAAQ3pR,GAAO2kG,EAAO1mH,QACrC,UAARmL,IAAoB4W,MAAS2kG,IAE7BilL,GAAGjlL,EAAO3kG,IAAQ3e,GAEpB,ECrBT,IAAIwoS,GAAevF,IAAYA,YAqB/B,SAFeuF,GAAetF,GAAUsF,ICXxC,YAAsBxoS,IACpB,OAAOgiS,GAAahiS,KAVN,mBAUgBigS,GAAWjgS,GAAUyoS,ECVrD,IAAIC,GAAe,mDACfC,GAAgB,QAuBpB,MCvBAC,GAFmBz4L,GAAUryG,OAAQ,UCArC,IAMI6G,GAHc7G,OAAOw3F,UAGQ3wF,eCNjC,IAGIA,GAHc7G,OAAOw3F,UAGQ3wF,eCOjC,YAAculL,IACZ,IAAIvrK,IAAQ,EACR/hB,EAAoB,MAAXstL,GAAkB,EAAIA,GAAQttL,OAG3C,IADAiO,KAAKoH,UACI0M,GAAQ/hB,GAAQ,CACvB,IAAIwgB,GAAQ8sK,GAAQvrK,IACpB9T,KAAK1K,IAAIid,GAAM,GAAIA,GAAM,KAK7ByrR,GAAKvzM,UAAUrjF,MChBf,cACEpH,KAAKi+R,SAAWC,GAAeA,GAAa,MAAQ,GACpDl+R,KAAKO,KAAO,GDedy9R,GAAKvzM,UAAUxyE,OEhBf,YAAoBhjB,IAClB,IAAIsC,GAASyI,KAAKX,IAAIpK,YAAe+K,KAAKi+R,SAAShpS,IACnD,YAAKsL,MAAQhJ,GAAS,EAAI,EACnBA,IFcTymS,GAAKvzM,UAAUp1F,IFPf,YAAiBJ,IACf,IAAIH,GAAOkL,KAAKi+R,SAChB,GAAIC,GAAc,CAChB,IAAI3mS,EAASzC,GAAKG,IAClB,MArBiB,8BAqBVsC,OAA4B3C,EAAY2C,EAEjD,OAAOuC,GAAejI,KAAKiD,GAAMG,IAAOH,GAAKG,SAAOL,GEEtDopS,GAAKvzM,UAAUprF,IDXf,YAAiBpK,IACf,IAAIH,GAAOkL,KAAKi+R,SAChB,OAAOC,QAA8BtpS,IAAdE,GAAKG,IAAsB6E,GAAejI,KAAKiD,GAAMG,KCU9E+oS,GAAKvzM,UAAUn1F,IGdf,YAAiBL,GAAKE,IACpB,IAAIL,EAAOkL,KAAKi+R,SAChB,YAAK19R,MAAQP,KAAKX,IAAIpK,IAAO,EAAI,EACjCH,EAAKG,IAAQipS,SAA0BtpS,IAAVO,GAfV,4BAekDA,GAC9D6K,MHYT,SAAeg+R,GIXfG,GAVA,YAAsBzvM,GAAOz5F,IAE3B,QADIlD,EAAS28F,GAAM38F,OACZA,KACL,GAAI2rS,GAAGhvM,GAAM38F,GAAQ,GAAIkD,IACvB,OAAOlD,EAGX,OAAO,GCdT,IAGIuI,GAHazD,MAAM4zF,UAGCnwF,OCOxB,YAAmB+kL,IACjB,IAAIvrK,IAAQ,EACR/hB,EAAoB,MAAXstL,GAAkB,EAAIA,GAAQttL,OAG3C,IADAiO,KAAKoH,UACI0M,GAAQ/hB,GAAQ,CACvB,IAAIwgB,GAAQ8sK,GAAQvrK,IACpB9T,KAAK1K,IAAIid,GAAM,GAAIA,GAAM,KAK7B6rR,GAAU3zM,UAAUrjF,MClBpB,cACEpH,KAAKi+R,SAAW,GAChBj+R,KAAKO,KAAO,GDiBd69R,GAAU3zM,UAAUxyE,ODTpB,YAAyBhjB,IACvB,IAAIH,GAAOkL,KAAKi+R,SACZnqR,EAAQuqR,GAAavpS,GAAMG,IAE/B,QAAI6e,EAAQ,IAIRA,GADYhf,GAAK/C,OAAS,EAE5B+C,GAAK0/D,MAELl6D,GAAOzI,KAAKiD,GAAMgf,EAAO,KAEzB9T,KAAKO,KACA,KCJT69R,GAAU3zM,UAAUp1F,IEhBpB,YAAsBJ,IACpB,IAAIH,GAAOkL,KAAKi+R,SACZnqR,EAAQuqR,GAAavpS,GAAMG,IAE/B,OAAO6e,EAAQ,OAAIlf,EAAYE,GAAKgf,GAAO,IFa7CsqR,GAAU3zM,UAAUprF,IGjBpB,YAAsBpK,IACpB,OAAOopS,GAAar+R,KAAKi+R,SAAUhpS,KAAO,GHiB5CmpS,GAAU3zM,UAAUn1F,IIjBpB,YAAsBL,GAAKE,IACzB,IAAIL,EAAOkL,KAAKi+R,SACZnqR,GAAQuqR,GAAavpS,EAAMG,IAE/B,OAAI6e,GAAQ,KACR9T,KAAKO,KACPzL,EAAKpB,KAAK,CAACuB,GAAKE,MAEhBL,EAAKgf,IAAO,GAAK3e,GAEZ6K,MJST,SAAeo+R,GKdfx0D,GAPA,YAAoB50O,GAAKC,IACvB,IAAIH,EAAOE,GAAIipS,SACf,OCLF,WAAmB9oS,IACjB,IAAI+H,UAAc/H,GAClB,MAAgB,UAAR+H,IAA4B,UAARA,IAA4B,UAARA,IAA4B,WAARA,GACrD,cAAV/H,GACU,OAAVA,EAAU,CDCRmpS,CAAUrpS,IACbH,EAAmB,iBAAPG,GAAkB,SAAW,QACzCH,EAAKE,KEDX,YAAkBqqL,IAChB,IAAIvrK,IAAQ,EACR/hB,EAAoB,MAAXstL,GAAkB,EAAIA,GAAQttL,OAG3C,IADAiO,KAAKoH,UACI0M,GAAQ/hB,GAAQ,CACvB,IAAIwgB,GAAQ8sK,GAAQvrK,IACpB9T,KAAK1K,IAAIid,GAAM,GAAIA,GAAM,KAK7BgsR,GAAS9zM,UAAUrjF,MCdnB,aACEpH,KAAKO,KAAO,EACZP,KAAKi+R,SAAW,CACdjhM,KAAQ,IAAIghM,GACZhpS,IAAO,IAAKI,IAAOgpS,IACnBrhM,OAAU,IAAIihM,KDUlBO,GAAS9zM,UAAUxyE,OEfnB,YAAwBhjB,IACtB,IAAIsC,GAASinS,GAAWx+R,KAAM/K,IAAKgjB,OAAUhjB,IAC7C,YAAKsL,MAAQhJ,GAAS,EAAI,EACnBA,IFaTgnS,GAAS9zM,UAAUp1F,IGhBnB,YAAqBJ,IACnB,OAAOupS,GAAWx+R,KAAM/K,IAAKI,IAAIJ,KHgBnCspS,GAAS9zM,UAAUprF,IIjBnB,YAAqBpK,IACnB,OAAOupS,GAAWx+R,KAAM/K,IAAKoK,IAAIpK,KJiBnCspS,GAAS9zM,UAAUn1F,IKjBnB,YAAqBL,GAAKE,IACxB,IAAIL,EAAO0pS,GAAWx+R,KAAM/K,IACxBsL,GAAOzL,EAAKyL,KAEhBzL,SAAKQ,IAAIL,GAAKE,IACd6K,KAAKO,MAAQzL,EAAKyL,MAAQA,GAAO,EAAI,EAC9BP,MLaT,SAAeu+R,GMkBf,YAAiB/jC,GAAMj/C,IACrB,GAAmB,mBAARi/C,IAAmC,MAAZj/C,IAAuC,mBAAZA,GAC3D,MAAM,IAAIlyF,UAhDQ,uBAkDpB,IAAIo1K,EAAW,WACb,IAAItqR,GAAOo2E,UACPt1F,GAAMsmN,GAAWA,GAAS7wH,MAAM1qF,KAAMmU,IAAQA,GAAK,GACnDwuN,GAAQ87D,EAAS97D,MAErB,GAAIA,GAAMtjO,IAAIpK,IACZ,OAAO0tO,GAAMttO,IAAIJ,IAEnB,IAAIsC,GAASijQ,GAAK9vK,MAAM1qF,KAAMmU,IAC9BsqR,SAAS97D,MAAQA,GAAMrtO,IAAIL,GAAKsC,KAAWorO,GACpCprO,IAETknS,SAAS97D,MAAQ,IAAK+7D,GAAQC,OAASJ,IAChCE,EAITC,GAAQC,MAAQJ,GAEhB,SAAeG,GCrEf,IAAIE,GAAa,mGAGbC,GAAe,WASfC,GCFJ,YAAuBtkC,IACrB,IAAIjjQ,GAASmnS,GAAQlkC,GAAM,SAASvlQ,IAClC,OAZmB,MAYf0tO,EAAMpiO,MACRoiO,EAAMv7N,QAEDnS,KAGL0tO,EAAQprO,GAAOorO,MACnB,OAAOprO,GDPUwnS,CAAc,SAAShiM,IACxC,IAAIxlG,GAAS,GACb,OAA6B,KAAzBwlG,GAAOuZ,WAAW,IACpB/+G,GAAO7D,KAAK,IAEdqpG,GAAO7gG,QAAQ0iS,GAAY,SAASplS,EAAO03E,GAAQ8tN,GAAOC,IACxD1nS,GAAO7D,KAAKsrS,GAAQC,GAAU/iS,QAAQ2iS,GAAc,MAAS3tN,IAAU13E,KAElEjC,KAGT,SAAeunS,GENfI,GAPA,YAAkB/pS,GAAOsjH,IACvB,OAAIh9G,GAAQtG,IACHA,G1BAX,YAAeA,GAAOsjH,IACpB,GAAIh9G,GAAQtG,IACV,OAAO,EAET,IAAI+H,SAAc/H,GAClB,QAAY,UAAR+H,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT/H,KAAiB8jS,GAAS9jS,MAGvB2oS,GAAcj3M,KAAK1xF,MAAW0oS,GAAah3M,KAAK1xF,KAC1C,MAAVsjH,IAAkBtjH,MAASlC,OAAOwlH,I0BR9B0mL,CAAMhqS,GAAOsjH,IAAU,CAACtjH,IAAS2pS,GAAaltS,GAASuD,MCGhE+rR,GARA,YAAe/rR,IACb,GAAoB,iBAATA,IAAqB8jS,GAAS9jS,IACvC,OAAOA,GAET,IAAIoC,GAAUpC,GAAQ,GACtB,MAAkB,KAAVoC,IAAkB,EAAIpC,KAdjB,IAcwC,KAAOoC,ICsC9D87Q,GAtBA,YAAgB56J,GAAQx3E,GAAM/rC,GAG5B,IAAI4e,IAAQ,EACR/hB,IAHJkvC,GAAOm+P,GAASn+P,GAAMw3E,KAGJ1mH,OAOlB,IAJKA,KACHA,GAAS,EACT0mH,QAAS7jH,KAEFkf,GAAQ/hB,IAAQ,CACvB,IAAIoD,GAAkB,MAAVsjH,QAAiB7jH,EAAY6jH,GAAO+pH,GAAMvhM,GAAKntB,WAC7Clf,IAAVO,KACF2e,GAAQ/hB,GACRoD,GAAQD,GAEVujH,GAASvsB,EAAW/2F,IAASA,GAAMtD,KAAK4mH,IAAUtjH,GAEpD,OAAOsjH,ICfT4mL,GALA,YAAkBlqS,IAChB,MAAuB,iBAATA,IACXgiS,GAAahiS,KA9BF,mBA8BYigS,GAAWjgS,GAAUmqS,iBClC1C,IAAMC,GAAb,MAAO,SACHz/R,YAAYgqJ,GACR9pJ,KAAK8pJ,SAAWA,EAChB,IAAI3qE,GAAQ2qE,EAASzrJ,MAAM,KAC3B2B,KAAKi6L,UAAY,CAAC96G,GAAMvvB,SACxB5vD,KAAK22P,SAAW,GAChB32P,KAAKw/R,cAAgB,GACrBx/R,KAAKy/R,gBAAkB,GACvB,IAAIC,GAAW,GACf,KAAOvgN,GAAMptF,OAAS,GAAG,CACrB,IAAI05I,GAAOtsD,GAAMvvB,QACb+vO,GAAOl0J,GAAKptI,MAAM,KAAK,GACvBoyH,GAAYgb,GAAK/1I,UAAUiqS,GAAK5tS,OAAS,GACzC64F,GAAQ5qF,KAAK4/R,wBAAwBD,IACzC3/R,KAAKw/R,cAAc9rS,KAAKk3F,GAAMi1M,cAC9B7/R,KAAKy/R,gBAAgB/rS,KAAKk3F,GAAMk1M,gBAChC9/R,KAAK22P,SAASjjQ,KAAKk3F,GAAMu1F,QACzBngL,KAAKi6L,UAAUvmM,KAAK+8H,IACpBivK,GAAWA,GAAS76Q,OAAO+lE,GAAMi1M,aAAaH,WAGtD74Q,KAAKk5Q,GACD,GAAIA,GAA0C,mBAAlBA,EAA8B,CACtD,IAAI5qS,GAAQ4qS,EACZA,EAAgB,SAAU3jS,IACtB,OAAOjH,GAAMiH,KAGrB,IAAI7E,GAASyI,KAAKi6L,UAAU,GAC5B,QAASn/L,GAAI,EAAGA,GAAIkF,KAAKw/R,cAAcztS,OAAQ+I,KAE3CvD,IAAUsoS,KADcL,cAAc1kS,IACfilS,GACvBxoS,IAAUyI,KAAKi6L,UAAUn/L,GAAI,GAEjC,OAAOvD,GAEXyoS,eAAexlS,GACX,OAAOwF,KAAK6mB,KAAKrsB,GAErBylS,QAAQC,GAEJ,QADI3oS,GAAS,GACJuD,GAAI,EAAGA,GAAIkF,KAAKi6L,UAAUloM,OAAQ+I,KAAK,CAC5C,IAAI2wI,GAAOzrI,KAAKi6L,UAAUn/L,IAC1B,GAAIolS,EAAYxqS,UAAU,EAAG+1I,GAAK15I,UAAY05I,GAC1C,OAGJ,GADAy0J,EAAcA,EAAYxqS,UAAU+1I,GAAK15I,QACrC+I,IAAKkF,KAAKi6L,UAAUloM,OAAS,EAAG,CAChC,GAAmB,IAAfmuS,EACA,MAGA,OAKR,QAFIC,GAAWngS,KAAKi6L,UAAUn/L,GAAI,GAC9BhI,GAASgI,KACA,CACT,GAAIhI,IAAUkN,KAAKi6L,UAAUloM,OAAS,EAAG,CACrC,IAAIquS,GAAUF,EAAYxqS,UAAUwqS,EAAYnuS,OAASouS,GAASpuS,QAClE,GAAIquS,KAAYD,GACZ,OAEJ,IAAIE,GAAcH,EAAYxqS,UAAU,EAAGwqS,EAAYnuS,OAASouS,GAASpuS,QACzEmuS,EAAcE,WAETD,GAAU,CACf,IAAIG,GAAcJ,EAAYzqS,QAAQ0qS,IAClCE,GAAcH,EAAYxqS,UAAU,EAAG4qS,IAC3CJ,EAAcA,EAAYxqS,UAAU4qS,YAE/BtgS,KAAK22P,SAAS7jQ,GAAS,IAER,KADhBwtS,GAAcJ,EAAYzqS,QAAQuK,KAAK22P,SAAS7jQ,GAAS,OAEzDwtS,GAAcJ,EAAYnuS,QAC1BsuS,GAAcH,EAAYxqS,UAAU,EAAG4qS,IAC3CJ,EAAcA,EAAYxqS,UAAU4qS,YAE/BtgS,KAAKi6L,UAAUloM,OAASe,GAAS,EAAG,CAEzCA,KACAqtS,GAAWngS,KAAKi6L,UAAUnnM,GAAS,GACnC,SAGIutS,GAAcH,EAClBA,EAAc,GAElB,MAEJlgS,KAAKy/R,gBAAgB3kS,IAAGulS,GAAa9oS,IAEzC,OAAOA,GAEX3F,WACI,OAAOoO,KAAK8pJ,SAEhB81I,wBAAwBD,GACpB,IAAI1zC,GAAW,GACXszC,GAAYgB,2BAA2BZ,EAAKjoS,OAAO,MACnDu0P,GAAW0zC,EAAKjoS,OAAO,GACvBioS,EAAOA,EAAKjqS,UAAU,IAE1B,IAAIkJ,GAAY,GACZuhL,GAAS,GACTqgH,IAAe,EACfC,IAAgB,EAChBC,IAAkB,EACN,KAAZz0C,GACAu0C,IAAe,EAEE,KAAhBG,IACDxgH,GAAS,IACTvhL,GAAY,KAEK,KAAhB+hS,IACDxgH,GAAS,IACTvhL,GAAY,KAEK,KAAhB+hS,IACDxgH,GAAS,IACTqgH,IAAe,GAEE,KAAhBG,IACDxgH,GAAS,IACTvhL,GAAY,IACR6hS,IAAgB,EACpBC,IAAkB,GAED,KAAhBC,IACDxgH,GAAS,IACTvhL,GAAY,IACR6hS,IAAgB,GAEH,KAAZx0C,KACL9rE,GAAS,IACTvhL,GAAY,IACR6hS,IAAgB,GAMxB,QAJIf,GAAW,GACXkB,GAAUjB,EAAKthS,MAAM,KACrBwiS,GAAW,GACXC,GAAa,GACRhmS,GAAI,EAAGA,GAAI8lS,GAAQ7uS,OAAQ+I,KAAK,CACrC,IAAIsB,GAAUwkS,GAAQ9lS,IAClBimS,GAAW,KACf,IAA4B,GAAxB3kS,GAAQ3G,QAAQ,KAAY,CAC5B,IAAI0pF,GAAQ/iF,GAAQiC,MAAM,KAC1BjC,GAAU+iF,GAAM,GAChB4hN,GAAWrrM,SAASvW,GAAM,IAG9B,QADI6hN,GAAW,GACRzB,GAAY0B,oBAAoB7kS,GAAQ1E,OAAO0E,GAAQrK,OAAS,KACnEivS,GAAS5kS,GAAQ1E,OAAO0E,GAAQrK,OAAS,KAAM,EAC/CqK,GAAUA,GAAQ1G,UAAU,EAAG0G,GAAQrK,OAAS,GAEpD,IAAImvS,GAAU,CACVH,SAAUA,GACVhgS,KAAM3E,GACN4kS,SAAUA,IAEdH,GAASntS,KAAKwtS,IACdJ,GAAW1kS,IAAW8kS,GACtBxB,GAAShsS,KAAK0I,IAElB,IAAI+kS,GAAc,SAAUpB,IAGxB,QAFIxoS,GAAS,GACT4C,GAAa,EACRW,GAAI,EAAGA,GAAI+lS,GAAS9uS,OAAQ+I,KAAK,CACtC,IAAIomS,GAAUL,GAAS/lS,IACnB3F,GAAQ4qS,GAAcmB,GAAQngS,MAClC,GAAa,MAAT5L,IAAkB0B,MAAM4E,QAAQtG,KAA0B,GAAhBA,GAAMpD,QAAiC,iBAAToD,IAAkD,GAA7BlC,OAAOC,KAAKiC,IAAOpD,OAChHoI,UASJ,GALI5C,IADJ6pS,IAASjnS,GACKgmL,GAGCvhL,IAAa,IAExB/H,MAAM4E,QAAQtG,IAAQ,CAClBsrS,KACAlpS,IAAU2pS,GAAQngS,KAAO,KAE7B,QAAS8f,GAAI,EAAGA,GAAI1rB,GAAMpD,OAAQ8uB,KAC1BA,GAAI,IACJtpB,IAAU2pS,GAAQF,SAAS,MAAQpiS,IAAa,IAC5CsiS,GAAQF,SAAS,MAAQP,KACzBlpS,IAAU2pS,GAAQngS,KAAO,MAGjCxJ,IAAUipS,GAAenqL,mBAAmBlhH,GAAM0rB,KAAI3kB,QAAQ,KAAM,OAASqjS,GAAY8B,uBAAuBlsS,GAAM0rB,aAGrG,iBAAT1rB,GAAmB,CAC3BsrS,KAAkBS,GAAQF,SAAS,OACnCzpS,IAAU2pS,GAAQngS,KAAO,KAE7B,IAAIs/B,IAAQ,EACZ,QAASprC,MAAOE,GACPkrC,KACD9oC,IAAU2pS,GAAQF,SAAS,MAAQpiS,IAAa,KAEpDyhC,IAAQ,EACR9oC,IAAUipS,GAAenqL,mBAAmBphH,IAAKiH,QAAQ,KAAM,OAASqjS,GAAY8B,uBAAuBpsS,IAC3GsC,IAAU2pS,GAAQF,SAAS,KAAO,IAAM,IACxCzpS,IAAUipS,GAAenqL,mBAAmBlhH,GAAMF,KAAMiH,QAAQ,KAAM,OAASqjS,GAAY8B,uBAAuBlsS,GAAMF,UAIxHwrS,KACAlpS,IAAU2pS,GAAQngS,OACb2/R,IAA4B,IAATvrS,MACpBoC,IAAU,MAGM,MAApB2pS,GAAQH,WACR5rS,GAAQA,GAAMO,UAAU,EAAGwrS,GAAQH,WAEvCxpS,IAAUipS,GAAenqL,mBAAmBlhH,IAAO+G,QAAQ,KAAM,OAASqjS,GAAY8B,uBAAuBlsS,IAGrH,OAAOoC,IAiLX4pS,UAAYzB,SAAcA,GACnB,CACHv/G,OAAQA,GACR0/G,aAAcsB,GACdrB,eAnLgB,SAAUO,GAAaiB,IACvC,GAAInhH,GACA,IAAIkgH,GAAY3qS,UAAU,EAAGyqL,GAAOpuL,SAAWouL,GAI3C,OAAO,KAHPkgH,GAAcA,GAAY3qS,UAAUyqL,GAAOpuL,OAGpC,CAGf,GAAuB,GAAnB8uS,GAAS9uS,QAAe8uS,GAAS,GAAGG,SAAS,KAAM,CAKnD,QAHI5kS,IADA8kS,GAAUL,GAAS,IACD9/R,KAClBwgS,GAAaL,GAAQF,SAAS,KAAOX,GAAYhiS,MAAMO,IAAa,KAAO,CAACyhS,IAC5EmB,GAAahB,KAA4C,GAA5BH,GAAY5qS,QAAQ,KAC5CqF,GAAI,EAAGA,GAAIymS,GAAWxvS,OAAQ+I,KAC/BulS,GAAckB,GAAWzmS,IACzB0mS,KAAyC,GAA5BnB,GAAY5qS,QAAQ,OAEjC8rS,GAAWzmS,GAAI,KAAO8D,IAAa,KAAOyhS,GAC1CkB,GAAWjnS,OAAOQ,GAAG,GACrBA,MAGR,IAASA,GAAI,EAAGA,GAAIymS,GAAWxvS,OAAQ+I,KAAK,CACpCulS,GAAckB,GAAWzmS,IACzB0lS,KAA4C,GAA5BH,GAAY5qS,QAAQ,OACpC+rS,IAAY,GAGhB,QADIC,GAAkBpB,GAAYhiS,MAAM,KAC/BwiB,GAAI,EAAGA,GAAI4gR,GAAgB1vS,OAAQ8uB,KACpC2/Q,KACAiB,GAAgB5gR,IAAKu2F,mBAAmBqqL,GAAgB5gR,MAI5D0gR,GAAWzmS,IADe,GAA1B2mS,GAAgB1vS,OACA0vS,GAAgB,GAGhBA,GAGxB,GAAIhB,IAAiBe,GAAW,CAE5B,IADIE,GAAcJ,GAAUllS,KAAY,GACxC,IAASykB,GAAI,EAAGA,GAAI0gR,GAAWxvS,OAAQ8uB,KAAK,CACxC,IAAI89G,GAAa0hK,GACjB,IAAII,IAAkB9hK,GAItB,IAA4B,iBAAjB4iK,GAAW1gR,IAAgB,CAClC,IACI8gR,IADAtB,GAAckB,GAAW1gR,KACExiB,MAAM,IAAK,GAAG,GAE7CsgI,GADI0hK,GAAcA,GAAY3qS,UAAUisS,GAAa5vS,OAAS,EACjDsuS,MAITsB,IADAtB,GAAckB,GAAW1gR,IAAG,IACDxiB,MAAM,IAAK,GAAG,GACzCgiS,GAAcA,GAAY3qS,UAAUisS,GAAa5vS,OAAS,GAC9DwvS,GAAW1gR,IAAG,GAAKw/Q,GACnB1hK,GAAa4iK,GAAW1gR,SAEMjsB,IAA9B8sS,GAAYC,IACZ9qS,MAAU4E,QAAQimS,GAAYC,KAC1BD,GAAYC,IAAcjuS,KAAKirI,IAG/B+iK,GAAYC,IAAgB,CAACD,GAAYC,IAAehjK,IAI5D+iK,GAAYC,IAAgBhjK,IAIhC2iK,GAAUllS,IADyB,GAAnCnJ,OAAOC,KAAKwuS,IAAa3vS,aAAwC6C,IAAzB8sS,GAAYtlS,IAC/BslS,GAAYtlS,IAGZslS,QAMjBJ,GAAUllS,SAFSxH,IAAvB0sS,GAAUllS,IACVvF,MAAU4E,QAAQ6lS,GAAUllS,KACHklS,GAAUllS,IAASyoB,OAAO08Q,IAG1B,CAACD,GAAUllS,KAAUyoB,OAAO08Q,IAI5B,GAAzBK,GAAe7vS,QAAgBmvS,GAAQF,SAAS,KAIvBO,GAHAA,GAAW,EAGXA,KAKhC,CACGA,GAAiC,GAAnBV,GAAS9uS,OAAe,CAACsuS,IAAeA,GAAYhiS,MAAMO,IAAa,KAEzF,IADIijS,GAAe,GACnB,IAAS/mS,GAAI,EAAGA,GAAIymS,GAAWxvS,OAAQ+I,KAAK,CAGxC,QADIgnS,GAAe,EACZA,GAAejB,GAAS9uS,OAAS,GAAK+vS,GAAehnS,KACpD+lS,GAASiB,IAAcd,SAAS,KADuBc,MAK/D,GAAIA,IAAgBhnS,GAApB,CAOI,QAASinS,GAAclB,GAAS9uS,OAAS,EAAGgwS,GAAc,GAAMlB,GAAS9uS,OAASgwS,GAAgBR,GAAWxvS,OAAS+I,KAC9G+lS,GAASkB,IAAaf,SAAS,KADmFe,MAY9HF,GAAa/mS,IAPJ+lS,GAAS9uS,OAASgwS,IAAiBR,GAAWxvS,OAAS+I,GAO9CgnS,GALQC,EAClB,MAbJF,GAAa/mS,IAAKA,EAiBJgnS,CAEtB,IAAShnS,GAAI,EAAGA,GAAIymS,GAAWxvS,OAAQ+I,KAEnC,IADIulS,GAAckB,GAAWzmS,OACT2lS,GAIpB,CAEA,GAFIgB,GAAkBpB,GAAYhiS,MAAM,KACpCmjS,IAAY,EACZf,GAAe,CAEXrkS,IADAikS,GAAcoB,GAAgB,IACRpjS,MAAM,IAAK,GAAG,GACpCgiS,GAAcA,GAAY3qS,UAAU0G,GAAQrK,OAAS,GACzD0vS,GAAgB,GAAKpB,GACrB,IAAIa,GAAUJ,GAAW1kS,KAAYykS,GAAS,QAI1CzkS,IADA8kS,GAAUL,GAASgB,GAAa/mS,MACdiG,KAE1B,IAAS8f,GAAI,EAAGA,GAAI4gR,GAAgB1vS,OAAQ8uB,KACpC2/Q,KACAiB,GAAgB5gR,IAAKu2F,mBAAmBqqL,GAAgB5gR,MAKxDygR,GAAUllS,KAFbqkS,IAAiBS,GAAQF,SAAS,YAAgCpsS,IAAvB0sS,GAAUllS,IACtDvF,MAAU4E,QAAQ6lS,GAAUllS,KACHklS,GAAUllS,IAASyoB,OAAO48Q,IAG1B,CAACH,GAAUllS,KAAUyoB,OAAO48Q,IAIvB,GAA9BO,GAAoBjwS,QAAgBmvS,GAAQF,SAAS,KAI5BS,GAHAA,GAAgB,EAGhBA,IAUrBQ,+BAGMllM,GAC1B,OAAOsxI,UAAUtxI,GAAQ7gG,QAAQ,iBAAkB,SAAUgmS,IACzD,MAAO,IAAMA,GAAcxsS,UAAU,MAIjD6pS,UAAYgB,2BAA6B,CACrC,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GAEThB,GAAY0B,oBAAsB,CAC9B,KAAK,GAvaI1B,IAAb,gECaM4C,SAAN,SAAyB/0Q,WACVlwB,GACP,GAAI8C,KAAKilG,UACL,OAAOjlG,KAAKilG,UAAU5vG,IAAI6H,GAE9B,MAAM,IAAIusC,MAAM,gCAETjb,oBAASr5B,GAChB6K,KAAKilG,UAAY9vG,GAGzBgtS,UAAmBl9L,UAAY,KAXzBk9L,OAgBN,SAAgB/0Q,iBACKg1Q,IACbC,GAAUh1Q,OAASp6B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI+wR,GAAUC,gBAAiBF,KAGtFC,GAAUC,eAAiB,CACvB3xP,KAAM,CACFqkB,QAAS,gCAEbutO,KAAM,CACFC,aAAa,GAEjB7/D,MAAO,CACHntI,SAAS,EACTitM,SAAU,KAEdC,SAAU,CACNrhQ,UAAW,IAEfshQ,WAAY,CACRC,YAAa,CACTriS,KAAM,GACN0iC,KAAM,IAGd4/P,cAAc,GAElBR,GAAUh1Q,OAASg1Q,GAAUC,eAG7B,SAAoBl1Q,YACJuhC,MAAYm0O,IACfT,GAAUh1Q,OAAOk1Q,KAAKC,cAAgBH,GAAUh1Q,OAAOw1Q,cAG5D5zQ,QAAQ8zQ,KAAKp0O,MAAYm0O,eAEjBn0O,MAAYm0O,GAChBT,GAAUh1Q,OAAOw1Q,cAGrB5zQ,QAAQkuJ,KAAKxuH,MAAYm0O,gBAEhBn0O,MAAYm0O,GACjBT,GAAUh1Q,OAAOw1Q,cAGrB5zQ,QAAQ+B,MAAM29B,MAAYm0O,qBAQZn0O,GAAS9yD,GACvB,IAAKwmS,GAAUh1Q,OAAOk1Q,KAAKC,cAAgBH,GAAUh1Q,OAAOw1Q,aACxD,OAEJ,IAAIn8I,GAAO,KAAI/3F,OACf,MAAMq0O,GAAQ,CACV,mBAEJ,IAAKt/R,GAAQ7H,GACT,UAAY5G,GAAKE,MAAUlC,OAAOosL,QAAQxjL,GACZ,WAAtB5G,GAAI6H,eACJ4pJ,IAAQ,KAAIw2I,GAAWjoS,UAAWE,OAClC6tS,GAAMtvS,KAAK,kBAAmB,qBAG9BgzJ,IAAQ,KAAIg2I,GAAUznS,UAAWE,OACjC6tS,GAAMtvS,KAAK,kBAAmB,oBAI1CuvS,GAAcF,KAAKr8I,MAAQs8I,8BASLE,GAAcv0O,EAAS9yD,IAC7C,IAAKwmS,GAAUh1Q,OAAOk1Q,KAAKC,cAAgBH,GAAUh1Q,OAAOw1Q,aACxD,OAEJ,IAAIn8I,GAAO,KAAIw8I,QAAkBv0O,MACjC,MAAMq0O,GAAQ,CACV,kBACA,mBAEJ,IAAKt/R,GAAQ7H,IACT,UAAY5G,GAAKE,MAAUlC,OAAOosL,QAAQxjL,IACZ,WAAtB5G,GAAI6H,eACJ4pJ,IAAQ,KAAIw2I,GAAWjoS,UAAWE,OAClC6tS,GAAMtvS,KAAK,kBAAmB,qBAG9BgzJ,IAAQ,KAAIg2I,GAAUznS,UAAWE,OACjC6tS,GAAMtvS,KAAK,kBAAmB,oBAI1CuvS,GAAcF,KAAKr8I,MAAQs8I,uBAQZr0O,GAAS9yD,GACxB,GAAIwmS,GAAUh1Q,OAAOw1Q,aACjB,OAEJ,IAAIn8I,GAAO,KAAI/3F,OACf,MAAMq0O,GAAQ,CACV,mBAEJ,IAAKt/R,GAAQ7H,GACT,UAAY5G,GAAKE,MAAUlC,OAAOosL,QAAQxjL,GACZ,UAAtB5G,GAAI6H,eACJ4pJ,IAAQ,KAAIw2I,GAAWjoS,UAAWE,OAClC6tS,GAAMtvS,KAAK,kBAAmB,qBAG9BgzJ,IAAQ,KAAIw2I,GAAWjoS,UAAWE,OAClC6tS,GAAMtvS,KAAK,kBAAmB,iBAI1CuvS,GAAcjyQ,MAAM01H,MAAQs8I,sBAQdr0O,GAAS9yD,GACvB,GAAIwmS,GAAUh1Q,OAAOw1Q,aACjB,OAEJ,IAAIn8I,GAAO,KAAI/3F,OACf,MAAMq0O,GAAQ,CACV,mBAEJ,IAAKt/R,GAAQ7H,GACT,UAAY5G,GAAKE,MAAUlC,OAAOosL,QAAQxjL,GACtC6qJ,IAAQ,KAAIw2I,GAAWjoS,UAAWE,OAClC6tS,GAAMtvS,KAAK,kBAAmB,gBAGtCuvS,GAAc9lH,KAAKz2B,MAAQs8I,KAInC,YAA4BvqL,IAExB,OAAQ0qL,GAA0B1qL,MAAY2qL,GAAqB3qL,KAAW4qL,GAAiB5qL,OAAa,SAAUA,GAAO7kD,QAEjI,YAAoB6kD,IAChB,OAAQ0qL,GAA0B1qL,MAAY2qL,GAAqB3qL,KAAW4qL,GAAiB5qL,KAAY,SAAUA,GAAO7kD,OAEhI,YAA8B6kD,IAC1B,OAAO72G,GAAS62G,KACX,cAAeA,IACf,WAAYA,MACX,SAAUA,KACoB,IAA/BxlH,OAAOC,KAAKulH,IAAQ1mH,MAAW,CAExC,YAAmC0mH,IAC/B,OAAO72G,GAAS62G,KACX,cAAeA,IACf,WAAYA,IACZ,SAAUA,IACqB,IAA/BxlH,OAAOC,KAAKulH,IAAQ1mH,MAAW,CAOxC,YAA0B0mH,IACtB,OAAO72G,GAAS62G,KAAY,WAAYA,GAO5C,YAAyBA,IACrB,OAAI6qL,GAAmB7qL,IACZ,mBAEF8qL,GAAW9qL,IACT,WAEF2qL,GAAqB3qL,IACnB,qBAEF0qL,GAA0B1qL,IACxB,0BAGA,UAIf,IAAInmD,GAAO,MACV,SAAUA,IACPA,GAAQkxO,YAAiB,cAD5B,CAEElxO,KAAYA,GAAU,KAHrBA,IAAO,GAOPmxO,GAAU,MACb,SAAUA,IACPA,GAAWC,IAAS,MACpBD,GAAWE,KAAU,OACrBF,GAAWG,IAAS,MACpBH,GAAWI,MAAW,QAJzB,CAKEJ,KAAeA,GAAa,KAN3BA,IAAU,GAQVK,GAAK,MACR,SAAUA,IACPA,GAAMC,MAAW,QACjBD,GAAME,YAAiB,cACvBF,GAAMG,aAAkB,eACxBH,GAAMI,eAAoB,iBAC1BJ,GAAMK,cAAmB,gBACzBL,GAAMM,eAAoB,iBAC1BN,GAAMO,UAAe,YACrBP,GAAMQ,UAAe,YACrBR,GAAMS,YAAiB,cACvBT,GAAMU,aAAkB,eACxBV,GAAMW,cAAmB,gBACzBX,GAAMY,IAAS,MAZlB,CAaEZ,KAAUA,GAAQ,KAdjBA,IAAK,GAoBT,SAAkB12Q,wBACU0kC,GAAUotF,EAAQrjJ,IACtC,IAAKwmS,GAAUh1Q,OAAOk1Q,KAAKC,cAAgBH,GAAUh1Q,OAAOw1Q,aACxD,OAEJ,MAAM8B,GAAa3kS,KAAK4kS,cAAc/oS,IACtC,IAAIqnS,GAEAA,GADA92M,GAASt6B,IACMA,GAEd4hN,GAAW5hN,IAIG,4BAHA,qBAAsBA,GAAWA,GAAS+yO,iBAAsB,mBAKnF5B,GAAc6B,mBAAoB,GAAE5H,GAAWgG,OAAiBhkJ,IAAW,SAAQ4kJ,GAAMC,QAASY,0BAEhF7yO,GAAUotF,EAAQrjJ,IACpC,IAAKwmS,GAAUh1Q,OAAOk1Q,KAAKC,cAAgBH,GAAUh1Q,OAAOw1Q,aACxD,OAEJ,MAAM8B,GAAa3kS,KAAK4kS,cAAc/oS,IACtC,IAAIqnS,GAEAA,GADA92M,GAASt6B,IACMA,GAGA,qBAAsBA,GAAWA,GAAS+yO,iBAAsB,mBAEnF5B,GAAc6B,mBAAoB,GAAE5H,GAAWgG,OAAiBhkJ,IAAW,SAAQ4kJ,GAAMY,MAAOC,oBAEpFI,GAAOlpS,GACnB,IAAKwmS,GAAUh1Q,OAAOk1Q,KAAKC,cAAgBH,GAAUh1Q,OAAOw1Q,aACxD,OAEJ,MAAM8B,GAAa3kS,KAAK4kS,cAAc/oS,GACtConS,GAAc+B,WAAY,SAAQD,KAASJ,yBAE1BI,GAAOlpS,GACxB,GAAIwmS,GAAUh1Q,OAAOw1Q,aACjB,OAEJ,MAAM8B,GAAa3kS,KAAK4kS,cAAc/oS,GACtConS,GAAcgC,YAAa,SAAQF,KAASJ,wBAE5BI,GAAOlpS,GACvB,GAAIwmS,GAAUh1Q,OAAOw1Q,aACjB,OAEJ,MAAM8B,GAAa3kS,KAAK4kS,cAAc/oS,GACtConS,GAAciC,WAAY,SAAQH,KAASJ,yBAE1B9oS,IACjB,MAAM8oS,EAAa,GACnB,GAAIjhS,GAAQ7H,IACR,OAAO8oS,EAEX,UAAY1vS,GAAKE,MAAUlC,OAAOosL,QAAQxjL,KACjCA,GAAO/B,eAAe7E,MAIvB0vS,EAAW1vS,IADX2M,GAASzM,IACSqyD,KAAKC,UAAUtyD,GAAO,KAAM,GAG5BA,IAG1B,OAAOwvS,GAIf,SAAsBv3Q,2BAQSvxB,IACvB,GAAIspS,GAAMtpS,IAAS,CACf,MAAMq0F,GAAS,oCACfk1M,SAAYC,cAAcvB,GAAMG,aAAc,CAAEjzQ,MAAOk/D,KACjD,IAAIzmD,MAAMymD,IAEpB,MAAMo1M,EAAiB,GACvB,UAAYrwS,GAAKE,MAAUlC,OAAOosL,QAAQxjL,IAAS,CAE/C,GAAIqwF,EAAW/2F,KAAU+2F,EAAW/2F,GAAM2K,eAAiB3K,GAAM0vS,iBAC7D,MAAM,IAAIp7P,MAAO,aAAYt0C,GAAM4L,kFAAkF5L,GAAM4L,gBAE/H,GAAIokS,GAAMhwS,KACFi3F,GAASj3F,MAAWA,IACpBowS,GAAcpwS,KAAUuO,GAAQvO,KAChCsG,GAAQtG,KAA2B,IAAjBA,GAAMpD,OAAe,CAC3C,IAAIyzS,GAAiBrwS,GACjByM,GAASzM,MACTqwS,GAAiBh+O,KAAKC,UAAUtyD,GAAO,KAAM,IAEjDmwS,EAAe5xS,KAAM,IAAGuB,QAASuwS,QAGzC,GAAIF,EAAevzS,OAAS,EAAG,CAC3B,MAAMm+F,GAAU,mBAAkBo1M,EAAe9jP,KAAK,SAAS8jP,EAAevzS,OAAS,EAAI,MAAQ,iBACnGqzS,SAAYC,cAAcvB,GAAMG,aAAc,CAAEjzQ,MAAOk/D,KACjD,IAAIzmD,MAAMymD,MAK5B,QAAe9iE,2BAOgB7rB,GAASkkS,GAChC,IAAIC,GAAeD,GAA0B,IAAI5mJ,MACjD,GAAIn7I,GAAQnC,KAAY4jS,GAAM5jS,IAC1B,OAAOmkS,GAGX,GADAC,EAASC,qBAAqBrkS,IAC1BK,GAASL,GAAQ1F,UAAY6H,GAAQnC,GAAQ1F,QAC7C,UAAY5G,GAAKE,MAAUlC,OAAOosL,QAAQ99K,GAAQ1F,QAC1C0F,GAAQ1F,OAAO/B,eAAe7E,MAC1BsuS,GAAWpuS,IAEXuwS,GAAeA,GAAaz+R,OAAOhS,GAAKE,GAAM0wS,mBAE7CtO,GAAYh2R,GAAQ1F,OAAO5G,KAE5BsM,GAAQ1F,OAAO5G,IAAKrC,QAASmI,KACzB2qS,GAAeA,GAAaz+R,OAAQ,GAAEhS,GAAIrD,aAAcmJ,MAK5D2qS,GAAeA,GAAaz+R,OAAOhS,GAAKE,GAAMvD,aAK9D,OAAK8R,GAAQnC,GAAQukS,cACjBJ,GAAeA,GAAaz+R,OAAO,OAAQrV,GAAS2P,GAAQukS,WAAW7iQ,OACvEyiQ,GAAeA,GAAaz+R,OAAO,OAAQrV,GAAS2P,GAAQukS,WAAWvlS,QAEtEmD,GAAQnC,GAAQ2Y,QACjBwrR,GAAeC,EAASI,mBAAmBxkS,GAAQ2Y,KAAMwrR,KAEtDA,+BAMiBnkS,IACxB,OAAImC,GAAQnC,KAAY4jS,GAAM5jS,IACnB,GAEJ,CACH1F,OAAQ8pS,EAASK,oBAAoBzkS,IACrC41D,QAAS51D,GAAQ41D,QACjBiqF,QAAS7/I,GAAQ6/I,QACjB/B,eAAgB99I,GAAQ89I,eACxBC,gBAAiB/9I,GAAQ+9I,wCAWV2mJ,GAAc1kS,GAEjC,IAAIguB,GAOJ,OARA22Q,GAAgBC,oBAAoB,CAAEF,gBAAcG,QAA0B,MAAjBH,QAAmD,EAASA,GAAa39P,OAGlI/Y,GADJ+0M,IAAgB5gO,GAAQnC,GACd0kS,GAAaI,UAAYV,EAASW,mBAAmBL,GAAa39P,KAAM/mC,GAAW0kS,GAAa39P,KAGhG29P,GAAaI,UAAYV,EAASY,qBAAqBN,GAAa39P,MAAQ29P,GAAa39P,KAE/F+5P,GAAUh1Q,OAAOsjB,KAAK61P,SACfj3Q,GAAIrzB,QAAQmmS,GAAUh1Q,OAAOsjB,KAAKqkB,QAASqtO,GAAUh1Q,OAAOsjB,KAAK61P,UAErEj3Q,sBAMP,OAAI8yQ,GAAUh1Q,OAAOsjB,KAAK61P,SACfnE,GAAUh1Q,OAAOsjB,KAAK61P,SAGtBnE,GAAUh1Q,OAAOsjB,KAAKqkB,mCAWVqtK,GAAS6gE,EAAc/qS,IAC9C+tS,GAAgBC,oBAAoB,CAAE9jE,WAAS6gE,iBAC/C,IAAI3zQ,GAAM8yM,GACV,OAAK9yM,GAAI40B,SAAS,OACd50B,GAAMA,GAAI1K,OAAO,MAEd0K,GAAI1K,OAAOq+Q,GAAcr+Q,OAAO1sB,GAAS,GAAEA,GAAM+C,WAAW,KAAO/C,GAAQ,IAAMA,KAAU,kCAOxEo3B,IAC1B22Q,UAAgBC,oBAAoB,CAAE52Q,SAE/Bk3Q,GADuB3pS,cAAcZ,QAAS,GAAEypS,EAASe,YAAY5pS,iBAAkB,IAAIuB,MAAM,KAC/E,+BAQDkxB,IACxB22Q,UAAgBC,oBAAoB,CAAE52Q,SAC/Bo2Q,EAASW,mBAAmB/2Q,GAAK,0BAQtBA,IAClB22Q,GAAgBC,oBAAoB,CAAE52Q,SACtC,MAAMo3Q,EAAS,IAAIj7H,IAAIn8I,IACvB,OAAOo3Q,EAAOrhK,OAASqhK,EAAO/0L,mCASRriF,GAAKhuB,GAC3B2kS,GAAgBC,oBAAoB,CAAE52Q,SACtCo2Q,EAASC,qBAAqBrkS,GAC9B,MAAMqlS,GAAyB3zS,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GAAsB,MAAZA,OAAyC,EAASA,EAAQ1F,QAAqB,MAAZ0F,OAAyC,EAASA,EAAQukS,YAAa,CAG3O5rR,KAAM,OACJ2sR,GAAY,IAAItH,GAAYhwQ,IAAK1I,KAAKs+Q,GAAMyB,IAA0B,GAAKA,IACjF,GAAgB,MAAZrlS,OAAyC,EAASA,EAAQ2Y,KAAM,CAChE,MAAM4sR,GAAanB,EAASI,mBAAmBxkS,EAAQ2Y,MACvD,GAAI4sR,GAAW5zS,OAAOnB,OAAS,EAC3B,OAAO80S,GAAUhiR,OAAOgiR,GAAU58P,SAAS,KAAO,IAAM,IAAIplB,OAAOiiR,GAAWl1S,YAGtF,OAAOi1S,yCAE2BtlS,IAClC,MAAMwlS,EAAeC,GAASzlS,IAAqB,GAAVA,GACzC,OAAImC,GAAQqjS,EAAajB,YACrBiB,EAAajB,WAAazD,GAAUh1Q,OAAOs1Q,WAAWC,YAErDt+D,EAAkBwhE,WAAWvlS,KAGxBwmS,EAAajB,WAAW7iQ,OAC9B8jQ,EAAajB,WAAW7iQ,KAAOo/P,GAAUh1Q,OAAOs1Q,WAAWC,YAAY3/P,MAHvE8jQ,EAAajB,WAAWvlS,KAAO8hS,GAAUh1Q,OAAOs1Q,WAAWC,YAAYriS,KAKpEwmS,4BAEe7sR,GAAMurR,GAC5B,IAAIC,GAAeD,GAA0B,IAAI5mJ,MACjD,IAAKn7I,GAAQwW,IACT,UAAY+sR,GAAU3oP,MAAcrrD,OAAOosL,QAAQnlK,IAC/CwrR,GAAeA,GAAaz+R,OAAO,OAAS,GAAEggS,MAAY3oP,MAGlE,OAAOonP,+BAEiBnkS,IACxB,IAAImC,GAAQnC,MAAYmC,GAAQnC,GAAQ1F,UAGpC,SAAU0F,GAAQ1F,QAAU,SAAU0F,GAAQ1F,QAC9C,MAAM4tC,MAAM,yEAMxB,QAAoBrc,uBACOlwB,IACnB8C,KAAKslF,aAAepoF,oCAESA,IAC7B8C,KAAKknS,uBAAyBhqS,yCAEIA,IAClC8C,KAAKmnS,4BAA8BjqS,kCAERA,IAC3B8C,KAAKonS,qBAAuBlqS,8BAEL2pO,GAASliE,GAEhC,OAAIjhK,GAAQmjO,MACHjlO,GAASilO,GAAQjzK,SAAclwD,GAAQmjO,GAAQjzK,SACpDqvO,GAAc9lH,KAAK,qIAA0I,CAAEkqH,kBAAmBxgE,KAC3K,MAEJ7mO,KAAKsnS,eAAetnS,KAAKunS,yBAAyB1gE,GAASliE,GAAeA,mCAErDkiE,GAASliE,GACrC,UAAW1vK,MAAOhC,OAAOC,KAAK2zO,IACd,6BAAR5xO,GAQJ4xO,GAAQ5xO,IAJI,WAARA,GAIW+K,KAAKwnS,mBAAmBvyS,GAAK4xO,GAAQ5xO,IAAM0vK,GAHvCkiE,GAAQ5xO,WAJhB4xO,GAAQ5xO,IASvB,OAAO4xO,6BAEe5xO,GAAK4xO,EAASliE,IACpC,GAAIwgI,GAAMt+D,GACN,OAAOA,EAEN,GAAIprO,GAAQorO,GACb,QAAS/rO,GAAI,EAAGA,GAAI+rO,EAAQ90O,OAAQ+I,KAChC+rO,EAAQ/rO,IAAKkF,KAAKwnS,mBAAmBvyS,GAAK4xO,EAAQ/rO,IAAI6pK,SAGrDA,IAAgB4gI,GAAc1+D,GAEnCA,EAAU7mO,KAAKunS,yBAAyBvnS,KAAKynS,4BAA4BxyS,GAAK4xO,GAAUliE,IAEvF+iI,GAAuB7gE,IAAY8gE,EAAcC,2BAA2BvyS,IAAIJ,IAEjF4xO,EAAU7mO,KAAKunS,yBAAyBvnS,KAAK6nS,uBAAuB5yS,GAAK4xO,GAAUliE,IAE9E4+H,GAAW18D,KAEhBA,EAAU7mO,KAAKunS,yBAAyBvnS,KAAKsnS,eAAezgE,GAAUliE,KAE1E,OAAOkiE,wBAEWA,GAASliE,GAC3B,MAAMu+H,GAAeljS,KAAK8nS,iBAAiBjhE,IAC3C,IAAIkhE,GAYJ,OAXAzjE,IAAqBqjE,EAAcK,kCAAkC3yS,IAAI6tS,KACrE6E,GAAgBJ,EAAcM,uBAAuB5yS,IAAI6tS,IACzDD,GAAciC,WAAW,wEAA2EhC,GAAe,8BAAkC6E,GAAkC,MAAlBA,QAAqD,EAASA,GAAchnS,KAAO,qBAAuB,iQAK/QgnS,GAAgBpjI,EACVgjI,EAAcK,kCAAkC3yS,IAAI6tS,IACpDyE,EAAcM,uBAAuB5yS,IAAI6tS,IAE/C6E,GACO90S,OAAOqe,OAAO,IAAKy2R,GAAkBlhE,KAG5Co8D,GAAciC,WAAW,kDAAqDhC,GAAe,qHACpCA,GAAe,0PAGjEjwS,OAAOqe,OAAO,IAAItR,KAAKslF,aAAgBuhJ,wCAGnBh1K,GAAcg1K,GAC7C,MAAMqhE,GAAgBP,EAAcQ,sCAAsC9yS,IAAIw8D,IAC9E,OAAIq2O,GACOj1S,OAAOqe,OAAO,IAAK42R,GAAkBrhE,IAG5Co8D,GAAciC,WAAW,2DAA8DrzO,GAAe,kKACAA,GAAe,kIAE9G5+D,OAAOqe,OAAO,IAAItR,KAAKslF,aAAgBuhJ,kCAGxB5xO,GAAK4xO,GAC/B,MAAMkhE,GAAgBJ,EAAcC,2BAA2BvyS,IAAIJ,IACnE,OAAI8yS,GACO90S,OAAOqe,OAAO,IAAKy2R,GAAkBlhE,IAG5Co8D,GAAciC,WAAW,2DAA8DjwS,GAAM,uIAC3BA,GAAM,mRAGjEhC,OAAOqe,OAAO,IAAItR,KAAKonS,qBAAwBvgE,yCAGzBA,GAASliE,GAC1C,GAAIjhK,GAAQmjO,MACHjlO,GAASilO,GAAQjzK,SAAclwD,GAAQmjO,GAAQjzK,UAC/ChyD,GAASilO,GAAQuhE,YAAiB1kS,GAAQmjO,GAAQuhE,WACvD,OAAO,KAEX,MAAM7wS,GAAS,IAAIyI,KAAKknS,uBACxB,UAAWhE,MAAgBjwS,OAAOC,KAAK2zO,GAAQuhE,WAC3CvhE,GAAQuhE,UAAalF,IAActwS,QAASk/D,KACxCv6D,GAAO8pC,UAAU3tC,KAAKsM,KAAKqoS,oBAAoBv2O,GAAU6yG,MAGjEptK,UAAOq8D,OAAY3gE,OAAOqe,OAAO,GAAIu1N,GAAQjzK,QACtCr8D,6CAE+BsvO,GAASliE,GAC/C,MAAM2jI,GAAqBtoS,KAAKuoS,8BAA8B1hE,GAASliE,GACvE,GAA0B,MAAtB2jI,GACA,OAAO,KAEX,IAAI/wS,GACJ,OACIA,GADAsvO,GAAQ5jM,KACC,IAAIjjC,KAAKmnS,4BAA4BmB,GAAoBzhE,IAGzD,IAAI7mO,KAAKmnS,4BAA4BmB,IAE3C/wS,wBASUq8E,IACjB,IAAI92D,EAAI+L,GAAI4S,GACZ,GAAI/3B,GAAQkwE,KAAgBuxN,GAAMvxN,GAAYx8E,OACtCwK,GAASgyE,GAAYx8E,OAASsM,GAAQkwE,GAAYx8E,MACtDguS,UAAYoD,SAAS1E,GAAMM,eAAgB,CAAE7sS,OAAQ,8BAC9C,KAEX,MAAMH,GAAOw8E,GAAYx8E,KACzB,IAAKwK,GAASxK,KAASqE,GAAQrE,IAC3BguS,UAAYoD,SAAS1E,GAAMM,eAAgB,CAAE7sS,OAAQ,6CAC9CH,GAEX,MAAMG,GAAS,GACf,UAAWtC,MAAOmC,GACd,GAAKA,GAAK0C,eAAe7E,IAGzB,IAAiB,MAAbmC,GAAKnC,KAAgBq9D,GAAQkxO,eAA+G,QAA7F1mR,EAAqB,MAAhB82D,QAAiD,EAASA,GAAYvhB,oBAAiC,IAAPv1C,OAAgB,EAASA,EAAG4jB,SAAU,CAC1LnpC,GAAOtC,IAAO,KACd,SAEJ,IAAIkwS,GAAM/tS,GAAKnC,KAGf,GAAIwG,GAAQrE,GAAKnC,KAAO,CACpB,MAAMy5F,GAAQt3F,GAAKnC,IACnBsC,GAAOtC,IAAO,GACdy5F,GAAM97F,QAASR,KACX,IAAI0qB,GAAI+L,GACJ06Q,GAAWnxS,IACXmF,GAAOtC,IAAKvB,KAAqI,QAA/Hm1B,GAAiF,QAA3E/L,GAAiB,MAAZ1qB,QAAyC,EAASA,GAAQwhE,cAA2B,IAAP92C,QAAgB,EAASA,GAAG+2C,YAAyB,IAAPhrC,QAAgB,EAASA,GAAGyf,MAGrL/wC,GAAOtC,IAAKvB,KAAKsM,KAAKyoS,cAAc,CAAErxS,KAAMhF,GAASigE,aAA8B,MAAhBuhB,QAAiD,EAASA,GAAYvhB,uBAKjJ96D,GAAOtC,IADFsuS,GAAWnsS,GAAKnC,KACyE,QAA/EwmC,GAAiC,QAA3B5S,GAAKzxB,GAAKnC,IAAK2+D,cAA2B,IAAP/qC,QAAgB,EAASA,GAAGgrC,YAAyB,IAAPp4B,QAAgB,EAASA,GAAG6M,KAEjI4oO,GAAkB95Q,GAAKnC,KACV+K,KAAKyoS,cAAc,CAAErxS,KAAMA,GAAKnC,IAAMo9D,aAA8B,MAAhBuhB,QAAiD,EAASA,GAAYvhB,eAG1Hj7D,GAAKnC,IAG3BmwS,UAAYoD,SAAS1E,GAAMM,eAAgB,CAAE7sS,YACtCA,uBAOSmxS,IAChB,OAAInF,GAAWmF,IACJz1S,OAAOqe,OAAO,IAAItR,KAAKslF,aAAgBojN,IAEzCpF,GAAmBoF,IACjBz1S,OAAOqe,OAAO,IAAItR,KAAKonS,qBAAwBsB,IAG/CA,2BASS7hE,IACpB,IAAKA,KAAYA,GAAQjzK,SAAcizK,GAAQjzK,OAAUC,KACrD,MAAO,GAEX,MAAM80O,EAAgB9hE,GAAQjzK,OAC9B,OAAIlwD,GAAQilS,IAAkBjlS,GAAQilS,EAAc90O,OAASsxO,GAAMwD,EAAc90O,KAAKvrB,MAC3E,GAEJq9P,EAASiD,uBAAuBjD,EAASY,qBAAqBoC,EAAc90O,KAAKvrB,mCAOhEu+L,IACxB,IAAKA,KAAYA,GAAQjzK,SAAcizK,GAAQjzK,OAAUC,KACrD,OAAO,EAEX,MAAMg1O,EAAWhiE,GAAQjzK,OAAUC,KAC7B80O,GAAgB9hE,GAAQjzK,OAC9B,UAAW3+D,MAAOhC,OAAOC,KAAKy1S,IAC1B,GAAY,SAAR1zS,IAAkB0zS,GAAc1zS,IAAKqzC,KAAK2B,SAAS4+P,EAASvgQ,MAC5D,OAAO,IAAIojI,IAAIi9H,GAAc1zS,IAAKqzC,MAAM0tE,OAAO/rE,SAAS,cAGhE,OAAO,4CAQ+Bq7C,GAAc/jF,GACpD,IAAK+jF,GACD,OAEJ,MAAMwjN,GAAiBxjN,GAAayjN,mBACpC,OAAID,KACAvnS,EAAUA,GAAoB,CAAE1F,OAAQ,IACxC0F,EAAUtO,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GAAU,CAAE1F,OAAQ5I,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,EAAQ1F,QAAS,CAAEsoK,WAAY2kI,QAE1HvnS,GAGfomS,EAAcM,uBAAyB,IAAI7yS,IAC3CuyS,EAAcK,kCAAoC,IAAI5yS,IACtDuyS,EAAcQ,sCAAwC,IAAI/yS,IAC1DuyS,EAAcC,2BAA6B,IAAIxyS,IAM/C,QACI0K,YAAYyvB,GAAKhuB,GACb,IAAIub,GAAI+L,GAAI4S,GACZz7B,KAAKuvB,IAAMA,GACXvvB,KAAKuB,QAAUA,EACfvB,KAAK7K,MAAS,OAAM6K,KAAKuvB,MACrBhuB,IACIA,EAAQ1F,QAAU0F,EAAQ1F,OAAO3I,OAAOnB,OAAS,IACjDiO,KAAK7K,OAAU,GAAE6K,KAAK7K,MAAM80C,SAAS,KAAO,IAAM,MAAoF,QAA7EphB,GAA6B,QAAvB/L,GAAK9c,KAAKuB,eAA4B,IAAPub,QAAgB,EAASA,GAAGjhB,cAA2B,IAAPgtB,QAAgB,EAASA,GAAGj3B,cAE1K2P,EAAQ6/I,UACRphJ,KAAK7K,OAAU,YAAmC,QAAvBsmC,GAAKz7B,KAAKuB,eAA4B,IAAPk6B,QAAgB,EAASA,GAAG2lH,sBAUxF7xH,GAAK1zB,GACX,OAAO,IAAImtS,EAASz5Q,GAAK1zB,IAQjC,QACIiE,YAAYqxB,GAAY83Q,GACpBjpS,KAAKmxB,WAAaA,GAClBnxB,KAAKipS,aAAeA,oBAEN/pJ,GAAQ3vH,EAAKhuB,GAASnK,IACpC,IAAI0lB,GACJ,MAAMjhB,GAAS,CACXqjJ,UACA3vH,MACAhuB,QAAStO,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IAAU,CAAE1F,QAAqF,QAA3EihB,GAAiB,MAAZvb,QAAyC,EAASA,GAAQ1F,cAA2B,IAAPihB,QAAgB,EAASA,GAAG5pB,OAAOnB,QAAU,EAAgB,MAAZwP,QAAyC,EAASA,GAAQ1F,OAAOjK,WAAa,MAEjRwF,KACAyE,GAAOzE,KAAUA,IAErBguS,GAAYoD,SAAS1E,GAAMU,aAAc3oS,uBAE1BqjJ,GAAQ3vH,EAAKhuB,GAASzM,IACrC,IAAIgoB,GACJsoR,GAAYoD,SAAS1E,GAAMW,cAAe,CACtCvlJ,UACA3vH,MACAhuB,QAAStO,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IAAU,CAAE1F,QAAqF,QAA3EihB,GAAiB,MAAZvb,QAAyC,EAASA,GAAQ1F,cAA2B,IAAPihB,QAAgB,EAASA,GAAG5pB,OAAOnB,QAAU,EAAgB,MAAZwP,QAAyC,EAASA,GAAQ1F,OAAOjK,WAAa,KACjR2F,OAAQzC,KAWhBo0S,QAAQ35Q,GAAKhuB,EAAS21D,IAAW,GAE7B,GADAgvO,GAAgBC,oBAAoB,CAAE52Q,SAClC8yQ,GAAUh1Q,OAAOs1M,MAAMntI,SAAWt+B,GAAU,CAC5C,MAAMiyO,GAAcnpS,KAAKipS,aAAaxkP,YAAYukP,EAASvnJ,GAAGlyH,GAAKhuB,IACnE,GAAmB,MAAf4nS,GACA,OAAO1nJ,SAAG0nJ,IAIlB,IAAIjmJ,GACJ,OAFAkmJ,EAAaC,WAAW,MAAO95Q,GAAKhuB,GAGhC2hJ,GAAWljJ,KAAKmxB,WAAW97B,IAAIk6B,GAAKt8B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GADI,cAA3D,MAAZA,OAAyC,EAASA,EAAQ6/I,SACmB,CAAEA,QAAS,YAGX,CAAEA,QAAS,UAEtF8B,GAAS9iH,MAAKi+M,QAAKvpP,KACtBs0S,EAAaE,YAAY,MAAO/5Q,GAAKhuB,EAASzM,IAC1CutS,GAAUh1Q,OAAOs1M,MAAMntI,SAAWt+B,IAAYmsO,GAAiBvuS,KAC/DkL,KAAKipS,aAAaM,YAAYP,EAASvnJ,GAAGlyH,GAAKhuB,GAAUzM,OAYrE00S,SAASj6Q,GAAKn4B,EAAMmK,IAGhB,IAAI2hJ,GACJ,OAHAkmJ,EAAaC,WAAW,OAAQ95Q,GAAKhuB,GAASnK,GAC9C8uS,GAAgBC,oBAAoB,CAAE52Q,SAGlC2zH,GAAWljJ,KAAKmxB,WAAWxR,KAAK4P,GAAKn4B,EAAMnE,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IADH,cAA3D,MAAZA,QAAyC,EAASA,GAAQ6/I,SAC0B,CAAEA,QAAS,YAGX,CAAEA,QAAS,UAE7F8B,GAAS9iH,MAAKi+M,QAAKvpP,KACtBs0S,EAAaE,YAAY,OAAQ/5Q,GAAKhuB,GAASzM,IAC3CutS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,GAAKhuB,QAY7DmoS,QAAQn6Q,GAAKn4B,EAAMmK,IAGf,IAAI2hJ,GACJ,OAHAkmJ,EAAaC,WAAW,MAAO95Q,GAAKhuB,GAASnK,GAC7C8uS,GAAgBC,oBAAoB,CAAE52Q,SAGlC2zH,GAAWljJ,KAAKmxB,WAAW4wH,IAAIxyH,GAAKn4B,EAAMnE,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IADF,cAA3D,MAAZA,QAAyC,EAASA,GAAQ6/I,SACyB,CAAEA,QAAS,YAGX,CAAEA,QAAS,UAE5F8B,GAAS9iH,MAAKi+M,QAAKvpP,KACtBs0S,EAAaE,YAAY,MAAO/5Q,GAAKhuB,GAASzM,IAC1CutS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,GAAKhuB,QAY7DooS,UAAUp6Q,GAAKn4B,EAAMmK,IAGjB,IAAI2hJ,GACJ,OAHAkmJ,EAAaC,WAAW,QAAS95Q,GAAKhuB,GAASnK,GAC/C8uS,GAAgBC,oBAAoB,CAAE52Q,SAGlC2zH,GAAWljJ,KAAKmxB,WAAWugB,MAAMniB,GAAKn4B,EAAMnE,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IADJ,cAA3D,MAAZA,QAAyC,EAASA,GAAQ6/I,SAC2B,CAAEA,QAAS,YAGX,CAAEA,QAAS,UAE9F8B,GAAS9iH,MAAKi+M,QAAKvpP,KACtBs0S,EAAaE,YAAY,QAAS/5Q,GAAKhuB,GAASzM,IAC5CutS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,GAAKhuB,QAW7DqoS,WAAWr6Q,GAAKhuB,GAGZ,IAAI2hJ,GACJ,OAHAkmJ,EAAaC,WAAW,SAAU95Q,GAAKhuB,GACvC2kS,GAAgBC,oBAAoB,CAAE52Q,SAGlC2zH,GAAWljJ,KAAKmxB,WAAWlZ,OAAOsX,GAAKt8B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GADC,cAA3D,MAAZA,OAAyC,EAASA,EAAQ6/I,SACsB,CAAEA,QAAS,YAGX,CAAEA,QAAS,UAEzF8B,GAAS9iH,MAAKi+M,QAAKvpP,KACtBs0S,EAAaE,YAAY,SAAU/5Q,GAAKhuB,EAASzM,IAC7CutS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,GAAKhuB,QAMjE,QACIzB,YAAY3K,GAAO00S,GACf7pS,KAAK7K,MAAQA,GACb6K,KAAK6pS,WAAaA,OAIpBC,QAAN,SACIhqS,cACIE,KAAK+pS,SAAW,IAAI30S,IAQxBqvD,YAAYxvD,GACRixS,GAAgBC,oBAAoB,CAAElxS,QACtC,MAAM+0S,GAAahqS,KAAK+pS,SAAS10S,IAAIJ,EAAIE,OACzC,GAAIgwS,GAAM6E,IACN5E,UAAYoD,SAAS1E,GAAMQ,UAAW,CAAEpgR,SAAUjvB,EAAIE,MAAOoC,OAAQ,OAC9D,KAEX,MAAM0yS,GAAmB,IAAI51Q,KAAK21Q,GAAWH,YAE7C,OADAI,GAAiBjmE,gBAAgBimE,GAAiB77J,kBAAoBi0J,GAAUh1Q,OAAOs1M,MAAM8/D,UACzFwH,GAAiB31Q,WAAY,IAAID,MAAOC,WACxCt0B,KAAKypS,cAAcx0S,GACnBmwS,GAAYoD,SAAS1E,GAAMQ,UAAW,CAAEpgR,SAAUjvB,EAAIE,MAAOw5D,QAAS,oBAAqBp3D,OAAQ,OAC5F,OAEX6tS,GAAYoD,SAAS1E,GAAMQ,UAAW,CAAEpgR,SAAUjvB,EAAIE,MAAOoC,OAAQyyS,GAAW70S,QACzE60S,GAAW70S,OAStBo0S,YAAYt0S,EAAKE,IACb+wS,GAAgBC,oBAAoB,CAAElxS,MAAKE,WAC3C6K,KAAK+pS,SAASz0S,IAAIL,EAAIE,MAAO,IAAI+0S,EAAe/0S,GAAO,IAAIk/B,OAC3D+wQ,GAAYoD,SAAS1E,GAAMO,UAAW,CAAEngR,SAAUjvB,EAAIE,MAAOA,WAOjEs0S,cAAcx0S,GACVixS,GAAgBC,oBAAoB,CAAElxS,QAEtC,MAAMiuS,GAAejuS,EAAIs6B,IAAIrzB,QAAS,GAAEypS,EAASe,eAAgB,IAAIroS,MAAM,KAAK,GAChF,IAAK6kS,GACD,OAEJ,MAAMiH,GAAe,GACrB,UAAWjmR,MAAYlkB,KAAK+pS,SAAS72S,OAC7BgxB,GAAShpB,WAAY,OAAMyqS,EAASe,eAAexD,QACnDiH,GAAaz2S,KAAK,CACduB,IAAKivB,KAETlkB,KAAK+pS,SAAS9xR,OAAOiM,KAGzBimR,GAAap4S,OAAS,GACtBqzS,GAAYoD,SAAS1E,GAAMS,YAAa,CAAErgR,SAAUjvB,EAAIE,MAAOi1S,QAASD,MAIpFL,UAAqBnxS,UAArB,0BAAiHmxS,KACjHA,GAAqBlxS,WADkFC,MACvG,OAAqHixS,GAArHhxS,QAAqHgxS,GAArH,qBAAuJ,SAlEjJA,OA6EN,aACI,OAAO3H,GAAmB9sS,IAAIg1S,OAK5BA,QAAN,iBAAkCjB,EAC9BtpS,YAAYqxB,EAAY83Q,IACpB36R,MAAM6iB,EAAY83Q,IAStB5zS,IAAIk6B,EAAKhuB,IACL,MAAM+oS,GAAc3E,EAAS4E,qBAAqBhpS,IAClD,OAAO+M,MAAM46R,QAAQ35Q,EAAK+6Q,GAAyB,MAAZ/oS,QAAyC,EAASA,GAAQ21D,UAC5F92B,MAAKprC,QAAKF,KACX,IAAIgoB,GACJ,IAAKymR,GAAWzuS,IAAO,CACfutS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,EAAK+6Q,KAErD,MAAMp6M,GAAU,sEAAqEs6M,GAAgB11S,YACrGswS,SAAYC,cAAcvB,GAAMK,cAAe,CAC3C5iS,WACAyvB,MAAOk/D,KAEL,IAAIzmD,MAAMymD,IAEpB,OAAOy3M,EAAcU,oBAAoBvzS,GAA8F,QAAvFgoB,GAAqB,MAAhBwtR,QAAiD,EAASA,GAAYzuS,cAA2B,IAAPihB,QAAgB,EAASA,GAAGzd,IAAI,kBAC/K+9H,QAAWpsG,KAASuoK,QAAWvoK,MAUvCrR,KAAK4P,EAAKn4B,GAAMmK,IACZ,OAAO+M,MAAMk7R,SAASj6Q,EAAKn4B,GAAMuuS,EAAS4E,qBAAqBhpS,KAC1D6+B,MAAKprC,QAAKF,IACPyuS,GAAWzuS,IACJ6yS,EAAcU,oBAAoBvzS,IAEtCA,KACPsoI,QAAWpsG,KAASuoK,QAAWvoK,MAUvC+wH,IAAIxyH,EAAKn4B,GAAMmK,IACX,OAAO+M,MAAMo7R,QAAQn6Q,EAAKn4B,GAAMuuS,EAAS4E,qBAAqBhpS,KACzD6+B,MAAKprC,QAAKF,IACPyuS,GAAWzuS,IACJ6yS,EAAcU,oBAAoBvzS,IAEtCA,KACPsoI,QAAWpsG,KAASuoK,QAAWvoK,MAUvC0gB,MAAMniB,EAAKn4B,GAAMmK,IACb,OAAO+M,MAAMq7R,UAAUp6Q,EAAKn4B,GAAMuuS,EAAS4E,qBAAqBhpS,KAC3D6+B,MAAKprC,QAAKF,IACPyuS,GAAWzuS,IACJ6yS,EAAcU,oBAAoBvzS,IAEtCA,KACPsoI,QAAWpsG,KAASuoK,QAAWvoK,MASvC/Y,OAAOsX,EAAKhuB,IACR,OAAO+M,MAAMs7R,WAAWr6Q,EAAKt8B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIq0R,EAAS4E,qBAAqBhpS,KAAW,CAAE6/I,SAAsB,MAAZ7/I,QAAyC,EAASA,GAAQ6/I,SAAuB,MAAZ7/I,QAAyC,EAASA,GAAQ6/I,QAAU,cACtPhhH,MAAKprC,QAAKF,IACPyuS,GAAWzuS,IACJ6yS,EAAcU,oBAAoBvzS,IAEtCA,KACPsoI,QAAWpsG,KAASuoK,QAAWvoK,MAUvCyzB,YAAYy+O,EAAcjwR,GAAI1R,IAC1B2kS,GAAgBC,oBAAoB,CAAEjD,eAAcjwR,QACpD,MAAMsc,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,GAAcr+Q,OAAO,IAAKjzB,GAASqhB,KAClGmyR,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,YAAuBjwR,MACnF1R,aAEGvB,KAAK3K,IAAIk6B,GAAKhuB,IAUzBmpS,aAAaxH,EAAc9rS,GAAMmK,IAC7B2kS,GAAgBC,oBAAoB,CAAEjD,eAAc9rS,UACpD,MAAMm4B,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,GAC/DkC,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,KAC5D3hS,aAEGvB,KAAK2f,KAAK4P,GAAKn4B,GAAMmK,IAWhC6wD,cAAc8wO,EAAcjwR,GAAI7b,GAAMmK,IAClC2kS,GAAgBC,oBAAoB,CAAEjD,eAAcjwR,MAAI7b,UACxD,MAAMm4B,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,EAActxS,GAASqhB,KACtFmyR,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,oBAA+BjwR,MAC3F1R,aAEGvB,KAAK0xC,MAAMniB,GAAKn4B,GAAMmK,IAWjCgoS,YAAYrG,EAAcjwR,GAAI7b,GAAMmK,IAChC2kS,GAAgBC,oBAAoB,CAAEjD,eAAcjwR,MAAI7b,UACxD,MAAMm4B,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,EAActxS,GAASqhB,KACtFmyR,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,oBAA+BjwR,MAC3F1R,aAEGvB,KAAK+hJ,IAAIxyH,GAAKn4B,GAAMmK,IAU/BixD,eAAe0wO,EAAcjwR,GAAI1R,IAC7B2kS,GAAgBC,oBAAoB,CAAEjD,eAAcjwR,QACpD,MAAMsc,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,EAActxS,GAASqhB,KACtFmyR,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,oBAA+BjwR,MAC3F1R,aAEGvB,KAAKiY,OAAOsX,GAAKhuB,IAU5By0G,OAAOktL,EAAcyH,GAAappS,IAC9B2kS,GAAgBC,oBAAoB,CAAEjD,eAAcyH,iBACpD,MAAMp7Q,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,GAAcr+Q,OAAO,WAAa8lR,IACjGvF,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,qBAAgCyH,MAC5FppS,aAEGvB,KAAK3K,IAAIk6B,GAAKhuB,KAG7B8oS,UAAoB1xS,UAApB,0BAAgH0xS,IAlOTxxS,MAkO8CyxB,OAlO9CzxB,MAkOwEixS,KAC/KO,GAAoBzxS,WAnOmFC,MAmOvG,OAAoHwxS,GAApHvxS,QAAoHuxS,GAApH,qBAAqJ,SAjN/IA,OA4NN,QAOIO,gBAAgB/4O,IACZ,GAAInuD,GAAQ1D,KAAK4zD,QACb,MAAM,IAAInqB,MAAO,aAAYzpC,KAAKF,YAAYiB,0EAA0E8wD,QAE5H,MAAMo0O,EAAejmS,KAAK4zD,OAAO/B,IACjC,GAAInuD,GAAQuiS,IAAiBviS,GAAQuiS,EAAa39P,MAC9C,MAAM,IAAImB,MAAO,aAAYzpC,KAAKF,YAAYiB,8CAA8C8wD,QAEhG,OAAOo0O,EAQXvuO,YAAY7F,IACR,OAAInuD,GAAQ1D,KAAK4zD,UAILlwD,GAAQ1D,KAAK4zD,OAAO/B,UAWlCg5O,SAAN,iBAA4CzB,EACxCtpS,YAAYqxB,EAAY83Q,IACpB36R,MAAM6iB,EAAY83Q,IAStB5zS,IAAIk6B,EAAKhuB,IACL,MAAM+oS,GAAc3E,EAAS4E,qBAAqBhpS,IAClD,OAAO+M,MAAM46R,QAAQ35Q,EAAK+6Q,IACrBlqQ,MAAKprC,QAAKF,KACX,IAAIgoB,GACJ,IAAKsmR,GAAqBtuS,IAAO,CACzButS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,EAAK+6Q,KAErD,MAAMp6M,GAAU,oFAAmFs6M,GAAgB11S,YACnHswS,SAAYC,cAAcvB,GAAMK,cAAe,CAAEnzQ,MAAOk/D,GAAQ3uF,aAC1D,IAAIkoC,MAAMymD,IAEpB,OAAOy3M,EAAcY,8BAA8BzzS,GAA8F,QAAvFgoB,GAAqB,MAAhBwtR,QAAiD,EAASA,GAAYzuS,cAA2B,IAAPihB,QAAgB,EAASA,GAAGzd,IAAI,kBACzL+9H,QAAWpsG,KAASuoK,QAAWvoK,MASvC85Q,sBAAsB5H,EAAc3hS,IAChC2kS,GAAgBC,oBAAoB,CAAEjD,iBACtC,MAAM3zQ,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,GAC/DkC,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,KAC5D3hS,aAEGvB,KAAK3K,IAAIk6B,GAAKhuB,IAUzBy0G,OAAOktL,EAAcyH,GAAappS,IAC9B2kS,GAAgBC,oBAAoB,CAAEjD,eAAcyH,iBACpD,MAAMp7Q,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,GAAcr+Q,OAAO,WAAa8lR,IACjGvF,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,qBAAgCyH,MAC5FppS,aAEGvB,KAAK3K,IAAIk6B,GAAKhuB,KAG7BspS,UAA8BlyS,UAA9B,0BAA0HkyS,IApVnBhyS,MAoVkEyxB,OApVlEzxB,MAoV4FixS,KACnMe,GAA8BjyS,WArVyEC,MAqVvG,OAA8HgyS,GAA9H/xS,QAA8H+xS,GAA9H,qBAAyK,SAhEnKA,OA2EN,cACI,OAAO1I,GAAmB9sS,IAAI01S,QAK5BA,SAAN,iBAAiD3B,EAC7CtpS,YAAYqxB,EAAY83Q,IACpB36R,MAAM6iB,EAAY83Q,IAStB5zS,IAAIk6B,EAAKhuB,IACL,MAAM+oS,GAAc3E,EAAS4E,qBAAqBhpS,IAClD,OAAO+M,MAAM46R,QAAQ35Q,EAAK+6Q,GAAyB,MAAZ/oS,QAAyC,EAASA,GAAQ21D,UAC5F92B,MAAKprC,QAAKF,KACX,IAAIgoB,GACJ,IAAKqmR,GAA0BruS,IAAO,CAC9ButS,GAAUh1Q,OAAOs1M,MAAMntI,SACvBx1F,KAAKipS,aAAaQ,cAAcT,EAASvnJ,GAAGlyH,EAAK+6Q,KAErD,MAAMp6M,GAAU,qFAAoFs6M,GAAgB11S,YACpHswS,SAAYC,cAAcvB,GAAMK,cAAe,CAAEnzQ,MAAOk/D,GAAQ3uF,aAC1D,IAAIkoC,MAAMymD,IAEpB,OAAOy3M,EAAcqD,mCAAmCl2S,GAA8F,QAAvFgoB,GAAqB,MAAhBwtR,QAAiD,EAASA,GAAYzuS,cAA2B,IAAPihB,QAAgB,EAASA,GAAGzd,IAAI,kBAC9L+9H,QAAWpsG,KAASuoK,QAAWvoK,MASvCi6Q,gBAAgB/H,EAAc3hS,IAC1B2kS,GAAgBC,oBAAoB,CAAEjD,iBACtC,MAAM3zQ,GAAMo2Q,EAASY,qBAAqBZ,EAAS8E,oBAAoB9E,EAASe,YAAaxD,IAC7FkC,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,KAC5D3hS,aAEGvB,KAAK3K,IAAIk6B,GAAKo2Q,EAASuF,+BAA+B3pS,KAUjEy0G,OAAOktL,EAAcyH,GAAappS,IAC9B2kS,GAAgBC,oBAAoB,CAAEjD,eAAcyH,iBACpD,MAAMp7Q,GAAMo2Q,EAASY,qBAAqBZ,EAAS8E,oBAAoB9E,EAASe,YAAaxD,IAAer+Q,OAAO,WAAa8lR,IAChIvF,UAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,KAC5D3hS,aAEGvB,KAAK3K,IAAIk6B,GAAKo2Q,EAASuF,+BAA+B3pS,MAGrEwpS,UAAmCpyS,UAAnC,0BAA+HoyS,IAraxBlyS,MAqa4EyxB,OAra5EzxB,MAqasGixS,KAC7MiB,GAAmCnyS,WAtaoEC,MAsavG,OAAmIkyS,GAAnIjyS,QAAmIiyS,GAAnI,qBAAmL,SAhE7KA,OA2EN,iBAA2BI,EAQvBzmP,YAAYmN,GAActwD,GACtB2kS,GAAgBC,oBAAoB,CAAEt0O,kBACtCuzO,GAAYgG,iBAAiBprS,KAAM,eAAgB,CAAE6xD,gBAActwD,YACnE,MAAM0kS,GAAejmS,KAAK4qS,gBAAgB/4O,IACpCw5O,GAAmBpF,GAAaI,UAChCpzS,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GAAU,CAAE1F,YAAQjH,EAAWslB,UAAMtlB,IAAe2M,EAC1F,OAAO+pS,IACFj2S,IAAIswS,EAAS4F,gBAAgBtF,GAAc1kS,GAAU8pS,IACrDjrQ,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAexrS,KAAM,eAAgB,CAAEzI,OAAS,YAAWs6D,6BAU/E+F,qBAAqB/F,GAActwD,GAC/B2kS,GAAgBC,oBAAoB,CAAEt0O,kBACtCuzO,GAAYgG,iBAAiBprS,KAAM,yBAA0B,CAAE6xD,gBAActwD,YAC7E,MAAM0kS,GAAejmS,KAAK4qS,gBAAgB/4O,IACpCw5O,GAAmBpF,GAAaI,UAChCpzS,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GAAU,CAAE1F,YAAQjH,EAAWslB,UAAMtlB,IAAe2M,EAC1F,OAnMR,aACI,OAAO4gS,GAAmB9sS,IAAIw1S,IAkMnBY,GACFp2S,IAAIswS,EAAS4F,gBAAgBtF,GAAc1kS,GAAU8pS,IACrDjrQ,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAexrS,KAAM,yBAA0B,CAAEzI,OAAS,sBAAqBs6D,6BAWnG65O,eAAe75O,GAActwD,GACzB2kS,GAAgBC,oBAAoB,CAAEt0O,kBACtCuzO,GAAYgG,iBAAiBprS,KAAM,mBAAoB,CAAE6xD,gBAActwD,YACvE,MAAM0kS,GAAejmS,KAAK4qS,gBAAgB/4O,IACpCw5O,GAAmBpF,GAAaI,UAChCpzS,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,GAAU,CAAE1F,YAAQjH,EAAWkxS,gBAAYlxS,EAAWslB,UAAMtlB,IAAe2M,EACjH,OAAOoqS,KACFt2S,IAAIswS,EAAS4F,gBAAgBtF,GAAcN,EAASuF,+BAA+B3pS,IAAW8pS,IAC9FjrQ,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAexrS,KAAM,mBAAoB,CAAEzI,OAAS,gBAAes6D,6BAWvFxK,aAAawK,GAAc+hB,EAAaryE,IACpC2kS,GAAgBC,oBAAoB,CAAEt0O,gBAAc+hB,gBACpDwxN,GAAYgG,iBAAiBprS,KAAM,gBAAiB,CAAE6xD,gBAAc+hB,cAAaryE,aACjF,MAAM0kS,GAAejmS,KAAK4qS,gBAAgB/4O,IAC1C,OAAOy5O,IACF3rR,KAAKgmR,EAAS4F,gBAAgBtF,GAAc1kS,IAAUomS,EAAcc,cAAc70N,GAAc3gF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IAAU,CAAE6/I,SAAsB,MAAZ7/I,QAAyC,EAASA,GAAQ6/I,SAAW7/I,GAAQ6/I,QAAU,OAAQvlJ,OAAQoqS,GAAaI,WAAoC,MAAZ9kS,QAAZ3M,EAA8D2M,GAAQ1F,UAC5VukC,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAexrS,KAAM,gBAAiB,CAAEzI,OAAS,YAAWs6D,gCAYhF+5O,cAAc/5O,GAAc+hB,EAAaryE,IACrC2kS,GAAgBC,oBAAoB,CAAEt0O,gBAAc+hB,gBACpDwxN,GAAYgG,iBAAiBprS,KAAM,iBAAkB,CAAE6xD,gBAAc+hB,cAAaryE,aAClF,MAAM0kS,GAAejmS,KAAK4qS,gBAAgB/4O,IAC1C,OAAOy5O,IACF55P,MAAMi0P,EAAS4F,gBAAgBtF,GAAc1kS,IAAUomS,EAAcc,cAAc70N,GAAc3gF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IAAU,CAAE6/I,SAAsB,MAAZ7/I,QAAyC,EAASA,GAAQ6/I,SAAW7/I,GAAQ6/I,QAAU,OAAQvlJ,OAAQoqS,GAAaI,WAAoC,MAAZ9kS,QAAZ3M,EAA8D2M,GAAQ1F,UAC7VukC,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAexrS,KAAM,iBAAkB,CAAEzI,OAAS,YAAWs6D,iCAYjFg6O,YAAYh6O,GAAc+hB,EAAaryE,IACnC2kS,GAAgBC,oBAAoB,CAAEt0O,gBAAc+hB,gBACpDwxN,GAAYgG,iBAAiBprS,KAAM,eAAgB,CAAE6xD,gBAAc+hB,cAAaryE,aAChF,MAAM0kS,GAAejmS,KAAK4qS,gBAAgB/4O,IAC1C,OAAOy5O,IACFvpJ,IAAI4jJ,EAAS4F,gBAAgBtF,GAAc1kS,IAAUomS,EAAcc,cAAc70N,GAAc3gF,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI/P,IAAU,CAAE6/I,SAAsB,MAAZ7/I,QAAyC,EAASA,GAAQ6/I,SAAW7/I,GAAQ6/I,QAAU,OAAQvlJ,OAAQoqS,GAAaI,WAAoC,MAAZ9kS,QAAZ3M,EAA8D2M,GAAQ1F,UAC3VukC,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAexrS,KAAM,eAAgB,CAAEzI,OAAS,YAAWs6D,8BAYnF,iBAAuBi6O,GAYnBC,sBAAsBl6O,GAAcm6O,GAChC5G,GAAYgG,iBAAiBprS,KAAM,0BAA2B,CAAE6xD,gBAAc82O,cAAe3oS,KAAK4zD,OAAQo4O,aAC1G9F,GAAgBC,oBAAoB,CAAEt0O,gBAAcm6O,aACpD,MAAM/F,GAAejmS,KAAK4qS,gBAAgB/4O,IACpCz6D,GAAO40S,EACRh3S,IAAI0zS,IACEf,EAAcsE,aAAavD,IAAQ7C,mBAEzCrkP,KAAK,MACV,OAAO8pP,IAAyB3rR,KAAKgmR,EAAS4F,gBAAgBtF,IAAe7uS,GAAM,CAC/EgqJ,QAAS,WACTjqF,QAAS,IAAIgmF,MAAY,CAAE,eAAgB,oBAC5C/8G,MAAKi+M,QAAI,KACR+mD,GAAYoG,eAAexrS,KAAM,0BAA2B,CAAEzI,OAAS,uBAAsBs6D,mCAcrGq6O,aAAar6O,GAAcm6O,GACvB5G,GAAYgG,iBAAiBprS,KAAM,gBAAiB,CAAE6xD,gBAAc82O,cAAe3oS,KAAK4zD,OAAQo4O,aAChG9F,GAAgBC,oBAAoB,CAAEt0O,gBAAcm6O,aACpD,MAAM/F,GAAejmS,KAAK4qS,gBAAgB/4O,IAC1C,IAAIz6D,GACJ,OACIA,GADAqE,GAAQuwS,GACDA,EACFh3S,IAAI0zS,IACEf,EAAcsE,aAAavD,IAAQ7C,mBAEzCrkP,KAAK,MAGHmmP,EAAcsE,aAAaD,GAAUnG,kBAEzCyF,IAAyBvpJ,IAAI4jJ,EAAS4F,gBAAgBtF,IAAe7uS,GAAM,CAC9EgqJ,QAAS,WACTjqF,QAAS,IAAIgmF,MAAY,CAAE,eAAgB,oBAC5C/8G,MAAKi+M,QAAI,KACR+mD,GAAYoG,eAAexrS,KAAM,gBAAiB,CAAEzI,OAAS,YAAWs6D,iCAahFs6O,eAAet6O,IACXuzO,GAAYgG,iBAAiBprS,KAAM,kBAAmB,CAAE6xD,gBAAc82O,cAAe3oS,KAAK4zD,SAC1FsyO,GAAgBC,oBAAoB,CAAEt0O,kBACtC,MAAMo0O,EAAejmS,KAAK4qS,gBAAgB/4O,IAC1C,OAAOy5O,IAAyBrzR,OAAO0tR,EAAS4F,gBAAgBtF,GAAe,CAC3E7kJ,QAAS,aACVhhH,MAAKi+M,QAAI,KACR+mD,GAAYoG,eAAexrS,KAAM,kBAAmB,CAAEzI,OAAS,YAAWs6D,mCAalFu6O,yBAAyBv6O,IACrBuzO,GAAYgG,iBAAiBprS,KAAM,6BAA8B,CAAE6xD,gBAAc82O,cAAe3oS,KAAK4zD,SACrGsyO,GAAgBC,oBAAoB,CAAEt0O,kBACtC,MAAMo0O,EAAejmS,KAAK4qS,gBAAgB/4O,IAC1C,OAAOy5O,IAAyBvpJ,IAAI4jJ,EAAS4F,gBAAgBtF,GAAe,GAAI,CAC5E7kJ,QAAS,WACTjqF,QAAS,IAAIgmF,MAAY,CAAE,eAAgB,oBAC5C/8G,MAAKi+M,QAAI,KACR+mD,GAAYoG,eAAexrS,KAAM,6BAA8B,CAAEzI,OAAS,YAAWs6D,mCAc7Fw6O,eAAex6O,GAAc62O,GACzBtD,GAAYgG,iBAAiBprS,KAAM,kBAAmB,CAAE6xD,gBAAc82O,cAAe3oS,KAAK4zD,OAAQ80O,WAClGxC,GAAgBC,oBAAoB,CAAEt0O,gBAAc62O,WACpD,MAAMzC,GAAejmS,KAAK4qS,gBAAgB/4O,IACpCC,GAAW61O,EAAcsE,aAAavD,GACtC4D,GC9uDd,YAAc59M,IACZ,IAAI38F,GAAkB,MAAT28F,GAAgB,EAAIA,GAAM38F,OACvC,OAAOA,GAAS28F,GAAM38F,GAAS,QAAK6C,ED4uDX+gH,CE9tD3B,YAAe5Y,GAAQn+F,GAAWiH,GAKhC,OAJIA,GAAyB,iBAATA,GAAqB0mS,GAAexvM,GAAQn+F,GAAWiH,KACzEjH,GAAYiH,OAAQjR,IAEtBiR,OAAkBjR,IAAViR,EAzBa,WAyB4BA,IAAU,IAI3Dk3F,GAASnrG,GAASmrG,OAEQ,iBAAbn+F,IACO,MAAbA,KAAsB0tF,GAAS1tF,QAEpCA,GAAYo6R,GAAap6R,MACPu7R,GAAWp9L,IACpB49L,GAAUH,GAAcz9L,IAAS,EAAGl3F,GAGxCk3F,GAAO1+F,MAAMO,GAAWiH,GAZtB,GFwtDqBxH,CAAMsnS,EAAS4F,gBAAgBz5O,GAAS8B,OAAOC,MAAO,MAC9E,GAAIsxO,GAAMmH,KAA8B,KAAfA,GACrBlH,SAAYC,cAAcvB,GAAME,YAAa,CACzCphS,KAAM,oBACNouB,MAAO,0CACP63Q,SAAUlD,EAAS4F,gBAAgBz5O,GAAS8B,OAAOC,QAEjDpqB,MAAM,2CAEhB27P,UAAYoD,SAAS1E,GAAME,YAAa,CACpCphS,KAAM,oBACNrL,OAAQ+0S,KAELhB,IAAyBrzR,OAAO0tR,EAAS4F,gBAAgBtF,IAAgB,IAAMqG,GAAY,CAC9FlrJ,QAAS,aACVhhH,MAAKi+M,QAAI,KACR+mD,GAAYoG,eAAexrS,KAAM,kBAAmB,CAAEzI,OAAS,YAAWs6D,mCAGlFg0O,kBACI,OAAO7lS,KAAK4zD,OAAOC,KAAKvrB,MAShC,iBAAiC6iQ,EAO7BrrS,YAAY0sS,IACRl+R,QACAtO,KAAKqhC,UAAY,GACbmrQ,KACAxsS,KAAK4zD,OAAS44O,GAAK54O,OACnB5zD,KAAKqhC,UAAYmrQ,GAAKnrQ,YAsBlC,iBAA+ByqQ,IAM/B,iBAAsCW,GAOlC3sS,YAAYwoS,GAAoBoE,GAC5Bp+R,MAAMg6R,IACNtoS,KAAK2sS,cAAgBp1S,GAAOm1S,EAAU,qBAAsB,GAC5D1sS,KAAK4sS,WAAar1S,GAAOm1S,EAAU,kBAAmB,GACtD1sS,KAAK6sS,SAAWt1S,GAAOm1S,EAAU,YAAa,IAC9C1sS,KAAK8sS,WAAav1S,GAAOm1S,EAAU,cAAe,GAClD1sS,KAAK6oS,SAAWtxS,GAAOm1S,EAAU,cAAe,MAChD1sS,KAAK+sS,SAAWx1S,GAAOm1S,EAAU,cAAe,MAChD1sS,KAAKgtS,SAAWz1S,GAAOm1S,EAAU,cAAe,MAChD1sS,KAAKitS,UAAY11S,GAAOm1S,EAAU,eAAgB,MAClD1sS,KAAKktS,SAAW31S,GAAOm1S,EAAU,cAAe,MAEpDS,WACI,QAASntS,KAAKitS,aAAejtS,KAAKitS,UAAU3kQ,KAEhD8kQ,UACI,QAASptS,KAAKktS,YAAcltS,KAAKktS,SAAS5kQ,KAE9C+kQ,UACI,QAASrtS,KAAK+sS,YAAc/sS,KAAK+sS,SAASzkQ,KAE9CglQ,UACI,QAASttS,KAAKgtS,YAAchtS,KAAKgtS,SAAS1kQ,KAE9CjI,MAAM9+B,IAEF,GADA6jS,GAAYgG,iBAAiBprS,KAAKqhC,UAAU,GAAI,mBAC3CrhC,KAAKmtS,WAAY,CAClB,MAAMj9M,EAAS,yBACfk1M,UAAYC,cAAcvB,GAAME,YAAa,CAAEhzQ,MAAOk/D,KAC/CqpG,QAAW,IAAI9vJ,MAAMymD,IAEhC,OAAOq9M,GAAUvtS,KAAKitS,UAAU3kQ,KAAkB,MAAZ/mC,QAAyC,EAASA,GAAQ21D,UAAU92B,MAAKi+M,QAAI,KAC/G+mD,GAAYoG,eAAexrS,KAAKqhC,UAAU,GAAI,iBAAkB,CAAE9pC,OAAQ,+CAGlFo+G,KAAKp0G,IAED,GADA6jS,GAAYgG,iBAAiBprS,KAAKqhC,UAAU,GAAI,kBAC3CrhC,KAAKotS,UAAW,CACjB,MAAMl9M,EAAS,wBACfk1M,UAAYC,cAAcvB,GAAME,YAAa,CAAEhzQ,MAAOk/D,KAC/CqpG,QAAW,IAAI9vJ,MAAMymD,IAEhC,OAAOq9M,GAAUvtS,KAAKktS,SAAS5kQ,KAAkB,MAAZ/mC,QAAyC,EAASA,GAAQ21D,UAAU92B,MAAKi+M,QAAI,KAC9G+mD,GAAYoG,eAAexrS,KAAKqhC,UAAU,GAAI,gBAAiB,CAAE9pC,OAAQ,8CAGjFkF,KAAK8E,IAED,GADA6jS,GAAYgG,iBAAiBprS,KAAKqhC,UAAU,GAAI,kBAC3CrhC,KAAKqtS,UAAW,CACjB,MAAMn9M,EAAS,wBACfk1M,UAAYC,cAAcvB,GAAME,YAAa,CAAEhzQ,MAAOk/D,KAC/CqpG,QAAW,IAAI9vJ,MAAMymD,IAEhC,OAAOq9M,GAAUvtS,KAAK+sS,SAASzkQ,KAAkB,MAAZ/mC,QAAyC,EAASA,GAAQ21D,UAAU92B,MAAKi+M,QAAI,KAC9G+mD,GAAYoG,eAAexrS,KAAKqhC,UAAU,GAAI,gBAAiB,CAAE9pC,OAAQ,8CAGjFizG,KAAKjpG,IAED,GADA6jS,GAAYgG,iBAAiBprS,KAAKqhC,UAAU,GAAI,kBAC3CrhC,KAAKstS,UAAW,CACjB,MAAMp9M,EAAS,wBACfk1M,UAAYC,cAAcvB,GAAME,YAAa,CAAEhzQ,MAAOk/D,KAC/CqpG,QAAW,IAAI9vJ,MAAMymD,IAEhC,OAAOq9M,GAAUvtS,KAAKgtS,SAAS1kQ,KAAkB,MAAZ/mC,QAAyC,EAASA,GAAQ21D,UAAU92B,MAAKi+M,QAAI,KAC9G+mD,GAAYoG,eAAexrS,KAAKqhC,UAAU,GAAI,gBAAiB,CAAE9pC,OAAQ,8CAGjF0rC,KAAK6pQ,GAAYvrS,GACb,OAAOvB,KAAKwtS,WAAW,CAAE1H,WAAY,CAAE7iQ,KAAM6pQ,KAAgBvrS,GAEjEhB,KAAKA,GAAMgB,GACP,OAAOvB,KAAKwtS,WAAW,CAAE1H,WAAY,CAAE7iQ,KAAM,EAAG1iC,UAAUgB,GAE9DksS,aAAaC,GAAWnsS,GACpB,OAAOvB,KAAKwtS,WAAW,CAAEtzR,KAAMwzR,IAAansS,GAUhDisS,WAAW3xS,GAAQ0F,GACf6jS,GAAYgG,iBAAiBprS,KAAKqhC,UAAU,GAAI,aAAc,CAAEssQ,UAAW9xS,GAAOiqS,eAC7EjqS,GAAOiqS,YAAcpiS,GAAQ7H,GAAOiqS,eACrCjqS,GAAOiqS,WAAa,GACpBjqS,GAAOiqS,WAAW7iQ,KAAOjjC,KAAK8sS,WAC9BjxS,GAAOiqS,WAAWvlS,KAAOP,KAAK6sS,YAE7B1gN,GAAStwF,GAAOiqS,WAAW7iQ,OAASpnC,GAAOiqS,WAAW7iQ,KAAO,KAC9DpnC,GAAOiqS,WAAW7iQ,KAAOjjC,KAAK8sS,WAC9B1H,GAAYoD,SAAS1E,GAAMI,eAAgB,CACvCv1O,QAAS,uDACTi/O,kBAAmB5tS,KAAK8sS,gBAG3B3gN,GAAStwF,GAAOiqS,WAAWvlS,OAAS1E,GAAOiqS,WAAWvlS,KAAO,KAC9D1E,GAAOiqS,WAAWvlS,KAAOP,KAAK6sS,SAC9BzH,GAAYoD,SAAS1E,GAAMI,eAAgB,CACvCv1O,QAAS,qDACTk/O,gBAAiB7tS,KAAK6sS,YAG9B,MAAMiB,GAAiB9tS,KAAK2sS,cAAgB9wS,GAAOiqS,WAAWvlS,KAC9D,GAAI1E,GAAOiqS,WAAW7iQ,KAAO6qQ,GAAe,CACxC,MAAM59M,GAAU,yCAAwCwF,SAASo4M,GAAgB,GAAI,MACrF1I,UAAYC,cAAcvB,GAAMI,eAAgB,CAAElzQ,MAAOk/D,MAClDqpG,QAAWrpG,IAEtB,MAAM69M,GAAa,IAAIriI,IAAI1rK,KAAK6oS,SAASvgQ,MACzCylQ,UAAWr2L,aAAaz/F,OAAO,QAC/B81R,GAAWr2L,aAAaz/F,OAAO,QAC/B81R,GAAWr2L,aAAaz/F,OAAO,QACxBs1R,GAAUQ,GAAWzlQ,KAAkB,MAAZ/mC,OAAyC,EAASA,EAAQ21D,SAAUr7D,IAAQukC,MAAKi+M,QAAI,KACnH+mD,GAAYoG,eAAexrS,KAAKqhC,UAAU,GAAI,aAAc,CAAE9pC,OAAQ,6CAIlF,YAAmBg4B,GAAK2nC,IAAW,EAAMr7D,GACrCqqS,UAAgBC,oBAAoB,CAAE52Q,SAC/Bo8Q,KACFt2S,IAAIk6B,GAAKt8B,OAAOqe,OAAOre,OAAOqe,OAAO,GAAIzV,GAAS,CAAEq7D,mBASvD82O,SAAN,SACIluS,YAAY0uB,GACRxuB,KAAKwuB,SAAWA,EAChB2zQ,GAAmB3zQ,SAAWA,EAE9Bm5Q,EAAcsG,gBAAgBtvQ,IAC9BgpQ,EAAcuG,0BAA0BzB,IACxC9E,EAAcwG,+BAA+BC,IAC7CzG,EAAc0G,wBAAwBC,IAO1CC,UAAUlhR,GACN,IAAIvQ,GACJopR,GAAgBC,oBAAoB,CAAE94Q,SAAQmhR,QAAgF,QAAtE1xR,GAAgB,MAAXuQ,OAAuC,EAASA,EAAOsjB,YAAyB,IAAP7zB,QAAgB,EAASA,GAAGk4C,UAClKqtO,GAAUoM,UAAUphR,GACpB41Q,GAAc+B,WAAW,4CAA6C,CAClEhwO,QAAS3nC,EAAOsjB,KAAKqkB,WAIjCg5O,UAAqCr1S,UAArC,0BAAiIq1S,IA54B1Bn1S,MA44BgFA,SACvLm1S,GAAqCp1S,WA74BkEC,MA64BvG,OAAqIm1S,GAArIl1S,QAAqIk1S,GAArI,qBAAuL,SAzBjLA,OAoCAU,SAAN,iBAAwCtF,EACpCtpS,YAAYqxB,EAAY83Q,IACpB36R,MAAM6iB,EAAY83Q,IAetB0F,YAAYzL,EAAchkJ,GAAQ/mJ,GAAOf,GAAMmK,IAC3C2kS,GAAgBC,oBAAoB,CAAEjD,eAAchkJ,UAAQ/mJ,WAC5D,MAAMo3B,GAAMo2Q,EAAS8E,oBAAoB9E,EAASe,YAAaxD,EAAc/qS,IAC7EitS,GAAYoD,SAAS1E,GAAME,YAAa,CACpCzsS,OAAQg4B,GACRuqF,SAAW,aAAY6rL,EAASe,4BAA4BxD,eAA0B/qS,MACtFoJ,aAEJ,MAAM+oS,GAAc3E,EAAS4E,qBAAqBhpS,IAClD,IAAIhK,GACJ,OAAQ2nJ,SACCukJ,GAAWC,IACZnsS,GAAS+W,MAAM46R,QAAQ35Q,GAAK+6Q,IAAa,GACzC,WACC7G,GAAWE,KACZpsS,GAAS+W,MAAMk7R,SAASj6Q,GAAKn4B,GAAMkzS,IACnC,WACC7G,GAAWG,IACZrsS,GAAS+W,MAAMo7R,QAAQn6Q,GAAKn4B,GAAMkzS,IAClC,WACC7G,GAAWI,MACZtsS,GAAS+W,MAAMq7R,UAAUp6Q,GAAKn4B,GAAMkzS,IACpC,cAEA,MAAMp6M,GAAU,wDAAuDgvD,KACvEkmJ,UAAYC,cAAcvB,GAAMU,aAAc,CAAExzQ,MAAOk/D,GAAQ3uF,cACxDg4L,QAAW,IAAI9vJ,MAAMymD,KAEpC,OAAO34F,GAAO6oC,MAAKprC,QAAIF,KACnB,IAAIgoB,GACJ,MAAM6nJ,GAAuG,QAAvF7nJ,GAAqB,MAAhBwtR,QAAiD,EAASA,GAAYzuS,cAA2B,IAAPihB,QAAgB,EAASA,GAAGzd,IAAI,cACrJ,OAAI8jS,GAA0BruS,IACnB6yS,EAAcqD,mCAAmCl2S,GAAM6vK,IAEzDy+H,GAAqBtuS,IACnB6yS,EAAcY,8BAA8BzzS,GAAM6vK,IAEpD4+H,GAAWzuS,IACT6yS,EAAcU,oBAAoBvzS,GAAM6vK,IAGxC7vK,OAKvB45S,UAA0B/1S,UAA1B,0BAAsH+1S,IAv9Bf71S,MAu9B0DyxB,OAv9B1DzxB,MAu9BoFixS,KAC3L4E,GAA0B91S,WAx9B6EC,MAw9BvG,OAA0H61S,GAA1H51S,QAA0H41S,GAA1H,qBAAiK,SAhE3JA,OA8EAE,SAAN,SACI9uS,YAAY+uS,EAAmBC,GAAqBC,GAA+BC,IAC/EhvS,KAAK6uS,kBAAoBA,EACzB7uS,KAAK8uS,oBAAsBA,GAC3B9uS,KAAK+uS,8BAAgCA,GACrC/uS,KAAKgvS,mCAAqCA,GAU9CvqP,YAAY6gC,EAAcryE,GAAI1R,IAC1B2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcryE,QACpD,MAAMiwR,GAAe59M,EAAau/M,iBAClCtjS,UAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,+BAAgC,CAAEjwR,MAAI1R,aAC1EvB,KAAK8uS,oBAAoBrqP,YAAYy+O,GAAcjwR,GAAI1R,IACzD6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,+BAAgC,CAAE3rS,OAAS,iBAAgB2rS,0BAU5GgM,cAAc5pN,EAAc/jF,IACxB2kS,GAAgBC,oBAAoB,CAAE7gN,iBACtC,MAAM49M,GAAe59M,EAAau/M,iBAClCtjS,UAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,iCAAkC,CAAE3hS,aACxEvB,KAAK+uS,8BAA8BjE,sBAAsB5H,GAAc3hS,IACzE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,iCAAkC,CAAE3rS,OAAS,yBAAwB2rS,0BAUtHiM,QAAQ7pN,EAAc/jF,IAClB2kS,GAAgBC,oBAAoB,CAAE7gN,iBACtC,MAAM49M,GAAe59M,EAAau/M,iBAClCtjS,UAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,2BAA4B,CAAE3hS,aAClEvB,KAAKgvS,mCAAmC/D,gBAAgB/H,GAAc3hS,IACxE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,2BAA4B,CAAE3rS,OAAS,8BAA6B2rS,0BAWrHoE,eAAehiN,EAAc1R,GAAaryE,IACtC2kS,GAAgBC,oBAAoB,CAAE7gN,eAAc1R,iBACpD,MAAMsvN,GAAe59M,EAAau/M,iBAClCO,GAAYgG,iBAAiBlI,GAAc,kCAAmC,CAAEtvN,eAAaryE,aAC7F,MAAMnK,GAAOuwS,EAAcc,cAAc70N,IACzC,OAAO5zE,KAAK8uS,oBAAoBpE,aAAaxH,GAAc9rS,GAAMmK,IAC5D6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,kCAAmC,CAAE3rS,OAAS,aAAY2rS,kCAY3GkM,eAAe1G,EAAQ90N,GAAaryE,IAChC2kS,GAAgBC,oBAAoB,CAAEuC,WACtCtD,GAAYgG,iBAAiB1C,EAAQ,kCAAmC,CAAEtxS,KAAMw8E,IAA4B80N,EAAQnnS,aACpH,MAAMuwD,GAAW61O,EAAcsE,aAAavD,GACtCtxS,GAAOuwS,EAAcc,cAAc70N,IAA4B,CAAEx8E,KAAMsxS,IAC7E,OAAO1oS,KAAK8uS,oBAAoB/sJ,IAAIjwF,GAAS+zO,kBAAmBzuS,GAAMmK,IACjE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAe9C,EAAQ,kCAAmC,CAAEnxS,OAAS,aAAYu6D,GAAS+yO,gDAc9GwK,mBAAmB/pN,EAAcryE,GAAI2gE,GAAaryE,IAC9C2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcryE,MAAI2gE,iBACxD,MAAMsvN,GAAe59M,EAAau/M,iBAClCO,GAAYgG,iBAAiBlI,GAAc,wCAAyC,CAAEjwR,MAAI7b,KAAMw8E,GAAaryE,aAC7G,MAAMnK,GAAOuwS,EAAcc,cAAc70N,IACzC,OAAO5zE,KAAK8uS,oBAAoBvF,YAAYrG,GAAcjwR,GAAI7b,GAAMmK,IAC/D6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,wCAAyC,CAAE3rS,OAAS,aAAY2rS,eAAyBjwR,iCAc1Im/C,cAAcs2O,EAAQ90N,GAAaryE,IAC/B2kS,GAAgBC,oBAAoB,CAAEuC,WACtCtD,GAAYgG,iBAAiB1C,EAAQ,iCAAkC,CAAEtxS,KAAMw8E,IAA4B80N,EAAQnnS,aACnH,MAAMuwD,GAAW61O,EAAcsE,aAAavD,GACtCtxS,GAAOuwS,EAAcc,cAAc70N,IAA4B,CAAEx8E,KAAMsxS,IAC7E,OAAO1oS,KAAK8uS,oBAAoBp9P,MAAMogB,GAAS+zO,kBAAmBzuS,GAAMmK,IACnE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAe9C,EAAQ,iCAAkC,CAAEnxS,OAAS,aAAYmxS,EAAO7D,gDAc3GyK,kBAAkBhqN,EAAcryE,GAAI2gE,GAAaryE,IAC7C2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcryE,MAAI2gE,iBACxD,MAAMsvN,GAAe59M,EAAau/M,iBAClCO,GAAYgG,iBAAiBlI,GAAc,uCAAwC,CAAEjwR,MAAI7b,KAAMw8E,GAAaryE,aAC5G,MAAMnK,GAAOuwS,EAAcc,cAAc70N,IACzC,OAAO5zE,KAAK8uS,oBAAoB18O,cAAc8wO,GAAcjwR,GAAI7b,GAAMmK,IACjE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,uCAAwC,CAAE3rS,OAAS,aAAY2rS,eAAyBjwR,iCAUzIu/C,eAAek2O,EAAQnnS,IACnB2kS,GAAgBC,oBAAoB,CAAEuC,WACtCtD,GAAYgG,iBAAiB1C,EAAQ,kCAAmC,CAAEnnS,aAC1E,MAAMuwD,GAAW61O,EAAcsE,aAAavD,GAC5C,OAAO1oS,KAAK8uS,oBAAoB72R,OAAO65C,GAAS+zO,kBAAmBtkS,IAC9D6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAe9C,EAAQ,kCAAmC,CAAEnxS,OAAS,aAAYu6D,GAAS+yO,gDAW9G0K,mBAAmBjqN,EAAcryE,GAAI1R,IACjC2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcryE,QACpD,MAAMiwR,GAAe59M,EAAau/M,iBAClCO,UAAYgG,iBAAiBlI,GAAc,wCAAyC,CAAEjwR,MAAI1R,aACnFvB,KAAK8uS,oBAAoBt8O,eAAe0wO,GAAcjwR,GAAI1R,IAC5D6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,wCAAyC,CAAE3rS,OAAS,aAAY2rS,eAAyBjwR,iCAM1Iu8R,iBAAiBlqN,EAAcqlN,GAAappS,IACxC2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcqlN,iBACpD,MAAMzH,GAAe59M,EAAau/M,iBAClCtjS,UAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,oCAAqC,CAAE/qS,MAAOwyS,GAAappS,aAC/FvB,KAAK+uS,8BAA8B/4L,OAAOktL,GAAcyH,GAAappS,IACvE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,oCAAqC,CAAE3rS,OAAS,yBAAwB2rS,oCAMzHuM,WAAWnqN,EAAcqlN,GAAappS,IAClC2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcqlN,iBACpD,MAAMzH,GAAe59M,EAAau/M,iBAClCtjS,UAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,8BAA+B,CAAE/qS,MAAOwyS,GAAappS,aACzFvB,KAAKgvS,mCAAmCh5L,OAAOktL,GAAcyH,GAAappS,IAC5E6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,8BAA+B,CAAE3rS,OAAS,mBAAkB2rS,oCAM7GwM,eAAepqN,EAAcqlN,GAAappS,IACtC2kS,GAAgBC,oBAAoB,CAAE7gN,eAAcqlN,iBACpD,MAAMzH,GAAe59M,EAAau/M,iBAClCtjS,UAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,gCAAiC,CAAE/qS,MAAOwyS,GAAappS,aAC3FvB,KAAK8uS,oBAAoB94L,OAAOktL,GAAcyH,GAAappS,IAC7D6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,gCAAiC,CAAE3rS,OAAS,qBAAoB2rS,oCAMjHyL,YAAYrpN,EAAc45D,GAAQ/mJ,GAAOy7E,GAAaryE,IAClD2kS,GAAgBC,oBAAoB,CAAE7gN,eAAc45D,UAAQ/mJ,WAC5D,MAAM+qS,GAAe59M,EAAau/M,iBAClCtjS,GAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,+BAAgC,CACvEhkJ,OAAQukJ,GACRtrS,SACAy7E,eACAryE,aAEJ,MAAMnK,GAAOuwS,EAAcc,cAAc70N,IACzC,OAAO5zE,KAAK6uS,kBAAkBF,YAAYzL,GAAchkJ,GAAQ/mJ,GAAOf,GAAMmK,IACxE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,+BAAgC,CAAE3rS,OAAS,oBAAmB2rS,oCAS/GyM,kBAAkBrqN,EAAc45D,GAAQyrJ,GAAa/2N,GAAaryE,IAC9D2kS,GAAgBC,oBAAoB,CAAE7gN,eAAc45D,UAAQyrJ,iBAC5D,MAAMzH,GAAe59M,EAAau/M,iBAClCtjS,GAAUomS,EAAcsH,mCAAmC3pN,EAAc/jF,IACzE6jS,GAAYgG,iBAAiBlI,GAAc,sCAAuC,CAC9EhkJ,OAAQukJ,GACRkH,eACA/2N,eACAryE,aAEJ,MAAMnK,GAAOuwS,EAAcc,cAAc70N,IACnCz7E,GAAS,UAASwyS,GAAYzvS,WAAW,KAAOyvS,GAAc,IAAMA,KAC1E,OAAO3qS,KAAK6uS,kBAAkBF,YAAYzL,GAAchkJ,GAAQ/mJ,GAAOf,GAAMmK,IACxE6+B,MAAKi+M,QAAI,KACV+mD,GAAYoG,eAAetI,GAAc,sCAAuC,CAAE3rS,OAAS,2BAA0B2rS,qCAIjI0L,UAAuBj2S,UAAvB,0BAAmHi2S,IAxvCZ/1S,MAwvCoD61S,IAxvCpD71S,MAwvC0FwxS,GAxvC1FxxS,MAwvC0HgyS,IAxvC1HhyS,MAwvCoKkyS,MAC3Q6D,GAAuBh2S,WAzvCgFC,MAyvCvG,OAAuH+1S,GAAvH91S,QAAuH81S,GAAvH,qBAA2J,SAnRrJA,OAuYN,YAAyB1L,IACrB,OAAQpjS,KACJ,GGv7ER,YAAgB3K,IACd,OAAiB,OAAVA,EAAU,CHs7EP42F,CAAOm3M,KIv7EnB,YAAqB/tS,IACnB,YAAiBP,IAAVO,EAAUP,CJs7EiBi3F,CAAYq3M,MAAkBA,GACtD,MAAM,IAAIz5P,MAAO,kBAAiB3pC,GAAYiB,iIAElD,IAAK6uS,GAAmB9vS,GAAa6+B,IACjC,MAAM,IAAI8K,MAAO,kBAAiB3pC,GAAYiB,6FAA6F9N,OAAOu4H,eAAe1rH,aAErKA,UAAY+kS,iBAAsB3B,GAClCyE,EAAcM,uBAAuB3yS,IAAI4tS,GAAapmS,cAAegD,IAC9DA,IA6Df,YAA4BA,GAAam5J,IACrC,MAAgD,KAA5ChmK,OAAOu4H,eAAe1rH,IAAaiB,OAGnC9N,OAAOu4H,eAAe1rH,MAAiBm5J,IAGpC22I,GAAmB38S,OAAOu4H,eAAe1rH,IAAcm5J,SAG5D42I,SAAN,SACI/vS,YAAYutB,GAAQ,kBAGhB,MAAO,CACHC,SAAUuiR,KAItBA,UAAuBl3S,UAAvB,0BAAmHk3S,IAv8CZh3S,MAu8CoDm1S,MAC3J6B,GAAuBriR,UAx8CgF30B,MAw8CvG,MAAoHg3S,KACpHA,GAAuBpiR,UAz8CgF50B,MAy8CvG,IAXMg3S,0UKvhFN,MAAQp0S,WAAY5E,MACb,WAAwBsd,GAC3B,OAAuB,IAAhBA,EAAKpiB,QAAgB0J,EAAQ0Y,EAAK,IAAMA,EAAK,GAAKA,gBCEtD,cAAiB+nH,GACpBA,OAC0B,KAD1BA,EAAU4zK,EAAe5zK,IACVnqI,QAAeknI,QAAUiD,EAAQ,IAAM,IAAIvJ,IAEvD,WAAkBuJ,GACrB,OAAQ7J,IACJ,IAAI09K,EAAgB,GACpB,QAASj1S,EAAI,EAAGi1S,IAAkB19K,EAAWE,QAAUz3H,EAAIohI,EAAQnqI,OAAQ+I,IACvEi1S,EAAcr8S,MAAKulI,QAAUiD,EAAQphI,IAAIupF,WAAUi0C,OAAyBjG,EAAal9H,IACrF,GAAI46S,EAAe,CACf,QAASrtS,EAAI,EAAGA,EAAIqtS,EAAch+S,OAAQ2Q,IACtCA,IAAM5H,GAAKi1S,EAAcrtS,GAAGowD,cAEhCi9O,EAAgB,KAEpB19K,EAAW51H,KAAKtH,QAbyC66S,CAAS9zK,mCCJ7D,IAAIvJ,IAAW7+B,oBCI7B,cAAgB3/E,GACnB,MAAM2jH,GAAiBC,SAAkB5jH,GACnC+nH,EAAU4zK,EAAe37R,GAC/B,OAAO+nH,EAAQnqI,OACT,IAAI4gI,IAAYN,IACd,IAAI49K,EAAU/zK,EAAQlnI,IAAI,IAAM,IAC5B4wP,EAAY1pH,EAAQlnI,IAAI,KAAM,GAClCq9H,EAAWrwH,IAAI,KACXiuS,EAAUrqD,EAAY,OAE1B,QAAS/gC,EAAc,GAAIxyF,EAAWE,QAAUsyF,EAAc3oF,EAAQnqI,OAAQ8yN,KAC1E5rF,QAAUiD,EAAQ2oF,IAAcxgI,WAAUi0C,OAAyBjG,EAAal9H,IAE5E,GADA86S,EAAQprF,GAAanxN,KAAKyB,GACtB86S,EAAQzqP,MAAO64E,GAAWA,EAAOtsI,QAAS,CAC1C,MAAMwF,EAAS04S,EAAQj7S,IAAKqpI,GAAWA,EAAOzuE,SAC9CyiE,EAAW51H,KAAKq7H,EAAiBA,KAAkBvgI,GAAUA,GACzD04S,EAAQ7sS,KAAK,CAACi7H,EAAQvjI,MAAOujI,EAAOtsI,QAAU6zP,EAAU9qP,MACxDu3H,EAAWW,aAGpB,KACC4yH,EAAU/gC,IAAe,GACxBorF,EAAQprF,GAAa9yN,QAAUsgI,EAAWW,cAGnD,MAAO,KACHi9K,EAAUrqD,EAAY,QAG5BxuH,mKC9BH,YAAmB84K,EAAuBC,GAC7C,OAAIA,EACQprQ,IAAWlgB,QAAOsrR,EAAkB/vQ,MAAKy9F,QAAK,GCJvD,cACH,OAAOhF,QAAQ,CAAC9zF,EAAQstF,KACpBttF,EAAOs/C,WAAUi0C,OAAyBjG,EAAYv+B,SDEIs8M,IAAmBrrQ,EAAO3E,KAAKiwQ,GAAUH,MAEhGn1K,QAAS,CAAC5lI,EAAO2e,IAAUo8R,EAAsB/6S,EAAO2e,GAAOssB,MAAKy9F,QAAK,IAAIgzH,QAAM17P,KENvF,YAAeunI,EAAK9E,EAAY2E,MACnC,MAAMjkI,GAAWg4S,OAAM5zK,EAAK9E,GAC5B,OAAOy4K,GAAU,IAAM/3S,wEC6PiEO,MA+VtF,cA/VsFA,MAgWpF,GAhWoFA,MAgWrE,0BAhWqEA,wCA+VzD,oBA/VyDA,MAgWpF,GAhWoFA,MAgWpF,gBAhWoFA,MAgWxD,GAhWwDA,MAgWxD,uIAhWwDA,cAyWpF,WAzWoFA,MAyW7D,4BAzW6DA,MAyW7D2Z,GAzW6D3Z,QAyW7Di6I,uBAzW6Dj6I,MA2WlF,WA3WkFA,MA4W7E,0BA5W6EA,kDAyW/E,WAzW+EA,MAyWV,kCAzWUA,MA4WhE,GA5WgEA,MA4WhE,6JA5WgEA,MAoWtF,QApWsFA,CAoWtF,WApWsFA,MAsWlF,0BAtWkFA,cAyWpF,kBAzWoFA,6DAoWjF,2BApWiFA,MAqW3C,GArW2CA,MAqW3C,6DArW2CA,MAqWpE,wBArWoEA,MAsWrE,GAtWqEA,MAsWrE,uEAtWqEA,CAsWrE,0BAtWqEA,MAsWrE,kBAtWqEA,MA0W9E,GA1W8EA,MA0W9E,gHA1W8EA,MA42OtF,UA52OsFA,MA42OtF,KA52OsFA,uDA42OD,GA52OCA,YA42OD,yBA52OCA,MA42OD,8BA52OCA,MA2uQtF,cA3uQsFA,MA2uQ9D,GA3uQ8DA,oCA2uQ9D,GA3uQ8DA,MA2uQ9D2Z,8DA3uQ8D3Z,cA8uQtF,WA9uQsFA,MA+uQpF,0BA/uQoFA,MAgvQpF,cAhvQoFA,MAgvQY,mBAhvQZA,aAgvQY2Z,GAAS23C,EAhvQrBtxD,MAgvQqB03S,SAhvQrB13S,MAivQlF,YAjvQkFA,MAivQzD,UAjvQyDA,qDA+uQvE,GA/uQuEA,MA+uQvE,2CA/9QrB,YAAkB1D,GACd,MAAwB,iBAAVA,CAAU,CAE5B,YAAkBA,GACd,OAAQwgG,MAbZ,YAAmBxgG,GACf,OAAOugG,SAAU,GAAEvgG,IAAS,IAYd++N,CAAU/+N,IAK5B,YAAmBA,GACf,OAAwC,MAAjCA,CAAiC,CA2D5C,YAAgB/C,GACZ,OAAQA,GAAWV,SAAS0F,MAAMgyQ,wBAxCf,oBAAZ5yQ,UAA4BA,QAAQi0F,UAAU+lN,UAErDh6S,QAAQi0F,UAAU+lN,QAAU,SAAU9tS,GAElC,IAAI2oB,EAAKrrB,KACT,IAAKtO,SAASgF,gBAAgBE,SAASy0B,GACnC,OAAO,KAEX,EAAG,CACC,GAAIA,EAAG9xB,QAAQmJ,GACX,OAAO2oB,EAEXA,EAAKA,EAAGmrM,eAAiBnrM,EAAGh1B,iBAChB,OAAPg1B,GAA+B,IAAhBA,EAAGrtB,UAC3B,OAAO,OAsDf,MAAMyyS,GAAc,CAChBnuS,WAAW,EACXouS,uBAAwB,GAGtBC,GAAS,QACPD,2BAA2BD,GAC7BG,GAAqB,IAAIx7S,IACzBy7S,GAAmB,CAACnkR,EAAMt6B,EAAS0+S,EAASvvS,KAE9C,IAAItE,EAAUsE,EAAQtE,SAAW,GAEjC,MAAM8zS,EAAUH,GAAmBv7S,IAAIjD,GACvC,GAAI2+S,EACA,OAAQxvS,EAAQyvS,uBAGP,WACD,OAAO55K,SAIN,OACD1qG,EAAKvC,IAAI,IAAM4mR,EAAQE,YAAYj+K,YACnC/1H,EAAUhK,OAAOqe,OAAOy/R,EAAQ9zS,QAASA,GACzC2zS,GAAmB34R,OAAO7lB,GAItC,MAAM8+S,EAAQJ,EAAQ1+S,EAASmP,EAAQe,UAAWrF,IAAY0zS,GAK9D,IAAKpvS,EAAQe,WAAqE,SAAxD7Q,OAAOyM,iBAAiB9L,GAAS++S,mBACvDzkR,SAAKvC,IAAI,IAAM+mR,MACRzvJ,aAAG7sJ,GAAWwrC,KAzD7B,YAAmB1T,GACf,OAAQqY,GACG,IAAI4tF,IAAWqC,GAIXjwF,EAAOs/C,UAAU,CAAE5nF,KAHZtH,GAAUu3B,EAAKvC,IAAI,IAAM6qG,EAASv4H,KAAKtH,IAGrB67B,MAFjB38B,GAAMq4B,EAAKvC,IAAI,IAAM6qG,EAAShkG,MAAM38B,IAEZ2+H,SADtB,IAAMtmG,EAAKvC,IAAI,IAAM6qG,EAAShC,cACRA,CAmDjBo+K,CAAU1kR,IAGxC,MAAMukR,EAAc,IAAIh/K,IAClBo/K,EAAoB,IAAIp/K,IACxBq/K,EAAQL,EAAY7wQ,KC3JvB,eAAoBl+B,GACvB,OAAQ6iC,IAAWlgB,QAAOkgB,GAAQ08G,WAAMv/I,ID0JTqvS,EAAQ,IACvCX,GAAmBt7S,IAAIlD,EAAS,CAC5B6+S,cACAj+K,SAAU,KACNq+K,EAAkB50S,OAClB40S,EAAkBr+K,YAEtB/1H,YAEJ,MAAMu0S,GAzDV,YAAiCp/S,GAC7B,MAAQq/S,kBAAiBC,sBAAuBjgT,OAAOyM,iBAAiB9L,GAGxE,OAAsD,KAF3BsH,WAAW+3S,GACR/3S,WAAWg4S,GACa,CAqDzBC,CAAwBv/S,GAOrDs6B,SAAKrC,kBAAkB,KACnB,MAAMunR,IAAiBv3K,OAAUjoI,EAAS,iBAAiBguC,MAAKsvN,QAAU4hD,IAAQlpS,QAAO,EAAGuD,aAAaA,KAAWvZ,IAEpHqvO,GADe6uE,OAAMkB,GAAuBd,IAAwBtwQ,MAAKsvN,QAAU4hD,IACtEM,GAAgBP,GAAmBjxQ,MAAKsvN,QAAU4hD,IAAQjtN,UAAU,KAC7EusN,GAAmB34R,OAAO7lB,GAC1Bs6B,EAAKvC,IAAI,KACL+mR,IACAD,EAAYx0S,OACZw0S,EAAYj+K,iBAIjBi+K,EAAY57K,gBAwBjBw8K,GAA0B,CAACz/S,EAASkQ,EAAWrF,KACjD,IAAM60S,YAAWC,aAAc90S,EAC/B,MAAQ8f,aAAc3qB,EACtB,aACI2qB,EAAU/a,IAAI,YACI,SAAlBiV,EACI8F,EAAU/a,IAAI,QAGd+a,EAAU0G,OAAO,QAIzB,GAAKnhB,EAKL,OAAKyvS,IACDA,EApCR,YAA0C3/S,GAEtC,GAAyB,oBAAdsjO,UACP,MAAO,MAEX,MAAQ34M,aAAc3qB,EAChB4/S,EAAgBj1R,EAAUnmB,SAAS,QACpCo7S,GACDj1R,EAAU/a,IAAI,QAElB5P,EAAQkF,MAAMk+B,OAAS,GACvB,MAAMA,EAASpjC,EAAQg3Q,wBAAwB5zO,OAAS,KACxD,OAAKw8Q,GACDj1R,EAAU0G,OAAO,QAEd+R,EAqBSy8Q,CAAiC7/S,GAC7C6K,EAAQ80S,UAAYA,EAEpB3/S,EAAQkF,MAAMk+B,OAAuB,SAAds8Q,EAAuBC,EAAY,MAC1Dh1R,EAAU0G,OAAO,YACjB1G,EAAU0G,OAAO,cACjB1G,EAAU0G,OAAO,QACjByuR,GAAO9/S,GAEP2qB,EAAU/a,IAAI,eAGlB5P,EAAQkF,MAAMk+B,OAAuB,SAAds8Q,EAAuBC,EAAY,MACnD,KACHI,IACAp1R,EAAU0G,OAAO,cACjBrxB,EAAQkF,MAAMk+B,OAAS,IArBvB28Q,GAqBuB,MASzBC,SAAN,QACItyS,cACIE,KAAKsC,UAAYmuS,GAAYnuS,WAGrC8vS,SAAUz5S,UAAV,0BAAsGy5S,IACtGA,EAAUx5S,WADkFC,MAC5F,OAA0Gu5S,EAA1Gt5S,QAA0Gs5S,EAA1G,qBAAiI,SAN3HA,MAkBAC,SAAN,QACIvyS,YAAYwyS,GACRtyS,KAAKsyS,WAAaA,EAClBtyS,KAAKuyS,aAAc,EAEnBjwS,gBAAc,YAA4B1N,IAApBoL,KAAKwyS,WAA4BxyS,KAAKsyS,WAAWhwS,UAAYtC,KAAKwyS,WACxFlwS,cAAUA,GAAatC,KAAKwyS,WAAalwS,GAEjD+vS,SAAmB15S,UAAnB,0BAA+G05S,GArBnBx5S,MAqBuDu5S,MACnJC,EAAmBz5S,WAtByEC,MAsB5F,OAAmHw5S,EAAnHv5S,QAAmHu5S,EAAnH,qBAAmJ,SAT7IA,MAeFI,GAAW,EAUTC,SAAN,QACI5yS,YAAY60I,GACR30I,KAAK20I,YAAcA,GAG3B+9J,SAAe/5S,UAAf,0BAA2G+5S,GA3Cf75S,MA2C+CA,SAC3I65S,EAAe7/J,UA5C6Eh6I,MA4C5F,MAA+F65S,EAA/FtkR,kDANMskR,MAgBAC,SAAN,QACI7yS,YAAY60I,GACR30I,KAAK20I,YAAcA,GAG3Bg+J,SAAch6S,UAAd,0BAA0Gg6S,GA3Dd95S,MA2D6CA,SACzI85S,EAAc9/J,UA5D8Eh6I,MA4D5F,MAA8F85S,EAA9FvkR,iDANMukR,MAcAC,SAAN,QACI9yS,YAAY60I,GACR30I,KAAK20I,YAAcA,GAG3Bi+J,SAAgBj6S,UAAhB,0BAA4Gi6S,GAzEhB/5S,MAyEiDA,SAC7I+5S,EAAgB//J,UA1E4Eh6I,MA0E5F,MAAgG+5S,EAAhGxkR,mDANMwkR,MAcAC,SAAN,QACI/yS,cAIIE,KAAKnL,UAAW,EAMhBmL,KAAKiT,GAAM,aAAYw/R,KACvBzyS,KAAK8yS,QAAS,EAEd9yS,KAAK+yS,eAAgB,EAErB/yS,KAAKgzS,mBAAoB,EAMzBhzS,KAAKizS,MAAQ,IAAI91P,MAMjBn9C,KAAKkzS,OAAS,IAAI/1P,MAEtByzG,wBAKI5wJ,KAAKmzS,SAAWnzS,KAAKozS,UAAU/yQ,MAC/BrgC,KAAKqzS,UAAYrzS,KAAKszS,WAAWjzQ,MACjCrgC,KAAKuzS,WAAavzS,KAAKwzS,YAAYnzQ,OAG3CwyQ,SAASl6S,UAAT,0BAAqGk6S,IACrGA,EAAShgK,UA3HmFh6I,MA2H5F,MAAyFg6S,EAAzFzkR,kEA3H4Fv1B,MA2H5F4pD,EAA6TkwP,GAA7T,GA3H4F95S,MA2H5F4pD,EAAuXiwP,GAAvX,GA3H4F75S,MA2H5F4pD,EAAmbmwP,GAAnb,eA3H4F/5S,MA2H5F6J,EA3H4F7J,WA2H5Foe,eA3H4Fpe,MA2H5F6J,EA3H4F7J,WA2H5Foe,gBA3H4Fpe,MA2H5F6J,EA3H4F7J,WA2H5Foe,kJAzCM47R,MAqEAY,SAAN,QACI3zS,YAAY4zS,GACR1zS,KAAK0zS,IAAMA,EACX1zS,KAAK2zS,OAAS,IAAIx2P,MAEtB7qB,WAAatyB,KAAK2zS,OAAOp2P,KAAKv9C,KAAK0zS,IAAIvkQ,eACvCnjB,cAAgBhsB,KAAK2zS,OAAOp2P,KAAK,OAErCk2P,SAAgB96S,UAAhB,0BAA4G86S,GA/JhB56S,MA+JiDA,SAC7I46S,EAAgB5gK,UAhK4Eh6I,MAgK5F,MAAgG46S,EAAhGrlR,yDATMqlR,MAsBAG,SAAN,QACI9zS,YAAYutB,EAAQuoL,EAASi+F,GACzB7zS,KAAK41M,QAAUA,EACf51M,KAAK6zS,gBAAkBA,EAOvB7zS,KAAK8zS,UAAY,GAIjB9zS,KAAK+zS,eAAgB,EAMrB/zS,KAAKg0S,YAAc,IAAI72P,MAMvBn9C,KAAKizS,MAAQ,IAAI91P,MAOjBn9C,KAAKkzS,OAAS,IAAI/1P,MAClBn9C,KAAKsC,UAAY+qB,EAAO/qB,UACxBtC,KAAK9C,KAAOmwB,EAAOnwB,KACnB8C,KAAKi0S,iBAAmB5mR,EAAOklR,YAKnC2B,WAAWC,GAAW,OAAOn0S,KAAK8zS,UAAUr+S,QAAQ0+S,IAAW,EAM/Dj2K,OAAOi2K,GAAWn0S,KAAKo0S,iBAAiBp0S,KAAKq0S,eAAeF,IAAU,GAMtEG,YACQt0S,KAAKi0S,iBACyB,IAA1Bj0S,KAAK8zS,UAAU/hT,QAAgBiO,KAAKg+B,OAAOjsC,QAC3CiO,KAAKo0S,iBAAiBp0S,KAAKg+B,OAAOqC,OAAO,GAI7CrgC,KAAKg+B,OAAOprC,QAAQ2hT,GAASv0S,KAAKo0S,iBAAiBG,GAAO,IAQlEC,SAASL,GAAWn0S,KAAKo0S,iBAAiBp0S,KAAKq0S,eAAeF,IAAU,GAIxEM,cACIz0S,KAAKg+B,OAAOprC,QAAS2hT,IAAYv0S,KAAKo0S,iBAAiBG,GAAO,KAOlEG,OAAOP,GACH,MAAMI,EAAQv0S,KAAKq0S,eAAeF,GAC9BI,GACAv0S,KAAKo0S,iBAAiBG,GAAQA,EAAMzB,QAG5CliJ,wBAEQxkE,GAASpsF,KAAK8zS,aACd9zS,KAAK8zS,UAAY9zS,KAAK8zS,UAAUz1S,MAAM,YAG1C2B,KAAKg+B,OAAOprC,QAAQ2hT,IAAWA,EAAMzB,QAAUyB,EAAM1/S,UAAYmL,KAAK8zS,UAAUr+S,QAAQ8+S,EAAMthS,KAAM,IAEhGjT,KAAK8zS,UAAU/hT,OAAS,GAAKiO,KAAKi0S,mBAClCj0S,KAAK20S,aAAa30S,KAAK8zS,UAAU,IAAI,GACrC9zS,KAAK40S,oBAGT50S,KAAK41M,QAAQ7C,SAAS3yK,MAAKy9F,QAAK,IAAIx5C,UAAU,KAC1CrkF,KAAKg+B,OAAOprC,QAAQ2hT,IAChB,MAAMM,EAAeN,EAAMO,SACvBD,EACKN,EAAMxB,gBACPwB,EAAMxB,eAAgB,EACtBlC,GAAiB7wS,KAAK41M,QAASi/F,EAAchD,GAAyB,CAClEvvS,WAAW,EACX0uS,kBAAmB,WACnB/zS,QAAS,CAAE60S,UAAWyC,EAAMzB,OAAS,OAAS,WAMtDyB,EAAMxB,eAAgB,MAKtCqB,iBAAiBG,EAAOrkS,GACpB,GAAa,MAATqkS,IAAkBA,EAAM1/S,UAAY0/S,EAAMzB,SAAW5iS,EAAW,CAChE,IAAI4vG,GAAmB,EACvB9/G,KAAKg0S,YAAYz2P,KAAK,CAAE42P,QAASI,EAAMthS,GAAI/C,UAAWA,EAAW2tD,eAAgB,KAAQiiD,GAAmB,KACvGA,IACDy0L,EAAMzB,OAAS5iS,EACfqkS,EAAMvB,mBAAoB,EACtB9iS,GAAalQ,KAAKi0S,kBAClBj0S,KAAK20S,aAAaJ,EAAMthS,IAE5BjT,KAAK40S,mBACL50S,KAAK+0S,gBAAgB/0S,KAAKsC,aAItCqyS,aAAaR,EAASa,GAAmB,GACrCh1S,KAAKg+B,OAAOprC,QAAQ2hT,IACZA,EAAMthS,KAAOkhS,GAAWI,EAAMzB,SAC9ByB,EAAMzB,QAAS,EACfyB,EAAMvB,kBAAoBgC,KAItCX,eAAeF,GAAW,OAAOn0S,KAAKg+B,OAAO53B,KAAKiU,GAAKA,EAAEpH,KAAOkhS,IAAY,KAC5ES,mBACI50S,KAAK8zS,UAAY9zS,KAAKg+B,OAAO51B,OAAOmsS,GAASA,EAAMzB,SAAWyB,EAAM1/S,UAAUG,IAAIu/S,GAASA,EAAMthS,IAErG8hS,gBAAgBzyS,GAGZtC,KAAK6zS,gBAAgBvwG,gBACrBtjM,KAAKg+B,OAAOprC,QAAQ2hT,IAGZA,EAAMvB,mBAENnC,GAAiB7wS,KAAK41M,QADD2+F,EAAMO,SACkBjD,GAAyB,CAClEvvS,YACA0uS,kBAAmB,OACnB/zS,QAAS,CAAE60S,UAAWyC,EAAMzB,OAAS,OAAS,UAC/CzuN,UAAU,KACTkwN,EAAMvB,mBAAoB,EAC1B,MAAQ//R,MAAOshS,EACXA,EAAMzB,QACNyB,EAAMtB,MAAM11P,OACZv9C,KAAKizS,MAAM11P,KAAKtqC,KAGhBshS,EAAMrB,OAAO31P,OACbv9C,KAAKkzS,OAAO31P,KAAKtqC,SAOzC2gS,SAAaj7S,UAAb,0BAAyGi7S,GA5Vb/6S,MA4V2Cw5S,IA5V3Cx5S,MA4V0EA,OA5V1EA,MA4VgGA,SAC5L+6S,EAAa3qJ,UA7V+EpwJ,MA6V5F,MAA6F+6S,EAA7FxlR,qEA7V4Fv1B,MA6V5F4pD,EAA6iBowP,GAA7iB,cA7V4Fh6S,MA6V5F6J,EA7V4F7J,WA6V5Foe,gCAAgZ,UAAhZ,0DA7V4Fpe,MA6V5F,gnBA7V4FA,MA8VxF,2BA9VwFA,aAmWxF,4BANJ,MA7V4FA,MAmW3D,GAnW2DA,MAmW3D,sBANjCoyJ,6BAoB6EynJ,GAA0GuC,GAAiI/4N,KAA+JA,KAAiJA,KAAwHu3N,KApBhuBvrR,kBAhLM0rR,MA8PAqB,SAAN,QACIn1S,YAAYo1S,EAAWX,GACnBv0S,KAAKk1S,UAAYA,EACjBl1S,KAAKu0S,MAAQA,EAEbY,mBAAeZ,GACXA,IACAv0S,KAAKu0S,MAAQA,IAIzBU,SAAet8S,UAAf,0BAA2Gs8S,GAtbfp8S,MAsb+C+6S,IAtb/C/6S,MAsbwEg6S,GAApK,KACAoC,EAAepiK,UAvb6Eh6I,MAub5F,MAA+Fo8S,EAA/F7mR,6DAA+N,UAA/N87H,2CAvb4FrxJ,MAub5F,0BAA+Foe,iCAA/F,MAvb4Fpe,MAub5F,6BAvb4FA,MAub5F,+BAvb4FA,CAub5F,4BAvb4FA,MAub5F,0EAZMo8S,MAqCAG,SAAN,SAEAA,SAAmBz8S,UAAnB,0BAA+Gy8S,IAC/GA,EAAmB5nR,UAndyE30B,MAmd5F,MAAgHu8S,IAChHA,EAAmB3nR,UApdyE50B,MAod5F,UAA8I,CAACw2B,SAJzI+lR,MA+GAC,SAAN,SAEAA,SAAe18S,UAAf,0BAA2G08S,IAC3GA,EAAe7nR,UAlkB6E30B,MAkkB5F,MAA4Gw8S,IAC5GA,EAAe5nR,UAnkB6E50B,MAmkB5F,UAAsI,CAACw2B,SAJjIgmR,MAUAC,SAAN,SAEAA,SAAe38S,UAAf,0BAA2G28S,IAC3GA,EAAeziK,UA5kB6Eh6I,MA4kB5F,MAA+Fy8S,EAA/FlnR,gFA5kB4Fv1B,MA4kB5F,SA5kB4FA,CA4kB5F,kBA5kB4FA,CA4kB5F,sBA5kB4FA,CA4kB5F,sBAHMy8S,MAqFFC,GAAW,EAOTC,SAAN,QACI11S,cACIE,KAAKy1S,QAAU,IAAIz2S,IACnBgB,KAAKkyH,OAAS,KASdlyH,KAAKe,KAAQ,aAAYw0S,KACzBv1S,KAAK6/G,SAAY1jH,MACjB6D,KAAKuiN,UAAY,MAAM,CAEvB1tN,eAAa,OAAOmL,KAAK01S,UACzB7gT,aAAS8tN,GAAc3iN,KAAK0iN,iBAAiBC,GACjDgzF,cAAcC,GACV51S,KAAKijN,WAAW2yF,EAAMzgT,OACtB6K,KAAK6/G,SAAS+1L,EAAMzgT,OAExB0gT,qBAAuB71S,KAAK81S,qBAC5B9iS,SAAS4iS,GAAS51S,KAAKy1S,QAAQzzS,IAAI4zS,GACnCnzF,iBAAiBryM,GAAMpQ,KAAK6/G,SAAWzvG,EACvCoyM,kBAAkBpyM,GAAMpQ,KAAKuiN,UAAYnyM,EACzCsyM,iBAAiBC,GACb3iN,KAAK01S,UAAY/yF,EACjB3iN,KAAK+1S,wBAETC,WAAWJ,GAAS51S,KAAKy1S,QAAQx9R,OAAO29R,GACxC3yF,WAAW9tN,GACP6K,KAAKkyH,OAAS/8H,EACd6K,KAAK81S,qBAETA,qBAAuB91S,KAAKy1S,QAAQ7iT,QAASgjT,GAAUA,EAAMK,YAAYj2S,KAAKkyH,SAC9E6jL,wBAA0B/1S,KAAKy1S,QAAQ7iT,QAASgjT,GAAUA,EAAMM,mBAEpEV,SAAc78S,UAAd,0BAA0G68S,IAC1GA,EAAc3iK,UA5sB8Eh6I,MA4sB5F,MAA8F28S,EAA9FpnR,sDAAkM,cAAlMgyG,+BA5sB4FvnI,MA4sBmI,CAAC,CAAEuzB,QAAS02L,MAAmB57G,aAAa++C,SAAW,IAAMuvJ,GAAgBt/S,OAAO,QAvC7Ss/S,MAsDAW,SAAN,QACIr2S,YAAYo/G,EAAQk3L,EAAQpuR,EAAW/vB,EAAU6uN,GAC7C9mN,KAAKk/G,OAASA,EACdl/G,KAAKo2S,OAASA,EACdp2S,KAAKgoB,UAAYA,EACjBhoB,KAAK/H,SAAWA,EAChB+H,KAAK8mN,IAAMA,EACX9mN,KAAKkyH,OAAS,KACdlyH,KAAKk/G,OAAOlsG,SAAShT,MACrBA,KAAKk2S,iBAKL/gT,UAAMA,GACN6K,KAAKkyH,OAAS/8H,EACd,MAAMkrS,EAAclrS,EAAQA,EAAMvD,WAAa,GAC/CoO,KAAKgoB,UAAUe,YAAY/oB,KAAK/H,SAASk3C,cAAe,QAASkxP,GACjErgS,KAAKk/G,OAAO22L,qBAKZhhT,aAAS8tN,GACT3iN,KAAK01S,WAA2B,IAAf/yF,EACjB3iN,KAAKk2S,iBAELG,YAAQC,GACJt2S,KAAKo2S,SACLp2S,KAAKo2S,OAAOC,QAAUC,GAErBA,GACDt2S,KAAKk/G,OAAOqjG,YAGhBg0F,cAAY,OAAOv2S,KAAKw2S,SACxB3hT,eAAa,OAAOmL,KAAKk/G,OAAOrqH,UAAYmL,KAAK01S,UACjDvgT,YAAU,OAAO6K,KAAKkyH,OACtBukL,eAAa,OAAOz2S,KAAKe,MAAQf,KAAKk/G,OAAOn+G,KACjDirB,cAAgBhsB,KAAKk/G,OAAO82L,WAAWh2S,MACvC6/G,WAAa7/G,KAAKk/G,OAAOy2L,cAAc31S,MACvCi2S,YAAY9gT,GAEJ6K,KAAK7K,QAAUA,GACf6K,KAAK8mN,IAAIpuE,eAEb14I,KAAKw2S,SAAWx2S,KAAK7K,QAAUA,EAC/B6K,KAAKo2S,OAAO74L,OAASv9G,KAAKw2S,SAE9BN,iBAAmBl2S,KAAKo2S,OAAOvhT,SAAWmL,KAAKnL,UAEnDshT,SAASx9S,UAAT,0BAAqGw9S,GA9wBTt9S,MA8wBmC28S,IA9wBnC38S,MA8wB6Dy8S,IA9wB7Dz8S,MA8wBwFA,OA9wBxFA,MA8wBiHA,OA9wBjHA,MA8wB2IA,SACvOs9S,EAAStjK,UA/wBmFh6I,MA+wB5F,MAAyFs9S,EAAzF/nR,0FA/wB4Fv1B,MA+wB5F,2BAAyFoe,cA/wBGpe,CA+wB5F,qCAAmG,GA/wBPA,CA+wB5F,oCAAmG,IAAnG,KA/wB4FA,MA+wB5F,oBA/wB4FA,CA+wB5F,sBA/wB4FA,CA+wB5F,6EApDMs9S,MA2EAO,SAAN,SAEAA,SAAiB/9S,UAAjB,0BAA6G+9S,IAC7GA,EAAiBlpR,UAzyB2E30B,MAyyB5F,MAA8G69S,IAC9GA,EAAiBjpR,UA1yB2E50B,MA0yB5F,IAJM69S,MAseAC,SAAN,SAEAA,SAAkBh+S,UAAlB,0BAA8Gg+S,IAC9GA,EAAkBnpR,UA/wC0E30B,MA+wC5F,MAA+G89S,IAC/GA,EAAkBlpR,UAhxC0E50B,MAgxC5F,UAA4I,CAACw2B,SAJvIsnR,MA2GAC,SAAN,SAEAA,SAAkBj+S,UAAlB,0BAA8Gi+S,IAC9GA,EAAkBppR,UA13C0E30B,MA03C5F,MAA+G+9S,IAC/GA,EAAkBnpR,UA33C0E50B,MA23C5F,IAJM+9S,MA8/BN,IAAIC,GAAG,MACN,OAAUA,EAaRA,KAAQA,GAAM,KAZTA,EAAIC,IAAS,GAAK,MACtBD,EAAIA,EAAIE,MAAW,IAAM,QACzBF,EAAIA,EAAIG,OAAY,IAAM,SAC1BH,EAAIA,EAAII,MAAW,IAAM,QACzBJ,EAAIA,EAAIK,OAAY,IAAM,SAC1BL,EAAIA,EAAIM,SAAc,IAAM,WAC5BN,EAAIA,EAAIO,IAAS,IAAM,MACvBP,EAAIA,EAAIlvQ,KAAU,IAAM,OACxBkvQ,EAAIA,EAAIQ,UAAe,IAAM,YAC7BR,EAAIA,EAAIS,QAAa,IAAM,UAC3BT,EAAIA,EAAIU,WAAgB,IAAM,aAC9BV,EAAIA,EAAIW,UAAe,IAAM,YAb7BX,GACH,IAAUA,CADPA,EAAG,GA4dP,MAAMY,EAAgB,CAACrlT,EAASs8F,MAAUA,GAAQA,EAAMtrF,KAAKrI,GAAQA,EAAKnE,SAASxE,IAC7EslT,EAAuB,CAACtlT,EAAS6D,KAAcA,GAA0C,MAnhG/F,YAAiB7D,EAAS6D,GAatB,OAZKA,QAY0B,IAApB7D,EAAQo+S,QAGZp+S,EAAQo+S,QAAQv6S,GAFZ,IAEYA,CAmgGsCu6S,CAAQp+S,EAAS6D,GAG5E0hT,GAI0B,oBAAdjiF,aAA8BA,UAAUnS,YAHlC,mBAAmB18H,KAAK6uI,UAAUnS,YACjD,YAAY18H,KAAK6uI,UAAUnS,YAAcmS,UAAUkiF,gBAAkBliF,UAAUkiF,eAAiB,GAC7E,UAAU/wN,KAAK6uI,UAAUnS,YAMrD,YAAsB72L,EAAMh7B,EAAUwL,EAAM+kO,EAAO41E,EAASC,EAAgB1H,EAAgB2H,GAEpF76S,GACAwvB,EAAKrC,kBAJcja,IAAMunS,GAAW,IAAM1wP,WAAW,IAAM72C,IAAM,KAAOA,EAIjD4nS,CAAmB,KACtC,MAeMC,GAAW59K,OAAU3oI,EAAU,WAChC0uC,MAAKsvN,QAAUmoD,IAEpBzvS,QAAO/T,IAAKA,GAAE6jT,QAAUrB,GAAIG,SAAS34D,QAAIhqP,IAAKA,GAAEwpE,mBAG1Cs6O,IAAc99K,OAAU3oI,EAAU,aAAa0uC,MAAKprC,QArB9BjB,KACxB,MAAM3B,GAAU2B,GAAM4X,OACtB,OAAqB,IAAjB5X,GAAMqkT,SAAgBX,EAAcrlT,GAASg+S,KAGpC,WAATlzS,EACOu6S,EAAcrlT,GAAS0lT,IAAmBJ,EAAqBtlT,GAAS2lT,GAEjE,YAAT76S,GACGu6S,EAAcrlT,GAAS0lT,GAGxBJ,EAAqBtlT,GAAS2lT,KAAoBN,EAAcrlT,GAAS0lT,OASLpoD,QAAUmoD,IACvFQ,IAAmBh+K,OAAU3oI,EAAU,WACxC0uC,MAAK0vN,QAAeqoD,KAAc/vS,QAAO,EAAEjM,GAAGm8S,MAAiBA,IAAc//S,GAAM,IAAIm3P,QAAUmoD,IACtGp2E,EAAK,CACDw2E,EAAS73Q,MAAKprC,QAAImH,IAAK,IAAkBk8S,GAAiBj4Q,MAAKprC,QAAImH,IAAK,MACzEkoF,UAAWt/C,IAAWrY,EAAKvC,IAAI,IAAM83M,EAAMl9L,SAK1D,MAAMwzQ,EAA8B,CAChC,UAAW,yBAA0B,6CAA8C,yBACnF,2BAA4B,oBAAqB,mCACnD/2P,KAAK,MAIP,WAAsCpvD,GAClC,MAAMosJ,EAAO3nJ,MAAMC,KAAK1E,EAAQ2E,iBAAiBwhT,IAC5CnwS,OAAOijB,IAAsB,IAAhBA,EAAGmtR,UACrB,MAAO,CAACh6J,EAAK,GAAIA,EAAKA,EAAKzsJ,OAAS,IAkLxC,MAAM0mT,GAAqB,MACrBC,EAAkB,IAtIxB,SACIlhF,aAAaplO,GAAW,OAAOX,OAAOyM,iBAAiB9L,GACvDumT,SAASvmT,EAASe,GAAQ,OAAO6M,KAAKw3N,aAAaplO,GAASe,GAC5DylT,mBAAmBxmT,GACf,MAA4D,YAApD4N,KAAK24S,SAASvmT,EAAS,aAAe,SAAc,CAEhEymT,aAAazmT,GACT,IAAI0mT,EAAiB1mT,EAAQymT,cAAgBnnT,SAASgF,gBACtD,KAAOoiT,GAAkBA,IAAmBpnT,SAASgF,iBAAmBsJ,KAAK44S,mBAAmBE,IAC5FA,EAAiBA,EAAeD,aAEpC,OAAOC,GAAkBpnT,SAASgF,gBAEtCwsI,SAAS9wI,EAAS2c,GAAQ,GACtB,IAAIgqS,EACAC,EAAe,CAAE9vK,MAAO,EAAG1zG,OAAQ,EAAGyjR,IAAK,EAAGC,OAAQ,EAAG9/M,KAAM,EAAGC,MAAO,GAC7E,GAA2C,UAAvCr5F,KAAK24S,SAASvmT,EAAS,YACvB2mT,EAAa3mT,EAAQg3Q,wBACrB2vC,EAAa,CACTE,IAAKF,EAAWE,IAChBC,OAAQH,EAAWG,OACnB9/M,KAAM2/M,EAAW3/M,KACjBC,MAAO0/M,EAAW1/M,MAClB7jE,OAAQujR,EAAWvjR,OACnB0zG,MAAO6vK,EAAW7vK,WAGrB,CACD,MAAM4vK,EAAiB94S,KAAK64S,aAAazmT,GACzC2mT,EAAa/4S,KAAKlN,OAAOV,GAAS,GAC9B0mT,IAAmBpnT,SAASgF,kBAC5BsiT,EAAeh5S,KAAKlN,OAAOgmT,GAAgB,IAE/CE,EAAaC,KAAOH,EAAeK,UACnCH,EAAa5/M,MAAQ0/M,EAAeM,WAExCL,SAAWE,KAAOD,EAAaC,IAC/BF,EAAWG,QAAUF,EAAaC,IAClCF,EAAW3/M,MAAQ4/M,EAAa5/M,KAChC2/M,EAAW1/M,OAAS2/M,EAAa5/M,KAC7BrqF,IACAgqS,EAAWE,IAAMn2S,KAAKiM,MAAMgqS,EAAWE,KACvCF,EAAWG,OAASp2S,KAAKiM,MAAMgqS,EAAWG,QAC1CH,EAAW3/M,KAAOt2F,KAAKiM,MAAMgqS,EAAW3/M,MACxC2/M,EAAW1/M,MAAQv2F,KAAKiM,MAAMgqS,EAAW1/M,QAEtC0/M,EAEXjmT,OAAOV,EAAS2c,GAAQ,GACpB,MAAMsqS,EAAQjnT,EAAQg3Q,wBAChBkwC,MACG7nT,OAAO8nT,QAAU7nT,SAASgF,gBAAgByiT,UAD7CG,OAEI7nT,OAAO+nT,QAAU9nT,SAASgF,gBAAgB0iT,WAEpD,IAAIK,EAAW,CACXjkR,OAAQ6jR,EAAM7jR,QAAUpjC,EAAQsnT,aAChCxwK,MAAOmwK,EAAMnwK,OAAS92I,EAAQunT,YAC9BV,IAAKI,EAAMJ,IAAMK,MACjBJ,OAAQG,EAAMH,OAASI,MACvBlgN,KAAMigN,EAAMjgN,KAAOkgN,OACnBjgN,MAAOggN,EAAMhgN,MAAQigN,QAEzB,OAAIvqS,IACA0qS,EAASjkR,OAAS1yB,KAAKiM,MAAM0qS,EAASjkR,QACtCikR,EAASvwK,MAAQpmI,KAAKiM,MAAM0qS,EAASvwK,OACrCuwK,EAASR,IAAMn2S,KAAKiM,MAAM0qS,EAASR,KACnCQ,EAASP,OAASp2S,KAAKiM,MAAM0qS,EAASP,QACtCO,EAASrgN,KAAOt2F,KAAKiM,MAAM0qS,EAASrgN,MACpCqgN,EAASpgN,MAAQv2F,KAAKiM,MAAM0qS,EAASpgN,QAElCogN,EAKXG,iBAAiBhkS,EAAaikS,EAAeC,EAAWC,GACpD,MAAOC,EAAmB,MAAOC,EAAqB,UAAYH,EAAUz7S,MAAM,KAC5E67S,EAAiBH,EAAe/5S,KAAKlN,OAAO8iB,GAAa,GAAS5V,KAAKkjI,SAASttH,GAAa,GAC7FukS,EAAiBn6S,KAAKw3N,aAAaqiF,GACnCO,EAAY1gT,WAAWygT,EAAeC,WACtCC,GAAe3gT,WAAWygT,EAAeE,cACzCC,GAAa5gT,WAAWygT,EAAeG,YACvCC,GAAc7gT,WAAWygT,EAAeI,aAC9C,IAAIC,GAAc,EACdC,GAAe,EACnB,OAAQT,OACC,MACDQ,GAAeN,EAAejB,KAAOY,EAAcH,aAAeU,EAAYC,IAC9E,UACC,SACDG,GAAeN,EAAejB,IAAMiB,EAAe1kR,OACnD,UACC,OACDilR,GAAgBP,EAAe9gN,MAAQygN,EAAcF,YAAcW,GAAaC,IAChF,UACC,QACDE,GAAgBP,EAAe9gN,KAAO8gN,EAAehxK,MAG7D,OAAQ+wK,OACC,MACDO,GAAcN,EAAejB,IAC7B,UACC,SACDuB,GAAcN,EAAejB,IAAMiB,EAAe1kR,OAASqkR,EAAcH,aACzE,UACC,OACDe,GAAeP,EAAe9gN,KAC9B,UACC,QACDqhN,GAAeP,EAAe9gN,KAAO8gN,EAAehxK,MAAQ2wK,EAAcF,YAC1E,UACC,SACwB,QAArBK,GAAmD,WAArBA,EAC9BS,GAAgBP,EAAe9gN,KAAO8gN,EAAehxK,MAAQ,EAAI2wK,EAAcF,YAAc,EAG7Fa,GAAeN,EAAejB,IAAMiB,EAAe1kR,OAAS,EAAIqkR,EAAcH,aAAe,EAMzGG,EAAcviT,MAAMi+B,UAAa,aAAYzyB,KAAKiM,MAAM0rS,UAAoB33S,KAAKiM,MAAMyrS,SAEvF,MAAME,GAAcb,EAAczwC,wBAC5BjyK,GAAOzlG,SAASgF,gBAChBikT,GAAelpT,OAAOi3O,aAAevxI,GAAKyjN,aAC1CC,GAAcppT,OAAO+2O,YAAcrxI,GAAK2jN,YAC9C,OAAOJ,GAAYthN,MAAQ,GAAKshN,GAAYzB,KAAO,GAAKyB,GAAYrhN,OAASwhN,IACzEH,GAAYxB,QAAUyB,KAelC,YAA0B/kS,EAAaikS,EAAeC,EAAWC,EAAcgB,GAC3E,IAAIC,EAAgBnkT,MAAM4E,QAAQq+S,GAAaA,EAAYA,EAAUz7S,MAAMo6S,IAC3E,MAAMwC,EAAoB,CACtB,MAAO,SAAU,OAAQ,QAAS,WAAY,YAAa,cAAe,eAAgB,WAAY,cACtG,YAAa,gBAEXl+R,EAAY88R,EAAc98R,UAC1Bm+R,EAAsBC,KACxB,MAAO3sE,GAAS1iF,IAAaqvJ,GAAgB98S,MAAM,KAC7Cq6J,GAAU,GAChB,OAAIqiJ,IACAriJ,GAAQhlK,KAAM,GAAEqnT,KAAavsE,MACzB1iF,IACA4M,GAAQhlK,KAAM,GAAEqnT,KAAavsE,MAAW1iF,MAE5C4M,GAAQ9lK,QAASi1F,KAAgB9qE,EAAU/a,IAAI6lF,OAE5C6wE,IAGPqiJ,GACAE,EAAkBroT,QAASwoT,KAAwBr+R,EAAU0G,OAAQ,GAAEs3R,KAAaK,QAGxF,IAAIC,EAAUL,EAAcnzP,UAAUr6C,IAAe,SAARA,IACzC6tS,GAAW,GACXJ,EAAkBroT,QAAQ,SAAU4H,IAC+B,MAA3DwgT,EAAc50S,KAAKoH,KAAiC,IAA1BA,GAAIwoG,OAAO,IAAMx7G,MAC3CwgT,EAAc1gT,OAAO+gT,IAAW,EAAG7gT,MAM/C,MAAMlD,GAAQuiT,EAAcviT,MAC5BA,GAAM4rI,SAAW,WACjB5rI,GAAM2hT,IAAM,IACZ3hT,GAAM8hG,KAAO,IACb9hG,GAAM,eAAiB,YACvB,IAAIgkT,GAAgB,KAChBC,IAAe,EACnB,IAAKD,MAAiBN,EAAe,CACjC,IAAIQ,GAAeN,EAAmBI,IACtC,GAAI5C,EAAgBkB,iBAAiBhkS,EAAaikS,EAAeyB,GAAevB,GAAe,CAC3FwB,IAAe,EACf,MAGAR,GACAS,GAAa5oT,QAASi1F,KAAgB9qE,EAAU0G,OAAOokE,MAG/D,OAAK0zN,KAEDD,GAAgBN,EAAc,GAC9BE,EAAmBI,IACnB5C,EAAgBkB,iBAAiBhkS,EAAaikS,EAAeyB,GAAevB,IAEzEuB,GAgnBkB,IAAIjnR,KAAK,KAAM,GAAI,IACpB,IAAIA,KAAK,KAAM,GAAI,QAm/BzConR,SAAN,SAEAA,SAAoB9iT,UAApB,0BAAgH8iT,IAChHA,EAAoBjuR,UA1uJwE30B,MA0uJ5F,MAAiH4iT,IAEjHA,EAAoBhuR,UA5uJwE50B,MA4uJ5F,UAAgJ,CAACw2B,KAAckB,UALzJkrR,MAwBAC,SAAN,QACI57S,cACIE,KAAK27S,WAAY,EACjB37S,KAAK85S,UAAY,CAAC,cAAe,eAAgB,WAAY,cAGrE4B,SAAkB/iT,UAAlB,0BAA8G+iT,IAC9GA,EAAkB9iT,WAtwJ0EC,MAswJ5F,OAAkH6iT,EAAlH5iT,QAAkH4iT,EAAlH,qBAAiJ,SAP3IA,MAaAE,SAAN,SAEAA,SAAUjjT,UAAV,0BAAsGijT,IACtGA,EAAU/oK,UA/wJkFh6I,MA+wJ5F,MAA0F+iT,EAA1FxtR,8BAHMwtR,MAcAC,SAAN,QACI/7S,YAAY4qM,EAAY1iL,GACpBhoB,KAAK0qM,WAAaA,EAClB1qM,KAAKgoB,UAAYA,EACjBhoB,KAAK01S,WAAY,EAEjB7gT,aAASM,GACT6K,KAAK01S,UAAsB,KAAVvgT,IAA0B,IAAVA,EAIjC6K,KAAKgoB,UAAUe,YAAY/oB,KAAK0qM,WAAWv7J,cAAe,WAAYnvC,KAAK01S,WAE3E7gT,eAAa,OAAOmL,KAAK01S,WAEjCmG,SAAgBljT,UAAhB,0BAA4GkjT,GAzyJhBhjT,MAyyJiDA,OAzyJjDA,MAyyJ2EA,SACvKgjT,EAAgBhpK,UA1yJ4Eh6I,MA0yJ5F,MAAgGgjT,EAAhGztR,gHA1yJ4Fv1B,MA0yJ5F,4BA1yJ4FA,MA0yJ5F,wDAhBMgjT,MA6BAC,SAAN,QACIh8S,YAAYi8S,EAAUz5F,GAClBtiN,KAAK+7S,SAAWA,EAChB/7S,KAAK85S,UAAY,SACjB95S,KAAK8yS,QAAS,EACd9yS,KAAKmvC,cAAgBmzK,EAAYnzK,eAGzC2sQ,SAAgBnjT,UAAhB,0BAA4GmjT,GA/zJhBjjT,OA+zJiDotJ,SAAW,IAAM+1J,KA/zJlEnjT,MA+zJ2FA,SACvLijT,EAAgBjpK,UAh0J4Eh6I,MAg0J5F,MAAgGijT,EAAhG1tR,6EAh0J4Fv1B,MAg0J5F4pD,EAA2sBo5P,GAA3sB,cAh0J4FhjT,MAg0J5F6J,EAh0J4F7J,WAg0J5Foe,4DAh0J4Fpe,MAg0J5F,qCAAgGoe,yBAh0JJpe,CAg0J5F,uCAAgGoe,yBAh0JJpe,CAg0J5F,kCAAgGoe,yBAh0JJpe,CAg0J5F,iCAAgGoe,yBAh0JJpe,CAg0J5F,mCAAgGoe,yBAh0JJpe,CAg0J5F,mCAAgGoe,yBAh0JJpe,CAg0J5F,iCAAgGoe,yBAh0JJpe,CAg0J5F,uCAAgGoe,0BAAhG,MAh0J4Fpe,MAg0J5F,2BAh0J4FA,MAg0J5F,mBAh0J4FA,CAg0J5F,gCATMijT,MA8CAG,SAAN,QACIn8S,YAAYi8S,EAAUz5F,GAClBtiN,KAAK+7S,SAAWA,EAChB/7S,KAAKmvC,cAAgBmzK,EAAYnzK,eAGzC8sQ,SAAkBtjT,UAAlB,0BAA8GsjT,GA32JlBpjT,OA22JqDotJ,SAAW,IAAM+1J,KA32JtEnjT,MA22J+FA,SAC3LojT,EAAkBppK,UA52J0Eh6I,MA42J5F,MAAkGojT,EAAlG7tR,mHA52J4Fv1B,MA42J5F,wCAPMojT,MAsBAC,SAAN,gBAAgCD,GAC5Bn8S,YAAYi8S,EAAUrxG,GAClBp8L,MAAMytS,EAAUrxG,IAGxBwxG,SAAkBvjT,UAAlB,0BAA8GujT,GAh4JlBrjT,OAg4JqDotJ,SAAW,IAAM+1J,KAh4JtEnjT,MAg4J+FA,SAC3LqjT,EAAkBrpK,UAj4J0Eh6I,MAi4J5F,MAAkGqjT,EAAlG9tR,mHAj4J4Fv1B,MAi4J5F,0BAAkGoe,qBAj4JNpe,CAi4J5F,qCAAkGoe,yBAj4JNpe,CAi4J5F,uCAAkGoe,yBAj4JNpe,CAi4J5F,kCAAkGoe,yBAj4JNpe,CAi4J5F,iCAAkGoe,yBAj4JNpe,CAi4J5F,iCAAkGoe,yBAj4JNpe,CAi4J5F,uCAAkGoe,0BAAlG,KAj4J4Fpe,MAi4J5F,gDAj4J4FA,MAi4Jyf,CAAC,CAAEuzB,QAAS6vR,GAAmB/0M,aAAa++C,SAAW,IAAMi2J,MAj4JtjBrjT,SA23JtFqjT,MAiCAF,SAAN,QACIl8S,YAAY+zS,EAAiBxmR,EAAQ8uR,EAAWvmG,EAAS0M,EAAat6L,EAAWo0R,GAC7Ep8S,KAAK6zS,gBAAkBA,EACvB7zS,KAAKm8S,UAAYA,EACjBn8S,KAAK41M,QAAUA,EACf51M,KAAKsiN,YAAcA,EACnBtiN,KAAKgoB,UAAYA,EACjBhoB,KAAKq8S,SAAW,IAAIpqL,IACpBjyH,KAAKs8S,eAAiB,KAItBt8S,KAAKu8S,OAAQ,EAQbv8S,KAAKw8S,WAAa,IAAIr/P,MACtBn9C,KAAK85S,UAAYzsR,EAAOysR,UACxB95S,KAAKy/J,UAAYpyI,EAAOoyI,UACxBz/J,KAAK27S,UAAYtuR,EAAOsuR,UACxB37S,KAAK6iB,QAAUu5R,EAAY,SAAW,UACtCp8S,KAAKy8S,kBAAoB7mG,EAAQ7C,SAAS1uH,UAAU,KAAQrkF,KAAK08S,kBAErE/rJ,qBACI3wJ,KAAK41M,QAAQ7C,SAAS3yK,MAAKy9F,QAAK,IAAIx5C,UAAU,KAC1CrkF,KAAK28S,yBACD38S,KAAKu8S,OACLv8S,KAAK48S,sBAIjB19O,YAAYC,GAOR,GANIA,EAAQsgG,WAAaz/J,KAAKu8S,OAC1Bv8S,KAAK68S,gBAAgB78S,KAAKy/J,WAE1BtgG,EAAQ26O,YAAc36O,EAAQ26O,UAAUptJ,eACxC1sJ,KAAK28S,yBAELx9O,EAAQ29O,cAAe,CACvB,MAAQz9O,eAAczgD,iBAAkBugD,EAAQ29O,cAChD98S,KAAK+8S,0BAA0B19O,EAAczgD,IAMrDk0R,SAAW,OAAO9yS,KAAKu8S,MAIvBh4Q,OACSvkC,KAAKu8S,QACNv8S,KAAKu8S,OAAQ,EACbv8S,KAAK68S,gBAAgB78S,KAAKy/J,WAC1Bz/J,KAAKw8S,WAAWj/P,MAAK,GACrBv9C,KAAK48S,oBACD58S,KAAKg9S,SACLh9S,KAAKg9S,QAAQ7tQ,cAAc8tQ,SAIvCL,oBACIM,GAAal9S,KAAK41M,QAAS51M,KAAKm8S,UAAWn8S,KAAK27S,UAAY52Q,IACxD/kC,KAAKiiO,QACU,IAAXl9L,GACA/kC,KAAKg9S,QAAQ7tQ,cAAc8tQ,SAEhCj9S,KAAKq8S,SAAUr8S,KAAKm9S,MAAQ,CAACn9S,KAAKm9S,MAAMhuQ,eAAiB,GAAInvC,KAAKg9S,QAAU,CAACh9S,KAAKg9S,QAAQ7tQ,eAAiB,GAAI,oCAKtH8yL,QACQjiO,KAAKu8S,QACLv8S,KAAKu8S,OAAQ,EACbv8S,KAAKo9S,kBACLp9S,KAAKq8S,SAAS5/S,OACduD,KAAKw8S,WAAWj/P,MAAK,GACrBv9C,KAAK6zS,gBAAgBn7J,gBAM7Bg8J,SACQ10S,KAAK8yS,SACL9yS,KAAKiiO,QAGLjiO,KAAKukC,OAGbvY,cACIhsB,KAAKo9S,kBACLp9S,KAAKq8S,SAAS5/S,OACduD,KAAKy8S,kBAAkB3pP,cAE3BuqP,UAAUtpT,GAEN,MAAMkB,EAAMlB,EAAMmkT,MACZoF,EAAet9S,KAAKu9S,mBAC1B,IAAIr6K,GAAW,EACXs6K,EAAc,KAClB,MAAMC,EAAoBz9S,KAAK09S,mBAAmB3pT,GAYlD,IAXK0pT,GAAqBH,EAAavrT,QACnCurT,EAAa1qT,QAAQ,CAACmI,EAAM+Y,KACpB/Y,EAAKnE,SAAS7C,EAAM4X,UACpB6xS,EAAcziT,GAEdA,IAASiF,KAAKm8S,UAAUwB,gBACxBz6K,EAAWpvH,KAKnB7e,IAAQ4hT,GAAII,OAAShiT,IAAQ4hT,GAAIE,OASrC,GAAI9hT,IAAQ4hT,GAAIC,KAwChB,GAAI2G,GAAqBD,EAAa,CAElC,GADAx9S,KAAKukC,OACD+4Q,EAAavrT,OAAQ,CACrB,OAAQkD,QACC4hT,GAAIW,UACLt0K,EAAWpgI,KAAKstF,IAAI8yC,EAAW,EAAGo6K,EAAavrT,OAAS,GACxD,WACC8kT,GAAIS,QACL,GAAIt3S,KAAK49S,cAA4B,IAAb16K,EAAiB,CACrCA,EAAWo6K,EAAavrT,OAAS,EACjC,MAEJmxI,EAAWpgI,KAAKC,IAAImgI,EAAW,EAAG,GAClC,WACC2zK,GAAIlvQ,KACLu7F,EAAW,EACX,WACC2zK,GAAIO,IACLl0K,EAAWo6K,EAAavrT,OAAS,EAGzCurT,EAAap6K,GAAU+5K,QAE3BlpT,EAAM8pE,uBA9DN,GAAI9pE,EAAM4X,QAAU3L,KAAK8yS,UAAY9yS,KAAK27S,UACtC,IAAI37S,KAAKg9S,QAAQ7tQ,gBAAkBp7C,EAAM4X,OAcrC,YAbuB,SAAnB3L,KAAKy/J,WAAyB1rK,EAAM0nO,SAU/B1nO,EAAM0nO,UACXz7N,KAAKiiO,SALLjiO,KAAKgoB,UAAU5sB,aAAa4E,KAAKm9S,MAAMhuQ,cAAe,WAAY,KAClEnvC,KAAKm9S,MAAMhuQ,cAAc8tQ,QACzBj9S,KAAKgoB,UAAUsD,gBAAgBtrB,KAAKm9S,MAAMhuQ,cAAe,cAK7D,GAEwB,SAAnBnvC,KAAKy/J,UAAsB,CAChC,MAAMo+I,EAAoB79S,KAAKm9S,MAAMhuQ,cAAcp4C,iBAAiBwhT,GAChExkT,EAAM0nO,UAAY1nO,EAAM4X,SAAWkyS,EAAkB,IACrD79S,KAAKg9S,QAAQ7tQ,cAAc8tQ,QAC3BlpT,EAAM8pE,mBAEA9pE,EAAM0nO,UAAY1nO,EAAM4X,SAAWkyS,EAAkBA,EAAkB9rT,OAAS,KACtFiO,KAAKg9S,QAAQ7tQ,cAAc8tQ,QAC3Bj9S,KAAKiiO,cAIT5nG,OAAUtmI,EAAM4X,OAAQ,YAAYy0B,MAAKy9F,QAAK,IAAIx5C,UAAU,EAAGy5N,oBACtD99S,KAAKsiN,YAAYnzK,cAAcv4C,SAASknT,IACzC99S,KAAKiiO,gBAxCjBu7E,KAAmC,IAAnBx9S,KAAK27S,WAAyC,WAAnB37S,KAAK27S,aAIhDthL,OAAUmjL,EAAa,SAASp9Q,MAAKy9F,QAAK,IAAIx5C,UAAU,IAAMrkF,KAAKiiO,QAmEjEpkK,CAGd+/O,YAAc,OAAO59S,KAAKsiN,YAAYnzK,cAAcpyB,UAAUnmB,SAAS,UACvE8mT,mBAAmB3pT,GACf,OAAOiM,KAAKg9S,QAAQ7tQ,cAAcv4C,SAAS7C,EAAM4X,QAErD4xS,mBACI,MAAMQ,EAAO/9S,KAAKm9S,MAClB,OAAY,MAARY,EACO,GAEJA,EAAKC,UAAU51S,OAAOrN,IAASA,EAAKlG,UAAUG,IAAI+F,GAAQA,EAAK2vM,WAAWv7J,eAErFutQ,gBACI,MAAMqB,EAAO/9S,KAAKm9S,MACdn9S,KAAK8yS,UAAYiL,GACjB/9S,KAAK28S,uBAAwC,YAAjB38S,KAAK6iB,QAAwB+2R,GAAiB55S,KAAKg9S,QAAQ7tQ,cAAenvC,KAAKs8S,gBAAkBt8S,KAAKm9S,MAAMhuQ,cAAenvC,KAAK85S,UAA8B,SAAnB95S,KAAKy/J,WACxKz/J,KAAKi+S,mBAAmBj+S,KAAK85S,YAGzCmE,mBAAmBnE,GACf,OAAOjjT,MAAM4E,QAAQq+S,GAAaA,EAAU,GAAKA,EAAUz7S,MAAM,KAAK,GAE1E++S,kBACI,MAAMt0R,EAAW9oB,KAAKgoB,UACtB,GAAIhoB,KAAKm9S,MAAO,CACZ,MACMe,EAAsBl+S,KAAKm9S,MAAMhuQ,cACvCrmB,EAAS8B,YAFe5qB,KAAKsiN,YAAYnzK,cAEH+uQ,GACtCp1R,EAAS2C,YAAYyyR,EAAqB,YAC1Cp1R,EAAS2C,YAAYyyR,EAAqB,aAE1Cl+S,KAAKs8S,iBACLxzR,EAASY,YAAY1pB,KAAKm8S,UAAU/kT,KAAM4I,KAAKs8S,gBAC/Ct8S,KAAKs8S,eAAiB,MAG9BO,gBAAgBp9I,EAAY,MAExB,GADAz/J,KAAKo9S,kBACa,SAAd39I,EAAsB,CACtB,MAAM32I,EAAW9oB,KAAKgoB,UAChBk2R,EAAsBl+S,KAAKm9S,MAAMhuQ,cACjCgvQ,EAAgBn+S,KAAKs8S,eAAiBt8S,KAAKs8S,gBAAkBxzR,EAAS0B,cAAc,OAE1F1B,EAASyC,SAAS4yR,EAAe,WAAY,YAC7Cr1R,EAASyC,SAAS2yR,EAAqB,WAAY,UACnDp1R,EAASyC,SAAS4yR,EAAe,UAAW,QAC5Cr1R,EAAS8B,YAAYuzR,EAAeD,GACpCp1R,EAAS8B,YAAY5qB,KAAKm8S,UAAU/kT,KAAM+mT,GAE9Cn+S,KAAK+8S,0BAA0B/8S,KAAK88S,eAExCC,0BAA0BqB,EAAUC,GAChC,MAAMxE,EAAmC,SAAnB75S,KAAKy/J,UAAuBz/J,KAAKs8S,eAAiBt8S,KAAKsiN,YAAYnzK,cACrF0qQ,IACIwE,GACAr+S,KAAKgoB,UAAUnQ,YAAYgiS,EAAewE,GAE1CD,GACAp+S,KAAKgoB,UAAU9R,SAAS2jS,EAAeuE,IAInDzB,uBAAuB7C,GACnB,MAAMiE,EAAO/9S,KAAKm9S,MAClB,GAAIY,EAAM,CACDjE,IACDA,EAAY95S,KAAKi+S,mBAAmBj+S,KAAK85S,YAE7C,MAAMhxR,EAAW9oB,KAAKgoB,UAChBs2R,EAAkBt+S,KAAKsiN,YAAYnzK,cAEzCrmB,EAASjR,YAAYymS,EAAiB,UACtCx1R,EAASjR,YAAYymS,EAAiB,YACtCP,EAAKjE,UAA6B,WAAjB95S,KAAK6iB,QAAuB,KAAOi3R,EAKpD,MAAMgD,GAA6C,IAA7BhD,EAAU9jM,OAAO,QAAiB,SAAW,WACnEltF,EAAS5S,SAASooS,EAAiBxB,GACnC,MAAMqB,EAAgBn+S,KAAKs8S,eACvB6B,IACAr1R,EAASjR,YAAYsmS,EAAe,UACpCr1R,EAASjR,YAAYsmS,EAAe,YACpCr1R,EAAS5S,SAASioS,EAAerB,MAKjDd,SAAYrjT,UAAZ,0BAAwGqjT,GAtrKZnjT,MAsrKyCA,OAtrKzCA,MAsrK0E6iT,IAtrK1E7iT,MAsrKwG0vB,MAtrKxG1vB,MAsrK6HA,OAtrK7HA,MAsrKmJA,OAtrKnJA,MAsrK6KA,OAtrK7KA,MAsrKsM+iT,GAAlS,KACAI,EAAYnpK,UAvrKgFh6I,MAurK5F,MAA4FmjT,EAA5F5tR,0EAvrK4Fv1B,MAurK5F4pD,EAA4bq5P,GAA5b,GAvrK4FjjT,MAurK5F4pD,EAAqhBw5P,GAArhB,eAvrK4FpjT,MAurK5F6J,EAvrK4F7J,WAurK5Foe,iBAvrK4Fpe,MAurK5F6J,EAvrK4F7J,WAurK5Foe,gEAvrK4Fpe,MAurK5F,2OAvrK4FA,SA45JtFmjT,MA8TAuC,SAAN,SAEAA,SAAkB5lT,UAAlB,0BAA8G4lT,IAC9GA,EAAkB/wR,UA7tK0E30B,MA6tK5F,MAA+G0lT,IAC/GA,EAAkB9wR,UA9tK0E50B,MA8tK5F,IAJM0lT,MAUN,SACIz+S,YAAYme,EAAOs2H,EAASw3D,GACxB/rM,KAAKie,MAAQA,EACbje,KAAKu0I,QAAUA,EACfv0I,KAAK+rM,aAAeA,GAG5B,SACIjsM,YAAYq/L,EAAOl6F,EAAWywC,EAAmB1tH,EAAW4tL,EAAS4oG,GACjEx+S,KAAKm/L,MAAQA,EACbn/L,KAAKilG,UAAYA,EACjBjlG,KAAK01I,kBAAoBA,EACzB11I,KAAKgoB,UAAYA,EACjBhoB,KAAK41M,QAAUA,EACf51M,KAAKw+S,gBAAkBA,EACvBx+S,KAAKy+S,WAAa,KAClBz+S,KAAK0+S,YAAc,KAEvBn6Q,KAAK6mI,EAASnuK,EAASqF,GAAY,GAC1BtC,KAAKy+S,aACNz+S,KAAK0+S,YAAc1+S,KAAK2+S,eAAevzI,EAASnuK,GAChD+C,KAAKy+S,WAAaz+S,KAAK01I,kBAAkB81D,gBAAgBxrM,KAAKm/L,MAAO,CAAErrL,MAAO9T,KAAK01I,kBAAkB3jJ,OAAQy8B,SAAUxuB,KAAKilG,UAAW0/F,iBAAkB3kM,KAAK0+S,YAAYzgS,SAE9K,MAAQkxB,iBAAkBnvC,KAAKy+S,WAAWzrR,SACpCi+Q,EAAcjxS,KAAK41M,QAAQ7C,SAAS3yK,MAAKy9F,QAAK,IAAI9C,QAAS,IAAM81K,GAAiB7wS,KAAK41M,QAASzmK,EAAe,EAAGpyB,eAAgBA,EAAU/a,IAAI,QAAS,CAAEM,YAAW0uS,kBAAmB,eAC/L,MAAO,CAAE4N,UAAW5+S,KAAKy+S,WAAYxN,eAEzChvE,MAAM3/N,GAAY,GACd,OAAKtC,KAAKy+S,WAGH5N,GAAiB7wS,KAAK41M,QAAS51M,KAAKy+S,WAAWzrR,SAASmc,cAAe,EAAGpyB,eAAgBA,EAAU0G,OAAO,QAAS,CAAEnhB,YAAW0uS,kBAAmB,SACtJ5wQ,MAAKi+M,QAAI,KACV,IAAIvhO,EACA9c,KAAKy+S,aAELz+S,KAAK01I,kBAAkBjyH,OAAOzjB,KAAK01I,kBAAkBjgJ,QAAQuK,KAAKy+S,WAAW5wJ,WAC7E7tJ,KAAKy+S,WAAa,OAEU,QAA3B3hS,EAAK9c,KAAK0+S,mBAAgC,IAAP5hS,OAAgB,EAASA,EAAGy3H,WAChEv0I,KAAKw+S,gBAAgB78I,WAAW3hK,KAAK0+S,YAAYnqK,SACjDv0I,KAAK0+S,YAAYnqK,QAAQ3gI,UACzB5T,KAAK0+S,YAAc,UAbhBj9J,aAAG7sJ,GAiBlB+pT,eAAevzI,EAASnuK,GACpB,GAAKmuK,EAGA,IAAIA,aAAmBj9I,MAAa,CACrC,MAAMomH,EAAU62B,EAAQl3B,mBAAmBj3I,GAC3C,YAAKuhT,gBAAgB5iG,WAAWrnE,GACzB,IAAIsqK,GAAW,CAACtqK,EAAQyuD,WAAYzuD,GAG3C,OAAO,IAAIsqK,GAAW,CAAC,CAAC7+S,KAAKgoB,UAAU2C,WAAY,GAAEygJ,QARrD,OAAO,IAAIyzI,GAAW,SAa5BC,SAAN,QACIh/S,YAAYi/S,EAAK51R,GACbnpB,KAAK++S,IAAMA,EACX/+S,KAAKmpB,MAAQA,EAEjBmJ,WACItyB,KAAKmpB,MAAM4pL,SAAS19E,eAAej1F,MAAKy9F,QAAK,IAAIx5C,UAAU,KACvDwsN,GAAiB7wS,KAAKmpB,MAAOnpB,KAAK++S,IAAI5vQ,cAAe,CAAC/8C,EAASkQ,KACvDA,GACA4vS,GAAO9/S,GAEXA,EAAQ2qB,UAAU/a,IAAI,SACvB,CAAEM,UAAWtC,KAAKsC,UAAW0uS,kBAAmB,eAG3DT,OACI,OAAOM,GAAiB7wS,KAAKmpB,MAAOnpB,KAAK++S,IAAI5vQ,cAAe,EAAGpyB,eAAgBA,EAAU0G,OAAO,QAAS,CAAEnhB,UAAWtC,KAAKsC,UAAW0uS,kBAAmB,UAGjK8N,SAAiBnmT,UAAjB,0BAA6GmmT,GApzKjBjmT,MAozKmDA,OApzKnDA,MAozK6EA,SACzKimT,EAAiB71J,UArzK2EpwJ,MAqzK5F,MAAiGimT,EAAjG1wR,8GArzK4Fv1B,MAqzK5F,2DArzK4FA,MAqzK5F,oBArzK4FA,CAqzK5F,6IApBMimT,MA8CN,SAMI78E,MAAM1qO,GAAQ,CAMdmmE,QAAQzP,GAAQ,EAKpB,SACInuD,YAAYk/S,EAAgBN,EAAaO,EAAkBC,GACvDl/S,KAAKg/S,eAAiBA,EACtBh/S,KAAK0+S,YAAcA,EACnB1+S,KAAKi/S,iBAAmBA,EACxBj/S,KAAKk/S,eAAiBA,EACtBl/S,KAAKm/S,QAAU,IAAIltL,IACnBjyH,KAAKo/S,WAAa,IAAIntL,IACtBjyH,KAAKq/S,QAAU,IAAIptL,IACnB+sL,EAAej9K,SAASu9K,aAAaj7N,UAAWp2B,IAAajuD,KAAK09D,QAAQzP,KAC1EjuD,KAAKzI,OAAS,IAAIqlB,QAAQ,CAACC,EAASsxC,KAChCnuD,KAAKwyO,SAAW31N,EAChB7c,KAAKu/S,QAAUpxP,IAEnBnuD,KAAKzI,OAAOyyB,KAAK,KAAM,OAAM,CAO7BovB,wBACA,GAAIp5C,KAAK0+S,aAAe1+S,KAAK0+S,YAAY3yG,aACrC,OAAO/rM,KAAK0+S,YAAY3yG,aAAahqE,SAUzCxP,aAAW,OAAOvyH,KAAKm/S,QAAQ9pL,eAAej1F,MAAKsvN,QAAU1vP,KAAKq/S,UASlEG,gBAAc,OAAOx/S,KAAKo/S,WAAW/pL,eAAej1F,MAAKsvN,QAAU1vP,KAAKq/S,UASxEnM,aAAW,OAAOlzS,KAAKq/S,QAAQhqL,eAU/B49K,YAAU,OAAOjzS,KAAKg/S,eAAej9K,SAASkxK,MAAM59K,eAMxD4sG,MAAM1qO,GACEyI,KAAKg/S,iBACLh/S,KAAKm/S,QAAQ1iT,KAAKlF,GAClByI,KAAKwyO,SAASj7O,GACdyI,KAAKy/S,wBAGbC,SAASzxP,GACLjuD,KAAKo/S,WAAW3iT,KAAKwxD,GACrBjuD,KAAKu/S,QAAQtxP,GACbjuD,KAAKy/S,uBAOT/hP,QAAQzP,GACJ,GAAIjuD,KAAKg/S,eACL,GAAKh/S,KAAKk/S,eAGL,CACD,MAAMxhP,EAAU19D,KAAKk/S,kBA9pLrC,YAAmB77S,GACf,OAAOA,GAAKA,EAAE2mB,KA8pLEyiE,CAAU/uB,IAOO,IAAZA,GACL19D,KAAK0/S,SAASzxP,GAPdyP,EAAQ1zC,KAAKzyB,KACM,IAAXA,GACAyI,KAAK0/S,SAASzxP,IAEnB,OAGWA,MAZlBjuD,KAAK0/S,SAASzxP,EAYIA,CAK9BwxP,uBACI,MAAME,EAAoB3/S,KAAKg/S,eAAej9K,SAASwuK,OACjDqP,EAAsB5/S,KAAKi/S,iBAAmBj/S,KAAKi/S,iBAAiBl9K,SAASwuK,QAAS9uJ,aAAG7sJ,GAE/F+qT,EAAkBt7N,UAAU,KACxB,MAAQl1C,iBAAkBnvC,KAAKg/S,eAAehsR,SAC9Cmc,EAAc94C,WAAWqzB,YAAYylB,GACrCnvC,KAAKg/S,eAAeprS,UAChB5T,KAAK0+S,aAAe1+S,KAAK0+S,YAAYnqK,SACrCv0I,KAAK0+S,YAAYnqK,QAAQ3gI,UAE7B5T,KAAKg/S,eAAiB,KACtBh/S,KAAK0+S,YAAc,OAGvBkB,EAAoBv7N,UAAU,KAC1B,GAAIrkF,KAAKi/S,iBAAkB,CACvB,MAAQ9vQ,iBAAkBnvC,KAAKi/S,iBAAiBjsR,SAChDmc,EAAc94C,WAAWqzB,YAAYylB,GACrCnvC,KAAKi/S,iBAAiBrrS,UACtB5T,KAAKi/S,iBAAmB,QAIhCY,EAAIF,EAAmBC,GAAqBv7N,UAAU,KAClDrkF,KAAKq/S,QAAQ5iT,OACbuD,KAAKq/S,QAAQrsL,cAKzB,IAAI8sL,GAAmB,MACtB,OAAUA,EAGRA,KAAwBA,GAAsB,KAFzBA,EAAoBC,eAAoB,GAAK,iBACjED,EAAoBA,EAAoBE,IAAS,GAAK,MAHtDF,GACH,IAAUA,CADPA,EAAmB,OAMjBG,SAAN,QACIngT,YAAYq8S,EAAW+D,EAAQ/2R,GAC3BnpB,KAAKm8S,UAAYA,EACjBn8S,KAAKkgT,OAASA,EACdlgT,KAAKmpB,MAAQA,EACbnpB,KAAKq8S,SAAW,IAAIpqL,IACpBjyH,KAAKmgT,aAAe,KACpBngT,KAAKunF,UAAW,EAChBvnF,KAAKwnF,UAAW,EAChBxnF,KAAKs/S,aAAe,IAAIniQ,MACxBn9C,KAAKizS,MAAQ,IAAIhhL,IACjBjyH,KAAKkzS,OAAS,IAAIjhL,IAEtBv0D,QAAQzP,GAAUjuD,KAAKs/S,aAAa/hQ,KAAK0Q,GACzC37B,WACItyB,KAAKmgT,aAAengT,KAAKm8S,UAAUwB,cACnC39S,KAAKmpB,MAAM4pL,SAAS19E,eAAej1F,MAAKy9F,QAAK,IAAIx5C,UAAU,KAAQrkF,KAAKogT,UAE5Ep0R,cAAgBhsB,KAAKqgT,wBACrB9P,OACI,MAAQphQ,iBAAkBnvC,KAAKkgT,OACzBjjT,EAAU,CAAEqF,UAAWtC,KAAKsC,UAAW0uS,kBAAmB,QAG1DsP,EAAeT,EAFKhP,GAAiB7wS,KAAKmpB,MAAOgmB,EAAe,IAAMA,EAAcpyB,UAAU0G,OAAO,QAASxmB,GAC1F4zS,GAAiB7wS,KAAKmpB,MAAOnpB,KAAKugT,UAAUpxQ,cAAe,OAAWlyC,IAEhGqjT,SAAaj8N,UAAU,KACnBrkF,KAAKkzS,OAAOz2S,OACZuD,KAAKkzS,OAAOlgL,aAEhBhzH,KAAKqgT,wBACLrgT,KAAKwgT,gBACEF,EAEXF,QACI,MAAMnjT,EAAU,CAAEqF,UAAWtC,KAAKsC,UAAW0uS,kBAAmB,YAQhE6O,EAP0BhP,GAAiB7wS,KAAKmpB,MAAOnpB,KAAKkgT,OAAO/wQ,cAAe,CAAC/8C,EAASkQ,KACpFA,GACA4vS,GAAO9/S,GAEXA,EAAQ2qB,UAAU/a,IAAI,SACvB/E,GACuB4zS,GAAiB7wS,KAAKmpB,MAAOnpB,KAAKugT,UAAUpxQ,cAAe,OAAWlyC,IACtDonF,UAAU,KAChDrkF,KAAKizS,MAAMx2S,OACXuD,KAAKizS,MAAMjgL,aAEfhzH,KAAKygT,uBACLzgT,KAAK0gT,YAETD,uBACI,MAAQtxQ,iBAAkBnvC,KAAKkgT,OAC/BlgT,KAAKmpB,MAAMkB,kBAAkB,MACzBgwG,OAAUlrF,EAAe,WACpB/O,MAAKsvN,QAAU1vP,KAAKq8S,WAEzBj0S,QAAO/T,GAAKA,EAAE6jT,QAAUrB,GAAIG,SACvB3yN,UAAUtwF,IACPiM,KAAKwnF,SACLwlF,sBAAsB,KACbj5K,EAAM+rH,kBACP9/G,KAAKmpB,MAAMgB,IAAI,IAAMnqB,KAAK09D,QAAQoiP,GAAoBE,QAIvC,WAAlBhgT,KAAKunF,UACVvnF,KAAK2gT,kBAKb,IAAIC,GAAe,GACnBvmL,OAAUr6H,KAAKugT,UAAUpxQ,cAAe,aACnC/O,MAAKsvN,QAAU1vP,KAAKq8S,WAAWh+D,QAAI,IAAMuiE,GAAe,IAAQhpE,OAAU,KAAMv9G,OAAUlrF,EAAe,WAAW/O,MAAKsvN,QAAU1vP,KAAKq8S,WAAWx+K,QAAK,MAAMz1H,QAAO,EAAGuD,YAAawjC,IAAkBxjC,IACvM04E,UAAU,KAAQu8N,GAAe,KAKtCvmL,OAAUlrF,EAAe,SAAS/O,MAAKsvN,QAAU1vP,KAAKq8S,WAAWh4N,UAAU,EAAG14E,aACtEwjC,IAAkBxjC,IACI,WAAlB3L,KAAKunF,SACLvnF,KAAK2gT,iBAEkB,IAAlB3gT,KAAKunF,WAAsBq5N,GAChC5gT,KAAKmpB,MAAMgB,IAAI,IAAMnqB,KAAK09D,QAAQoiP,GAAoBC,kBAG9Da,GAAe,MAI3BP,wBAA0BrgT,KAAKq8S,SAAS5/S,OACxCikT,YACI,MAAQvxQ,iBAAkBnvC,KAAKkgT,OAC/B,IAAK/wQ,EAAcv4C,SAASlF,SAASisT,eAAgB,CACjD,MAAMkD,EAAgB1xQ,EAAcl4C,cAAe,kBAC7C6pT,EAAiBC,EAA6B5xQ,GAAe,IAC5C0xQ,GAAiBC,GAAkB3xQ,GAC3C8tQ,SAGvBuD,gBACI,MAAMppT,EAAO4I,KAAKm8S,UAAU/kT,KACtB4pT,EAAchhT,KAAKmgT,aACzB,IAAIc,EAEAA,EADAD,GAAeA,EAAY/D,OAAY7lT,EAAKR,SAASoqT,GACpCA,EAGA5pT,EAErB4I,KAAKmpB,MAAMkB,kBAAkB,KACzB48B,WAAW,IAAMg6P,EAAehE,SAChCj9S,KAAKmgT,aAAe,OAG5BQ,gBAC0B,WAAlB3gT,KAAKunF,UACLspN,GAAiB7wS,KAAKmpB,MAAOnpB,KAAKkgT,OAAO/wQ,cAAe,EAAGpyB,gBACvDA,EAAU/a,IAAI,gBACP,IAAM+a,EAAU0G,OAAO,iBAC/B,CAAEnhB,UAAWtC,KAAKsC,UAAW0uS,kBAAmB,cAI/DiP,SAAetnT,UAAf,0BAA2GsnT,GA1mLfpnT,MA0mL+C0vB,MA1mL/C1vB,MA0mLoEA,OA1mLpEA,MA0mL8FA,SAC1LonT,EAAeh3J,UA3mL6EpwJ,MA2mL5F,MAA+FonT,EAA/F7xR,iEA3mL4Fv1B,KA2mL5FqoT,iBA3mL4FroT,MA2mL5F4pD,EA3mL4F5pD,WA2mL5Foe,yCAAue,SAAve,WAA6f,MAA7fizI,4CA3mL4FrxJ,MA2mL5F,gBA3mL4FA,CA2mL5F,mCA3mL4FA,CA2mL5F,sCA3mL4FA,MA2mL5F,sDA3mL4FA,MA2mL5F,ubA3mL4FA,cA4mLxF,YA5mLwFA,CA4mLxF,WA5mLwFA,MA8mLzD,GA9mLyDA,WA2mL5F,KA3mL4FA,MA4mL3E,mLADjB6B,+HA9HMulT,MA2LAkB,SAAN,QACIrhT,YAAYq8S,GACRn8S,KAAKm8S,UAAYA,EAUrB5L,OACI,MAAM6Q,EAAiBt+S,KAAK6H,IAAIlZ,OAAO+2O,WAAaxoO,KAAKm8S,UAAUzlT,gBAAgBokT,aAC7E1jT,EAAO4I,KAAKm8S,UAAU/kT,KACtBiqT,EAAYjqT,EAAKE,OACfm+B,WAAU6rR,gBAAiBD,EACnC,GAAID,EAAiB,EAAG,CACpB,MAAMG,EAAgB7nT,WAAWjI,OAAOyM,iBAAiB9G,GAAMkqT,cAC/DD,EAAUC,aAAgB,GAAEC,EAAgBH,MAEhDC,SAAU5rR,SAAW,SACd,KACC2rR,EAAiB,IACjBC,EAAUC,aAAeA,GAE7BD,EAAU5rR,SAAWA,IAIjC0rR,SAAUxoT,UAAV,0BAAsGwoT,GAtsLVtoT,MAssLqC0vB,QACjI44R,EAAUvoT,WAvsLkFC,MAusL5F,OAA0GsoT,EAA1GroT,QAA0GqoT,EAA1G,qBAAiI,SA/B3HA,MA0CAK,SAAN,QACI1hT,YAAY0+S,EAAiBv5M,EAAWk3M,EAAWsF,EAAYC,EAAkB9rG,GAC7E51M,KAAKw+S,gBAAkBA,EACvBx+S,KAAKilG,UAAYA,EACjBjlG,KAAKm8S,UAAYA,EACjBn8S,KAAKyhT,WAAaA,EAClBzhT,KAAK0hT,iBAAmBA,EACxB1hT,KAAK41M,QAAUA,EACf51M,KAAK2hT,4BAA8B,IAAI1vL,IACvCjyH,KAAK4hT,kBAAoB,IAAIxsT,IAC7B4K,KAAK6hT,oBAAsB,KAC3B7hT,KAAK8hT,oBAAsB,CAAC,YAAa,iBACzC9hT,KAAK+hT,WAAa,GAClB/hT,KAAKgiT,kBAAoB,CACrB,YAAa,iBAAkB,kBAAmB,WAAY,WAAY,WAAY,aAAc,OACpG,cAAe,oBAEnBhiT,KAAKiiT,aAAe,GACpBjiT,KAAKkiT,iBAAmB,IAAI/kQ,MAE5Bn9C,KAAK2hT,4BAA4Bt9N,UAAU,KACvC,GAAIrkF,KAAKiiT,aAAalwT,OAAQ,CAC1B,MAAMowT,EAAmBniT,KAAKiiT,aAAajiT,KAAKiiT,aAAalwT,OAAS,GA/0FjE,EAAC26B,EAAMt6B,EAASgwT,EAAgBC,GAAiB,KAg1FzCriT,KAAK41M,QA/0FzBvrL,kBAAkB,KAEnB,MAAMi4R,GAAsBjoL,OAAUjoI,EAAS,WAAWguC,MAAKsvN,QAAU0yD,IAAiBptT,QAAIX,GAAKA,EAAEsX,UAErG0uH,OAAUjoI,EAAS,WACdguC,MAAKsvN,QAAU0yD,IAEpBh6S,QAAO/T,GAAKA,EAAE6jT,QAAUrB,GAAIC,MAAMhnD,QAAewyD,IAC5Cj+N,UAAU,EAAEk+N,EAAUC,MACvB,MAAOniR,EAAOs1E,GAAQorM,EAA6B3uT,IAC9CowT,IAAmBniR,GAASmiR,IAAmBpwT,IAAYmwT,EAAS9mF,WACrE9lH,EAAKsnM,QACLsF,EAAS1kP,kBAET2kP,IAAmB7sM,IAAS4sM,EAAS9mF,WACrCp7L,EAAM48Q,QACNsF,EAAS1kP,oBAIbwkP,IACAhoL,OAAUjoI,EAAS,SACdguC,MAAKsvN,QAAU0yD,IAAiBtyD,QAAewyD,IAAsBttT,QAAIwH,GAAOA,EAAI,KACpF6nF,UAAUo+N,GAAsBA,EAAmBxF,YAwzFpDyF,CAAa1iT,EAAcmiT,EAAiBnvR,SAASmc,cAAenvC,KAAK2hT,6BACzE3hT,KAAK2iT,oBACL3iT,KAAK4iT,eAAeT,EAAiBnvR,SAASmc,kBAI1D0zQ,oBACI,MAAMC,EAAqB9iT,KAAK6hT,oBAC5BiB,IACA9iT,KAAK6hT,oBAAsB,KAC3BiB,KAGRC,iBACS/iT,KAAK6hT,sBACN7hT,KAAK6hT,oBAAsB7hT,KAAKyhT,WAAWlR,QAGnDhsQ,KAAKy+Q,EAAWC,EAAiB73I,EAAS7pK,GACtC,MAAM2hT,EAAc3hT,EAAQk+J,qBAAqB0jJ,YAAc5hT,EAAQk+J,UAAY3zE,GAAUvqF,EAAQk+J,WACjGz/J,KAAKm8S,UAAUllT,cAAcsK,EAAQk+J,WACrCz/J,KAAKm8S,UAAU/kT,KACb0xB,EAAW9oB,KAAK0hT,iBAAiBz5R,eAAe,KAAM,MAC5D,IAAKi7R,EACD,MAAM,IAAIz5Q,MAAO,kCAAiCloC,EAAQk+J,WAAa,qCAE3Ez/J,KAAK+iT,iBACL,MAAMx/Q,EAAc,IAAI6/Q,GAClBC,EAAarjT,KAAK2+S,eAAeqE,EAAWzhT,EAAQitB,UAAYy0R,EAAiB73I,EAAS7nI,EAAahiC,GAC7G,IAAI+hT,IAAuC,IAArB/hT,EAAQgmF,SAAqBvnF,KAAKujT,gBAAgBP,EAAWE,QAAetuT,EAC9F4uT,GAAgBxjT,KAAKyjT,uBAAuBT,EAAWE,EAAaG,GACpEK,GAAc,IAAIC,GAAYH,GAAeH,EAAYC,GAAiB/hT,EAAQqiT,eACtF,YAAKC,kBAAkBH,IACvB1jT,KAAK8jT,oBAAoBN,IAIzBE,GAAYxQ,OAAO9yQ,MAAKy9F,QAAK,IAAIx5C,UAAU,IAAMznE,QAAQC,SAAQ,GAAMmN,KAAK,KACnEhqB,KAAK+hT,WAAWhwT,SACjB+2B,EAASjR,YAAY7X,KAAKm8S,UAAU/kT,KAAM,cAC1C4I,KAAK6iT,oBACL7iT,KAAK2iT,wBAGbp/Q,EAAY0+L,MAAS1qO,KAAamsT,GAAYzhF,MAAM1qO,KACpDgsC,EAAYm6B,QAAWzP,KAAay1P,GAAYhmP,QAAQzP,KACxDjuD,KAAK+jT,oBAAoBP,GAAczhL,SAAUxgI,GAClB,IAA3BvB,KAAK+hT,WAAWhwT,QAChB+2B,EAAS5S,SAASlW,KAAKm8S,UAAU/kT,KAAM,cAEvCksT,IAAmBA,GAAgBvhL,WACnC/hI,KAAKgkT,sBAAsBV,GAAgBvhL,SAAUxgI,GACrD+hT,GAAgB/8G,kBAAkBjD,iBAEtCkgH,GAAcj9G,kBAAkBjD,gBACzBogH,GAEPO,sBAAoB,OAAOjkT,KAAKkiT,iBACpCgC,WAAWj2P,GAAUjuD,KAAK+hT,WAAWnvT,QAAQ8wT,GAAeA,EAAYhmP,QAAQzP,IAChFk2P,gBAAkB,OAAOnkT,KAAK+hT,WAAWhwT,OAAS,EAClDwxT,gBAAgBP,EAAWE,GAEvB,IAAII,EAAkBc,EADUhjH,wBAAwB09G,IAClB/xS,OAAO/M,KAAKilG,WAClD,YAAKu5M,gBAAgB5iG,WAAW0nG,EAAgBz1J,UAChDq1J,EAAYt4R,YAAY04R,EAAgBtwR,SAASmc,eAC1Cm0Q,EAEXG,uBAAuBT,EAAWE,EAAaG,GAE3C,IAAIG,EAAgBa,EADUjjH,wBAAwB6+G,IACpBlzS,OAAO/M,KAAKilG,UAAWo+M,EAAWplS,OACpE,YAAKugS,gBAAgB5iG,WAAW4nG,EAAc31J,UAC9Cq1J,EAAYt4R,YAAY44R,EAAcxwR,SAASmc,eACxCq0Q,EAEXO,oBAAoBO,EAAgB/iT,GAChCvB,KAAKgiT,kBAAkBpvT,QAAS2xT,IACxBz4N,GAAUvqF,EAAQgjT,MAClBD,EAAeC,GAAchjT,EAAQgjT,MAIjDP,sBAAsBQ,EAAkBjjT,GACpCvB,KAAK8hT,oBAAoBlvT,QAAS2xT,IAC1Bz4N,GAAUvqF,EAAQgjT,MAClBC,EAAiBD,GAAchjT,EAAQgjT,MAInD5F,eAAeqE,EAAWC,EAAiB73I,EAAS7nI,EAAahiC,GAC7D,OAAK6pK,EAGIA,aAAmBj9I,MACjBnuB,KAAKykT,uBAAuBr5I,EAAS7nI,GAEvC6oD,GAASg/E,GACPprK,KAAK0kT,kBAAkBt5I,GAGvBprK,KAAK2kT,qBAAqB3B,EAAWC,EAAiB73I,EAAS7nI,EAAahiC,GAT5E,IAAIs9S,GAAW,IAY9B4F,uBAAuBr5I,EAAS7nI,GAC5B,MAKMgxG,EAAU62B,EAAQl3B,mBALR,CACZpB,UAAWvvG,EACX0+L,MAAM1qO,GAAUgsC,EAAY0+L,MAAM1qO,IAClCmmE,QAAQzP,GAAU1qB,EAAYm6B,QAAQzP,MAG1C,YAAKuwP,gBAAgB5iG,WAAWrnE,GACzB,IAAIsqK,GAAW,CAACtqK,EAAQyuD,WAAYzuD,GAE/CmwK,kBAAkBt5I,GACd,MAAM73I,EAAYvzB,KAAKm8S,UAAU77I,eAAgB,GAAE8K,KACnD,OAAO,IAAIyzI,GAAW,CAAC,CAACtrR,KAE5BoxR,qBAAqB3B,EAAWC,EAAiB73I,EAASnuK,EAASsE,GAC/D,MAAMqjT,EAAqB5B,EAAU5hH,wBAAwBh2B,GACvDy5I,EAAuBlnI,aAAgB,CAAEpwJ,UAAW,CAAC,CAAEnB,QAASg3R,GAAgBp2R,SAAU/vB,IAAY7G,OAAQ6sT,IAC9Gl3G,EAAe64G,EAAmB73S,OAAO83S,GACzCC,GAAoB/4G,EAAa/4K,SAASmc,cAChD,OAAI5tC,EAAQwjT,YACRD,GAAkB/nS,UAAU/a,IAAI,6BAEpChC,KAAKw+S,gBAAgB5iG,WAAW7P,EAAal+C,UAGtC,IAAIgxJ,GAAW,CAAC,CAACiG,KAAqB/4G,EAAal+C,SAAUk+C,GAExE62G,eAAexwT,GACX,MAAMgE,EAAShE,EAAQokO,cACnBpgO,GAAUhE,IAAY4N,KAAKm8S,UAAU/kT,OACrCP,MAAMC,KAAKV,EAAOwgE,UAAUhkE,QAAQoyT,IAC5BA,IAAY5yT,GAAgC,WAArB4yT,EAAQj7I,WAC/B/pK,KAAK4hT,kBAAkBtsT,IAAI0vT,EAASA,EAAQ3vF,aAAa,gBACzD2vF,EAAQ5pT,aAAa,cAAe,WAG5C4E,KAAK4iT,eAAexsT,IAG5BusT,oBACI3iT,KAAK4hT,kBAAkBhvT,QAAQ,CAACuC,EAAO/C,KAC/B+C,EACA/C,EAAQgJ,aAAa,cAAejG,GAGpC/C,EAAQk5B,gBAAgB,iBAGhCtrB,KAAK4hT,kBAAkBx6S,QAE3By8S,kBAAkBH,GACd,MAAMuB,EAAqB,KACvB,MAAMnxS,EAAQ9T,KAAK+hT,WAAWtsT,QAAQiuT,GAClC5vS,GAAQ,IACR9T,KAAK+hT,WAAWznT,OAAOwZ,EAAO,GAC9B9T,KAAKkiT,iBAAiB3kQ,KAAKv9C,KAAK+hT,cAGxC/hT,KAAK+hT,WAAWruT,KAAKgwT,GACrB1jT,KAAKkiT,iBAAiB3kQ,KAAKv9C,KAAK+hT,YAChC2B,EAAYnsT,OAAOyyB,KAAKi7R,EAAoBA,GAEhDnB,oBAAoBoB,GAChBllT,KAAKiiT,aAAavuT,KAAKwxT,GACvBllT,KAAK2hT,4BAA4BllT,OACjCyoT,EAAc9wT,UAAU,KACpB,MAAM0f,EAAQ9T,KAAKiiT,aAAaxsT,QAAQyvT,GACpCpxS,GAAQ,IACR9T,KAAKiiT,aAAa3nT,OAAOwZ,EAAO,GAChC9T,KAAK2hT,4BAA4BllT,WAKjD+kT,SAAc7oT,UAAd,0BAA0G6oT,GAz5Ld3oT,MAy5L6CA,OAz5L7CA,MAy5L2EA,OAz5L3EA,MAy5LmG0vB,MAz5LnG1vB,MAy5LwHsoT,IAz5LxHtoT,MAy5L8IA,OAz5L9IA,MAy5L8KA,SAC1Q2oT,EAAc5oT,WA15L8EC,MA05L5F,OAA8G2oT,EAA9G1oT,QAA8G0oT,EAA9G,qBAAyI,SAxMnIA,MA2NA2D,SAAN,QACIrlT,YAAYwyS,GACRtyS,KAAKsyS,WAAaA,EAClBtyS,KAAKunF,UAAW,EAChBvnF,KAAKwnF,UAAW,EAEhBllF,gBAAc,YAA4B1N,IAApBoL,KAAKwyS,WAA4BxyS,KAAKsyS,WAAWhwS,UAAYtC,KAAKwyS,WACxFlwS,cAAUA,GAAatC,KAAKwyS,WAAalwS,GAEjD6iT,SAAexsT,UAAf,0BAA2GwsT,GAt7LftsT,MAs7L+Cu5S,MAC3I+S,EAAevsT,WAv7L6EC,MAu7L5F,OAA+GssT,EAA/GrsT,QAA+GqsT,EAA/G,qBAA2I,SAVrIA,MAsBAC,SAAN,QACItlT,YAAYulT,EAAYpgN,EAAWqgN,EAAaz7L,GAC5C7pH,KAAKqlT,WAAaA,EAClBrlT,KAAKilG,UAAYA,EACjBjlG,KAAKslT,YAAcA,EACnBtlT,KAAK6pH,QAAUA,EAWnBtlF,KAAK6mI,EAAS7pK,EAAU,IACpB,MAAMgkT,EAAkBtyT,OAAOqe,OAAOre,OAAOqe,OAAOre,OAAOqe,OAAO,GAAItR,KAAK6pH,SAAU,CAAEvnH,UAAWtC,KAAK6pH,QAAQvnH,YAAcf,GAC7H,OAAOvB,KAAKslT,YAAY/gR,KAAKvkC,KAAKqlT,WAAYrlT,KAAKilG,UAAWmmE,EAASm6I,GAKvEtB,sBAAoB,OAAOjkT,KAAKslT,YAAYrB,gBAMhDC,WAAWj2P,GAAUjuD,KAAKslT,YAAYpB,WAAWj2P,GAMjDk2P,gBAAkB,OAAOnkT,KAAKslT,YAAYnB,iBAE9CiB,SAASzsT,UAAT,0BAAqGysT,GAx+LTvsT,MAw+LmCA,OAx+LnCA,MAw+L2EA,OAx+L3EA,MAw+LmG2oT,IAx+LnG3oT,MAw+L6HssT,MACzNC,EAASxsT,WAz+LmFC,MAy+L5F,OAAyGusT,EAAzGtsT,QAAyGssT,EAAzG,qBAA+H,SAtCzHA,MA4CAI,SAAN,SAEAA,SAAe7sT,UAAf,0BAA2G6sT,IAC3GA,EAAeh4R,UAl/L6E30B,MAk/L5F,MAA4G2sT,IAC5GA,EAAe/3R,UAn/L6E50B,MAm/L5F,WAAuI,CAACusT,MAJlII,MAwgBAC,SAAN,SAEAA,SAAa9sT,UAAb,0BAAyG8sT,IACzGA,EAAaj4R,UA1/M+E30B,MA0/M5F,MAA0G4sT,IAC1GA,EAAah4R,UA3/M+E50B,MA2/M5F,UAAkI,CAACw2B,SAJ7Ho2R,MAkeAC,SAAN,SAEAA,SAAoB/sT,UAApB,0BAAgH+sT,IAChHA,EAAoBl4R,UA59NwE30B,MA49N5F,MAAiH6sT,IAGjHA,EAAoBj4R,UA/9NwE50B,MA+9N5F,UAAgJ,CAACw2B,SAN3Iq2R,MAYN,SACI5lT,YAAYykC,EAAM09L,GACdjiO,KAAKukC,KAAOA,EACZvkC,KAAKiiO,MAAQA,EACRA,IACDjiO,KAAKiiO,MAAQ19L,GAGrBshC,WAAa,MAAqB,WAAd7lE,KAAKukC,MAAoC,WAAfvkC,KAAKiiO,KAAU,EAEjE,MAAM0jF,GAAkB,CACpBC,MAAS,CAAC,aAAc,cACxB3I,MAAS,CAAC,UAAW,aAqCnB4I,GAAe55S,GAASA,EAAO,EAAI1T,GAAM0T,GAASgL,GAAMA,MAkRxD6uS,SAAN,SAEAA,SAAiBntT,UAAjB,0BAA6GmtT,IAC7GA,EAAiBt4R,UA3yO2E30B,MA2yO5F,MAA8GitT,IAC9GA,EAAiBr4R,UA5yO2E50B,MA4yO5F,UAA0I,CAACw2B,SAJrIy2R,MAgBAC,SAAN,QACIjmT,cACIE,KAAK+C,IAAM,IACX/C,KAAKgmT,UAAW,EAChBhmT,KAAKimT,SAAU,EACfjmT,KAAKkmT,WAAY,GAGzBH,SAAqBptT,UAArB,0BAAiHotT,IACjHA,EAAqBntT,WAj0OuEC,MAi0O5F,OAAqHktT,EAArHjtT,QAAqHitT,EAArH,qBAAuJ,SATjJA,MAkBAI,SAAN,QACIrmT,YAAYutB,GAMRrtB,KAAK7K,MAAQ,EACb6K,KAAK+C,IAAMsqB,EAAOtqB,IAClB/C,KAAKgmT,SAAW34R,EAAO24R,SACvBhmT,KAAKimT,QAAU54R,EAAO44R,QACtBjmT,KAAKomT,SAAW/4R,EAAO+4R,SACvBpmT,KAAK9C,KAAOmwB,EAAOnwB,KACnB8C,KAAKkmT,UAAY74R,EAAO64R,UACxBlmT,KAAKw1B,OAASnI,EAAOmI,OAOrBzyB,QAAIA,GACJ/C,KAAKqmT,MAAQl6N,GAASppF,IAAQA,GAAO,EAAI,IAAMA,EAE/CA,UAAQ,OAAO/C,KAAKqmT,KACxBl0L,WAAa,OAtlPjB,YAAyBh9H,EAAO4N,EAAKqtF,EAAM,GACvC,OAAOttF,KAAKC,IAAID,KAAKstF,IAAIj7F,EAAO4N,GAAMqtF,GAqlPlBk2N,CAAgBtmT,KAAK7K,MAAO6K,KAAK+C,KACrDwjT,kBAAoB,OAAO,IAAMvmT,KAAKmyH,WAAanyH,KAAK+C,KAE5DojT,SAAextT,UAAf,0BAA2GwtT,GAt2OfttT,MAs2O+CktT,MAC3II,EAAel9J,UAv2O6EpwJ,MAu2O5F,MAA+FstT,EAA/F/3R,oGAv2O4Fv1B,MAu2O5F,wOAK6DihC,yBAAAA,CAL7D,wFAv2O4FjhC,cAw2OxF,WAx2OwFA,MA42OtF,mBA52OsFA,MA42OM,GA52ONA,SAu2O5F,MAv2O4FA,MAw2OnF,wKAx2OmFA,MA02OrE,iCA12OqEA,MA22OxF,6BA32OwFA,CA22OxF,uBA32OwFA,MA42O/E,GA52O+EA,MA42O/E,sBALboyJ,YAO0C/uE,MAP1CkvE,OAOwIlvE,MAPxIh0D,oCA7BMi+R,MA0EAK,SAAN,SAEAA,SAAqB7tT,UAArB,0BAAiH6tT,IACjHA,EAAqBh5R,UAv5OuE30B,MAu5O5F,MAAkH2tT,IAClHA,EAAqB/4R,UAx5OuE50B,MAw5O5F,UAAkJ,CAACw2B,SAJ7Im3R,MAgNAC,SAAN,SAEAA,SAAgB9tT,UAAhB,0BAA4G8tT,IAC5GA,EAAgBj5R,UAvmP4E30B,MAumP5F,MAA6G4tT,IAC7GA,EAAgBh5R,UAxmP4E50B,MAwmP5F,UAAwI,CAACw2B,SAJnIo3R,MA6dAC,SAAN,SAEAA,SAAoB/tT,UAApB,0BAAgH+tT,IAChHA,EAAoBl5R,UApkQwE30B,MAokQ5F,MAAiH6tT,IACjHA,EAAoBj5R,UArkQwE50B,MAqkQ5F,UAAgJ,CAACw2B,SAJ3Iq3R,MAUN,MAAMC,GAA2B,CAACv0T,EAASkQ,KACvC,MAAQya,aAAc3qB,EACtB,GAAKkQ,EAILya,SAAU0G,OAAO,QACjByuR,GAAO9/S,GACP2qB,EAAU/a,IAAI,WACP,KACH+a,EAAU0G,OAAO,WACjB1G,EAAU/a,IAAI,SARd+a,EAAU/a,IAAI,OAQA,EAGhB4kT,GAA4B,EAAG7pS,gBACjCA,EAAU0G,OAAO,QACV,KAAQ1G,EAAU/a,IAAI,cAU3B6kT,SAAN,QACI/mT,YAAYwyS,GACRtyS,KAAKsyS,WAAaA,EAClBtyS,KAAK8mT,UAAW,EAChB9mT,KAAKzH,MAAQ,IACbyH,KAAK+mT,SAAW,SAEhBzkT,gBAAc,YAA4B1N,IAApBoL,KAAKwyS,WAA4BxyS,KAAKsyS,WAAWhwS,UAAYtC,KAAKwyS,WACxFlwS,cAAUA,GAAatC,KAAKwyS,WAAalwS,GAEjDukT,SAAeluT,UAAf,0BAA2GkuT,GA/mQfhuT,MA+mQ+Cu5S,MAC3IyU,EAAejuT,WAhnQ6EC,MAgnQ5F,OAA+GguT,EAA/G/tT,QAA+G+tT,EAA/G,qBAA2I,SAXrIA,MAuBAG,SAAN,SAEAA,SAAeruT,UAAf,0BAA2GquT,IAC3GA,EAAen0K,UA/nQ6Eh6I,MA+nQ5F,MAA+FmuT,EAA/F54R,uCAHM44R,MAcAC,SAAN,QACInnT,YAAYinT,EAAU15R,EAAQlE,EAAOlxB,GACjC+H,KAAK+mT,SAAWA,EAChB/mT,KAAKmpB,MAAQA,EACbnpB,KAAK/H,SAAWA,EAKhB+H,KAAKknT,iBAAmB,KAMxBlnT,KAAKizS,MAAQ,IAAI91P,MAajBn9C,KAAKkzS,OAAS,IAAI/1P,MACG,MAAjBn9C,KAAK+mT,WACL/mT,KAAK+mT,SAAW15R,EAAO05R,UAE3B/mT,KAAKzH,MAAQ80B,EAAO90B,MACpByH,KAAK8mT,SAAWz5R,EAAOy5R,SACvB9mT,KAAKsC,UAAY+qB,EAAO/qB,UAE5BquJ,qBACI3wJ,KAAKmpB,MAAM4pL,SAAS19E,eAAej1F,MAAKy9F,QAAK,IAAIx5C,UAAU,KACvDrkF,KAAKskI,QACLtkI,KAAK0nF,SAGbxoB,YAAYC,GACJ,aAAcA,IACdn/D,KAAKmnT,gBACLnnT,KAAKskI,SAabisK,OACIvwS,KAAKmnT,gBACL,MAAM9lT,EAAawvS,GAAiB7wS,KAAKmpB,MAAOnpB,KAAK/H,SAASk3C,cAAey3Q,GAA2B,CAAEtkT,UAAWtC,KAAKsC,UAAW0uS,kBAAmB,SACxJ3vS,SAAWgjF,UAAU,KAAQrkF,KAAKkzS,OAAO31P,SAClCl8C,EAYXqmF,OACI,MAAMrmF,EAAawvS,GAAiB7wS,KAAKmpB,MAAOnpB,KAAK/H,SAASk3C,cAAew3Q,GAA0B,CACnGrkT,UAAWtC,KAAKsC,UAChB0uS,kBAAmB,aAEvB3vS,SAAWgjF,UAAU,KAAQrkF,KAAKizS,MAAM11P,SACjCl8C,EAEXijI,QACQtkI,KAAK8mT,WAAa9mT,KAAKonT,aACvBpnT,KAAKonT,WAAangQ,WAAW,IAAMjnD,KAAKuwS,OAAQvwS,KAAKzH,QAG7D4uT,gBACQnnT,KAAKonT,aACLt+N,aAAa9oF,KAAKonT,YAClBpnT,KAAKonT,WAAa,OAI9BH,SAAStuT,UAAT,0BAAqGsuT,GAxuQTpuT,MAwuQmC,aAxuQnCA,MAwuQ4EguT,IAxuQ5EhuT,MAwuQuGA,OAxuQvGA,MAwuQ6HA,SACzNouT,EAASh+J,UAzuQmFpwJ,MAyuQ5F,MAAyFouT,EAAzF74R,iEAzuQ4Fv1B,MAyuQ5F4pD,EAA+eukQ,GAA/e,EAAwhB74R,OAAxhB,WAzuQ4Ft1B,MAyuQ5F6J,EAzuQ4F7J,WAyuQ5Foe,gDAAmS,QAAnS,cAA2T,OAA3T,uDAzuQ4Fpe,MAyuQ5F,wBAzuQ4FA,MAyuQ5F,+KAzuQ4FA,OAyuQ5FmxJ,sEAOwDlwH,OAAAA,CAPxD,iNAzuQ4FjhC,cA0uQxF,8BA1uQwFA,aA6uQxF,0BA7uQwFA,MAqvQxF,WArvQwFA,MAsvQtF,GAtvQsFA,SAyuQ5F,MAzuQ4FA,MA6uQ3E,GA7uQ2EA,MA6uQ3E,uCAJjBoyJ,YAeyN/uE,KAAiFA,MAf1SxhF,+LA/FMusT,MA6JA33R,SAAN,SAEAA,SAAe32B,UAAf,0BAA2G22B,IAC3GA,EAAe9B,UA1yQ6E30B,MA0yQ5F,MAA4Gy2B,IAC5GA,EAAe7B,UA3yQ6E50B,MA2yQ5F,UAAsI,CAACw2B,SAJjIC,MAgBA+3R,SAAN,QACIvnT,YAAYwyS,GACRtyS,KAAKsyS,WAAaA,EAClBtyS,KAAK27S,WAAY,EACjB37S,KAAK85S,UAAY,OACjB95S,KAAKsnT,SAAW,cAChBtnT,KAAKunT,gBAAiB,EACtBvnT,KAAKwnT,UAAY,EACjBxnT,KAAKynT,WAAa,EAElBnlT,gBAAc,YAA4B1N,IAApBoL,KAAKwyS,WAA4BxyS,KAAKsyS,WAAWhwS,UAAYtC,KAAKwyS,WACxFlwS,cAAUA,GAAatC,KAAKwyS,WAAalwS,GAEjD+kT,SAAiB1uT,UAAjB,0BAA6G0uT,GAp0QjBxuT,MAo0QmDu5S,MAC/IiV,EAAiBzuT,WAr0Q2EC,MAq0Q5F,OAAiHwuT,EAAjHvuT,QAAiHuuT,EAAjH,qBAA+I,SAdzIA,MAoBFK,GAAS,EACPC,SAAN,SAEAA,SAAiBhvT,UAAjB,0BAA6GgvT,IAC7GA,EAAiB1+J,UA/0Q2EpwJ,MA+0Q5F,MAAiG8uT,EAAjGv5R,qDAA6P,WAA7P87H,4CA/0Q4FrxJ,MA+0Q5F,WA/0Q4FA,MA+0Q5F,kDA/0Q4FA,MA+0Q5F,oMA/0Q4FA,cA+0QuU,WA/0QvUA,MA+0QgW,WA/0QhWA,MA+0Q2X,GA/0Q3XA,UA+0Q5F6B,uyBAHMitT,MAsBAC,SAAN,QACI9nT,YAAYwiN,EAAat6L,EAAWwG,EAAU8oH,EAAkBjqH,EAAQuoL,EAASumG,EAAWtI,EAAiBgU,IACzG7nT,KAAKsiN,YAAcA,EACnBtiN,KAAKgoB,UAAYA,EACjBhoB,KAAK41M,QAAUA,EACf51M,KAAKm8S,UAAYA,EACjBn8S,KAAK6zS,gBAAkBA,EAIvB7zS,KAAKizS,MAAQ,IAAI91P,MAIjBn9C,KAAKkzS,OAAS,IAAI/1P,MAClBn9C,KAAK8nT,oBAAuB,eAAcJ,KAC1C1nT,KAAKy+S,WAAa,KAClBz+S,KAAKsC,UAAY+qB,EAAO/qB,UACxBtC,KAAK27S,UAAYtuR,EAAOsuR,UACxB37S,KAAK85S,UAAYzsR,EAAOysR,UACxB95S,KAAKsnT,SAAWj6R,EAAOi6R,SACvBtnT,KAAKy/J,UAAYpyI,EAAOoyI,UACxBz/J,KAAKunT,eAAiBl6R,EAAOk6R,eAC7BvnT,KAAK+nT,aAAe16R,EAAO06R,aAC3B/nT,KAAKwnT,UAAYn6R,EAAOm6R,UACxBxnT,KAAKynT,WAAap6R,EAAOo6R,WACzBznT,KAAKgoT,cAAgB,IAAIC,GAAaN,GAAkBn5R,EAAU8oH,EAAkBtvH,EAAWhoB,KAAK41M,QAASiyG,IAC7G7nT,KAAKy8S,kBAAoB7mG,EAAQ7C,SAAS1uH,UAAU,KAC5CrkF,KAAKy+S,YACL7E,GAAiB55S,KAAKsiN,YAAYnzK,cAAenvC,KAAKy+S,WAAWzrR,SAASmc,cAAenvC,KAAK85S,UAA8B,SAAnB95S,KAAKy/J,UAAsB,gBAS5IyoJ,eAAW/yT,GACX6K,KAAKmoT,YAAchzT,GACdA,GAAS6K,KAAKy+S,YACfz+S,KAAKiiO,QAGTimF,iBAAe,OAAOloT,KAAKmoT,YAO/B5jR,KAAKtnC,GACD,IAAK+C,KAAKy+S,YAAcz+S,KAAKmoT,cAAgBnoT,KAAKunT,eAAgB,CAC9D,MAAQ3I,YAAW3N,eAAgBjxS,KAAKgoT,cAAczjR,KAAKvkC,KAAKmoT,YAAalrT,EAAS+C,KAAKsC,WAC3FtC,KAAKy+S,WAAaG,EAClB5+S,KAAKy+S,WAAW18K,SAASz/H,UAAYtC,KAAKsC,UAC1CtC,KAAKy+S,WAAW18K,SAASgmL,aAAe/nT,KAAK+nT,aAC7C/nT,KAAKy+S,WAAW18K,SAAS9uH,GAAKjT,KAAK8nT,oBACnC9nT,KAAKgoB,UAAU5sB,aAAa4E,KAAKsiN,YAAYnzK,cAAe,mBAAoBnvC,KAAK8nT,qBAC9D,SAAnB9nT,KAAKy/J,WACLz/J,KAAKm8S,UAAUllT,cAAc+I,KAAKy/J,WAAW70I,YAAY5qB,KAAKy+S,WAAWzrR,SAASmc,eAKtFnvC,KAAKy+S,WAAWl4G,kBAAkBjD,gBAMlCtjM,KAAKy+S,WAAWl4G,kBAAkB7tD,eAClCwkK,GAAal9S,KAAK41M,QAAS51M,KAAKm8S,UAAWn8S,KAAK27S,UAAW,IAAM37S,KAAKiiO,QAASjiO,KAAKkzS,OAAQ,CAAClzS,KAAKy+S,WAAWzrR,SAASmc,gBACtH8hQ,EAAY5sN,UAAU,IAAMrkF,KAAKizS,MAAM11P,SAQ/C0kL,QAC2B,MAAnBjiO,KAAKy+S,aACLz+S,KAAKgoB,UAAUsD,gBAAgBtrB,KAAKsiN,YAAYnzK,cAAe,oBAC/DnvC,KAAKgoT,cAAc/lF,MAAMjiO,KAAKsC,WAAW+hF,UAAU,KAC/CrkF,KAAKy+S,WAAa,KAClBz+S,KAAKkzS,OAAO31P,OACZv9C,KAAK6zS,gBAAgBn7J,kBASjCg8J,SACQ10S,KAAKy+S,WACLz+S,KAAKiiO,QAGLjiO,KAAKukC,OAMbuuQ,SAAW,OAA0B,MAAnB9yS,KAAKy+S,UAAc,CACrCnsR,WACItyB,KAAKooT,uBA95Cb,YAA0Bt/R,EAAUqmB,EAAem4Q,EAAUe,EAAYC,EAAQC,EAASf,EAAY,EAAGC,EAAa,GAClH,MAAMe,EA/DV,YAAuBlB,EAAUnrD,EAAUwpD,IACvC,MAAM8C,GAAmBnB,GAAY,IAAIj4S,OACzC,GAA+B,IAA3Bo5S,EAAgB12T,OAChB,MAAO,GAEX,MAAMy2T,EAAiBC,EAAgBpqT,MAAM,OAAOrJ,IAAI6hB,GAAWA,EAAQxY,MAAM,MAAMrJ,IAAK0zT,IACxF,IAAInqT,EAAQ49P,EAAQusD,EAAY,KAAOA,EACvC,OAAO,IAAIC,GAAQpqT,EAAM,GAAIA,EAAM,MAEjCqqT,EAAiBJ,EAAepgT,OAAOsgT,GAAeA,EAAY7iP,YACxE,GAAI+iP,EAAe72T,OAAS,EACxB,KAAM,2DAEV,GAA8B,IAA1B62T,EAAe72T,QAAgBy2T,EAAez2T,OAAS,EACvD,KAAM,0EAEV,OAAOy2T,EA+CgBK,CAAcvB,GACrC,GAA8B,IAA1BkB,EAAez2T,QAAgBy2T,EAAe,GAAG3iP,WACjD,MAAO,OAEX,MAAMysD,EAjDV,YAAyBxpG,EAAUqmB,EAAem4Q,EAAUe,GACxD,OAAO,IAAI11L,IAAWN,IAClB,MAAM77G,EAAY,GACZ8xS,EAAS,IAAMj2L,EAAW51H,MAAK,GAC/B8rT,EAAU,IAAMl2L,EAAW51H,MAAK,GAChCqsT,EAAW,IAAMz2L,EAAW51H,MAAM4rT,KACxCf,SAAS10T,QAASikB,IACVA,EAAQ0tB,OAAS1tB,EAAQorN,MACzBzrN,EAAU9iB,KAAKo1B,EAAS9U,OAAOm7B,EAAet4B,EAAQ0tB,KAAMukR,IAG5DtyS,EAAU9iB,KAAKo1B,EAAS9U,OAAOm7B,EAAet4B,EAAQ0tB,KAAM+jR,GAASx/R,EAAS9U,OAAOm7B,EAAet4B,EAAQorN,MAAOsmF,MAGpH,KAAQ/xS,EAAU5jB,QAAQm2T,GAAiBA,QAmCjCC,CAAgBlgS,EAAUqmB,EAAeq5Q,EAAgBH,GACzEjoR,KAhCT,YAAsBonR,EAAWC,EAAYY,GACzC,OAAQY,IACJ,IAAI31M,EAAU,KACd,MAAM41M,EAAiBD,EAAO7oR,MAAKprC,QAAIuvC,IAAS,CAAEA,WAAUn8B,QAAOrU,IAC/D,MAAMo1T,EAAgBd,IACtB,OAAIc,IAAkBp1T,EAAMwwC,MAAU+uE,GAAWA,EAAQ/uE,OAAS4kR,GAI9D71M,GAAWA,EAAQ/uE,OAASxwC,EAAMwwC,OAClC+uE,EAAU,OAEP,IANHA,EAAUv/G,GACH,EAKJ,IACPsnN,UACE+tG,EAAeF,EAAe9oR,MAAKh4B,QAAOrU,GAASA,EAAMwwC,MAAOshR,GAAY2B,IAC5E6B,EAAgBH,EAAe9oR,MAAKh4B,QAAOrU,IAAUA,EAAMwwC,MAAOshR,GAAY4B,IACpF,OAAOp2P,OAAM+3P,EAAcC,GACtBjpR,MAAKh4B,QAAOrU,GACTA,IAAUu/G,IACVA,EAAU,KACHv/G,EAAMwwC,OAAS8jR,OAG1BrzT,QAAIjB,GAASA,EAAMwwC,QASjB+kR,CAAa9B,EAAWC,EAAYY,IACzChkO,UAAU9/C,IAASA,GAAO+jR,IAAWC,KAC1C,MAAO,IAAMj2L,EAAax/D,cAs5CQy2P,CAAiBvpT,KAAKgoB,UAAWhoB,KAAKsiN,YAAYnzK,cAAenvC,KAAKsnT,SAAUtnT,KAAK8yS,OAAOlnP,KAAK5rD,MAAOA,KAAKukC,KAAKqnB,KAAK5rD,MAAOA,KAAKiiO,MAAMr2K,KAAK5rD,OAAQA,KAAKwnT,WAAYxnT,KAAKynT,YAE9MvoP,aAAc6oP,iBACNA,GAAgB/nT,KAAK8yS,WACrB9yS,KAAKy+S,WAAW18K,SAASgmL,aAAeA,EAAa1oP,cAG7DrzC,cACIhsB,KAAKiiO,QAGDjiO,KAAKooT,wBACLpoT,KAAKooT,yBAETpoT,KAAKy8S,kBAAkB3pP,eAG/B80P,SAAWjvT,UAAX,0BAAuGivT,GAh+QX/uT,MAg+QuCA,OAh+QvCA,MAg+QiEA,OAh+QjEA,MAg+Q0FA,OAh+Q1FA,MAg+QkHA,OAh+QlHA,MAg+QkJwuT,IAh+QlJxuT,MAg+Q+KA,OAh+Q/KA,MAg+QqM0vB,MAh+QrM1vB,MAg+Q0NA,OAh+Q1NA,MAg+Q2PA,SACvV+uT,EAAW/0K,UAj+QiFh6I,MAi+Q5F,MAA2F+uT,EAA3Fx5R,kWAj+Q4Fv1B,SAk2QtF+uT,MAkKA4B,SAAN,SAEAA,SAAiB7wT,UAAjB,0BAA6G6wT,IAC7GA,EAAiBh8R,UAvgR2E30B,MAugR5F,MAA8G2wT,IAC9GA,EAAiB/7R,UAxgR2E50B,MAwgR5F,IAJM2wT,MAyNkB,IAAIt9R,MAAe,uBAAwB,CAAEk4G,WAAY,OAAQtrI,QACzF,cACI,OAAO,WAqVL2wT,SAAN,SAEAA,SAAmB9wT,UAAnB,0BAA+G8wT,IAC/GA,EAAmBj8R,UAvjSyE30B,MAujS5F,MAAgH4wT,IAChHA,EAAmBh8R,UAxjSyE50B,MAwjS5F,UAA8I,CAACw2B,SAJzIo6R,MAcN,MAAMC,GAAc,CAChBtU,GAAoBC,GAAgBqB,GAAkBC,GAAmBC,GAAmB6E,GAC5F8C,GAAmBiH,GAAgBC,GAAcC,GAAqBI,GAAkBU,GACxFC,GAAiBC,GAAqBp3R,GAAgBk6R,GAAkBC,QAEtEj5R,SAAN,SAEAA,SAAU73B,UAAV,0BAAsG63B,IACtGA,EAAUhD,UA1kSkF30B,MA0kS5F,MAAuG23B,IAKvGA,EAAU/C,UA/kSkF50B,MA+kS5F,UAA4H6wT,GAAatU,GAAoBC,GAAgBqB,GAAkBC,GAAmBC,GAAmB6E,GAC7N8C,GAAmBiH,GAAgBC,GAAcC,GAAqBI,GAAkBU,GACxFC,GAAiBC,GAAqBp3R,GAAgBk6R,GAAkBC,MAV1Ej5R,qPEr0SFm5R,EAA4B,WAC5B,YAAoBx1R,IAChBn0B,KAAKe,KAAO,eACZf,KAAK4pT,cAAgB,GACrB,IAAIC,GAAS,IAAIj8D,KAAc,GAC3Bk8D,GAAWD,GAAOzpR,MAAK26F,OAAS,SAAUp1C,IAC1C,OAAOA,GAAEl8D,QAAQO,KAAK,WAAc,OAAO27D,IAAM,WAAc,OAAO,UACtEv9E,OAAO,SAAUu9E,IAAK,QAASA,MAC/BokO,GAAUD,GAAS1pR,MAAKprC,OAAI,SAAUqM,IAAc,OAAOA,GAAWxF,YACtEmuT,GAAU,IAAIp8D,KAAc,GAChC,YAA8B75P,GAAO8M,IACjC,IAAIopT,GAAc,CACdC,cAAe/1R,GAAOm2E,cAAcj1G,MACpCw0G,WAAY,GACZuB,aAAc,IAEdr3G,KACAk2T,GAAYl2T,IAAS8M,IACzBmpT,GAAQvtT,KAAKwtT,IAEjBjqT,KAAK4pT,cAAcl2T,KAAKygC,GAAOvF,kBAAkB36B,QAAQ,GAAI,SAAUoN,IAAc,OAAOwoT,GAAOptT,KAAK4E,OACxGrB,KAAK4pT,cAAcl2T,KAAKygC,GAAOm2E,cAAcS,gBAAgBo/M,KAC7DA,GAAqB,KAAM,MAC3Bl3T,OAAOqe,OAAO6iB,GAAOxB,QAAS,CAAEk3R,OAAQA,GAAQC,SAAUA,GAAUC,QAASA,GAASC,QAASA,KAEnGL,UAAWl/N,UAAUhlC,QAAU,WAC3BzlD,KAAK4pT,cAAch3T,QAAQ,SAAUw3T,IAAgB,OAAOA,OAC5DpqT,KAAK4pT,cAAgB,IAElBD,GA7BqB,4ECqVyD9wT,MAGrF,+CAxUJ,YAAyBkrC,IACrB,MAAMs6D,GAAQ,GAAIgsN,GAActmR,GAAMs6D,OAAS,CAAEisN,UAAUr7N,QAAKlrD,GAAO,CAAC,YAAa,cACrFnxC,eAAQy3T,GAAa,SAAUh9R,GAAQtsB,IAInC,GAHAA,GAAOA,IAAQ,YACXmrF,QAAW7+D,MACXA,GAAS,CAAEkG,UAAWlG,KACS,IAA/Bp6B,OAAOC,KAAKm6B,IAAQt7B,OACpB,OACJs7B,GAAOonE,MAAQ,MACfpnE,GAAOwqE,SAAW9zD,GAClB1W,GAAOyqE,MAAQ/2F,GACf,MAAMo7F,GAAa4e,2BAAkC1tF,GAAOwqE,SAAUxqE,GAAOyqE,OAC7EzqE,GAAO4qE,YAAckE,GAAW0f,WAChCxuF,GAAO6qE,qBAAuBiE,GAAW2f,oBACzCzd,GAAMt9F,IAAQssB,KAEXgxE,GAEX,IAAIksN,EAAO,EACX,QACIzqT,YAAYmhC,GAAM22D,IACd53F,KAAKihC,KAAOA,GACZjhC,KAAK43F,SAAWA,GAChB53F,KAAKmyF,IAAMo4N,IACXvqT,KAAK0jJ,QAAS,EAElBliH,OACI,OAAOyrD,aAAiBjtF,WAU1BwqT,SAAN,SACI1qT,eAAe0hL,IACX,GAAIA,GAAUzvL,OAAS,EACnB,MAAM,IAAI03C,MAAM,+BACpBzpC,KAAKwhL,UAAYA,GAarBnsL,IAAIgR,GAAOyhJ,IACP,QAAShtJ,GAAI,EAAGA,GAAIkF,KAAKwhL,UAAUzvL,OAAQ+I,KAAK,CAC5C,MAAM0S,GAAMxN,KAAKwhL,UAAU1mL,IAAGzF,IAAIgR,GAAOmkT,GAAc30J,WACvD,GAAIroJ,KAAQg9S,GAAc30J,UACtB,OAAOroJ,GAEf,GAAI+8E,UAAUx4F,QAAU,EACpB,OAAO+1J,GAEX9nJ,KAAKwhL,UAAU,GAAGnsL,IAAIgR,KAG9BmkT,UAAc30J,UAAY,GA7BpB20J,OAgCFv3S,GAAK,EA0DH80B,SAAN,SACIjoC,YAAYq0B,GAAQ/9B,GAAQkhJ,IACxBt3I,KAAKm0B,OAASA,GACdn0B,KAAKs3I,iBAAmBA,GAExBt3I,KAAKyqT,YAAc,GACnBzqT,KAAK0kL,QAAUtuL,GAEfs0T,UAAMl9S,IACNxN,KAAKe,KAAOyM,GAKZu2B,YACA,OAAOonD,QAAM,4CAANA,CAAmDnrF,MAE9DsyB,WACI,MAAM6B,GAASn0B,KAAKm0B,OACdw2R,GAAY3qT,KAAK0kL,QAAQhwF,IACzB3zF,GAAOf,KAAKe,MAAQ,WAC1Bf,KAAKyqT,YAAc,CACfh2N,MAAO,MACPxhF,GAAIA,KACJlS,KAAMA,GACN2zF,IAAKi2N,GAAYA,GAAY,IAAM5pT,GAAOA,GAC1CyzF,gBAAiBx0F,KAAK0kL,QAAQznL,QAC9BigH,cAAel9G,KAAK4qT,mBAAmBh/P,KAAK5rD,MAC5CqtB,YAAQz4B,GAEZoL,KAAK6qT,yBAA2B12R,GAAOvF,kBAAkBwiF,SAAS,GAAKr9E,IAC5D/zB,KAAK8qT,qBAAqB/2R,KAErC/zB,KAAK+qT,iCAAmC52R,GAAOvF,kBAAkBm4B,UAAU,GAAKhzB,IAAU/zB,KAAKgrT,6BAA6Bj3R,KAC5H/zB,KAAKirT,kBAAoB92R,GAAOqsF,YAAYpD,eAAep9G,KAAKyqT,aAUpEK,qBAAqB/2R,IACjB,MAAMguG,GAAW/hI,KAAKkrT,eAAiBlrT,KAAKkrT,cAAcnpL,SACpDopL,GAAcppL,IAAYA,GAAS7pF,UACzC,IAAIg0C,QAAWi/N,IAAc,CACzB,MAAMpnR,GAAQ/jC,KAAK+jC,OACoB,IAAnChQ,GAAMguE,UAAUtsG,QAAQsuC,KACxBhQ,GAAM9/B,QAAQ,GAAI,WACd,OAAOk3T,GAAYt5T,KAAKkwI,GAAUhuG,OAQlDi3R,6BAA6BI,IACzB,MAAMrpL,GAAW/hI,KAAKkrT,eAAiBlrT,KAAKkrT,cAAcnpL,SAE1D,IAAI71C,QADsB61C,IAAYA,GAASz6D,mBACZ,CAC/B,MAAM3sC,GAAY36B,KAAK+jC,MAKvB,GAAIqnR,KAHsBhoN,IADCY,KAAehkG,KAAKyqT,YAAYp9R,OAAO4T,MACzBkjE,cAAc,gBAAgBrvG,OAGiB,IAA9Cs2T,GAAarpN,UAAUtsG,QAAQklC,IACrE,OACJ,MAAMkQ,GAAWugR,GAAavvT,OAAO,MAC/Bk2G,GAAaq5M,GAAavvT,OAAO,QACjCwvT,GAAiBruT,IAASA,GAAKmhG,YAC/BmtN,GAAWF,GAAa1pN,YAAY,MAAM1sG,IAAIq2T,IAAezsP,OAAO+wB,KAAS,IAC7E47N,GAAaH,GAAa1pN,YAAY,QAAQ1sG,IAAIq2T,IAAezsP,OAAO+wB,KAAS,IAEjF67N,GAAkBF,GAASljT,OAAQszF,KACrC,MAAM9M,GAAM28N,GAAW91T,QAAQimG,IAC/B,OAAe,IAAR9M,KAAe28N,GAAW38N,IAAK1xF,KAAK0wF,OAAO/iD,GAAS6wD,GAAMzoF,IAAK8+F,GAAWrW,GAAMzoF,OAG3F,GAAIu4S,GAAgBz5T,OAAQ,CACxB,MAAM05T,GAAcD,GAAgBx2T,IAAKqiD,IAAMA,GAAEpkC,IAE3Cy4S,IAAYtjT,QAAOyiC,GAAU,CAACr9B,GAAKvY,MAAqC,IAA7Bw2T,GAAYh2T,QAAQR,KACrE8sI,GAASz6D,kBAAkBokP,GAAWN,MAIlDO,eACQ3rT,KAAKkrT,eACLlrT,KAAKkrT,cAAct3S,UACvB5T,KAAKkrT,cAAgB,KAEzBl/R,cACQhsB,KAAKirT,mBACLjrT,KAAKirT,oBACLjrT,KAAK6qT,0BACL7qT,KAAK6qT,2BACL7qT,KAAK+qT,kCACL/qT,KAAK+qT,mCACT/qT,KAAKirT,kBAAoBjrT,KAAK6qT,yBAA2B7qT,KAAK+qT,iCAAmC,KACjG/qT,KAAK2rT,eAMTf,mBAAmBv9R,IAGf,IAAKA,GACD,OAAOrtB,KAAK2rT,eAEVt+R,cAAkBu+R,GAGpB5rT,KAAKyqT,YAAYp9R,SAAWA,KAGhCrtB,KAAK2rT,eACLtzN,8BAA+Br4F,KAAKyqT,YAAap9R,IAAUA,GAAOuqE,SAASC,UAC3E73F,KAAK6rT,oBAAoBx+R,IAEzBrtB,KAAKkrT,cAAc3kH,kBAAkB7tD,gBAEzCmzK,oBAAoBx+R,IAChBrtB,KAAKyqT,YAAYp9R,OAASA,GAE1B,MAAMpwB,GAAU,IAAI+mG,KAAe32E,GAAO4T,MACpC6qR,GAAoB9rT,KAAK+rT,sBAAsB9uT,IAE/C+uT,GAAiB3+R,GAAOuqE,SAASrkE,UAGjC04R,GAAcC,GAD0B72T,IAAIyxM,OACV1F,wBAAwB4qH,IAChEhsT,KAAKkrT,cAAgBlrT,KAAKmsT,iBAAiB3gH,gBAAgBygH,QAAar3T,EAAWk3T,IAEnF9rT,KAAKosT,oBAAoBH,GAAajsT,KAAKkrT,cAAcnpL,SAAU9kI,GAAS+uT,IAYhFD,sBAAsB9uT,IAMlB,MAAMovT,GAAejuN,GAHhB8F,YACAlvG,IAAKqR,IAAUpJ,GAAQknG,cAAc99F,KACrC+B,OAAQm9C,IAAMA,GAAEu9C,UACY9tG,IAAKuwD,KAAO,CAAEn5B,QAASm5B,GAAEl/C,MAAO2mB,SAAU/vB,GAAQuxB,WAAWn5B,IAAIkwD,GAAEl/C,UAEpGgmT,GAAa34T,KAAK,CAAE04B,QAAS2b,GAAOukR,cAAet/R,SAD9B,CAAE/vB,QAAS+C,KAAKyqT,YAAYp9R,OAAOuqE,SAASC,SAAUnD,IAAK10F,KAAKyqT,YAAY/1N,OAEjG,MAAM63N,GAA0BvsT,KAAKs3I,iBAAiB9oH,SAChDsmI,GAAiB73J,GAAQknG,cAAcJ,MAAuBjvG,KAC9D03T,GAAuB,IAAIhC,GAAc11J,GAAgBy3J,IAC/D,OAAOjoI,uBAAoC+nI,GAAcG,IAQ7DJ,oBAAoBtzT,GAASy6B,GAAWt2B,GAAS+uT,IAC7C,MAAMj9H,GAAW/uL,KAAKyqT,YAAYp9R,OAAOuqE,SAASm3F,UAAe,GAC3D09H,GAAqBx5T,OAAOC,KAAK67L,IAGjC29H,GAAoBv5T,KACtB,MAAMyJ,GAAQ9D,GAAQsnI,OAAOh6H,KAAMtL,IAAMA,GAAEqpM,eAAiBhxM,IAC5D,OAAQyJ,IAASA,GAAMu8J,UAAahmK,IAGlCw5T,GAAsBF,GAAmB7tP,OAAO,CAACiuB,GAAK53F,KAAQ43F,GAAIhoE,OAAO,CAAC,CAAE1xB,KAAMu5T,GAAiBz3T,IAAMoR,MAAO0oL,GAAS95L,OAAU,IAEnI23T,GAvOc9zT,KACjBA,GAAQsnI,OAAOprI,IAAK4H,KAAW,CAAEzJ,KAAMyJ,GAAMu8J,SAAU9yJ,MAAOzJ,GAAMunM,gBAsO3C0oH,CAAmB/zT,IAASsP,OAAQ5D,MAAWiqF,QAAQg+N,GAAoBjoT,GAAMrR,OAKvGq7B,GAAWvxB,GAAQuxB,WACzBm+R,GACK9nS,OAAO+nS,IACP53T,IAPkBwP,KAAW,CAC9BrR,KAAMqR,GAAMrR,KACZsjG,WAAYx5F,GAAQknG,cAAc3/F,GAAM6B,UAMvC+B,OAAQ5D,IAAUA,GAAMiyF,YAAcjyF,GAAMiyF,WAAWqM,UACvDlwG,QAAS4R,KACV+uB,GAAU/uB,GAAMrR,MAAQq7B,GAASn5B,IAAImP,GAAMiyF,WAAWpwF,UAIlE0hC,UAAOukR,cAAgB,uBACvBvkR,GAAOpvC,UAAP,4BAAmGovC,IAAVlvC,MAAkCyxB,MAAlCzxB,MAA0DkvC,GAAOukR,eAAjEzzT,MAA2FA,SACpLkvC,GAAOkhH,UADkFpwJ,MACzF,MAAuFkvC,GAAvF3Z,6EADyFv1B,KACzFmxC,KAA8S6gK,OAA9S,aADyFhyM,MACzFi0T,GADyFj0T,WACzFs9R,mNADyFt9R,cAErF,8BAFqFA,aAGrF,yBAFJ,OADyFA,MAGxE,GAHwEA,MAGxE,4BAFjBoyJ,YAG0C/uE,MAH1Ch0D,kBAvMM6f,OAyOAglR,SAAN,SACIjtT,YAAYi/S,GAAK/2R,IACbhoB,KAAK++S,IAAMA,GACX/+S,KAAKgoB,UAAYA,GAErBglS,eACI,MAAyC,WAAlChtT,KAAK++S,IAAI5vQ,cAAcxjC,MAAW,CAE7CuoD,OAAO5rB,KACE0jD,QAAkB1jD,IAInBtoC,KAAKgoB,UAAUsD,gBAAgBtrB,KAAK++S,IAAI5vQ,cAAe,QAHvDnvC,KAAKgoB,UAAUe,YAAY/oB,KAAK++S,IAAI5vQ,cAAe,OAAQ7G,KAOvEykR,UAAap0T,UAAb,4BAAyGo0T,IApDhBl0T,MAoD8CA,OApD9CA,MAoDwEA,SACjKk0T,GAAal6K,UArD4Eh6I,MAqDzF,MAA6Fk0T,GAA7F3+R,gCAlBM2+R,OAgEAE,SAAN,SACIntT,YAAYojH,GAASgqM,GAAe92T,IAKhC4J,KAAKmtT,aAAe,IAAIv/D,KAAc,GACrB5tP,KAAKotT,OAAQ,EAC9BptT,KAAKkjH,QAAUA,GACfljH,KAAKktT,cAAgBA,GACrBltT,KAAK0kL,QAAUtuL,GACf4J,KAAKqtT,WAAanqM,GAAQvwF,QAAQq3R,QAAQ3lO,UAAU,IAAMrkF,KAAKk0D,UAG/DoY,WAAO9+D,IACPxN,KAAK+jC,MAAQv2B,GACbxN,KAAKk0D,SAGLqY,aAAS/+D,IACTxN,KAAKnE,OAAS2R,GACdxN,KAAKk0D,SAGLo5P,cAAU9/S,IACVxN,KAAKuB,QAAUiM,GACfxN,KAAKk0D,SAET5hC,WACItyB,KAAKotT,OAAQ,EACbptT,KAAKk0D,SAETgL,YAAYC,IACRn/D,KAAKk0D,SAETloC,cACIhsB,KAAKotT,OAAQ,EACbptT,KAAKqtT,WAAWv6P,cAChB9yD,KAAKmtT,aAAar6P,cAEtBoB,SACI,MAAMurC,GAASz/F,KAAKkjH,QAAQnuF,aAC5B,GAAI/0B,KAAKotT,MAAO,CACZ,MAAMG,GAAY9tN,GAAO9zF,OAAO3L,KAAK+jC,MAAO/jC,KAAKnE,OAAQmE,KAAKwtT,cAC9DxtT,KAAKmtT,aAAa1wT,KAAK8wT,IAE3B,GAAIvtT,KAAKktT,cACL,GAAKltT,KAAK+jC,MAGL,CACD,MAAMuE,GAAOm3D,GAAOn3D,KAAKtoC,KAAK+jC,MAAO/jC,KAAKnE,OAAQmE,KAAKwtT,eAAiB,GACxExtT,KAAKktT,cAAch5P,OAAO5rB,SAJ1BtoC,KAAKktT,cAAch5P,OAAO,KAIA5rB,CAItCklR,aAMI,OAAO9/N,QALa,CAChB6R,SAAUv/F,KAAK0kL,SAAW1kL,KAAK0kL,QAAQznL,SAAW+C,KAAK0kL,QAAQznL,QAAQ8D,KACvE0nC,SAAS,EACT1D,OAAQ,QAEe/kC,KAAKuB,SAAW,IAG/CyzB,GAAGojR,GAAQ78E,GAASC,IAChB,KAAKx7N,KAAKktT,gBACLltT,KAAKktT,cAAcF,gBAAkB5U,MAAWjsN,QAASisN,KAAW78E,IAAWC,MAC/Ex7N,KAAK+jC,OAGV,YAAKm/E,QAAQnuF,aAAaC,GAAGh1B,KAAK+jC,MAAO/jC,KAAKnE,OAAQmE,KAAKwtT,eACpD,GAGfP,UAAOt0T,UAAP,4BAAmGs0T,IA9KVp0T,MA8KkCyxB,MA9KlCzxB,MA8K0Dk0T,GAAnJ,GA9KyFl0T,MA8KmGkvC,GAAOukR,iBACnMW,GAAOp6K,UA/KkFh6I,MA+KzF,MAAuFo0T,GAAvF7+R,gEA/KyFv1B,MA+KzF,4BAAuFs9R,0CAAvF/1J,6HA/KyFvnI,SAmGnFo0T,OAyGN,MAAMQ,EAAiB,CACnBlwM,QAAQ,EACR2uH,OAAO,EACPlqI,UAAU,EACVD,SAAS,EACT2rN,aAAc,IAmClB,WAA0BC,GAAUC,IAChC,OAAOA,GAAW54T,IAAKgI,IAAS2wT,GAAS9oS,OAAOq7E,aAAkB0tN,GAAaxsT,IAAMA,GAAE2iC,QAAU/mC,GAAK+mC,SA6B1G,YAAyBq1D,GAAMC,IAC3B,MAAO,CACHkkB,OAAQnkB,GAAKmkB,QAAUlkB,GAAMkkB,OAC7B2uH,MAAO9yI,GAAK8yI,OAAS7yI,GAAM6yI,MAC3BlqI,SAAU5I,GAAK4I,UAAY3I,GAAM2I,SACjCD,QAAS3I,GAAK2I,SAAW1I,GAAM0I,QAC/B2rN,aAAct0N,GAAKs0N,aAAa7oS,OAAOw0E,GAAMq0N,mBAmD/CG,SAAN,SACI/tT,YAAYguT,GAAaC,IAErB/tT,KAAKguT,aAAe,IAAI7wQ,OAAa,GACrCn9C,KAAK+tT,SAAWA,GAChB/tT,KAAK8tT,YAAcA,GACnB9tT,KAAK8+B,OAAS7rC,OAAOqe,OAAO,GAAIm8S,GAEpC98J,qBAGI,MAAMs9J,GAAejuT,KAAK+tT,SAASlE,OAAOzpR,MAAKw3M,OAAW7jN,KACtD,MAAMhgC,GAAS4lH,KAAS,CAAEA,OAAK5lF,WACzBm6R,IAAczsK,QAAG1tJ,GAAM,UACvBo6T,GAAcp6R,GAAMtK,QAAQO,KAAK,IAAMj2B,GAAM,WAAY,IAAMA,GAAM,UACrEq6T,IAAet3T,OAAKq3T,IAC1B,OAAOtpS,OAAOqpS,GAAaE,OAEzBC,GAAgBC,IAAkBA,GAAczpS,OAAO7kB,KAAK8tT,aAAa1lT,OAAOkrF,MAAU10B,OAAOkxB,KAAO,IAE9G9vF,KAAKuuT,QAAU,IAAIn9E,IAAgBi9E,GAAaruT,KAAKwuT,OAAO5kH,YAC5D5pM,KAAKyuT,gBAAkBzuT,KAAKwuT,OAAOrvP,QAAQklB,UAAWqqO,IAAU1uT,KAAKuuT,QAAQ9xT,KAAK4xT,GAAaK,GAAM9kH,aACrG,MAAM+kH,GAAgB3uT,KAAKuuT,QAAQnuR,MAAKw3M,OAAW82E,KAAU72E,OAAc62E,GAAM15T,IAAK45T,IAASA,GAAKzB,iBAGpGntT,KAAKi4I,cAAgBg2K,GAChB7tR,MAAKw3M,OAAWj+H,IACVg1M,GAAcvuR,MAAKprC,OAAK65T,IAEpBC,GADkB95T,IAAK2W,IAxG9C,YAAuB5X,GAAOg7T,IAC1B,MAAMC,GArCWrjT,MACjB,IAAKA,GAAO+zF,SACR,MAAO,KAAM,EACjB,MAAM37D,GAAQp4B,GAAO8zF,SACfwvN,GAAkBtjT,GAAO9P,SAEzBsiG,GAAc3nC,EADD0pC,aAAoBv0F,IAElC3W,IAAKgI,IAASA,GAAKmhG,aACnBv/B,OAAO+wB,KAAS,IAChBvnF,OAAQszF,IAAUuzN,GAAgBn1T,eAAe4hG,GAAMzoF,KAC5D,OAAQguB,KACJ,MAAMiuR,IAAW1iO,QAAKvrD,IACtB,IAAKiuR,IAAYA,GAASnrR,QAAUA,GAChC,OAAO,EACX,MAAMy3D,GAAc0E,iBAAsBj/D,IAC1C,OAAO84D,YAAaoE,GAAa3C,GAAayzN,MAsBxBE,CAAYJ,IAChC77M,GAAKn/G,GAAMggC,MAAM2tE,cACjB0tN,GAA6B,UAAdr7T,GAAM4lH,IAErB01M,GAD+B,YAClBC,GADU31M,IACOzG,GAAGpkF,GAAKokF,GAAGp8G,KAK/C,MAAO,CACHymH,OALmBgyM,EAAiB,GAAIF,IAAYr6T,IAAIg6T,IAAmBpwP,OAAO8wB,MAAU,GAM5Fw8I,MALkB8iF,GAAkBK,IAMpCrtN,WAAUotN,IALWG,EAAiBr8M,GAAGpR,SAAUoR,GAAGlR,UAAUhtG,IAAIg6T,IAAmBpwP,OAAO8wB,MAAU,GAMxGqS,UAASqtN,IALWG,EAAiBr8M,GAAGpR,SAAUoR,GAAGnR,SAAS/sG,IAAIg6T,IAAmBpwP,OAAO8wB,MAAU,GAMtGg+N,aAAc,CAACqB,KAyFkCS,CAAc71M,GAAKhuG,KAC5CizD,OAAO6wP,QAG1BprO,UAAUrkF,KAAK0vT,WAAW9jQ,KAAK5rD,OAExCgsB,cACQhsB,KAAKi4I,eACLj4I,KAAKi4I,cAAcnlF,cACnB9yD,KAAKyuT,iBACLzuT,KAAKyuT,gBAAgB37P,cACrB9yD,KAAKuuT,SACLvuT,KAAKuuT,QAAQz7P,cACjB9yD,KAAKi4I,cAAgBj4I,KAAKyuT,gBAAkBzuT,KAAKuuT,aAAU35T,EAE/D86T,WAAW5wR,IACP9+B,KAAK8+B,OAASA,GACd9+B,KAAKguT,aAAazwQ,KAAKze,KAG/B+uR,UAAal1T,UAAb,4BAAyGk1T,IA3XhBh1T,MA2X8Co0T,GAAvI,IA3XyFp0T,MA2XyGyxB,QAClMujS,GAAah7K,UA5X4Eh6I,MA4XzF,MAA6Fg1T,GAA7Fz/R,8HA5XyFv1B,MA4XzFi0T,GAAiQG,GAAjQ,gBA5XyFp0T,MA4XzFioD,GA5XyFjoD,WA4XzFs9R,kFAjDM03B,OAsJA8B,SAAN,SACI7vT,YAAYkuT,GAAc4B,GAAKt5T,IAC3B0J,KAAK6vT,SAAW,GAChB7vT,KAAK8vT,WAAa,GAClB9vT,KAAKi4I,cAAgB+1K,GAAaA,aAAa3pO,UAAW5nF,KACtDuD,KAAK6vT,SAASj9T,QAAS6mK,KACfh9J,GAAK8gH,OACLqyM,GAAI15S,SAAS5f,GAAK64C,cAAesqH,IAGjCm2J,GAAI/3S,YAAYvhB,GAAK64C,cAAesqH,MAG5Cz5J,KAAK8vT,WAAWl9T,QAAS6mK,KACjBh9J,GAAKyvO,MACL0jF,GAAI15S,SAAS5f,GAAK64C,cAAesqH,IAGjCm2J,GAAI/3S,YAAYvhB,GAAK64C,cAAesqH,QAKhDl8C,WAAO/vG,IACPxN,KAAK6vT,SAAWriT,GAAInP,MAAM,OAE1B0xT,aAASviT,IACTxN,KAAK8vT,WAAatiT,GAAInP,MAAM,OAEhC2tB,cACIhsB,KAAKi4I,cAAcnlF,eAG3B68P,UAAah3T,UAAb,4BAAyGg3T,IAlgBhB92T,MAkgB8Cg1T,IAlgB9Ch1T,MAkgBuEA,OAlgBvEA,MAkgBgGA,MAAzL,KACA82T,GAAa98K,UAngB4Eh6I,MAmgBzF,MAA6F82T,GAA7FvhS,+IAlCMuhS,OAqDN,MAQqBK,GAAuB,IAAI9jS,MAAe,wBAC1C+jS,GAAwB,IAAI/jS,MAAe,mBAGhE,YAA2BqC,GAAUC,GAAU08F,GAAS,IACpD,OAAIh/B,QAAWg/B,GAAO79F,SAClB69F,GAAO79F,OAAOkB,GAAUC,GAAU08F,KAEvBA,GAAOrqH,QAAU,IAClB7L,IAAK+uC,IAAUxV,GAAS+7E,cAAct3F,SAAS+wB,KA0IjE,YAAuC3tC,GAAQ25J,GAAO1pJ,IAClD,MAAM6pT,GAAYngK,GAAM16J,IAAIgR,GAAO,IAC7B8pT,GAAa/5T,GAAOf,IAAIgR,GAAO,IACrC,OAAO6pT,GAAU9nT,OAAQoF,KAAoC,IAA5B2iT,GAAW16T,QAAQ+X,IAAS,CA8CjE,YAA4Bu2B,GAAO3tC,IAC/B,MAAMg6T,GAAiBrsR,GAAMvU,aAC7B,OAAO4gS,GA9IX,YAAsBC,IAClB,MAAO,CAAChvT,GAAYwkG,MAChB,MAAMyqN,GAAcjvT,GAAWmtB,WAAWn5B,IAAI0uG,MAG9C,OAYR,YAA2BssN,GAAcC,IACrC,MAAM1uE,GAAW0uE,GAAYj7T,IAAIs8M,OAEjC,OAAO/0L,QAAQC,QAAQwzS,MAClBrmS,KAF0BqtB,IAAOA,IAAKA,GAAE2nL,YAAc3nL,GAAE2gB,QAAa3gB,GAAE2gB,QAAa3gB,IAGpFrtB,KAAM27D,IACHA,cAAaksH,MACNlsH,GAEJi8J,GAAS9vC,mBAAmBnsH,KArB5Bu8J,CAAkBmuE,GAAcC,IAAatmS,KAF9BlxB,IAAYA,GAAQiU,OAAOujT,KAEsBtmS,KADlD0vL,IAuC7B,YAAuBr4M,GAAYkvT,GAAW7oH,GAAgBnlF,IAC1D,MAAM/zF,GAAW+hS,GAAU/hS,SACrBD,GAAWC,GAASn5B,IAAIirH,MACxBlgB,GAAW7xE,GAAS+7E,cACpBkmN,GAAejuM,GAAcxhH,KAC7B0vT,GAAgBrwN,GAAS/qG,IAAIm7T,IAE7BE,GAAW,eAAe50T,KAAK00T,IAE/BG,GAAkBD,IAAYA,GAAS,GACvCE,GAAiBC,GAA8BnpH,GAAgBl5K,GAAUwhS,IAAsBpxP,OAAOkxB,KAAO,IAC7GghO,GAAkBD,GAA8BnpH,GAAgBl5K,GAAUyhS,IAAuBrxP,OAAOkxB,KAAO,IACrH,GAAI8gO,GAAe7+T,OACfk9B,cAAQoD,IAAIu+R,IACN,IAAInnR,MAAM,4EAEpB,MAAMsnR,GAAkBD,GACnB97T,IAAKk2H,IAAW8lM,GAAkBziS,GAAUC,GAAU08F,KACtDtsD,OAAO+wB,KAAS,IAChB/wB,OAAOkxB,KAAO,IACnB,GAAI4gO,GAAU,CACV,MAAMO,GAAmB7wN,GAAS/qG,IAAIs7T,IACtC,IAAKM,IAAoBA,KAAqBR,GAC1C,MAAM,IAAIhnR,MAAO,2BAA0B+mR,kFACcG,yCAChBH,4BAC3BG,kGAStBO,OAFwBH,GAAgB3oT,OAAQ27B,MAAW0qD,QAAQsiO,GAAiBhtR,GAAM3tC,SAE1ExD,QAASmxC,IAAUA,GAAMq6D,YAAY1qG,KAAKgvG,cAAoBqB,KAAuBv1E,MAC9F,GA3EgC2iS,CAAc9vT,EAAYq4M,GAAW42G,GAAazqN,IACTurN,EAyIxDC,CAAajB,IAAkBrsR,GAAMu+E,SApM1B,IAAIp2F,MAAe,mBAwM1D,iBAAkCo8F,KAC9BxoH,YAAYq0B,GAAQm9R,GAAmB76T,IACnC6X,MAAM6lB,GAAQ19B,IACduJ,KAAKsxT,kBAAoBA,GACzBtxT,KAAKsxT,kBAAkB7sL,WAAY9qB,KACd,eAAbA,GAAIz8G,MACJ8C,KAAKwoH,UAAU7O,MAI3B8O,OACI,OAAOzoH,KAAKsxT,kBAAkBrwR,MAAK,GAAM/kC,QAAQ8D,KAAKsxT,kBAAkB7mM,cAAcvuH,QAAQ,MAAO,IAAK,IAE9Gq5F,KAAKxxD,GAAOyiC,GAAOj3C,GAAKrzB,IACpB,MAAQ+kC,QAAM+0E,UAAQhZ,UAASkJ,QAAS32E,IAClCgiS,GAAiBv0N,GAAO,IAAMA,GAAO,GAC3C,IAAIw0N,GAAUvwR,GACV0lE,GAAYqP,GACZA,GACArP,IAAa4qN,GAGbC,IAAWD,GAEfzE,GACI9sT,KAAKsxT,kBAAkBnnM,aAAapmF,GAAOyiC,GAAOgrP,GAAS7qN,IAG3D3mG,KAAKsxT,kBAAkB5oR,UAAU3E,GAAOyiC,GAAOgrP,GAAS7qN,IAGhElhD,QAAQtxB,IACJ7lB,MAAMm3C,QAAQtxB,KAItB,iBAAgCi2F,KAC5BtqH,YAAYq0B,GAAQm9R,IAChBhjT,MAAM6lB,IAAQq3D,QAAG65C,KAAH75C,CAAyB8lO,KACvCtxT,KAAKsxT,kBAAoBA,GAE7Bp+R,SAASoV,IACL,OAAOtoC,KAAKsxT,kBAAkB7mM,eA4ItC,MAAMgnM,GAA+B,CACjC,CACIrlS,QAASk0F,KACT/zF,WAjDR,YAAyBmlS,GAAkBC,GAAalrH,GAASj4K,IAC7D,GAA2B,IAAvBmjS,GAAY5/T,OACZ,MAAM,IAAI03C,MAAM,+FAIpB,MAAMtV,GAAS,IAAImsF,KAEnBnsF,GAAO0sF,OAAO8oM,GAEdx1R,GAAO0sF,OAAO+wM,MAGd3kO,mBAAyBz+D,GAASn5B,IAAIu2D,KAAKp9B,IAE3C2F,GAAOf,gBAAkB,IAAIy+R,GAAoB19R,GAAQu9R,IAAkBI,QAAkBtjS,GAASn5B,IAAIuvJ,SAC1GzwH,GAAOhB,eAAiB,IAAI4+R,GAAkB59R,GAAQu9R,IAGtDv9R,GAAOqsF,YAAYxR,WAAWqM,mBAAmB,MADvB,CAACp6E,GAAM5T,KAAW,IAAIu+R,EAAc3qR,GAAM5T,KAGpE,MAAM+yE,GAAWjsE,GAAOm2E,cACxBlK,GAASmL,UAAU,QAASymN,IAC5B5xN,GAASmL,UAAU,WAAY0mN,IAE/B,MAAMC,GAAwBxvN,cAAoBqB,KAAuBv1E,IACzE4xE,UAASliF,OAAOkgF,YAAY1qG,KAAKw+T,IAEjC/9R,GAAOuzE,kBAAkBgR,OAEzBi5M,GAAY/+T,QAASu/T,IArWzB,WAA+B5jS,GAAUC,GAAU08F,KAC/Cp/B,QAAUo/B,GAAOtR,iBAAmBrrF,GAASE,WAAWmrF,eAAesR,GAAOtR,iBAC9E9tB,QAAUo/B,GAAOlR,YAAczrF,GAASE,WAAWoqC,MAAMmhD,UAAUkR,GAAOlR,YAC1EluB,QAAUo/B,GAAOnR,UAAYxrF,GAASE,WAAWoqC,MAAMkhD,QAAQmR,GAAOnR,SAkWhCq4M,CAAsBj+R,GAAQ3F,EAAU2jS,KAC9E1rH,GAAQ7zM,QAASu/T,IAAiBnB,GAAkB78R,GAAQ3F,GAAU2jS,KAC/Dh+R,IAkBHxH,KAAM,CAACw4G,KAAkB6qL,GAAsBC,GAAuBtyI,QAE1E,CAAEvxJ,QAAS2b,GAAOukR,cAAe//R,WATrC,YAAmCg5B,IAC/B,MAAO,CAAEmvC,IAAK,KAAMz3F,QAASsoD,GAAErnC,SAQyCyO,KAAM,CAACg+E,OAC/E,CAAEv+E,QAASuF,MAAiBpF,WAlBhC,YAAwB4H,IACpB,MAAO,KACEA,GAAOssF,UAAU7F,oBAClBzmF,GAAO1F,WAAWza,SAClBmgB,GAAO1F,WAAWuY,UAc8Bra,KAAM,CAAC2zF,MAAWpqH,OAAO,IA0B/Em8T,GAA8B,CAChC,CAAEjmS,QAASs0F,KAAcn0F,WAzB7B,YAAwBg5B,IACpB,OAAOA,GAAExwB,cAwB4CpI,KAAM,CAAC2zF,OAC5D,CAAEl0F,QAAS+D,KAAmB5D,WAvBlC,YAA6Bg5B,IACzB,OAAOA,GAAE32B,mBAsBsDjC,KAAM,CAAC2zF,OACtE,CAAEl0F,QAASisF,KAAmB9rF,WArBlC,YAA6Bg5B,IACzB,OAAOA,GAAEmiD,mBAoBsD/6E,KAAM,CAAC2zF,OACtE,CAAEl0F,QAASstF,KAAWntF,WAnB1B,YAAqBg5B,IACjB,OAAOA,GAAEk7D,WAkBsC9zF,KAAM,CAAC2zF,OACtD,CAAEl0F,QAASuzF,KAAYpzF,WAjB3B,YAAsBg5B,IAClB,OAAOA,GAAE92B,YAgBwC9B,KAAM,CAAC2zF,OACxD,CAAEl0F,QAAS2uF,KAAaxuF,WAf5B,YAAuBg5B,IACnB,OAAOA,GAAEi7D,aAc0C7zF,KAAM,CAAC2zF,OAC1D,CAAEl0F,QAASu+E,KAAep+E,WAb9B,YAAyBg5B,IACrB,OAAOA,GAAE+kD,eAY8C39E,KAAM,CAAC2zF,OAC9D,CAAEl0F,QAASyxF,KAAiBtxF,WAXhC,YAAmBg5B,IACf,OAAOA,GAAE5yB,SAU0ChG,KAAM,CAAC2zF,QAW9D,YAA2B1xF,GAAmB1Q,IAC1C,MAAMo0S,GAAMp0S,GAAK,GACjB,OAAKo0S,IAAQA,GAAIC,mBAGV,IAAM,IAAI31S,QAASC,KAItB+R,GAAkB36B,QAAQ,GAHZ8/B,KACVA,GAAMtK,QAAQO,KAAKnN,GAASA,KAEI,CAAE6wF,YAAa,MAN5C,IAAM9wF,QAAQC,SAM8B,CAG3D,YAA2BquG,IACvB,MAAO,CACH,CAAE9+F,QAAS4jS,GAAsBhjS,SAAUk+F,GAAQh1H,OAAO,GAC1D,CAAEk2B,QAAS6jS,GAAuBjjS,SAAUk+F,GAAQh1H,OAAO,GAC3D,CAAEk2B,QAAS2tI,MAA8B/sI,SAAUk+F,GAAOrqH,QAAU,GAAI3K,OAAO,GAC/E,CACIk2B,QAASuF,MACTpF,WAAYimS,GACZ7lS,KAAM,CAACwD,KAAmB6/R,IAC1B95T,OAAO,IAInB,YAA4Bg1H,IACxB,MAAO,CACH,CAAE9+F,QAAS6jS,GAAuBjjS,SAAUk+F,GAAQh1H,OAAO,GAC3D,CAAEk2B,QAAS2tI,MAA8B/sI,SAAUk+F,GAAOrqH,QAAU,GAAI3K,OAAO,IAGvF,YAA0Bu8T,IACtB,MAAO,CAAErmS,QAAS+4G,KAAkB94G,SAAUomS,GAAUxsL,KAAuBZ,MApCxDosL,GAA6B5sS,OAAOwtS,QA2DzD5hS,SAAN,SAAqBrD,eAqCFC,GAAS,IACpB,MAAO,CACHC,SAAUmD,GACVlD,UAAW,CACPkkS,GACAY,GACAX,GAAiBrkS,GAAOolS,YACrBC,GAAkBrlS,sBA4BjB69F,GAAS,IACrB,MAAO,CACH59F,SAAUmD,GACVlD,UAAWolS,GAAmBznM,MAI1Cz6F,UAAe93B,UAAf,4BAA2G83B,KAC3GA,GAAejD,UAzlC0E30B,MAylCzF,MAA4G43B,KAC5GA,GAAehD,UA1lC0E50B,MA0lCzF,UAAsI,CAACw2B,SAjFjIoB,yHC51CN,MAAMpD,EAAS,IAAInB,MAAe,mBAC5B0mS,EAAa,IAAI1mS,MAAe,uBAChC2mS,EAAiB,IAAI3mS,MAAe,2BACpC4mS,EAAgB,CAClBzyI,OAAQ,GACRF,OAAQ,GACR4yI,kBAAmB,IACnBC,cAAe,CAAC,IAAK,KACrBC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,qBAAsB,IACtBC,uBAAuB,EACvBC,iBAAa1+T,EACb2+T,oBAAqB,GACrBC,eAAgB,GAChBC,sBAAsB,EACtBC,YAAY,EAEZC,kBAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACrFC,kBAAkB,EAClBC,qBAAqB,EACrBC,WAAY,IAAI32Q,MAChBu4D,SAAU,CACN,EAAK,CACD/uB,QAAS,IAAI/qF,OAAO,QAExB,EAAK,CACD+qF,QAAS,IAAI/qF,OAAO,OACpB4K,UAAU,GAEd89N,EAAG,CACC39I,QAAS,IAAI/qF,OAAO,OACpB0tI,OAAQ,KAEZnoF,EAAG,CACCwlC,QAAS,IAAI/qF,OAAO,gBAExBwhB,EAAG,CACCupE,QAAS,IAAI/qF,OAAO,aAExBkoO,EAAG,CACCn9I,QAAS,IAAI/qF,OAAO,UAExB64J,EAAG,CACC9tE,QAAS,IAAI/qF,OAAO,UAExB+/B,EAAG,CACCgrD,QAAS,IAAI/qF,OAAO,QAExBiB,EAAG,CACC8pF,QAAS,IAAI/qF,OAAO,QAExB2hC,EAAG,CACCopD,QAAS,IAAI/qF,OAAO,QAExBq/N,EAAG,CACCt0I,QAAS,IAAI/qF,OAAO,QAExBiwH,EAAG,CACCllC,QAAS,IAAI/qF,OAAO,QAExB8G,EAAG,CACCikF,QAAS,IAAI/qF,OAAO,UAI1Bm4T,EAAY,CAAC,WAAY,QAAS,SAClCC,EAAoB,CACtB,UACA,KACA,KACA,KACA,YACA,aACA,QACA,KACA,UAGEC,QAAN,QACIn0T,YAAY+pH,IACR7pH,KAAK6pH,QAAUA,GACf7pH,KAAKk0T,eAAiB,GACtBl0T,KAAKm0T,YAAc,GACnBn0T,KAAKuzT,oBAAsB,GAC3BvzT,KAAKo0T,sBAAwB,CAACn4T,EAAKo4T,EAAuBC,GAAcl+C,MACpE,IAAIt5P,GAAI+L,GACR,IAAIwuB,GAAI,GACJk9Q,GAAc,GAClB,GAAI19T,MAAM4E,QAAQ64T,IAAe,CAC7B,MAAME,GAAS,IAAI54T,OAAO04T,GAAat/T,IAAKqO,IAAO,eAAe5N,QAAQ4N,KAAM,EAAK,KAAIA,KAAMA,IAAIm+C,KAAK,MACxGnK,GAAIp7C,EAAIoC,MAAMm2T,IACdD,GAA6F,QAA9E1rS,GAAkC,QAA5B/L,GAAK7gB,EAAIzC,MAAMg7T,WAA4B,IAAP13S,QAAgB,EAASA,GAAG,UAAuB,IAAP+L,GAAgBA,GAAK,QAG1HwuB,GAAIp7C,EAAIoC,MAAMi2T,IACdC,GAAcD,GAElB,MAAMl5K,EAAW/jG,GAAEtlD,OAAS,EAAK,GAAEwiU,KAAcl9Q,GAAE,KAAO,GAC1D,IAAIknD,EAAMlnD,GAAE,GACZ,MAAMm8Q,EAAiBxzT,KAAKwzT,eAAet3T,QAAQ,MAAO,IACtDs3T,IAAmBA,IAEfj1N,EADW,MAAXA,EAAI,GACG,IAAGA,EAAInyF,MAAM,EAAGmyF,EAAIxsG,QAAQqa,MAAM,EAAGonT,EAAezhU,UAGrDwsG,EAAInyF,MAAM,EAAGonT,EAAezhU,SAG1C,MAAM0iU,GAAM,eACZ,KAAOJ,GAAyBI,GAAI5tO,KAAK0X,IACrCA,EAAMA,EAAIriG,QAAQu4T,GAAK,KAAOJ,EAAwB,MAE1D,YAAkBz/T,IAAdwhR,GACO73K,EAAM68C,EAEM,IAAdg7H,GACE73K,EAEJA,EAAM68C,EAASzlJ,OAAO,EAAGygR,GAAY,IAEhDp2Q,KAAK00T,WAAcz4T,GACRu4B,OAAOv4B,IAAQ,GAAKu4B,OAAOv4B,IAAQ,IAE9C+D,KAAK20T,aAAgBT,IACjB,MAAM78Q,EAAI68Q,EAAe71T,MAAM,KAC/B,OAAIg5C,EAAEtlD,OAAS,EACJyiC,OAAO6iB,EAAEA,EAAEtlD,OAAS,IAExBgiI,KAEX/zH,KAAK40T,qBAAwBh6P,IACzB,IAAI99C,EAAI+L,GAAI4S,GACZ,QAAS3gC,IAA4B,QAAtBgiB,EAAK9c,KAAKqgL,cAA2B,IAAPvjK,OAAgB,EAASA,EAAG/qB,QAAU,EAAG+I,IAAK,EAAGA,KAAK,CAC/F,MAAMnF,GAASqK,KAAKqgL,OAAO1qL,OAAOmF,GAA0B,QAAtB+tB,GAAK7oB,KAAKqgL,cAA2B,IAAPx3J,QAAgB,EAASA,GAAG92B,QAChG,GAAI6oE,EAAW3wB,SAASt0C,MACnBmF,GAAI,EAAI,IAAM8/D,EAAW3wB,SAASjqC,KAAKqgL,OAAO1qL,OAAOmF,GAAI,EAA0B,QAAtB2gC,GAAKz7B,KAAKqgL,cAA2B,IAAP5kJ,QAAgB,EAASA,GAAG1pC,UACxH,OAAO6oE,EAAW1+D,QAAQvG,GAAQ,IAG1C,OAAOilE,GAEX56D,KAAK60T,oBAAsB,CAACj6P,EAAYw7M,EAAW48C,MAC/C,GAAI58C,EAAYriJ,IAAU,CAEtB,GAAIl9H,MAAM4E,QAAQu3T,IAAgB,CAC9B,MAAMrgK,GAASqgK,GAAc5sT,KAAM0uT,IAAOA,KAAO90T,KAAK+yT,mBAEtDC,GAAgBrgK,IAAkBqgK,GAAc,GAEpD,MAAM+B,GAAiB,IAAIn5T,OAAOoE,KAAKg1T,wBAAwBhC,IAAkB,OAAM58C,SACjF6+C,GAAiBr6P,EAAWphE,MAAMu7T,IACpCE,IAAkBA,GAAe,GAAGljU,OAAS,EAAIqkR,IAGjDx7M,EAAaA,EAAWllE,UAAU,EAAGklE,EAAW7oE,QAFnCkjU,GAAe,GAAGljU,OAAS,EAAIqkR,KAI9B,IAAdA,GACAp2Q,KAAKk1T,mBAAmBt6P,EAAWA,EAAW7oE,OAAS,GAAIihU,GAAehzT,KAAK+yT,qBAE/En4P,EAAaA,EAAWllE,UAAU,EAAGklE,EAAW7oE,OAAS,IAGjE,OAAO6oE,GAEX56D,KAAKm1T,OAAS,IAAIn2T,IAClBgB,KAAKizT,gBAAkBjzT,KAAK6pH,QAAQopM,gBACpCjzT,KAAKqzT,sBAAwBrzT,KAAK6pH,QAAQwpM,sBAC1CrzT,KAAKo1T,sBAAwBp1T,KAAK6pH,QAAQ8pM,kBAC1C3zT,KAAKq1T,sBAAwBr1T,KAAK6pH,QAAQnU,SAC1C11G,KAAKmgL,OAASngL,KAAK6pH,QAAQs2D,OAC3BngL,KAAKqgL,OAASrgL,KAAK6pH,QAAQw2D,OAC3BrgL,KAAK+yT,kBAAoB/yT,KAAK6pH,QAAQkpM,kBACtC/yT,KAAKgzT,cAAgBhzT,KAAK6pH,QAAQmpM,cAClChzT,KAAKszT,YAActzT,KAAK6pH,QAAQypM,YAChCtzT,KAAKmzT,cAAgBnzT,KAAK6pH,QAAQspM,cAClCnzT,KAAKozT,qBAAuBpzT,KAAK6pH,QAAQupM,qBACzCpzT,KAAK0zT,WAAa1zT,KAAK6pH,QAAQ6pM,WAC/B1zT,KAAKwzT,eAAiBxzT,KAAK6pH,QAAQ2pM,eACnCxzT,KAAKyzT,qBAAuBzzT,KAAK6pH,QAAQ4pM,qBACzCzzT,KAAK4zT,iBAAmB5zT,KAAK6pH,QAAQ+pM,iBAEzC0B,qBAAqB16P,GAAY26P,GAC7B,MAAO3gK,EAAM4gK,IAAiBD,EAC9B,YAAKC,cAAgBA,GACdx1T,KAAKy1T,UAAU76P,GAAYg6F,GAEtC6gK,UAAU76P,GAAYs5P,EAAgBhxL,EAAW,EAAGwyL,IAAa,EAAOC,IAAa,EAAOnoO,GAAK,UAC7F,IAAI1wE,GAAI+L,GACR,IAAKqrS,GAAwC,iBAAft5P,GAC1B,MAAO,GAEX,IAAI+wH,GAAS,EACTp0L,EAAS,GACTrB,GAAQ,EACR0/T,GAAiB,EACjBhmQ,GAAQ,EACRimQ,IAAW,EACXj7P,GAAWxuD,MAAM,EAAGpM,KAAKmgL,OAAOpuL,UAAYiO,KAAKmgL,SAEjDvlH,GAAaA,GAAWxuD,MAAMpM,KAAKmgL,OAAOpuL,OAAQ6oE,GAAW7oE,SAE3DiO,KAAKqgL,SAA0B,MAAfzlH,QAA+C,EAASA,GAAW7oE,QAAU,IAE/F6oE,GAAa56D,KAAK40T,qBAAqBh6P,KAE3C,MAAMk7P,GAAal7P,GAAWhpE,WAAWyM,MAAM,IACxB,OAAnB61T,IACAl0T,KAAK+1T,QACDD,GAAW1tT,OAAQtN,IAAY,MAANA,IAAW/I,OAAS,GAAK+jU,GAAW/jU,OAAS,EAE1EmiU,EAAiB,mBAErB,MAAM13T,GAAM,GACZ,QAAS1B,GAAI,EAAGA,GAAI8/D,GAAW7oE,OAAQ+I,MACN,QAAxBgiB,GAAK89C,GAAW9/D,WAAuB,IAAPgiB,QAAgB,EAASA,GAAGtjB,MAAM,SACnEgD,GAAI9I,KAAKknE,GAAW9/D,KAc5B,GAXuB,aAAnBo5T,IACAl0T,KAAKg2T,aAA8B,KAAfx5T,GAAIzK,QAAgC,KAAfyK,GAAIzK,OAGzCmiU,EAFJ74R,GAAQtpC,OAAS,GAEI,qBAIA,kBAGrBmiU,EAAeh5T,WAAW,WAAY,CACtC,GAAI0/D,GAAWphE,MAAM,gBACjBohE,GAAWphE,MAAM,sCAAuC,CAExDohE,GAAa56D,KAAKi2T,gBAAgBr7P,IAClC,MAAMw7M,GAAYp2Q,KAAK20T,aAAaT,GAEpCt5P,GAAa56D,KAAK60T,oBAAoBj6P,GAAYw7M,GAAWp2Q,KAAKgzT,eAElEp4P,GAAWnlE,QAAQ,KAAO,IACzBuK,KAAK00T,WAAW95P,GAAWllE,UAAU,EAAGklE,GAAWnlE,QAAQ,SAG5DmlE,GAAc,GAFDA,GAAWllE,UAAU,EAAGklE,GAAWnlE,QAAQ,KAAO,KAExCmlE,GAAWllE,UAAUklE,GAAWnlE,QAAQ,KAAMmlE,GAAW7oE,WAGhFwF,EADJyI,KAAS00T,WAAW95P,IACPA,GAGAA,GAAWllE,UAAU,EAAGklE,GAAW7oE,OAAS,WAGpDmiU,EAAeh5T,WAAW,aAAc,EACzC0/D,GAAWphE,MAAM,kCACjBohE,GAAWphE,MAAM,gCACjBohE,GAAWphE,MAAM,gBACjBohE,GAAWphE,MAAM,kDACjBohE,GAAWphE,MAAM,oBAEjBohE,GAAa56D,KAAKi2T,gBAAgBr7P,KAGtCA,GACIA,GAAW7oE,OAAS,GACE,MAAlB6oE,GAAW,KACV56D,KAAKk1T,mBAAmBt6P,GAAW,GAAI56D,KAAKgzT,cAAehzT,KAAK+yT,qBAChE4C,GACC/6P,GAAWxuD,MAAM,EAAGwuD,GAAW7oE,QAC/B6oE,GACN+6P,KAEA/6P,GAAa56D,KAAKk1T,mBAAmBt6P,GAAWA,GAAW7oE,OAAS,GAAIiO,KAAKgzT,cAAehzT,KAAK+yT,mBAC3Fn4P,GAAWxuD,MAAM,EAAGwuD,GAAW7oE,OAAS,GACxC6oE,IAIV,MAAMs7P,GAA+Bl2T,KAAKg1T,wBAAwBh1T,KAAK+yT,mBACvE,IAAIoD,GAAe,2CAA2Cj6T,QAAQg6T,GAA8B,IAEpG,GAAIr/T,MAAM4E,QAAQuE,KAAKgzT,eACnB,UAAWrgK,MAAU3yJ,KAAKgzT,cACtBmD,GAAeA,GAAaj6T,QAAQ8D,KAAKg1T,wBAAwBriK,IAAS,SAI9EwjK,GAAeA,GAAaj6T,QAAQ8D,KAAKg1T,wBAAwBh1T,KAAKgzT,eAAgB,IAE1F,MAAMoD,EAAoB,IAAIx6T,OAAO,IAAMu6T,GAAe,MACtDv7P,GAAWphE,MAAM48T,IACM,IAAtBx7P,GAAW7oE,QACRiO,KAAKk1T,mBAAmBt6P,GAAY56D,KAAKgzT,cAAehzT,KAAK+yT,sBAEjEn4P,GAAaA,GAAWllE,UAAU,EAAGklE,GAAW7oE,OAAS,IAE7D,MAAMqkR,GAAYp2Q,KAAK20T,aAAaT,GAG9BmC,IADNz7P,GAAa56D,KAAK60T,oBAAoBj6P,GAAYw7M,GAAWp2Q,KAAKgzT,gBACrC92T,QAAQ,IAAIN,OAAOs6T,GAA8B,KAAM,IACpF3+T,EAASyI,KAAKo0T,sBAAsBiC,GAAWr2T,KAAK+yT,kBAAmB/yT,KAAKgzT,cAAe58C,IAC3F,MAAMkgD,GAAa/+T,EAAO9B,QAAQ,KAAOmlE,GAAWnlE,QAAQ,KACtD8gU,GAAYh/T,EAAOxF,OAAS6oE,GAAW7oE,OAC7C,GAAIwkU,GAAY,GAA0B,MAArBh/T,EAAO2rI,GAAmB,CAC3C0yL,GAAiB,EACjB,IAAIT,GAAS,EACb,GACIn1T,KAAKm1T,OAAOnzT,IAAIkhI,EAAWiyL,IAC3BA,WACKA,GAASoB,SAEG,IAAfD,IAAoBpzL,EAAW,KAAO3rI,EAAO9B,QAAQ,MAAQytI,GAAYA,EAAW,MACvF3rI,EAAO9B,QAAQ,MAAQytI,GAAYA,EAAW,IAAMqzL,IAAa,GACpEv2T,KAAKm1T,OAAO/tT,QACZwuT,GAAiB,EACjBhmQ,GAAQ2mQ,GAGRv2T,KAAKm1T,OAAOnzT,IADZkhI,GAAYqzL,KAIZv2T,KAAKm1T,OAAO/tT,aAIhB,QAEItM,GAAI,EAAG07T,GAAcV,GAAW,GAAIh7T,GAAIg7T,GAAW/jU,QAC/C45L,KAAWuoI,EAAeniU,OAD6B+I,KAAK07T,GAAcV,GAAWh7T,IAIzF,GAAIkF,KAAKy2T,iBAAiBD,GAAatC,EAAevoI,MACnB,MAA/BuoI,EAAevoI,GAAS,GACxBp0L,GAAUi/T,GACV7qI,IAAU,UAE0B,MAA/BuoI,EAAevoI,GAAS,IAC7Bz1L,GACA8J,KAAKy2T,iBAAiBD,GAAatC,EAAevoI,GAAS,IAC3Dp0L,GAAUi/T,GACV7qI,IAAU,EACVz1L,GAAQ,UAEH8J,KAAKy2T,iBAAiBD,GAAatC,EAAevoI,MACxB,MAA/BuoI,EAAevoI,GAAS,GACxBp0L,GAAUi/T,GACVtgU,GAAQ,UAE4B,MAA/Bg+T,EAAevoI,GAAS,IAC7B3rL,KAAKy2T,iBAAiBD,GAAatC,EAAevoI,GAAS,IAC3Dp0L,GAAUi/T,GACV7qI,IAAU,UAEL3rL,KAAKy2T,iBAAiBD,GAAatC,EAAevoI,KAAU,CACjE,GAA+B,MAA3BuoI,EAAevoI,KACXn3J,OAAOgiS,IAAe,EAAG,CACzB7qI,IAAU,EACV3rL,KAAK02T,WAAWxC,EAAgBvoI,GAAQmqI,GAAW/jU,QACnD+I,KACIkF,KAAK4zT,mBACLr8T,GAAU,KAEd,SAGR,GAA+B,MAA3B28T,EAAevoI,KACA,MAAXp0L,GAAkBi9B,OAAOgiS,IAAe,EAAG,CAC3C7qI,IAAU,EACV7wL,KACA,SAGR,GAA+B,MAA3Bo5T,EAAevoI,KACXn3J,OAAOgiS,IAAe,EAAG,CACzB7qI,IAAU,EACV3rL,KAAK02T,WAAWxC,EAAgBvoI,GAAQmqI,GAAW/jU,QACnD+I,KACIkF,KAAK4zT,mBACLr8T,GAAU,KAEd,SAGR,GAA+B,MAA3B28T,EAAevoI,KACXn3J,OAAOgiS,IAAe,EAAG,CACzB7qI,IAAU,EACV3rL,KAAK02T,WAAWxC,EAAgBvoI,GAAQmqI,GAAW/jU,QACnD+I,KACIkF,KAAK4zT,mBACLr8T,GAAU,KAEd,SAGR,MAAMo/T,EAAY,GAClB,GAA+B,MAA3BzC,EAAevoI,MACVn3J,OAAOgiS,IAAe,GAAKx2T,KAAK4zT,kBACjCp/R,OAAOomC,GAAWxuD,MAAMu/K,GAAQA,GAAS,IAAMgrI,GACpB,MAA3B/7P,GAAW+wH,GAAS,IAAY,CAChCA,IAAU,EACV3rL,KAAK02T,WAAWxC,EAAgBvoI,GAAQmqI,GAAW/jU,QACnD+I,KACIkF,KAAK4zT,mBACLr8T,GAAU,KAEd,SAGR,GAA+B,MAA3B28T,EAAevoI,IAAiB,CAGhC,MAAMirI,GAAyB,IAAXjrI,KACfn3J,OAAOgiS,IAAe,GACnBhiS,OAAOomC,GAAWxuD,MAAMu/K,GAAQA,GAAS,IAAMkrI,IACpB,MAA3Bj8P,GAAW+wH,GAAS,IAEtBmrI,GAAiBl8P,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,GAAG1hJ,SAAS,OACxC,MAA3B2wB,GAAW+wH,GAAS,IAClBn3J,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,IAAMkrI,IAC5B,MAAvBj8P,GAAW+wH,KACY,MAAvB/wH,GAAW+wH,KACiB,MAA3B/wH,GAAW+wH,GAAS,IACjBn3J,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,KAAWkrI,IACpB,MAA3Bj8P,GAAW+wH,GAAS,IACG,MAA3B/wH,GAAW+wH,GAAS,IAEtBorI,GAAiBviS,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,KAAOgrI,IACtE/7P,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,GAAG1hJ,SAAS,MACxB,MAA3B2wB,GAAW+wH,GAAS,KACnBn3J,OAAOomC,GAAWxuD,MAAMu/K,GAAQA,GAAS,IAAMkrI,IACjB,MAA3Bj8P,GAAW+wH,GAAS,IAEtBqrI,GAAiBxiS,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,IAAMgrI,IACrE/7P,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,GAAG1hJ,SAAS,OAClD2wB,GAAWxuD,MAAMu/K,GAAS,EAAGA,IAAQ1hJ,SAAS,MAC/CzV,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,KAAWkrI,GAE7CI,GAAiBziS,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,KAAOgrI,IACtE/7P,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,GAAG1hJ,SAAS,MACxB,MAA3B2wB,GAAW+wH,GAAS,IACpBn3J,OAAOomC,GAAWxuD,MAAMu/K,GAAS,EAAGA,GAAS,IAAMkrI,GACvD,GAAKriS,OAAOgiS,IAAe,GAAKx2T,KAAK4zT,kBACjCgD,IACAE,IACAC,IACAC,IACAC,GAAgB,CAChBtrI,IAAU,EACV3rL,KAAK02T,WAAWxC,EAAgBvoI,GAAQmqI,GAAW/jU,QACnD+I,KACIkF,KAAK4zT,mBACLr8T,GAAU,KAEd,UAGRA,GAAUi/T,GACV7qI,SAEqB,MAAhB6qI,IAAkD,MAA3BtC,EAAevoI,KAC3Cp0L,GAAUi/T,GACV7qI,OAEoE,IAAnE3rL,KAASo1T,sBAAsB3/T,QAAQy+T,EAAevoI,MACvDp0L,GAAU28T,EAAevoI,IACzBA,KACA3rL,KAAK02T,WAAWxC,EAAgBvoI,GAAQmqI,GAAW/jU,QACnD+I,MAECkF,KAASo1T,sBAAsB3/T,QAAQ+gU,KAAe,GACvDx2T,KAAKq1T,sBAAsBnB,EAAevoI,OACqB,QAA7D9iK,GAAK7oB,KAAKq1T,sBAAsBnB,EAAevoI,YAA6B,IAAP9iK,QAAgB,EAASA,GAAGriB,aAC7FsvT,GAAWnqI,KACM,oBAAnBuoI,GACmB,mBAAnBA,GACmB,uBAAnBA,IACCA,EAAe16T,MAAM,cACtBjC,GAAUu+T,GAAWnqI,KAEzBA,KACA7wL,MAEyC,MAAxCkF,KAASk0T,eAAevoI,GAAS,IAClC3rL,KAAKk3T,iBAAiBl3T,KAAKk0T,eAAevoI,GAAS,KACnD3rL,KAAKk3T,iBAAiBV,MAAiBx2T,KAAKk0T,eAAevoI,GAAS,IACpEz1L,GAIyC,MAApC8J,KAAKk0T,eAAevoI,GAAS,IAClC3rL,KAAKk3T,iBAAiBl3T,KAAKk0T,eAAevoI,GAAS,KACnD3rL,KAAKk3T,iBAAiBV,MAAiBx2T,KAAKk0T,eAAevoI,GAAS,IACpEz1L,GANAy1L,IAAU,EACVp0L,GAAUi/T,IASLx2T,KAAKmzT,eACVnzT,KAAKo1T,sBAAsB3/T,QAAQ+gU,IAAe,GAClDA,KAAgBx2T,KAAKozT,uBACrByC,IAAW,GAInBt+T,EAAOxF,OAAS,IAAMmiU,EAAeniU,SAC6C,IAAlFiO,KAAKo1T,sBAAsB3/T,QAAQy+T,EAAeA,EAAeniU,OAAS,MAC1EwF,GAAU28T,EAAeA,EAAeniU,OAAS,IAErD,IAAIolU,GAAcj0L,EAAW,EAC7B,KAAOljI,KAAKm1T,OAAO91T,IAAI83T,KACnBvnQ,KACAunQ,KAEJ,IAAIC,GAAc1B,KAAexB,EAAeh5T,WAAW,aACrDywL,GACA3rL,KAAKm1T,OAAO91T,IAAI6jI,GACZtzE,GACA,EACNimQ,IACAuB,KAEJ5pO,GAAG4pO,GAAaxB,GACZhmQ,GAAQ,GACR5vD,KAAKm1T,OAAO/tT,QAEhB,IAAIiwT,IAAc,EACd1B,KACA0B,GAAcvB,GAAWtwQ,MAAOyhC,IAASjnF,KAAKo1T,sBAAsBnrR,SAASg9C,MAEjF,IAAIsX,GAAO,GAAEv+F,KAAKmgL,SAASk3I,GAAc,GAAK9/T,IAASyI,KAAKqgL,SAC5D,OAAsB,IAAlB9oL,EAAOxF,SACPwsG,GAAO,GAAEv+F,KAAKmgL,SAAS5oL,KAEpBgnG,GAEX24N,iBAAiBV,IACb,OAAOx2T,KAAKo1T,sBAAsBhvT,KAAMoH,GAAQA,IAAQgpT,IAE5DC,iBAAiBD,GAAac,GAC1B,YAAKjC,sBAAwBr1T,KAAKw1T,cAC5Bx1T,KAAKw1T,cACLx1T,KAAKq1T,sBACHr1T,KAAKq1T,sBAAsBiC,IAC/Bt3T,KAAKq1T,sBAAsBiC,GAAY3wO,SACvC3mF,KAAKq1T,sBAAsBiC,GAAY3wO,QAAQE,KAAK2vO,IAE5DP,gBAAgBh6T,IACZ,OAAOA,GACFoC,MAAM,IACN+J,OAAO,CAACtN,EAAG8zF,IACJ9zF,EAAEtB,MAAM,WACZsB,EAAEtB,MAAM,QACF,MAANsB,GACM,MAANA,GACO,MAANA,GAAqB,IAAR8zF,GAAa5uF,KAAKyzT,sBAEnCjyQ,KAAK,IAEdwzQ,wBAAwB/tO,IAIpB,OAAIA,KAEgB,MAATA,GAAe,MAAQswO,eAAc9hU,QAAQwxF,KAAS,EAAK,KAAIA,KAASA,IAIvFyvO,WAAWxC,GAAgBvoI,EAAQ6rI,GAC/B,MAAMjB,GAAY,QAAQ1vO,KAAKqtO,GAAe9nT,MAAM,EAAGu/K,IAAW6rI,EAAc7rI,EAChF3rL,KAAKm1T,OAAOnzT,IAAIu0T,GAAYv2T,KAAKmgL,OAAOpuL,QAAU,GAEtDmjU,mBAAmB//T,GAAOsiU,EAAeC,GACrC,OAAO7gU,MAAM4E,QAAQg8T,GACfA,EAAcrvT,OAAQ/E,IAAMA,KAAMq0T,GAAeztR,SAAS90C,IAC1DA,KAAUsiU,GAGxBxD,SAAmBt7T,UAAnB,4BAAgHs7T,GAAVp7T,MAA8Cw0B,KACpJ4mS,EAAmBr7T,WADmFC,MACtG,OAAoHo7T,EAApHn7T,QAAoHm7T,EAApH,YAlfMA,MA4fA0D,QAAN,gBAA0B1D,EACtBn0T,YAAYpO,GAAUm4H,EAASy4F,EAAat6L,IACxC1Z,MAAMu7G,GACN7pH,KAAKtO,SAAWA,GAChBsO,KAAK6pH,QAAUA,EACf7pH,KAAKsiN,YAAcA,EACnBtiN,KAAKgoB,UAAYA,GACjBhoB,KAAKk0T,eAAiB,GACtBl0T,KAAK43T,eAAgB,EACrB53T,KAAKozT,qBAAuB,IAC5BpzT,KAAK63T,YAAc,GACnB73T,KAAK83T,SAAW,KAChB93T,KAAK+3T,OAAS,KAKd/3T,KAAKg4T,cAAe,EACpBh4T,KAAKi4T,aAAc,EACnBj4T,KAAK6zT,qBAAsB,EAC3B7zT,KAAK6/G,SAAY1jH,MAAM,CAG3Bs5T,UAAU76P,GAAYs5P,EAAgBhxL,EAAW,EAAGwyL,IAAa,EAAOC,IAAa,EAAOnoO,GAAK,UAC7F,IAAK0mO,EACD,OAAOt5P,KAAe56D,KAAKm0T,YAAcn0T,KAAKm0T,YAAcv5P,GAShE,GAPA56D,KAAK63T,YAAc73T,KAAKmzT,cAAgBnzT,KAAKk4T,kBAAoB,GACrC,OAAxBl4T,KAAKk0T,gBAA2Bl0T,KAAKmzT,gBACrCnzT,KAAK63T,YAAc73T,KAAKk4T,gBAAgBt9P,IAAc,MAE9B,aAAxB56D,KAAKk0T,gBAAiCl0T,KAAKmzT,gBAC3CnzT,KAAK63T,YAAc73T,KAAKk4T,gBAAgBt9P,IAAc,OAErDA,IAAc56D,KAAKmzT,cACpB,YAAKgF,kBAAkBn4T,KAAKmgL,QACrBngL,KAAKmgL,OAASngL,KAAK63T,YAE9B,MAAMO,GAAcx9P,IAAuC,iBAAlB56D,KAAK83T,SAAwBl9P,GAAW56D,KAAK83T,UAAY,GAClG,IAAIO,GAAgB,GACpB,GAAIr4T,KAAKszT,cAAgBtzT,KAAKg4T,aAAc,CACxC,IAAIM,EAAet4T,KAAKm0T,YAAY91T,MAAM,IAG3B,KAAfu8D,IAAqB09P,EAAavmU,OACH,iBAAlBiO,KAAK83T,UAAgD,iBAAhB93T,KAAK+3T,SAC7Cn9P,GAAW7oE,OAASumU,EAAavmU,OAC7BumU,EAAah+T,OAAO0F,KAAK83T,SAAU,EAAGM,IACtCx9P,GAAW7oE,OAASumU,EAAavmU,SAC7BumU,EAAavmU,OAAS6oE,GAAW7oE,QAAW,EACxCumU,EAAah+T,OAAO0F,KAAK83T,SAAW,EAAG,GACvCQ,EAAah+T,OAAO0F,KAAK83T,SAAU93T,KAAK+3T,OAAS/3T,KAAK83T,YAGrEQ,EAAe,GAClBt4T,KAAKmzT,gBAELv4P,GAAa56D,KAAKu4T,WAAW39P,KAGjCy9P,GACIr4T,KAAKm0T,YAAYpiU,QAAUumU,EAAavmU,QAAU6oE,GAAW7oE,OACvDiO,KAAKw4T,kBAAkBF,EAAa92Q,KAAK,KACzCoZ,GAEdy9P,GAAgBl7N,QAAQk7N,KAAkBA,GAActmU,OAASsmU,GAAgBz9P,GACjF,MAAMrjE,GAAS+W,MAAMmnT,UAAU4C,GAAenE,EAAgBhxL,EAAUwyL,GAAYC,GAAYnoO,IAYhG,GAXAxtF,KAAKm0T,YAAcn0T,KAAKy4T,eAAelhU,IAGR,MAA3ByI,KAAK+yT,mBAAoD,MAAvB/yT,KAAKgzT,gBACvChzT,KAAKgzT,cAAgB,KAGrBhzT,KAAKk0T,eAAeh5T,WAAW,eAA+C,IAA/B8E,KAAKqzT,wBACpDrzT,KAAKo1T,sBAAwBp1T,KAAKo1T,sBAAsBhtT,OAAQrN,IAAUiF,KAAKk1T,mBAAmBn6T,EAAMiF,KAAKgzT,cAAehzT,KAAK+yT,qBAErI/yT,KAAKm4T,kBAAkB5gU,KAClByI,KAAKmzT,cACN,OAAInzT,KAAKszT,aACE/7T,IAAUA,GAAOxF,OAASiO,KAAK04T,UAAUnhU,GAAQyI,KAAKk0T,gBAE1D38T,GAEX,MAAMohU,EAASphU,GAAOxF,OAChB6mU,EAAY54T,KAAKmgL,OAASngL,KAAK63T,YACrC,GAAI73T,KAAKk0T,eAAejqR,SAAS,KAAM,CACnC,MAAM4uR,EAAoB74T,KAAK84T,qBAAqBvhU,IACpD,OAAOA,GAASqhU,EAAUxsT,MAAMusT,EAASE,SAEZ,OAAxB74T,KAAKk0T,gBAAmD,aAAxBl0T,KAAKk0T,eACnC38T,GAASqhU,EAEbrhU,GAASqhU,EAAUxsT,MAAMusT,GAGpCG,qBAAqB3jU,IACjB,MAAMuxF,EAAQ,gBACd,IAAIltF,EAAQktF,EAAM5qF,KAAK3G,IACnB0jU,GAAoB,EACxB,KAAgB,MAATr/T,GACHq/T,IAAqB,EACrBr/T,EAAQktF,EAAM5qF,KAAK3G,IAEvB,OAAO0jU,GAEXE,kBAAkB71L,GAAUwyL,EAAYC,EAAYnoO,GAAK,UACrD,MAAMwrO,GAAch5T,KAAKsiN,YAAYnzK,cACrC6pR,GAAY7jU,MAAQ6K,KAAKy1T,UAAUuD,GAAY7jU,MAAO6K,KAAKk0T,eAAgBhxL,GAAUwyL,EAAYC,EAAYnoO,IACzGwrO,KAAgBh5T,KAAKi5T,qBAGzBj5T,KAAKk5T,oBAETR,UAAU99P,GAAYs5P,GAClB,OAAOt5P,GACFv8D,MAAM,IACNrJ,IAAI,CAACi9O,EAAMn+N,MACZ,IAAIgJ,GAAI+L,GACR,OAAI7oB,KAAKq1T,uBACLr1T,KAAKq1T,sBAAsBnB,EAAepgT,OACoB,QAA5DgJ,GAAK9c,KAAKq1T,sBAAsBnB,EAAepgT,YAA4B,IAAPgJ,QAAgB,EAASA,GAAGwsH,QAC9B,QAA5DzgH,GAAK7oB,KAAKq1T,sBAAsBnB,EAAepgT,YAA4B,IAAP+U,QAAgB,EAASA,GAAGygH,OAErG2oG,IAENzwL,KAAK,IAGdi3Q,eAAel6N,IACX,MAAMoT,EAAUpT,GACXlgG,MAAM,IACN+J,OAAO,CAACkhI,EAAQxuI,KAAMkF,KAAKy2T,iBAAiBntL,EAAQtpI,KAAKk0T,eAAep5T,MACxEkF,KAAKo1T,sBAAsBnrR,SAASjqC,KAAKk0T,eAAep5T,MACrDwuI,IAAWtpI,KAAKk0T,eAAep5T,KACvC,OAAI62G,EAAQnwD,KAAK,MAAQ+8C,GACdoT,EAAQnwD,KAAK,IAEjB+8C,GAEXi6N,kBAAkB59P,IACd,IAAIu+P,EAAkB,GAgBtB,OAfuBv+P,IACnBA,GAAWv8D,MAAM,IAAIrJ,IAAI,CAACokU,GAAYtlT,MAClC,GAAI9T,KAAKo1T,sBAAsBnrR,SAAS2wB,GAAW9mD,GAAQ,KACvD8mD,GAAW9mD,GAAQ,KAAO9T,KAAKk0T,eAAepgT,GAAQ,GACtDqlT,SAAkBC,GACXx+P,GAAW9mD,GAAQ,GAE9B,GAAIqlT,EAAgBpnU,OAAQ,CACxB,MAAMsnU,GAAgBF,EACtBA,SAAkB,GACXE,GAEX,OAAOD,MAEX,IACiB53Q,KAAK,IAO9B83Q,eAAenkU,IACX,OAAKA,IAAmB,IAAVA,GAGPq/B,OAAOr/B,IAAO+uR,eAAe,WAAY,CAC5Cq1C,aAAa,EACbC,sBAAuB,KAJhBxsO,OAAO73F,GAIS,CAG/B+iU,gBAAgBuB,IACZ,GAAIz5T,KAAKmzT,eAAmBnzT,KAAKuzT,oBAAqB,CAClD,GAAIvzT,KAAKk0T,eAAeniU,SAAWiO,KAAKuzT,oBAAoBxhU,OACxD,MAAM,IAAI03C,MAAM,sDAGhB,OAAOzpC,KAAKuzT,uBAGXvzT,KAAKmzT,cAAe,CACzB,GAAIsG,GAAU,CACV,GAA4B,OAAxBz5T,KAAKk0T,eACL,OAAOl0T,KAAK05T,YAAYD,IAE5B,GAA4B,aAAxBz5T,KAAKk0T,eACL,OAAOl0T,KAAK25T,iBAAiBF,IAGrC,OAAOz5T,KAAKk0T,eAAeh4T,QAAQ,MAAO8D,KAAKozT,sBAEnD,MAAO,GAEX8F,oBACI,MAAMF,GAAch5T,KAAKsiN,YAAYnzK,cACjCnvC,KAAKizT,iBACLjzT,KAAKmgL,OAAOpuL,OAASiO,KAAKk0T,eAAeniU,OAASiO,KAAKqgL,OAAOtuL,SAC1DinU,GAAY7jU,MAAM+G,QAAQ,KAAM,IAAInK,SACxCiO,KAAK45T,oBAAsB,CAAC,QAAS,IACrC55T,KAAKy1T,UAAUuD,GAAY7jU,MAAO6K,KAAKk0T,iBAG3C0F,yBAAqB74T,GAAM5L,IAC3BynB,QAAQC,UAAUmN,KAAK,IAAMhqB,KAAKgoB,UAAUe,YAAY/oB,KAAKsiN,YAAYnzK,cAAepuC,GAAM5L,IAElG0kU,uBAAuBjlK,IAEnB,OAAO8U,GADYrrK,MAAM,IAAI+J,OAAQrN,GAASiF,KAAKk3T,iBAAiBn8T,IACvDhJ,OAEjBwmU,WAAW39P,IACP,OAAO56D,KAAK85T,YAAY95T,KAAK+5T,cAAc/5T,KAAKg6T,cAAcp/P,KAAc56D,KAAKo1T,sBAAsBvwS,OAAO,KAAKA,OAAO7kB,KAAKozT,uBAEnIsG,YAAYD,IACR,IAAI38S,EACJ,GAAiB,MAAb28S,GACA,MAAQ,GAAEz5T,KAAKozT,wBAAwBpzT,KAAKozT,wBAAwBpzT,KAAKozT,wBAAwBpzT,KAAKozT,uBAE1G,MAAM52T,EAAM,GACZ,QAAS1B,GAAI,EAAGA,GAAI2+T,GAAS1nU,OAAQ+I,MACN,QAAtBgiB,EAAK28S,GAAS3+T,WAAuB,IAAPgiB,OAAgB,EAASA,EAAGtjB,MAAM,SACjEgD,EAAI9I,KAAK+lU,GAAS3+T,KAG1B,OAAI0B,EAAIzK,QAAU,EACN,GAAEiO,KAAKozT,wBAAwBpzT,KAAKozT,wBAAwBpzT,KAAKozT,uBAEzE52T,EAAIzK,OAAS,GAAKyK,EAAIzK,QAAU,EACxB,GAAEiO,KAAKozT,wBAAwBpzT,KAAKozT,uBAE5C52T,EAAIzK,OAAS,GAAKyK,EAAIzK,QAAU,EACzBiO,KAAKozT,qBAGL,GAIfuG,iBAAiBF,IACb,IAAI38S,EACJ,MAAMm9S,EAAO,GAAEj6T,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,wBACpEpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,wBAC7DpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,wBAC7DpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBACnC8G,GAAQ,GAAEl6T,KAAKozT,uBAAuBpzT,KAAKozT,wBACzCpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,wBAC7DpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,wBAC7DpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBAAuBpzT,KAAKozT,wBACzFpzT,KAAKozT,uBAAuBpzT,KAAKozT,uBACzC,GAAiB,MAAbqG,GACA,OAAOQ,EAEX,MAAMz9T,GAAM,GACZ,QAAS1B,GAAI,EAAGA,GAAI2+T,GAAS1nU,OAAQ+I,MACN,QAAtBgiB,EAAK28S,GAAS3+T,WAAuB,IAAPgiB,OAAgB,EAASA,EAAGtjB,MAAM,SACjEgD,GAAI9I,KAAK+lU,GAAS3+T,KAG1B,OAAI0B,GAAIzK,QAAU,EACPkoU,EAAI7tT,MAAM5P,GAAIzK,OAAQkoU,EAAIloU,QAEjCyK,GAAIzK,OAAS,GAAKyK,GAAIzK,QAAU,EACzBkoU,EAAI7tT,MAAM5P,GAAIzK,OAAS,EAAGkoU,EAAIloU,QAErCyK,GAAIzK,OAAS,GAAKyK,GAAIzK,QAAU,EACzBkoU,EAAI7tT,MAAM5P,GAAIzK,OAAS,EAAGkoU,EAAIloU,QAErCyK,GAAIzK,OAAS,GAAKyK,GAAIzK,OAAS,GACxBkoU,EAAI7tT,MAAM5P,GAAIzK,OAAS,EAAGkoU,EAAIloU,QAEtB,KAAfyK,GAAIzK,OACG,GAEQ,KAAfyK,GAAIzK,OAEOmoU,GAAK9tT,MADQ,KAApBqtT,GAAS1nU,OACS,GAEJ,GAFQmoU,GAAKnoU,QAI/ByK,GAAIzK,OAAS,IAAMyK,GAAIzK,QAAU,GAC1BmoU,GAAK9tT,MAAM5P,GAAIzK,OAAS,EAAGmoU,GAAKnoU,QAEpC,GAKXknU,kBAAkBvnU,GAAWsO,KAAKtO,UAC9B,IAAIorB,EACJ,MAAMq9S,EAAqG,QAArFr9S,EAAkB,MAAbprB,QAA2C,EAASA,GAASisT,qBAAkC,IAAP7gS,OAAgB,EAASA,EAAGi9M,WAC/I,OAAuB,MAAjBogG,OAAmD,EAASA,EAAaxc,eAIpE39S,KAAKi5T,kBAAkBkB,GAHvBzoU,GAASisT,cAaxBwa,kBAAkBv9P,IACV56D,KAAKg4T,eAAkBh4T,KAAK6zT,qBAAuB7zT,KAAKi4T,YACxDj4T,KAAKi4T,aAAc,EAGnBphU,MAAM4E,QAAQuE,KAAKqzT,uBACnBrzT,KAAK6/G,SAAS7/G,KAAKo6T,UAAUp6T,KAAK85T,YAAY95T,KAAK+5T,cAAc/5T,KAAKg6T,cAAcp/P,KAAc56D,KAAKqzT,yBAGvGrzT,KAAK6/G,SADJ7/G,KAASqzT,sBACIrzT,KAAKo6T,UAAUp6T,KAAKq6T,cAAcz/P,KAGlC56D,KAAK+5T,cAAcn/P,KAGzCw/P,UAAUjlU,IACN,IAAK6K,KAAK43T,eAA2B,KAAVziU,GACvB,OAAOA,GAEX,MAAMy4I,EAAMp5G,OAAOr/B,IACnB,OAAOq/B,OAAOmhE,MAAMi4C,GAAOz4I,GAAQy4I,EAEvCksL,YAAY3kU,GAAOmlU,GACf,OAAOnlU,IAAQA,GAAM+G,QAAQ8D,KAAKu6T,iBAAiBD,GAA6B,IAEpFN,cAAc7kU,IACV,OAAK6K,KAAKmgL,OAGHhrL,IAAQA,GAAM+G,QAAQ8D,KAAKmgL,OAAQ,IAF/BhrL,GAIf4kU,cAAc5kU,IACV,OAAK6K,KAAKqgL,OAGHlrL,IAAQA,GAAM+G,QAAQ8D,KAAKqgL,OAAQ,IAF/BlrL,GAIfqlU,wBAAwBjjU,IACpB,OAAOyI,KAAK85T,YAAY95T,KAAK+5T,cAAc/5T,KAAKg6T,cAAcziU,KAAUyI,KAAKo1T,uBAEjFmF,iBAAiBD,IACb,OAAO,IAAI1+T,OAAO0+T,GAA2BtlU,IAAK+F,GAAU,KAAIA,KAAQymD,KAAK,KAAM,MAEvF64Q,cAAc9iU,IACV,GAAe,KAAXA,GACA,OAAOA,GAEX,MAAMkjU,EAAqBz6T,KAAK06T,4BAA4B16T,KAAKk0T,gBACjE,IAAIyG,EAAiB36T,KAAKw6T,wBAAwBjjU,IAIlD,MAH2B,MAAvByI,KAAKgzT,gBAA0Bn8T,MAAM4E,QAAQuE,KAAKgzT,iBAClD2H,EAAiBA,EAAez+T,QAAQ8D,KAAKgzT,cAAe,MAE5DhzT,KAAM43T,cAGN6C,EACIljU,KAAWyI,KAAKgzT,cACT,KAEJhzT,KAAK46T,gBAAgB56T,KAAKk0T,eAAgByG,GAG1CnmS,OAAOmmS,GATPA,EAafD,4BAA4BG,IACxB,MAAMv7N,EAAUu7N,GAAcrhU,MAAM,IAAIoC,OAAQ,yBAChD,OAAO0jG,EAAU9qE,OAAO8qE,EAAQ,IAAM,KAE1Cs7N,gBAAgBE,GAAqBH,GACjC,OAAIG,GAAoBrlU,QAAQ,KAAO,EAC5B++B,OAAOmmS,GAAgBI,QAAQ,GAEnCvmS,OAAOmmS,IAGtBhD,SAAYh/T,UAAZ,4BAAyGg/T,GAzYH9+T,MAyYgC0vB,OAzYhC1vB,MAyYqDw0B,GAzYrDx0B,MAyYwEA,OAzYxEA,MAyYkGA,SACxM8+T,EAAY/+T,WA1Y0FC,MA0YtG,OAA6G8+T,EAA7G7+T,QAA6G6+T,EAA7G,YA/XMA,MA4YAqD,QAAN,QACIl7T,YAAYpO,GAAUupU,EAAcpxM,GAChC7pH,KAAKtO,SAAWA,GAChBsO,KAAKi7T,aAAeA,EACpBj7T,KAAK6pH,QAAUA,EAEf7pH,KAAKk0T,eAAiB,GACtBl0T,KAAK2zT,kBAAoB,GACzB3zT,KAAK01G,SAAW,GAChB11G,KAAKmgL,OAAS,GACdngL,KAAKqgL,OAAS,GACdrgL,KAAK+yT,kBAAoB,IACzB/yT,KAAKgzT,cAAgB,IACrBhzT,KAAKqzT,sBAAwB,KAC7BrzT,KAAKszT,YAAc,KACnBtzT,KAAKmzT,cAAgB,KACrBnzT,KAAKozT,qBAAuB,KAC5BpzT,KAAKuzT,oBAAsB,KAC3BvzT,KAAKkzT,aAAe,KACpBlzT,KAAKizT,gBAAkB,KACvBjzT,KAAK0zT,WAAa,KAClB1zT,KAAKwzT,eAAiB,KACtBxzT,KAAKyzT,qBAAuB,KAC5BzzT,KAAK4zT,iBAAmB,KACxB5zT,KAAK6zT,oBAAsB,KAC3B7zT,KAAK8zT,WAAa,IAAI32Q,MACtBn9C,KAAKk7T,WAAa,GAClBl7T,KAAK8iI,UAAY,KACjB9iI,KAAKm7T,qBAAuB,GAC5Bn7T,KAAKo7T,aAAc,EACnBp7T,KAAK6/G,SAAY1jH,OACjB6D,KAAKq7T,QAAU,MAAM,CAEzBn8P,YAAYC,IACR,MAAQ+0P,iBAAgBP,oBAAmBj+M,YAAUyqE,UAAQE,UAAQ0yI,qBAAmBC,iBAAeK,yBAAuBC,cAAaH,gBAAeC,uBAAsBG,uBAAqBL,gBAAcD,mBAAiBS,cAAYF,kBAAgBC,wBAAsBG,oBAAkBC,wBAAyB10P,GAoBjU,GAnBI+0P,IACIA,EAAe70P,eAAiB60P,EAAet1S,gBAC9Cs1S,EAAeznK,cAChBzsJ,KAAKi7T,aAAahD,aAAc,GAEpCp3S,EAAmBw+C,cAAgB60P,EAAe70P,aAAahhE,MAAM,MAAMtM,OAAS,GAChFiO,KAAKm7T,qBAAuBjH,EAAe70P,aACtChhE,MAAM,MACN6b,KAAK,CAACjD,GAAGC,KACHD,GAAEllB,OAASmlB,GAAEnlB,QAExBiO,KAAKs7T,aAGLt7T,KAAKm7T,qBAAuB,GAC5Bn7T,KAAKk7T,WAAahH,EAAe70P,cAAgB,GACjDr/D,KAAKi7T,aAAa/G,eAAiBl0T,KAAKk7T,aAG5CvH,EAAmB,CACnB,IAAKA,EAAkBt0P,eAAiBxoE,MAAM4E,QAAQk4T,EAAkBt0P,cACpE,OAGAr/D,KAAKi7T,aAAa7F,sBAAwBzB,EAAkBt0P,cAAgB,GAIhFq2C,IAAYA,GAASr2C,eACrBr/D,KAAKi7T,aAAa5F,sBAAwB3/M,GAASr2C,cAEnD8gH,KACAngL,KAAKi7T,aAAa96I,OAASA,GAAO9gH,cAElCghH,KACArgL,KAAKi7T,aAAa56I,OAASA,GAAOhhH,cAElC0zP,KACA/yT,KAAKi7T,aAAalI,kBAAoBA,GAAkB1zP,cAExD2zP,KACAhzT,KAAKi7T,aAAajI,cAAgBA,GAAc3zP,cAEhDg0P,KACArzT,KAAKi7T,aAAa5H,sBAAwBA,GAAsBh0P,cAEhEi0P,IACAtzT,KAAKi7T,aAAa3H,YAAcA,EAAYj0P,cAE5C8zP,IACAnzT,KAAKi7T,aAAa9H,cAAgBA,EAAc9zP,cAEhD+zP,IACApzT,KAAKi7T,aAAa7H,qBAAuBA,EAAqB/zP,cAE9Dk0P,KACAvzT,KAAKi7T,aAAa1H,oBAAsBA,GAAoBl0P,cAE5D6zP,KACAlzT,KAAKi7T,aAAa/H,aAAeA,GAAa7zP,cAE9C4zP,KACAjzT,KAAKi7T,aAAahI,gBAAkBA,GAAgB5zP,cAEpDq0P,KACA1zT,KAAKi7T,aAAavH,WAAaA,GAAWr0P,cAE1Cm0P,KACAxzT,KAAKi7T,aAAazH,eAAiBA,GAAen0P,cAElDo0P,KACAzzT,KAAKi7T,aAAaxH,qBAAuBA,GAAqBp0P,aAC1Dr/D,KAAKi7T,aAAaxH,uBAClBzzT,KAAKi7T,aAAa7F,sBAAwBp1T,KAAKi7T,aAAa7F,sBAAsBhtT,OAAQ+hD,IAAY,MAANA,MAGpGypQ,KACA5zT,KAAKi7T,aAAarH,iBAAmBA,GAAiBv0P,cAEtDw0P,KACA7zT,KAAKi7T,aAAapH,oBAAsBA,GAAoBx0P,cAEhEr/D,KAAKu7T,aAGTtsR,UAAW95C,WACP,IAAK6K,KAAKi7T,aAAavH,aAAe1zT,KAAKk7T,WACvC,OAAO,KAEX,GAAIl7T,KAAKi7T,aAAalF,QAClB,OAAO/1T,KAAKw7T,uBAAuBrmU,IAEvC,GAAI6K,KAAKi7T,aAAajF,aAClB,OAAOh2T,KAAKw7T,uBAAuBrmU,IAQvC,GANI6K,KAAKk7T,WAAWhgU,WAAW,cAG3B84T,EAAkB/pR,SAASjqC,KAAKk7T,aAGhCl7T,KAAKi7T,aAAahI,gBAClB,OAAO,KAEX,GAAIc,EAAU9pR,SAASjqC,KAAKk7T,YACxB,OAAOl7T,KAAKy7T,cAActmU,IAE9B,GAAIA,IAASA,GAAMvD,WAAWG,QAAU,EAAG,CACvC,IAAI2pU,EAAe,EACnB,UAAWzmU,KAAO+K,KAAKi7T,aAAa5F,sBAChC,GAAIr1T,KAAKi7T,aAAa5F,sBAAsBpgU,GAAKuR,WACzCxG,KAAKk7T,WAAWzlU,QAAQR,KAAS+K,KAAKk7T,WAAWjpP,YAAYh9E,GAK7DymU,GAAgBlpG,KAJC0oG,WACZ78T,MAAM,IACN+J,OAAQtN,IAAMA,KAAM7F,GACpBusD,KAAK,IACUzvD,QAEkB,IAAjCiO,KAAKk7T,WAAWzlU,QAAQR,IAC7BymU,KAEiC,IAAjC17T,KAAKk7T,WAAWzlU,QAAQR,IACxBE,GAAMvD,WAAWG,QAAUiO,KAAKk7T,WAAWzlU,QAAQR,IAGnDymU,IAAiB17T,KAAKk7T,WAAWnpU,QACjC,OAAO,KASnB,GALqC,IAAjCiO,KAAKk7T,WAAWzlU,QAAQ,MACxBN,GAAMvD,WAAWG,SACbiO,KAAKk7T,WAAWnpU,OAASyiC,OAAOx0B,KAAKk7T,WAAW78T,MAAM,KAAK,GAAGA,MAAM,KAAK,IAAM,GAGlD,IAAjC2B,KAAKk7T,WAAWzlU,QAAQ,MAA+C,IAAjCuK,KAAKk7T,WAAWzlU,QAAQ,KAC9D,OAAO,KAEN,GAAKuK,KAAKk7T,WAAWzlU,QAAQ,KAAO,GACrCN,GAAMvD,WAAWG,OAASiO,KAAKk7T,WAAWzlU,QAAQ,MACjDuK,KAAKk7T,WAAWzlU,QAAQ,KAAO,GAC5BN,GAAMvD,WAAWG,OAASiO,KAAKk7T,WAAWzlU,QAAQ,MACrB,IAAjCuK,KAAKk7T,WAAWzlU,QAAQ,KACxB,OAAOuK,KAAKw7T,uBAAuBrmU,IAEvC,IAAqC,IAAjC6K,KAAKk7T,WAAWzlU,QAAQ,OAAgD,IAAjCuK,KAAKk7T,WAAWzlU,QAAQ,KAAa,CAC5E,MAAM1D,EAASiO,KAAKi7T,aAAa5H,sBAC3BrzT,KAAKk7T,WAAWnpU,OACdiO,KAAKi7T,aAAapB,uBAAuB75T,KAAKk7T,YAC9CQ,EACF17T,KAAKk7T,WAAWnpU,OAAS2pU,EAC/B,GAAIvmU,GAAMvD,WAAWG,OAASA,EAC1B,OAAOiO,KAAKw7T,uBAAuBrmU,KAI/C,OAAIA,IACA6K,KAAK8zT,WAAWv2Q,OACT,KAIfupC,UACI9mF,KAAKo7T,aAAc,EAEvBO,cAAcxmU,KAEK,KAAVA,UAAgBA,KAA0C6K,KAAKi7T,aAAa9G,cAC7En0T,KAAKi7T,aAAa9G,YAAcn0T,KAAKi7T,aAAaxC,eAAe,KAGzEmD,QAAQvnU,IACJ,MAAMg3B,EAAKh3B,GAAEsX,OAGb,GAFA3L,KAAK67T,YAAcxwS,EAAGl2B,MACtB6K,KAAKs7T,YACAt7T,KAAKk7T,WAEN,YADAl7T,KAAK6/G,SAASx0F,EAAGl2B,OAGrB,MAAM+tI,EAAiC,IAAtB73G,EAAGywS,eACdzwS,EAAGywS,eAAiB97T,KAAKi7T,aAAa96I,OAAOpuL,OAC7Cs5B,EAAGywS,eACT,IAAIC,GAAa,EACbnG,IAAiB,EAOrB,GANA51T,KAAKi7T,aAAalC,kBAAkB71L,EAAUljI,KAAKo7T,YAA4B,cAAfp7T,KAAKg8T,OAAwC,WAAfh8T,KAAKg8T,MAAoB,CAACpsQ,GAAOqsQ,MAC3Hj8T,KAAKo7T,aAAc,EACnBW,GAAansQ,GACbgmQ,GAAiBqG,KAGjBj8T,KAAKi5T,sBAAwB5tS,EAC7B,OAEJrrB,KAAK8iI,UAA+B,IAAnB9iI,KAAK8iI,WAA+C,IAA5B9iI,KAAK67T,YAAY9pU,OAAe,KAAOiO,KAAK8iI,UACrF,IAAIo5L,GAAkBl8T,KAAK8iI,UACrB9iI,KAAK67T,YAAY9pU,OAASmxI,EAAW64L,GACrC74L,GAA2B,cAAfljI,KAAKg8T,OAA0BpG,GAAqBmG,GAAJ,GAC9DG,GAAkBl8T,KAAKm8T,0BACvBD,GAAkBl8T,KAAKm8T,yBAEvBD,GAAkB,IAClBA,GAAkB,GAEtB7wS,EAAG+wS,kBAAkBF,GAAiBA,IACtCl8T,KAAK8iI,UAAY,KAErBu5L,SACQr8T,KAAKk7T,YACLl7T,KAAKi7T,aAAa/B,oBAEtBl5T,KAAKq7T,UAETj+Q,QAAQ/oD,IACJ,IAAK2L,KAAKk7T,WACN,OAEJ,MAAM7vS,EAAKh3B,GAAEsX,OAGF,OAAP0f,GACsB,OAAtBA,EAAGywS,gBACHzwS,EAAGywS,iBAAmBzwS,EAAGixS,cACzBjxS,EAAGywS,eAAiB97T,KAAKi7T,aAAa96I,OAAOpuL,QAE/B,KAAdsC,GAAEkoU,SACEv8T,KAAKi7T,aAAa9H,gBAElBnzT,KAAKi7T,aAAapD,YAAc73T,KAAKi7T,aAAa/C,kBAClDr3S,EAAOu7S,mBACHp8T,KAAKi7T,aAAa96I,OAASngL,KAAKi7T,aAAapD,cAAgBxsS,EAAGl2B,OAEhEk2B,EAAG4xR,QACH5xR,EAAG+wS,kBAfE,EACF,IAkBC/wS,EAAGywS,eAAiB97T,KAAKi7T,aAAa9G,YAAYpiU,QAElDs5B,EAAG+wS,kBAAkBp8T,KAAKi7T,aAAa9G,YAAYpiU,OAAQiO,KAAKi7T,aAAa9G,YAAYpiU,SAKzG,MAAMyqU,GAAanxS,EAAGl2B,OAASk2B,EAAGl2B,QAAU6K,KAAKi7T,aAAa96I,OAExD90J,EAAGl2B,MADH6K,KAAKi7T,aAAa96I,OAASngL,KAAKi7T,aAAapD,YAG/CxsS,EAAGl2B,QAAUqnU,KACbnxS,EAAGl2B,MAAQqnU,KAGVnxS,EAAGywS,gBAAkBzwS,EAAGixS,eACzBt8T,KAAKi7T,aAAa96I,OAAOpuL,OACzBs5B,EAAGywS,eAAiB97T,KAAKi7T,aAAa96I,OAAOpuL,OAI7Cs5B,EAAGixS,aAAet8T,KAAKm8T,0BACvB9wS,EAAGixS,aAAet8T,KAAKm8T,yBAI/B9e,UAAUhpT,IACN,IAAIyoB,EACJ,IAAK9c,KAAKk7T,WACN,OAEJl7T,KAAKg8T,MAAQ3nU,GAAE8xJ,KAAO9xJ,GAAE8xJ,KAAO9xJ,GAAEY,IACjC,MAAMo2B,EAAKh3B,GAAEsX,OAMb,GALA3L,KAAK67T,YAAcxwS,EAAGl2B,MACtB6K,KAAKs7T,WACa,KAAdjnU,GAAEkoU,SACFloU,GAAEwpE,iBAEY,KAAdxpE,GAAEkoU,SAAgC,IAAdloU,GAAEkoU,SAA+B,KAAdloU,GAAEkoU,QAAgB,CAIzD,GAHkB,IAAdloU,GAAEkoU,SAAqC,IAApBlxS,EAAGl2B,MAAMpD,SAC5Bs5B,EAAGywS,eAAiBzwS,EAAGixS,cAET,IAAdjoU,GAAEkoU,SAAuC,IAAtBlxS,EAAGywS,eAKtB,GAHA97T,KAAK2zT,mBAAuD,QAAjC72S,EAAK9c,KAAK2zT,yBAAsC,IAAP72S,OAAgB,EAASA,EAAG/qB,QAC1FiO,KAAK2zT,kBACL3zT,KAAK6pH,QAAQ8pM,kBACf3zT,KAAKmgL,OAAOpuL,OAAS,GAAKs5B,EAAGywS,gBAAkB97T,KAAKmgL,OAAOpuL,OAC3Ds5B,EAAG+wS,kBAAkBp8T,KAAKmgL,OAAOpuL,OAAQs5B,EAAGixS,sBAGxCt8T,KAAK67T,YAAY9pU,SAAWs5B,EAAGywS,gBACT,IAAtBzwS,EAAGywS,eACH,KAAO97T,KAAK2zT,kBAAkB1pR,SAASjqC,KAAK67T,YAAYxwS,EAAGywS,eAAiB,GAAGlqU,cACzEoO,KAAKmgL,OAAOpuL,QAAU,GAAKs5B,EAAGywS,eAAiB97T,KAAKmgL,OAAOpuL,QAClC,IAAvBiO,KAAKmgL,OAAOpuL,SAChBs5B,EAAG+wS,kBAAkB/wS,EAAGywS,eAAiB,EAAGzwS,EAAGixS,cAK/Dt8T,KAAKy8T,yBAAyBpxS,GAC1BrrB,KAAKi7T,aAAa96I,OAAOpuL,QACzBs5B,EAAGywS,gBAAkB97T,KAAKi7T,aAAa96I,OAAOpuL,QAC9Cs5B,EAAGixS,cAAgBt8T,KAAKi7T,aAAa96I,OAAOpuL,QAC5CsC,GAAEwpE,iBAEN,MAAM6+P,GAAcrxS,EAAGywS,eACL,IAAdznU,GAAEkoU,UACDlxS,EAAGsxS,UACY,IAAhBD,IACArxS,EAAGixS,eAAiBjxS,EAAGl2B,MAAMpD,QACT,IAApBs5B,EAAGl2B,MAAMpD,SACTiO,KAAK8iI,UAAY9iI,KAAKi7T,aAAa96I,OAASngL,KAAKi7T,aAAa96I,OAAOpuL,OAAS,EAC9EiO,KAAKi7T,aAAaxF,UAAUz1T,KAAKi7T,aAAa96I,OAAQngL,KAAKi7T,aAAa/G,eAAgBl0T,KAAK8iI,YAG/F9iI,KAAKqgL,QACPrgL,KAAKqgL,OAAOtuL,OAAS,GACrBiO,KAAK67T,YAAY9pU,OAASiO,KAAKqgL,OAAOtuL,OAASs5B,EAAGywS,eAClDzwS,EAAG+wS,kBAAkBp8T,KAAK67T,YAAY9pU,OAASiO,KAAKqgL,OAAOtuL,OAAQiO,KAAK67T,YAAY9pU,SAEhE,KAAdsC,GAAEkoU,SAAkBloU,GAAEknO,SACb,KAAdlnO,GAAEkoU,SAAkBloU,GAAEmnO,WAEvBnwM,EAAG+wS,kBAAkB,EAAGp8T,KAAKm8T,yBAC7B9nU,GAAEwpE,kBAEN79D,KAAKi7T,aAAanD,SAAWzsS,EAAGywS,eAChC97T,KAAKi7T,aAAalD,OAAS1sS,EAAGixS,aAGlCr5G,WAAWroJ,IACP,OAAO5mC,QAAUh0B,UAAM,OAAQ,EAAQ,YACT,iBAAf46D,IAA0C,OAAfA,IAAuB,UAAWA,KAChE,YAAaA,IACb56D,KAAK0iN,iBAAiBvlH,QAAQviC,GAAWn2C,UAG7Cm2C,GAAaA,GAAWzlE,QAEF,iBAAfylE,IAA2B56D,KAAKk7T,WAAWhgU,WAAW,gBAE7D0/D,GAAa56D,KAAKi7T,aAAa3B,eAAe1+P,IACzC/jE,MAAM4E,QAAQuE,KAAKgzT,iBAEpBp4P,GAC2B,MAAvB56D,KAAKgzT,cAAwBp4P,GAAW1+D,QAAQ,IAAK8D,KAAKgzT,eAAiBp4P,IAEnF56D,KAAKi7T,aAAarD,eAAgB,GAEZ,iBAAfh9P,KAEPA,GAAa,IAEjB56D,KAAK67T,YAAcjhQ,GACnB56D,KAAKs7T,WACL97K,IAAmBx/I,KAAKi7T,aAAa/G,gBAChCl0T,KAAKi7T,aAAa/G,iBACdl0T,KAAKi7T,aAAa96I,QAAUngL,KAAKi7T,aAAa9H,gBAEnDnzT,KAAKi7T,aAAajD,cAAe,EACjCh4T,KAAKi7T,aAAarB,oBAAsB,CACpC,QACA55T,KAAKi7T,aAAaxF,UAAU76P,GAAY56D,KAAKi7T,aAAa/G,iBAG9Dl0T,KAAKi7T,aAAajD,cAAe,GAGjCh4T,KAAKi7T,aAAarB,oBAAsB,CAAC,QAASh/P,IAEtD56D,KAAK67T,YAAcjhQ,KAG3B6nJ,iBAAiBryM,IACbpQ,KAAK6/G,SAAWzvG,GAChBpQ,KAAKi7T,aAAap7M,SAAW7/G,KAAK6/G,SAEtC2iG,kBAAkBpyM,IACdpQ,KAAKq7T,QAAUjrT,GAEnB6oT,kBAAkBvnU,GAAWsO,KAAKtO,UAC9B,IAAIorB,EACJ,MAAMq9S,EAAqG,QAArFr9S,EAAkB,MAAbprB,QAA2C,EAASA,GAASisT,qBAAkC,IAAP7gS,OAAgB,EAASA,EAAGi9M,WAC/I,OAAuB,MAAjBogG,OAAmD,EAASA,EAAaxc,eAIpE39S,KAAKi5T,kBAAkBkB,GAHvBzoU,GAASisT,cAMxB8e,yBAAyBpxS,IACrBA,GAAGywS,eAAiBh5T,KAAKstF,IAAIttF,KAAKC,IAAI/C,KAAKmgL,OAAOpuL,OAAQs5B,GAAGywS,gBAAiB97T,KAAK67T,YAAY9pU,OAASiO,KAAKqgL,OAAOtuL,QACpHs5B,GAAGixS,aAAex5T,KAAKstF,IAAIttF,KAAKC,IAAI/C,KAAKmgL,OAAOpuL,OAAQs5B,GAAGixS,cAAet8T,KAAK67T,YAAY9pU,OAASiO,KAAKqgL,OAAOtuL,QAGpH2wN,iBAAiBC,IACb3iN,KAAKi7T,aAAarB,oBAAsB,CAAC,WAAYj3G,IAEzDi6G,sBAAsBC,IAClB,OAASA,GAAQrjU,MAAM,aACnBqjU,GAAQx+T,MAAM,IAAIugE,OAAO,CAACmpD,EAAO+0M,EAAShpT,MAEtC,GADA9T,KAAKw9E,OAAqB,MAAZs/O,EAAkBhpT,GAAQ9T,KAAKw9E,OAC7B,MAAZs/O,EACA,OAAO98T,KAAKi7T,aAAa/D,iBAAiB4F,GAAW/0M,EAAQ+0M,EAAU/0M,EAE3E/nH,KAAKy9E,KAAO3pE,GACZ,MAAMipT,GAAevoS,OAAOqoS,GAAQzwT,MAAMpM,KAAKw9E,OAAS,EAAGx9E,KAAKy9E,OAEhE,OAAOsqC,EADa,IAAIlxH,MAAMkmU,GAAe,GAAGv7Q,KAAKq7Q,GAAQ78T,KAAKw9E,OAAS,GAC5Dw/O,EAChB,KACHH,GAGRtB,aACIv7T,KAAKi7T,aAAa/G,eAAiBl0T,KAAK48T,sBAAsB58T,KAAKk7T,YAAc,IACjFl7T,KAAKi7T,aAAarB,oBAAsB,CACpC,QACA55T,KAAKi7T,aAAaxF,UAAUz1T,KAAK67T,YAAa77T,KAAKi7T,aAAa/G,iBAGxEuH,cAActmU,IACV,MAAM8nU,EAAaj9T,KAAKk7T,WAAW78T,MAAM,IAAI+J,OAAQ1F,GAAY,MAANA,GAAW3Q,OACtE,OAAKoD,KAG6B,IAA5BA,GAAMA,GAAMpD,OAAS,IAAYoD,GAAMpD,OAASkrU,GAClD9nU,GAAMpD,QAAUkrU,EAAa,GACtBj9T,KAAKw7T,uBAAuBrmU,IAJ5B,KAQfgnU,wBACI,OAAQn8T,KAAKi7T,aAAa9G,YAAYpiU,QAClCiO,KAAKi7T,aAAa9G,YAAYpiU,OAASiO,KAAKi7T,aAAa96I,OAAOpuL,OAExEypU,uBAAuBrH,IACnB,MAAO,CACHv/J,KAAM,CACFsoK,aAAcl9T,KAAKk7T,WACnB/G,iBAIZmH,WACQt7T,KAAKm7T,qBAAqBppU,OAAS,GACnCiO,KAAKm7T,qBAAqB/3T,KAAMwxJ,KAC5B,IAAI93I,EAAI+L,EACR,MAAMg+D,IAAkE,QAAzD/pE,EAAK9c,KAAKi7T,aAAa1C,WAAWv4T,KAAK67T,oBAAiC,IAAP/+S,OAAgB,EAASA,EAAG/qB,UACzD,QAA7C82B,EAAK7oB,KAAKi7T,aAAa1C,WAAW3jK,WAA0B,IAAP/rI,OAAgB,EAASA,EAAG92B,QACvF,GAAIiO,KAAK67T,aAAeh1O,GACpB,YAAKq0O,WAAatmK,GAClB50J,KAAKk0T,eAAiBt/J,GACtB50J,KAAKi7T,aAAa/G,eAAiBt/J,GAC5B/tE,GAGP7mF,KAAKk7T,WAAal7T,KAAKm7T,qBAAqBn7T,KAAKm7T,qBAAqBppU,OAAS,GAC/EiO,KAAKk0T,eAAiBl0T,KAAKm7T,qBAAqBn7T,KAAKm7T,qBAAqBppU,OAAS,GACnFiO,KAAKi7T,aAAa/G,eACdl0T,KAAKm7T,qBAAqBn7T,KAAKm7T,qBAAqBppU,OAAS,MAMrFipU,SAAcriU,UAAd,4BAA2GqiU,GAz4BLniU,MAy4BoC0vB,OAz4BpC1vB,MAy4ByD8+T,GAz4BzD9+T,MAy4BiFw0B,KACvL2tS,EAAcnoL,UA14BwFh6I,MA04BtG,MAA+FmiU,EAA/F5sS,yFA14BsGv1B,MA04BtG,0BAA+FgoB,aA14BOhoB,CA04BtG,oCAA+FgoB,qBA14BOhoB,CA04BtG,4BAA+FgoB,eA14BOhoB,CA04BtG,yBAA+FgoB,YA14BOhoB,CA04BtG,4BAA+FgoB,eA14BOhoB,CA04BtG,8BAA+FgoB,mBAA/Fu/G,osBA14BsGvnI,MA04B88B,CAC5iC,CACIuzB,QAAS02L,KACT57G,aAAa++C,SAAW,IAAM+0K,GAC9B9kU,OAAO,GAEX,CACIk2B,QAAS03L,KACT58G,aAAa++C,SAAW,IAAM+0K,GAC9B9kU,OAAO,GAEXyhU,IAr5B8F9+T,SAuZhGmiU,MAwlBAmC,QAAN,QACIr9T,YAAYm7T,IACRj7T,KAAKi7T,aAAeA,GAExB1lS,UAAUpgC,GAAOy/J,EAAMm+J,EAAoB,MACvC,OAAK59T,IAA0B,iBAAVA,IAGjB49T,IACA/yT,KAAKi7T,aAAalI,kBAAoBA,GAEtB,iBAATn+J,EACA50J,KAAKi7T,aAAaxF,UAAW,GAAEtgU,KAASy/J,GAE5C50J,KAAKi7T,aAAa3F,qBAAsB,GAAEngU,KAASy/J,IAR/C,EAQ+CA,EAGlEuoK,SAASxkU,UAAT,4BAAsGwkU,GAhgCAtkU,MAggC0Bo7T,EAAhI,MACAkJ,EAASxkL,WAjgC6F9/I,MAigCtG,kBAAoGskU,EAApGrtR,UAlBMqtR,MA8BN,YAAwBC,EAAYC,IAChC,OACMpqU,OAAOqe,OAAOre,OAAOqe,OAAO,GAAI8rT,GAD/BC,cAAuBlpO,SACqBkpO,KAA8DA,QAE/GC,SAAN,QAAoBlwS,eACDiwS,IACX,MAAO,CACH/vS,SAAUgwS,EACV/vS,UAAW,CACP,CACInB,QAASwmS,EACT5lS,SAAUqwS,IAEd,CACIjxS,QAASymS,EACT7lS,SAAU8lS,GAEd,CACI1mS,QAASiB,EACTd,WAAYgxS,GACZ5wS,KAAM,CAACkmS,EAAgBD,IAE3BqB,sBAKR,MAAO,CACH3mS,SAAUgwS,IAItBA,SAAc3kU,UAAd,4BAA2G2kU,IAC3GA,EAAc9vS,UA9iCwF30B,MA8iCtG,MAA4GykU,IAC5GA,EAAc7vS,UA/iCwF50B,MA+iCtG,IA9BMykU,MAuCN,MAAME,GAAuC,oBAAf/0K,WACxBA,WACkB,oBAAXh3J,OACHA,OACkB,oBAAX27F,OACHA,OACgB,oBAATv5B,KACHA,KACA,GAET2pQ,GAAeC,gBAChBD,GAAeC,cAAgB,SAAUC,EAAYp5L,IAAO","sources":["./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./src/shared-angular/modules/toast/toasts-container.component.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/uiRouter.config.ts","./src/shared-angular/modules/toast/toast.module.ts","./src/app/app.module.ts","./src/angularMain.ts","./src/app/authentication/account.service.ts","./src/app/authentication/authentication.module.ts","./src/app/authentication/authentication.component.ts","./src/app/authentication/authentication.component.html","./src/app/authentication/login-done/login-done.component.ts","./src/app/authentication/login-done/login-done.component.html","./src/app/authentication/logout-done/logout-done.component.ts","./src/app/authentication/logout-done/logout-done.component.html","./src/app/authentication/router/auth-states.ts","./src/app/client/animations/animations.ts","./src/app/client/enums/icons.ts","./src/app/client/journey/application-success/application-success.component.ts","./src/app/client/journey/application-success/application-success.component.html","./src/shared-utilities/models/sortDirection.ts","./src/app/client/journey/dashboard/dashboard.component.html","./src/app/client/journey/dashboard/dashboard.component.ts","./src/app/client/journey/dashboard/models/dashboard-deal.model.ts","./src/app/client/journey/dashboard/models/dashboard-view.model.ts","./src/app/client/journey/dashboard/services/dashboard.service.ts","./src/app/client/journey/dialogs/electronic-signatures-and-records-consent/electronic-signatures-and-records-consent.component.ts","./src/app/client/journey/dialogs/electronic-signatures-and-records-consent/electronic-signatures-and-records-consent.component.html","./src/app/client/journey/dialogs/privacy-policy/privacy-policy.component.ts","./src/app/client/journey/dialogs/privacy-policy/privacy-policy.component.html","./src/app/client/journey/dialogs/security-policy/security-policy.component.ts","./src/app/client/journey/dialogs/security-policy/security-policy.component.html","./src/app/client/journey/dialogs/terms-of-use-policy/terms-of-use-policy.component.ts","./src/app/client/journey/dialogs/terms-of-use-policy/terms-of-use-policy.component.html","./src/app/client/journey/error/error.component.ts","./src/app/client/journey/error/error.component.html","./src/app/client/journey/error/save-error-overlay/save-error.service.ts","./src/app/client/journey/home/home.component.html","./src/app/client/journey/home/home.component.ts","./src/app/client/journey/journey.component.html","./src/app/client/journey/journey.component.ts","./src/app/client/journey/layout/context-loader.component.ts","./src/app/client/journey/layout/context-loader.component.html","./src/app/client/journey/error/logged-out-error/logged-out-error.component.ts","./src/app/client/journey/error/logged-out-error/logged-out-error.component.html","./src/app/client/journey/router/journey-states.ts","./src/app/client/journey/router/slides-redirect-handlers.ts","./src/app/client/journey/slides/reviewAndSubmit/referral/referral-edit/referral-edit.component.html","./src/app/client/journey/slides/reviewAndSubmit/referral/referral-edit/referral-edit.component.ts","./src/shared-angular/pipes/safe-html-pipe/safe-html.pipe.ts","./src/app/client/journey/dialogs/network-consent/network-consent.component.ts","./src/app/client/journey/dialogs/network-consent/network-consent.component.html","./src/app/client/journey/slides/reviewAndSubmit/modals/pep-relationship-modal/pep-relationship-modal.component.ts","./src/app/client/journey/slides/reviewAndSubmit/modals/pep-relationship-modal/pep-relationship-modal.component.html","./src/app/client/journey/slides/reviewAndSubmit/modals/pep-types-modal/pep-types-modal.component.ts","./src/app/client/journey/slides/reviewAndSubmit/modals/pep-types-modal/pep-types-modal.component.html","./src/app/client/journey/slides/reviewAndSubmit/modals/pep-types-small-modal/pep-types-small-modal.component.ts","./src/app/client/journey/slides/reviewAndSubmit/modals/pep-types-small-modal/pep-types-small-modal.component.html","./src/app/client/journey/slides/reviewAndSubmit/validation/submit-validation.service.ts","./src/app/client/journey/slides/reviewAndSubmit/submit/submit.service.ts","./src/app/client/journey/slides/reviewAndSubmit/submit/submit-progress-overlay/submit-progress-overlay.component.ts","./src/app/client/journey/slides/reviewAndSubmit/submit/submit-progress-overlay/submit-progress-overlay.component.html","./src/app/client/journey/slides/reviewAndSubmit/submit/submit.component.html","./src/app/client/journey/slides/reviewAndSubmit/submit/submit.component.ts","./src/shared-utilities/enum-helpers/enum-helpers.ts","./src/app/client/journey/router/slides-states.ts","./src/app/client/journey/shared/continue-link/continue-link.component.html","./src/app/client/journey/shared/continue-link/continue-link.component.ts","./src/app/client/journey/shared/form-fields/date-picker/date-picker.component.html","./src/app/client/journey/shared/form-fields/date-picker/date-picker.component.ts","./src/app/client/journey/shared/helpers/address.helper.ts","./src/app/client/journey/shared/models/agent-resources/agent-resource.ts","./src/app/client/journey/shared/models/deal-resources/address.model.ts","./src/app/client/journey/shared/models/deal-resources/borrower-asset.model.ts","./src/app/client/journey/shared/models/deal-resources/borrower.model.ts","./src/app/client/journey/shared/models/deal-resources/contact.model.ts","./src/app/client/journey/shared/models/deal-resources/deal.model.ts","./src/app/client/journey/shared/models/deal-resources/enumerators.ts","./src/app/client/journey/shared/models/deal-resources/mortgage-request.model.ts","./src/app/client/journey/shared/services/address-format.service.ts","./src/app/client/journey/shared/services/agent.service.ts","./src/app/client/journey/shared/services/deal/client-experience.service.ts","./src/app/utilities/validation/validation-global-store.ts","./src/app/client/journey/shared/services/deal/client-journey-context.ts","./src/app/client/journey/shared/services/deal/client-journey-engagement.service.ts","./src/app/client/journey/shared/services/deal/deal.service.ts","./src/app/client/journey/shared/services/deal/subject-property-address.service.ts","./src/app/client/journey/shared/services/deal/subject-property.service.ts","./src/app/client/journey/shared/services/options-cache/address-options-cache.service.ts","./src/app/client/journey/shared/services/options-cache/mortgage-options-cache.service.ts","./src/app/client/journey/shared/services/options-cache/contact-options.cache.service.ts","./src/app/client/journey/shared/services/options-cache/options-cache.service.ts","./src/app/client/journey/shared/services/primary-mortgage.service.ts","./src/app/client/journey/shared/services/referral.service.ts","./src/shared-utilities/async-helpers/async-worker/cancellation-token.ts","./src/shared-utilities/async-helpers/async-worker/async-worker.ts","./src/app/client/journey/shared/services/command-stream.ts","./src/app/client/journey/shared/services/resource-command-stream.service.ts","./src/app/client/journey/shared/services/resource-context-store.ts","./src/app/client/journey/shared/services/snapshot-provider.ts","./src/app/client/journey/shared/services/resource-context.service.ts","./src/app/client/journey/shared/services/resource-tree.ts","./src/app/client/journey/shared/services/theme.service.ts","./src/app/client/journey/shared/validation/client-journey-validator-store-base.ts","./src/app/utilities/validation/validator-store-base.ts","./src/app/client/journey/shared/validation/model-validator-rule.ts","./src/app/utilities/validation/validator-rule-base.ts","./src/app/client/journey/shared/validation/model-validator.ts","./src/app/utilities/validation/validator-base.ts","./src/app/client/journey/slides/assets/modals/assets-switch-confirm-modal/assets-switch-confirm-modal.component.ts","./src/app/client/journey/slides/assets/modals/assets-switch-confirm-modal/assets-switch-confirm-modal.component.html","./src/app/client/journey/slides/assets/asset-edit/asset-edit.component.html","./src/app/client/journey/slides/assets/asset-edit/asset-edit.component.ts","./src/app/client/journey/slides/assets/assets-summary/assets-summary.service.ts","./src/app/client/journey/slides/assets/assets-summary/assets-summary.component.html","./src/app/client/journey/slides/assets/assets-summary/assets-summary.component.ts","./src/app/client/journey/slides/assets/assets.service.ts","./src/app/client/journey/slides/assets/modals/assets-remove-confirm-modal/assets-remove-confirm-modal.component.ts","./src/app/client/journey/slides/assets/modals/assets-remove-confirm-modal/assets-remove-confirm-modal.component.html","./src/app/client/journey/slides/banking/modals/cancel-bank-connection-modal/cancel-bank-connection-modal.component.ts","./src/app/client/journey/slides/banking/modals/cancel-bank-connection-modal/cancel-bank-connection-modal.component.html","./src/app/client/journey/slides/banking/banking-edit/banking-edit.component.html","./src/app/client/journey/slides/banking/banking-edit/banking-edit.component.ts","./src/app/client/journey/slides/banking/banking-edit/flinks-connect/flinks.service.ts","./src/app/client/journey/slides/banking/banking-summary/banking-summary.service.ts","./src/app/client/journey/slides/banking/banking-summary/banking-summary.component.html","./src/app/client/journey/slides/banking/banking-summary/banking-summary.component.ts","./src/app/client/journey/slides/banking/financialInstitutions.ts","./src/app/client/journey/slides/banking/modals/banking-remove-confirm-modal/banking-remove-confirm-modal.component.ts","./src/app/client/journey/slides/banking/modals/banking-remove-confirm-modal/banking-remove-confirm-modal.component.html","./src/app/client/journey/slides/borrowers/modals/borrower-failed-validation-modal/borrower-failed-validation-modal.component.ts","./src/app/client/journey/slides/borrowers/modals/borrower-failed-validation-modal/borrower-failed-validation-modal.component.html","./src/app/client/journey/slides/borrowers/borrower-edit/borrower-edit.component.html","./src/app/client/journey/slides/borrowers/borrower-edit/borrower-edit.component.ts","./src/app/client/journey/slides/borrowers/borrower-edit/borrower/borrower.component.html","./src/app/client/journey/slides/borrowers/borrower-edit/borrower/borrower.component.ts","./src/app/client/journey/slides/borrowers/borrower-summary/borrower-summary.component.html","./src/app/client/journey/slides/borrowers/borrower-summary/borrower-summary.component.ts","./src/app/client/journey/slides/borrowers/modals/borrower-remove-confirm-modal/borrower-remove-confirm-modal.component.ts","./src/app/client/journey/slides/borrowers/modals/borrower-remove-confirm-modal/borrower-remove-confirm-modal.component.html","./src/app/client/journey/slides/borrowers/services/borrower-contact-address.service.ts","./src/app/client/journey/slides/borrowers/services/borrower-contact.service.ts","./src/app/client/journey/slides/borrowers/services/borrowers.service.ts","./src/app/client/journey/slides/borrowers/validation/borrower.validator.ts","./src/app/client/journey/slides/borrowers/validation/borrowers-validator.store.ts","./src/app/client/journey/slides/getting-started/modals/getting-started-failed-validation-modal/getting-started-failed-validation-modal.component.ts","./src/app/client/journey/slides/getting-started/modals/getting-started-failed-validation-modal/getting-started-failed-validation-modal.component.html","./src/app/client/journey/slides/getting-started/getting-started.component.html","./src/app/client/journey/slides/getting-started/getting-started.component.ts","./src/app/client/journey/slides/getting-started/shared/property-info/mortgage-request-mortgages.service.ts","./src/app/client/journey/slides/getting-started/validation/mortgage-request.validator.ts","./src/app/client/journey/slides/getting-started/validation/realtor-contact.validator.ts","./src/app/client/journey/slides/getting-started/validation/getting-started-validator.store.ts","./src/app/client/journey/slides/income/borrower-income.service.ts","./src/app/client/journey/slides/income/employment-address.service.ts","./src/app/client/journey/slides/income/employment-income.service.ts","./src/app/client/journey/slides/income/helper.model.ts","./src/app/client/journey/slides/income/modals/switching-income-modal/switching-income-modal.component.ts","./src/app/client/journey/slides/income/modals/switching-income-modal/switching-income-modal.component.html","./src/app/client/journey/slides/income/income-edit/modals/current-employment-reminder/current-employment-reminder.component.ts","./src/app/client/journey/slides/income/income-edit/modals/current-employment-reminder/current-employment-reminder.component.html","./src/app/client/journey/slides/income/income-edit/income-edit.component.html","./src/app/client/journey/slides/income/income-edit/income-edit.component.ts","./src/app/client/journey/slides/income/income-summary/income-summary.component.html","./src/app/client/journey/slides/income/income-summary/income-summary.component.ts","./src/app/client/journey/slides/income/modals/income-remove-modal/income-remove-modal.component.ts","./src/app/client/journey/slides/income/modals/income-remove-modal/income-remove-modal.component.html","./src/app/client/journey/slides/income/other-income.service.ts","./src/app/client/journey/slides/income/validation/borrower-employment.validator.ts","./src/app/client/journey/slides/income/income-daterange-validation.service.ts","./src/app/client/journey/slides/income/validation/borrower-income-history.validator.ts","./src/app/client/journey/slides/income/validation/borrower-other-income.validator.ts","./src/app/client/journey/slides/income/validation/income-validation.store.ts","./src/app/client/journey/slides/menu/menu.service.ts","./src/app/client/journey/slides/properties/properties-summary/properties-summary.service.ts","./src/app/client/journey/slides/properties/modals/properties-remove-confirm-modal/properties-remove-confirm-modal.component.ts","./src/app/client/journey/slides/properties/modals/properties-remove-confirm-modal/properties-remove-confirm-modal.component.html","./src/app/client/journey/slides/properties/properties-summary/properties-summary.component.html","./src/app/client/journey/slides/properties/properties-summary/properties-summary.component.ts","./src/app/client/journey/slides/properties/services/property-address.service.ts","./src/app/client/journey/slides/properties/property-edit/property-edit.component.html","./src/app/client/journey/slides/properties/property-edit/property-edit.component.ts","./src/app/client/journey/slides/properties/services/downpayment.service.ts","./src/app/client/journey/slides/properties/services/properties.service.ts","./src/app/client/journey/slides/properties/services/property-mortgages.service.ts","./src/app/client/journey/slides/reviewAndSubmit/referral/validation/pep.validator.ts","./src/app/client/journey/slides/reviewAndSubmit/referral/validation/referral-contact.validator.ts","./src/app/client/journey/slides/reviewAndSubmit/referral/validation/submit-validation.store.ts","./src/app/client/journey/dialogs/heads-up/heads-up.component.ts","./src/app/client/journey/dialogs/heads-up/heads-up.component.html","./src/app/client/journey/slides/reviewAndSubmit/review/review.component.html","./src/app/client/journey/slides/reviewAndSubmit/review/review.component.ts","./src/app/client/journey/slides/reviewAndSubmit/submit/pepModel.model.ts","./src/app/client/journey/slides/slides.component.ts","./src/app/client/journey/slides/slides.component.html","./src/app/settings.ts","./src/app/transition.service.ts","./src/app/utilities/optionsCache/optionsCache.ts","./src/shared-angular/directives/pattern-input.directive.ts","./src/shared-angular/modules/loading-bars/loading-bars.component.ts","./src/shared-angular/modules/loading-bars/loading-bars.component.html","./src/shared-angular/modules/loading-bars/loading-bars.modal.component.html","./src/shared-angular/modules/loading-bars/loading-bars.modal.component.ts","./src/shared-angular/modules/loading-bars/loading-bars.modal.service.ts","./src/shared-angular/modules/loading-bars/loading-bars.module.ts","./src/shared-angular/modules/toast/toast.service.ts","./src/shared-angular/modules/velocity-modal/modal-body.component.ts","./src/shared-angular/modules/velocity-modal/modal-body.component.html","./src/shared-angular/modules/velocity-modal/modal-footer.component.ts","./src/shared-angular/modules/velocity-modal/modal-footer.component.html","./src/shared-angular/modules/velocity-modal/modal-header.component.html","./src/shared-angular/modules/velocity-modal/modal-header.component.ts","./src/shared-angular/modules/velocity-modal/velocity-modal.component.ts","./src/shared-angular/modules/velocity-modal/velocity-modal.component.html","./src/shared-angular/modules/velocity-modal/velocity-modal.module.ts","./src/shared-utilities/async-helpers/promise-helpers.ts","./src/shared-utilities/models/pureDate.ts","./src/shared-utilities/services/client-language.service.ts","./src/shared-utilities/string-helpers/string-helpers.ts","./node_modules/@uirouter/core/lib-esm/common/hof.js","./node_modules/@uirouter/core/lib-esm/common/predicates.js","./node_modules/@uirouter/core/lib-esm/common/coreservices.js","./node_modules/@uirouter/core/lib-esm/common/common.js","./node_modules/@uirouter/core/lib-esm/common/glob.js","./node_modules/@uirouter/core/lib-esm/common/queue.js","./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","./node_modules/@uirouter/core/lib-esm/common/strings.js","./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","./node_modules/@uirouter/core/lib-esm/common/trace.js","./node_modules/@uirouter/core/lib-esm/params/paramType.js","./node_modules/@uirouter/core/lib-esm/params/param.js","./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","./node_modules/@uirouter/core/lib-esm/params/stateParams.js","./node_modules/@uirouter/core/lib-esm/path/pathNode.js","./node_modules/@uirouter/core/lib-esm/state/targetState.js","./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","./node_modules/@uirouter/core/lib-esm/resolve/interface.js","./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","./node_modules/@uirouter/core/lib-esm/state/stateObject.js","./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","./node_modules/@uirouter/core/lib-esm/transition/interface.js","./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","./node_modules/@uirouter/core/lib-esm/transition/transition.js","./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js","./node_modules/@uirouter/core/lib-esm/url/urlRules.js","./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","./node_modules/@uirouter/core/lib-esm/url/urlRule.js","./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","./node_modules/@uirouter/core/lib-esm/view/view.js","./node_modules/@uirouter/core/lib-esm/globals.js","./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","./node_modules/@uirouter/core/lib-esm/url/urlService.js","./node_modules/@uirouter/core/lib-esm/router.js","./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","./node_modules/@uirouter/core/lib-esm/hooks/views.js","./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","./node_modules/@uirouter/core/lib-esm/hooks/url.js","./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","./node_modules/@uirouter/core/lib-esm/state/stateService.js","./node_modules/@uirouter/core/lib-esm/vanilla/q.js","./node_modules/@uirouter/core/lib-esm/vanilla/injector.js","./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","./node_modules/@uirouter/core/lib-esm/interface.js","./node_modules/jsbi/dist/jsbi-umd.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/lastValueFrom.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/iif.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","javascript/esm|C:\\projects\\repos\\velocity-frontend-client\\velocity-frontend-client-next\\client\\node_modules\\source-map-loader\\dist\\cjs.js","./node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/@auth0/auth0-angular/fesm2015/auth0-auth0-angular.mjs","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","./node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.mjs","./node_modules/@fortawesome/pro-light-svg-icons/index.mjs","./node_modules/@fortawesome/pro-regular-svg-icons/index.mjs","./node_modules/@fortawesome/pro-solid-svg-icons/index.mjs","./node_modules/@js-temporal/polyfill/dist/index.esm.js","./node_modules/lodash-es/_isPrototype.js","./node_modules/lodash-es/_overArg.js","./node_modules/lodash-es/_nativeKeys.js","./node_modules/lodash-es/_baseKeys.js","./node_modules/lodash-es/_freeGlobal.js","./node_modules/lodash-es/_root.js","./node_modules/lodash-es/_Symbol.js","./node_modules/lodash-es/_getRawTag.js","./node_modules/lodash-es/_objectToString.js","./node_modules/lodash-es/_baseGetTag.js","./node_modules/lodash-es/isObject.js","./node_modules/lodash-es/isFunction.js","./node_modules/lodash-es/_coreJsData.js","./node_modules/lodash-es/_isMasked.js","./node_modules/lodash-es/_toSource.js","./node_modules/lodash-es/_baseIsNative.js","./node_modules/lodash-es/_getNative.js","./node_modules/lodash-es/_getValue.js","./node_modules/lodash-es/_DataView.js","./node_modules/lodash-es/_Map.js","./node_modules/lodash-es/_Promise.js","./node_modules/lodash-es/_Set.js","./node_modules/lodash-es/_WeakMap.js","./node_modules/lodash-es/_getTag.js","./node_modules/lodash-es/isObjectLike.js","./node_modules/lodash-es/_baseIsArguments.js","./node_modules/lodash-es/isArguments.js","./node_modules/lodash-es/isArray.js","./node_modules/lodash-es/isLength.js","./node_modules/lodash-es/isArrayLike.js","./node_modules/lodash-es/isBuffer.js","./node_modules/lodash-es/stubFalse.js","./node_modules/lodash-es/_baseIsTypedArray.js","./node_modules/lodash-es/_baseUnary.js","./node_modules/lodash-es/_nodeUtil.js","./node_modules/lodash-es/isTypedArray.js","./node_modules/lodash-es/isEmpty.js","./node_modules/lodash-es/isSymbol.js","./node_modules/lodash-es/_baseToString.js","./node_modules/lodash-es/_arrayMap.js","./node_modules/lodash-es/toString.js","./node_modules/lodash-es/_castSlice.js","./node_modules/lodash-es/_baseSlice.js","./node_modules/lodash-es/_hasUnicode.js","./node_modules/lodash-es/_unicodeToArray.js","./node_modules/lodash-es/_stringToArray.js","./node_modules/lodash-es/_asciiToArray.js","./node_modules/lodash-es/upperFirst.js","./node_modules/lodash-es/_createCaseFirst.js","./node_modules/lodash-es/capitalize.js","./node_modules/lodash-es/_deburrLetter.js","./node_modules/lodash-es/_basePropertyOf.js","./node_modules/lodash-es/deburr.js","./node_modules/lodash-es/_asciiWords.js","./node_modules/lodash-es/_hasUnicodeWord.js","./node_modules/lodash-es/_unicodeWords.js","./node_modules/lodash-es/words.js","./node_modules/lodash-es/_createCompounder.js","./node_modules/lodash-es/camelCase.js","./node_modules/lodash-es/_arrayReduce.js","./node_modules/lodash-es/isString.js","./node_modules/lodash-es/isNil.js","./node_modules/lodash-es/_getPrototype.js","./node_modules/lodash-es/isPlainObject.js","./node_modules/lodash-es/eq.js","./node_modules/lodash-es/_isIndex.js","./node_modules/lodash-es/_isIterateeCall.js","./node_modules/lodash-es/isRegExp.js","./node_modules/lodash-es/_baseIsRegExp.js","./node_modules/lodash-es/_isKey.js","./node_modules/lodash-es/_nativeCreate.js","./node_modules/lodash-es/_hashGet.js","./node_modules/lodash-es/_hashHas.js","./node_modules/lodash-es/_Hash.js","./node_modules/lodash-es/_hashClear.js","./node_modules/lodash-es/_hashDelete.js","./node_modules/lodash-es/_hashSet.js","./node_modules/lodash-es/_assocIndexOf.js","./node_modules/lodash-es/_listCacheDelete.js","./node_modules/lodash-es/_ListCache.js","./node_modules/lodash-es/_listCacheClear.js","./node_modules/lodash-es/_listCacheGet.js","./node_modules/lodash-es/_listCacheHas.js","./node_modules/lodash-es/_listCacheSet.js","./node_modules/lodash-es/_getMapData.js","./node_modules/lodash-es/_isKeyable.js","./node_modules/lodash-es/_MapCache.js","./node_modules/lodash-es/_mapCacheClear.js","./node_modules/lodash-es/_mapCacheDelete.js","./node_modules/lodash-es/_mapCacheGet.js","./node_modules/lodash-es/_mapCacheHas.js","./node_modules/lodash-es/_mapCacheSet.js","./node_modules/lodash-es/memoize.js","./node_modules/lodash-es/_stringToPath.js","./node_modules/lodash-es/_memoizeCapped.js","./node_modules/lodash-es/_castPath.js","./node_modules/lodash-es/_toKey.js","./node_modules/lodash-es/result.js","./node_modules/lodash-es/isNumber.js","./node_modules/uri-templates-es/lib/uri-template.js","./node_modules/@lagoshny/ngx-hateoas-client/fesm2015/lagoshny-ngx-hateoas-client.mjs","./node_modules/lodash-es/last.js","./node_modules/lodash-es/split.js","./node_modules/lodash-es/isNull.js","./node_modules/lodash-es/isUndefined.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./node_modules/@uirouter/rx/lib-esm/ui-router-rx.js","./node_modules/@uirouter/angular/fesm2015/uirouter-angular.mjs","./node_modules/ngx-mask/fesm2015/ngx-mask.mjs"],"sourcesContent":["/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || !!ngDevMode;\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* INVALID_TIMING_VALUE */, NG_DEV_MODE$1 && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* NEGATIVE_STEP_VALUE */, NG_DEV_MODE$1 && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* NEGATIVE_DELAY_VALUE */, NG_DEV_MODE$1 && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* INVALID_STYLE_PARAMS */, NG_DEV_MODE$1 &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* INVALID_PARAM_VALUE */, NG_DEV_MODE$1 && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* INVALID_NODE_TYPE */, NG_DEV_MODE$1 && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* INVALID_CSS_UNIT_VALUE */, NG_DEV_MODE$1 && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* INVALID_TRIGGER */, NG_DEV_MODE$1 &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* INVALID_DEFINITION */, NG_DEV_MODE$1 && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* INVALID_STATE */, NG_DEV_MODE$1 &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* INVALID_STYLE_VALUE */, NG_DEV_MODE$1 && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* INVALID_PROPERTY */, NG_DEV_MODE$1 &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* INVALID_PARALLEL_ANIMATION */, NG_DEV_MODE$1 &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* INVALID_KEYFRAMES */, NG_DEV_MODE$1 && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* INVALID_OFFSET */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* KEYFRAME_OFFSETS_OUT_OF_ORDER */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* KEYFRAMES_MISSING_OFFSETS */, NG_DEV_MODE$1 && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* INVALID_STAGGER */, NG_DEV_MODE$1 && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* INVALID_QUERY */, NG_DEV_MODE$1 &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* INVALID_EXPRESSION */, NG_DEV_MODE$1 && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* INVALID_TRANSITION_ALIAS */, NG_DEV_MODE$1 && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* VALIDATION_FAILED */, NG_DEV_MODE$1 && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* BUILDING_FAILED */, NG_DEV_MODE$1 && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* TRIGGER_BUILD_FAILED */, NG_DEV_MODE$1 &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* REGISTRATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* MISSING_OR_DESTROYED_ANIMATION */, NG_DEV_MODE$1 && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* CREATE_ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* MISSING_PLAYER */, NG_DEV_MODE$1 && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* MISSING_TRIGGER */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* MISSING_EVENT */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* UNSUPPORTED_TRIGGER_EVENT */, NG_DEV_MODE$1 &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* UNREGISTERED_TRIGGER */, NG_DEV_MODE$1 && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* TRIGGER_TRANSITIONS_FAILED */, NG_DEV_MODE$1 &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* TRIGGER_PARSING_FAILED */, NG_DEV_MODE$1 &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* TRANSITION_FAILED */, NG_DEV_MODE$1 &&\n `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes(driver, normalizer, element, keyframes, preStyles = {}, postStyles = {}) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf['offset'];\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || {};\n Object.keys(kf).forEach(prop => {\n let normalizedProp = prop;\n let normalizedValue = kf[prop];\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles[prop];\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles[prop];\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetAsInMap(map, key, defaultValue) {\n let value;\n if (map instanceof Map) {\n value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n }\n else {\n value = map[key];\n if (!value) {\n value = map[key] = defaultValue;\n }\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.substr(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\nlet _documentElement = null;\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host; // consider host to support shadow DOM\n if (parent === _documentElement) {\n return null;\n }\n return parent;\n}\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n // Read the document element in an IIFE that's been marked pure to avoid a top-level property\n // read that may prevent tree-shaking.\n _documentElement = /* @__PURE__ */ (() => document.documentElement)();\n _contains = (elm1, elm2) => {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n };\n }\n _query = (element, selector, multi) => {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.substr(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsObject(object) {\n const newObj = {};\n Object.keys(object).forEach(prop => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newObj[newProp] = object[prop];\n });\n return newObj;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, false, normalizedStyles));\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, readPrototype, destination = {}) {\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (let prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n copyObj(styles, destination);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.hasOwnProperty(prop)) {\n formerStyles[prop] = element.style[camelProp];\n }\n element.style[camelProp] = styles[prop];\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n const previousStyleProps = Object.keys(previousStyles);\n if (previousStyleProps.length && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyleProps.forEach(prop => {\n if (!startingKeyframe.hasOwnProperty(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe[prop] = previousStyles[prop];\n });\n if (missingStyleProps.length) {\n // tslint:disable-next-line\n for (var i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(function (prop) {\n kf[prop] = computeStyle(element, prop);\n });\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* State */:\n return visitor.visitState(node, context);\n case 1 /* Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* Group */:\n return visitor.visitGroup(node, context);\n case 4 /* Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* Style */:\n return visitor.visitStyle(node, context);\n case 8 /* Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* Query */:\n return visitor.visitQuery(node, context);\n case 12 /* Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (ngDevMode && props.length) {\n warnings.push(`The provided CSS properties are not recognized properties supported for animations: ${props.join(', ')}`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = {};\n context.collectedStyles[ROOT_SELECTOR] = {};\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(value => {\n if (isObject(value)) {\n const stylesObj = value;\n Object.keys(stylesObj).forEach(prop => {\n extractStyleParams(stylesObj[prop]).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n if (Array.isArray(metadata.styles)) {\n metadata.styles.forEach(styleTuple => {\n if (typeof styleTuple == 'string') {\n if (styleTuple == AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(styleTuple);\n }\n });\n }\n else {\n styles.push(metadata.styles);\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (isObject(styleData)) {\n const styleMap = styleData;\n const easing = styleMap['easing'];\n if (easing) {\n collectedEasing = easing;\n delete styleMap['easing'];\n }\n if (!containsDynamicStyles) {\n for (let prop in styleMap) {\n const value = styleMap[prop];\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple == 'string')\n return;\n Object.keys(tuple).forEach(prop => {\n if (!this._driver.validateStyleProperty(prop)) {\n delete tuple[prop];\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n const collectedStyles = context.collectedStyles[context.currentQuerySelector];\n const collectedEntry = collectedStyles[prop];\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles[prop] = { startTime, endTime };\n }\n if (context.options) {\n validateStyleParams(tuple[prop], context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetAsInMap(context.collectedStyles, context.currentQuerySelector, {});\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.substr(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = {};\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (isObject(styleTuple) && styleTuple.hasOwnProperty('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n });\n }\n else if (isObject(styles) && styles.hasOwnProperty('offset')) {\n const obj = styles;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n return offset;\n}\nfunction isObject(value) {\n return !Array.isArray(value) && typeof value == 'object';\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of prototypical inheritance, AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill object. Given that each of the keyframe\n * styles is an object that prototypically inherits from the backFill object, this means that if a\n * value is added into the backFill then it will automatically propagate any missing values to all\n * keyframes. Therefore the missing `height` value will be properly filled into the already\n * processed keyframes.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * (For prototypically-inherited contents to be detected a `for(i in obj)` loop must be used.)\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = {}, finalStyles = {}, options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n if (Object.keys(finalStyles).length) {\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, 0, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.getCurrentStyleProperties().length) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* Style */ ||\n (startTime == 0 && context.currentTimeline.getCurrentStyleProperties().length))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = {};\n this._currentKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._pendingStyles = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.getCurrentStyleProperties().length > 0;\n default:\n return true;\n }\n }\n getCurrentStyleProperties() {\n return Object.keys(this._currentKeyframe);\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size == 1 && Object.keys(this._pendingStyles).length;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles[prop] = value;\n this._globalTimelineStyles[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value };\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach(prop => {\n this._backFill[prop] = this._globalTimelineStyles[prop] || AUTO_STYLE;\n this._currentKeyframe[prop] = AUTO_STYLE;\n });\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n Object.keys(styles).forEach(prop => {\n const val = interpolateParams(styles[prop], params, errors);\n this._pendingStyles[prop] = val;\n if (!this._localTimelineStyles.hasOwnProperty(prop)) {\n this._backFill[prop] = this._globalTimelineStyles.hasOwnProperty(prop) ?\n this._globalTimelineStyles[prop] :\n AUTO_STYLE;\n }\n this._updateStyle(prop, val);\n });\n }\n applyStylesToKeyframe() {\n const styles = this._pendingStyles;\n const props = Object.keys(styles);\n if (props.length == 0)\n return;\n this._pendingStyles = {};\n props.forEach(prop => {\n const val = styles[prop];\n this._currentKeyframe[prop] = val;\n });\n Object.keys(this._localTimelineStyles).forEach(prop => {\n if (!this._currentKeyframe.hasOwnProperty(prop)) {\n this._currentKeyframe[prop] = this._localTimelineStyles[prop];\n }\n });\n }\n snapshotCurrentStyles() {\n Object.keys(this._localTimelineStyles).forEach(prop => {\n const val = this._localTimelineStyles[prop];\n this._pendingStyles[prop] = val;\n this._updateStyle(prop, val);\n });\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n Object.keys(timeline._styleSummary).forEach(prop => {\n const details0 = this._styleSummary[prop];\n const details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, true);\n Object.keys(finalKeyframe).forEach(prop => {\n const value = finalKeyframe[prop];\n if (value == ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value == AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe['offset'] = time / this.duration;\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = copyObj(kf0);\n kf0['offset'] = 0;\n kf1['offset'] = 1;\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0], false);\n newFirstKeyframe['offset'] = 0;\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0], false);\n oldFirstKeyframe['offset'] = roundOffset(startingGap);\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i], false);\n const oldOffset = kf['offset'];\n const timeAtKeyframe = delay + oldOffset * duration;\n kf['offset'] = roundOffset(timeAtKeyframe / totalTime);\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = {};\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || Object.keys(allStyles);\n allProperties.forEach(prop => {\n styles[prop] = AUTO_STYLE;\n });\n }\n else {\n copyStyles(token, false, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\nconst DIMENSIONAL_PROP_MAP = (() => makeBooleanMap('width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective'\n .split(',')))();\nfunction makeBooleanMap(keys) {\n const map = {};\n keys.forEach(key => map[key] = true);\n return map;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n const backupStateStyler = this._stateStyles['*'];\n const stateStyler = this._stateStyles[stateName];\n const backupStyles = backupStateStyler ? backupStateStyler.buildStyles(params, errors) : {};\n return stateStyler ? stateStyler.buildStyles(params, errors) : backupStyles;\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = { params: Object.assign(Object.assign({}, transitionAnimationParams), nextAnimationParams) };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetAsInMap(preStyleMap, elm, {});\n tl.preStyleProps.forEach(prop => preProps[prop] = true);\n const postProps = getOrSetAsInMap(postStyleMap, elm, {});\n tl.postStyleProps.forEach(prop => postProps[prop] = true);\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = {};\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value != null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n const styleObj = value;\n Object.keys(styleObj).forEach(prop => {\n let val = styleObj[prop];\n if (val.length > 1) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles[normalizedProp] = val;\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = {};\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states[ast.name] = new AnimationStateStyles(ast.style, defaultParams, _normalizer);\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(obj, key1, key2) {\n if (obj.hasOwnProperty(key1)) {\n if (!obj.hasOwnProperty(key2)) {\n obj[key2] = obj[key1];\n }\n }\n else if (obj.hasOwnProperty(key2)) {\n obj[key1] = obj[key2];\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = {};\n this._playersById = {};\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations[id] = ast;\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations[id];\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, {}, {}, options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetAsInMap(autoStylesMap, inst.element, {});\n inst.postStyleProps.forEach(prop => styles[prop] = null);\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n Object.keys(styles).forEach(prop => {\n styles[prop] = this._driver.computeStyle(element, prop, AUTO_STYLE);\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, {}, styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById[id] = player;\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n delete this._playersById[id];\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById[id];\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = {};\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.hasOwnProperty(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetAsInMap(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetAsInMap(this._engine.statesByElement, element, {});\n if (!triggersWithStates.hasOwnProperty(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates[name] = DEFAULT_STATE_VALUE;\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers[name]) {\n delete triggersWithStates[name];\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers[name]) {\n // throw\n return false;\n }\n else {\n this._triggers[name] = ast;\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers[name];\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = {});\n }\n let fromState = triggersWithStates[triggerName];\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates[triggerName] = toState;\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetAsInMap(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n delete this._triggers[name];\n this._engine.statesByElement.forEach((stateMap, element) => {\n delete stateMap[name];\n });\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n Object.keys(triggerStates).forEach(triggerName => {\n previousTriggersValues.set(triggerName, triggerStates[triggerName].value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers[triggerName]) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers[triggerName];\n const transition = trigger.fallbackTransition;\n const fromState = elementStates[triggerName] || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n if (this.driver.getParentElement !== undefined) {\n // Fast path for when the driver implements `getParentElement`, which allows us to find the\n // closest ancestor with an existing namespace that we can then insert `ns` after, without\n // having to inspect all existing namespaces.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n }\n else {\n // Slow path for backwards compatibility if the driver does not implement\n // `getParentElement`, to be removed once `getParentElement` is a required method.\n for (let i = limit; i >= 0; i--) {\n const nextNamespace = namespaceList[i];\n if (this.driver.containsElement(nextNamespace.hostElement, hostElement)) {\n namespaceList.splice(i + 1, 0, ns);\n found = true;\n break;\n }\n }\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n const keys = Object.keys(elementStates);\n for (let i = 0; i < keys.length; i++) {\n const nsId = elementStates[keys[i]].namespaceId;\n if (nsId) {\n const ns = this._fetchNamespace(nsId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n var _a;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if ((_a = element.classList) === null || _a === void 0 ? void 0 : _a.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates[entry.triggerName]) {\n triggersWithStates[entry.triggerName].value = previousValue;\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetAsInMap(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n if (props.length) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetAsInMap(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, Object.assign(Object.assign({}, post), pre));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetAsInMap(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetAsInMap(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetAsInMap(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = {};\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n Object.keys(this._queuedCallbacks).forEach(phase => {\n this._queuedCallbacks[phase].forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks = {};\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetAsInMap(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues;\n if (map instanceof Map) {\n currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n }\n else {\n currentValues = map[key];\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n delete map[key];\n }\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = {};\n props.forEach(prop => {\n const value = styles[prop] = driver.computeStyle(element, prop, defaultStyle);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.add(className);\n}\nfunction removeClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = {});\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n const props = Object.keys(styles);\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (isNonAnimatableStyle(prop)) {\n result = result || {};\n result[prop] = styles[prop];\n }\n }\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = {};\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : {};\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](keyframes, options);\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = {};\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n Object.keys(finalKeyframe).forEach(prop => {\n if (prop != 'offset') {\n styles[prop] = this._finished ? finalKeyframe[prop] : computeStyle(this.element, prop);\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = {};\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach(prop => previousStyles[prop] = styles[prop]);\n });\n }\n keyframes = keyframes.map(styles => copyStyles(styles, false));\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n return new WebAnimationsPlayer(element, keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, InjectionToken, RendererFactory2, NgZone, NgModule } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\nBrowserAnimationBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n var _a, _b;\n return (_b = (_a = this._renderer.engine.players[+this.id]) === null || _a === void 0 ? void 0 : _a.getPosition()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n this.promise = Promise.resolve(0);\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate === null || delegate === void 0 ? void 0 : delegate.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n Promise.resolve(null).then(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\nAnimationRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine) {\n super(namespaceId, delegate, engine);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.substr(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.substr(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.substr(dotIndex + 1);\n return [trigger, phase];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n constructor(doc, driver, normalizer) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n}\nInjectableAnimationEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectableAnimationEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }];\n } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n/**\n * @publicApi\n */\nconst ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see `BrowserAnimationsModuleConfig`\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n}\nBrowserAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n}\nNoopAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { Component, TemplateRef } from '@angular/core';\r\n\r\nimport { ToastService } from './toast.service';\r\n\r\n@Component({\r\n selector: 'toasts-container',\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n {{ toast.textOrTpl }}\r\n \r\n `,\r\n host: { '[class.ngb-toasts]': 'true' },\r\n})\r\nexport class ToastsContainer {\r\n constructor(public toastService: ToastService) {}\r\n\r\n isTemplate(toast) {\r\n return toast.textOrTpl instanceof TemplateRef;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n})\r\nexport class AppComponent {\r\n title = 'VelocityCRM';\r\n\r\n constructor(private auth: AuthService) {}\r\n}\r\n","\r\n","import { Injector } from '@angular/core';\r\nimport { Transition, UIRouter } from '@uirouter/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport {\r\n AuthStateNames,\r\n AuthStatesHelper,\r\n} from './authentication/router/auth-states';\r\nimport { SettingsService } from './settings';\r\n\r\nexport class UIRouterConfig {\r\n /* UIRouter Config Function */\r\n static async initialize(uiRouter: UIRouter, injector: Injector) {\r\n // Allow optional trailing slashes\r\n uiRouter.urlService.config.strictMode(false);\r\n\r\n // Acquire the settingsService\r\n let settingsService = injector.get(SettingsService);\r\n\r\n const transitionService = uiRouter.transitionService;\r\n transitionService.onStart({}, onStart);\r\n\r\n if (settingsService.debugConsoleEnabled && !environment.production) {\r\n transitionService.onSuccess({}, onSuccess);\r\n transitionService.onEnter({}, onEnter);\r\n transitionService.onError({}, onError);\r\n transitionService.onFinish({}, onFinish);\r\n }\r\n }\r\n}\r\n\r\nexport function onStart(transition: Transition) {\r\n const $state = transition.router.stateService;\r\n\r\n //clears redirect url from local storage if not transitioned to auth/redirect\r\n if (transition.to().name !== AuthStateNames.AuthRedirect) {\r\n AuthStatesHelper.clearAuthRedirectUrl();\r\n }\r\n\r\n console.debug(\r\n `transition:onStart: ${transition.from().name} -> ${transition.to().name}`,\r\n );\r\n}\r\n\r\nexport function onSuccess(transition: Transition) {\r\n const $state = transition.router.stateService;\r\n console.debug(\r\n `transition:onSuccess: ${transition.from().name} -> ${\r\n transition.to().name\r\n }`,\r\n );\r\n}\r\n\r\nexport function onEnter(transition: Transition) {\r\n const $state = transition.router.stateService;\r\n console.debug(\r\n `transition:onEnter: ${transition.from().name} -> ${transition.to().name}`,\r\n );\r\n}\r\n\r\nexport function onError(transition: Transition) {\r\n const $state = transition.router.stateService;\r\n console.debug(\r\n `transition:onError: ${transition.from().name} -> ${transition.to().name}`,\r\n transition.error(),\r\n );\r\n}\r\n\r\nexport function onFinish(transition: Transition) {\r\n const $state = transition.router.stateService;\r\n console.debug(\r\n `transition:onFinish: ${transition.from().name} -> ${transition.to().name}`,\r\n );\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToastsContainer } from './toasts-container.component';\r\nimport { ToastService } from './toast.service';\r\nimport { NgbToastModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@NgModule({\r\n declarations: [ToastsContainer],\r\n imports: [CommonModule, NgbToastModule],\r\n providers: [ToastService],\r\n exports: [ToastsContainer],\r\n})\r\nexport class ToastModule {\r\n constructor() {}\r\n}\r\n","import { LOCALE_ID, NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UIRouterModule, Ng2StateDeclaration } from '@uirouter/angular';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouterConfig } from './uiRouter.config';\r\nimport { TransitionService } from './transition.service';\r\nimport { OptionsCache } from './utilities/optionsCache/optionsCache';\r\nimport { SettingsService, AppSettings } from './settings';\r\n\r\nimport { AuthenticationModule } from './authentication/authentication.module';\r\nimport { ClientLanguageService } from '../shared-utilities/services/client-language.service';\r\nimport { ToastModule } from 'src/shared-angular/modules/toast/toast.module';\r\n\r\nconst states: Ng2StateDeclaration[] = [\r\n {\r\n name: 'auth.**',\r\n url: '/auth',\r\n loadChildren: () =>\r\n import('./authentication/authentication.module').then(\r\n m => m.AuthenticationModule,\r\n ),\r\n },\r\n {\r\n name: 'main.tests.**',\r\n url: '/tests',\r\n loadChildren: () => import('./tests/tests.module').then(m => m.TestsModule),\r\n },\r\n {\r\n name: 'client.**',\r\n url: '/client',\r\n loadChildren: () =>\r\n import('./client/client.module').then(m => m.ClientModule),\r\n },\r\n];\r\n\r\n@NgModule({\r\n declarations: [AppComponent],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FontAwesomeModule,\r\n HttpClientModule,\r\n FormsModule,\r\n NgbModule,\r\n ToastModule,\r\n AuthenticationModule,\r\n UIRouterModule.forRoot({\r\n states: states,\r\n // initial: '',\r\n config: UIRouterConfig.initialize,\r\n }),\r\n ],\r\n providers: [\r\n { provide: ClientLanguageService, useClass: ClientLanguageService },\r\n SettingsService,\r\n {\r\n provide: LOCALE_ID,\r\n deps: [ClientLanguageService],\r\n useFactory: (clientLanguageService: ClientLanguageService) =>\r\n clientLanguageService.localeId,\r\n },\r\n TransitionService,\r\n OptionsCache,\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {\r\n constructor(private transitionService: TransitionService) {}\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { ClientLanguageService } from 'src/shared-utilities/services/client-language.service';\r\nimport { SettingsService } from '../settings';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AccountService {\r\n constructor(\r\n private settings: SettingsService,\r\n private httpClient: HttpClient,\r\n private clientLanguageService: ClientLanguageService,\r\n ) {}\r\n\r\n async saveClientUser() {\r\n let url = `${this.settings.publicApiBaseUrl}/v2/account/client/user/save/${this.clientLanguageService.localeId}`;\r\n await lastValueFrom(this.httpClient.post(url, null));\r\n }\r\n}\r\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\n\r\n// Import the module from the SDK\r\nimport {\r\n AuthClientConfig,\r\n AuthHttpInterceptor,\r\n AuthModule,\r\n} from '@auth0/auth0-angular';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SettingsService } from '../settings';\r\nimport { AccountService } from './account.service';\r\nimport { LoadingBarsModule } from '../../shared-angular/modules/loading-bars/loading-bars.module';\r\nimport { AuthStates } from './router/auth-states';\r\nimport { AuthenticationComponent } from './authentication.component';\r\nimport { LoginDoneComponent } from './login-done/login-done.component';\r\nimport { LogoutDoneComponent } from './logout-done/logout-done.component';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\n\r\nconst authConfigInitializer =\r\n (auth0ClientConfig: AuthClientConfig, settingsService: SettingsService) =>\r\n () => {\r\n auth0ClientConfig.set(settingsService.auth0);\r\n };\r\n\r\n@NgModule({\r\n declarations: [\r\n AuthenticationComponent,\r\n LoginDoneComponent,\r\n LogoutDoneComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n AuthModule.forRoot(),\r\n LoadingBarsModule,\r\n UIRouterModule.forChild({\r\n states: AuthStates,\r\n }),\r\n ],\r\n providers: [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: authConfigInitializer,\r\n deps: [AuthClientConfig, SettingsService],\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthHttpInterceptor,\r\n multi: true,\r\n },\r\n AccountService,\r\n ],\r\n})\r\nexport class AuthenticationModule {}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-authentication',\r\n templateUrl: './authentication.component.html',\r\n styleUrls: ['./authentication.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AuthenticationComponent {}\r\n","
","import { Component, OnInit } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { JourneyStates } from 'src/app/client/journey/router/journey-states';\r\nimport {\r\n delayAsync,\r\n handle,\r\n} from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { AccountService } from '../account.service';\r\n\r\n@Component({\r\n selector: 'app-login-done',\r\n templateUrl: './login-done.component.html',\r\n styleUrls: ['./login-done.component.scss'],\r\n})\r\nexport class LoginDoneComponent implements OnInit {\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private accountService: AccountService,\r\n ) {\r\n console.log('LoginDoneComponent Created');\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log('ngOnInit Running');\r\n this.handleRedirect();\r\n }\r\n\r\n private async handleRedirect() {\r\n // HACK: It seems ui-router is in a bad state (possibly still\r\n // resolving current navigation), and a short delay is necessary\r\n // before it's settled and able to route again.\r\n await delayAsync(2000);\r\n\r\n // There's nothing to do with the response from saveClientUser, but\r\n // it's still useful to \"handle\" it to avoid a possible http error\r\n // from throwing, causing the return redirect to fail.\r\n await handle(this.accountService.saveClientUser());\r\n\r\n let globalParams = this.uiRouter.globals.params;\r\n let returnUrl = globalParams?.returnUrl;\r\n if (!returnUrl) {\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n // The return url is likely absolute and needs to be relative\r\n let absolutePrefix = `${window.location.protocol}//${window.location.host}`;\r\n if (returnUrl.startsWith(absolutePrefix)) {\r\n returnUrl = returnUrl.substring(absolutePrefix.length);\r\n }\r\n let baseHref = this.uiRouter.locationConfig.baseHref();\r\n if (baseHref && returnUrl.startsWith(baseHref)) {\r\n returnUrl = returnUrl.substring(baseHref.length - 1);\r\n }\r\n\r\n this.uiRouter.locationService.url(returnUrl, true);\r\n }\r\n}\r\n","
\r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { JourneyStates } from 'src/app/client/journey/router/journey-states';\r\nimport { delayAsync } from 'src/shared-utilities/async-helpers/promise-helpers';\r\n\r\n@Component({\r\n selector: 'app-logout-done',\r\n templateUrl: './logout-done.component.html',\r\n styleUrls: ['./logout-done.component.scss'],\r\n})\r\nexport class LogoutDoneComponent implements OnInit {\r\n constructor(private uiRouter: UIRouter) {}\r\n\r\n ngOnInit(): void {\r\n this.handleRedirect();\r\n }\r\n\r\n private async handleRedirect() {\r\n let globalParams = this.uiRouter.globals.params;\r\n let returnUrl = globalParams?.returnUrl;\r\n if (!returnUrl) {\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n // The return url is likely absolute and needs to be relative\r\n let absolutePrefix = `${window.location.protocol}//${window.location.host}`;\r\n if (returnUrl.startsWith(absolutePrefix)) {\r\n returnUrl = returnUrl.substring(absolutePrefix.length);\r\n }\r\n let baseHref = this.uiRouter.locationConfig.baseHref();\r\n if (baseHref && returnUrl.startsWith(baseHref)) {\r\n returnUrl = returnUrl.substring(baseHref.length - 1);\r\n }\r\n\r\n this.uiRouter.locationService.url(returnUrl, true);\r\n }\r\n}\r\n","
\r\n \r\n
","import { Ng2StateDeclaration, UIRouter, UIView } from '@uirouter/angular';\r\nimport { AuthenticationComponent } from '../authentication.component';\r\nimport { LoginDoneComponent } from '../login-done/login-done.component';\r\nimport { LogoutDoneComponent } from '../logout-done/logout-done.component';\r\nimport { ErrorComponent } from 'src/app/client/journey/error/error.component';\r\nimport { JourneyStates } from 'src/app/client/journey/router/journey-states';\r\n\r\nexport class AuthStateNames {\r\n static readonly Auth = 'auth';\r\n static readonly LoginDone = `${this.Auth}.loginDone`;\r\n static readonly LogoutDone = `${this.Auth}.logoutDone`;\r\n static readonly AuthRedirect = `${this.Auth}.redirect`;\r\n}\r\n\r\nconst AuthState: Ng2StateDeclaration = {\r\n name: AuthStateNames.Auth,\r\n url: '/auth',\r\n component: AuthenticationComponent,\r\n abstract: true,\r\n data: {\r\n allowAnonymous: true,\r\n data: { documentTitle: 'Client Journey' },\r\n },\r\n};\r\n\r\nconst LoginDoneState: Ng2StateDeclaration = {\r\n name: AuthStateNames.LoginDone,\r\n url: '/loginDone?{returnUrl}',\r\n component: LoginDoneComponent,\r\n};\r\n\r\nconst LogoutDoneState: Ng2StateDeclaration = {\r\n name: AuthStateNames.LogoutDone,\r\n url: '/logoutDone?{returnUrl}',\r\n component: LogoutDoneComponent,\r\n};\r\n\r\nconst AuthRedirectState: Ng2StateDeclaration = {\r\n name: AuthStateNames.AuthRedirect,\r\n url: '/redirect',\r\n onEnter: async trans => {\r\n trans.abort();\r\n AuthStatesHelper.handleAuthRedirect(trans.router);\r\n },\r\n component: ErrorComponent,\r\n};\r\n\r\nexport const AuthStates: Ng2StateDeclaration[] = [\r\n AuthState,\r\n LoginDoneState,\r\n LogoutDoneState,\r\n AuthRedirectState,\r\n];\r\n\r\nexport class AuthStatesHelper {\r\n private static readonly redirectUrlKey = 'returnUrl';\r\n private static readonly returnUrlExpireTimeKey = 'returnUrlExpireTime';\r\n\r\n static handleAuthRedirect(uiRouter: UIRouter) {\r\n const currentTime = new Date().getTime();\r\n const returnUrlExpireTime = Number(\r\n localStorage.getItem(this.returnUrlExpireTimeKey),\r\n );\r\n const returnUrl = localStorage.getItem(this.redirectUrlKey);\r\n this.clearAuthRedirectUrl();\r\n\r\n if (currentTime < returnUrlExpireTime) {\r\n uiRouter.stateService.go(AuthStateNames.LoginDone, {\r\n returnUrl: returnUrl,\r\n });\r\n } else {\r\n JourneyStates.transitionToErrorState(uiRouter);\r\n }\r\n }\r\n\r\n static saveAuthRedirectUrl(redirectUrl: string, expiryTimeSpan: number) {\r\n //set login done url in local storage before initiating login\r\n localStorage.setItem(this.redirectUrlKey, redirectUrl);\r\n //set login done url expiry time to 5 days (as configured in auth0 password reset configuration)\r\n localStorage.setItem(\r\n this.returnUrlExpireTimeKey,\r\n (new Date().getTime() + expiryTimeSpan).toString(),\r\n );\r\n }\r\n\r\n static clearAuthRedirectUrl() {\r\n //set login done url in local storage before initiating login\r\n localStorage.removeItem(this.redirectUrlKey);\r\n //set login done url expiry time to 5 days (as configured in auth0 password reset configuration)\r\n localStorage.removeItem(this.returnUrlExpireTimeKey);\r\n }\r\n}\r\n","import {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n sequence,\r\n group,\r\n} from '@angular/animations';\r\n\r\nexport var animations = [\r\n trigger('animateSections', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n sequence([animate('.25s ease-in', style({ opacity: 1 }))]),\r\n ]),\r\n ]),\r\n\r\n trigger('animateSlides', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n sequence([animate('.25s ease-in', style({ opacity: 1 }))]),\r\n ]),\r\n ]),\r\n trigger('animateSectionsFadeInOut', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateX(-10px)', height: 0 }),\r\n\r\n sequence([\r\n animate('500ms ease-in-out', style({ height: '*' })),\r\n\r\n animate(\r\n '250ms ease-in',\r\n style({ opacity: 1, transform: 'translateX(0)' }),\r\n ),\r\n ]),\r\n ]),\r\n\r\n transition(':leave', [\r\n style({ opacity: 1, overflow: 'hidden' }),\r\n sequence([\r\n animate(\r\n '250ms ease-in-out',\r\n style({ opacity: 0, transform: 'translateX(10px)' }),\r\n ),\r\n animate('250ms ease-in-out', style({ height: 0 })),\r\n ]),\r\n ]),\r\n ]),\r\n\r\n trigger('animateFadeLoading', [\r\n transition(':enter', [\r\n style({ opacity: 0 }), // Starting style\r\n animate('250ms ease-in', style({ opacity: 1 })), // Ending style\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1 }), // Starting style\r\n animate('250ms ease-in-out', style({ opacity: 0 })), // Ending style\r\n ]),\r\n ]),\r\n\r\n trigger('animateSectionsFadeOut', [\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n sequence([\r\n animate(\r\n '0.3s ease-in-out',\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n\r\n trigger('animateSectionsFadeIn', [\r\n transition(':enter', [\r\n style({ opacity: 0, height: '0' }),\r\n sequence([\r\n animate(\r\n '.3s 0.2s ease-in-out',\r\n style({\r\n height: '*',\r\n opacity: 1,\r\n }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n\r\n trigger('animateSectionsFadeInUp', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(10px)' }),\r\n\r\n sequence([\r\n animate(\r\n '.3s ease-in-out',\r\n style({ opacity: 1, transform: 'translateY(0)' }),\r\n ),\r\n ]),\r\n ]),\r\n\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n sequence([\r\n animate(\r\n '.3s ease-in-out',\r\n style({ opacity: 0, transform: 'translateY(10px)', height: 0 }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n];\r\n","import {\r\n faPlusCircle,\r\n faQuestionCircle,\r\n faTrashAlt,\r\n faUserAlt,\r\n faPenAlt,\r\n faLocation,\r\n faUser,\r\n faTimes,\r\n faBars,\r\n faEraser,\r\n faChevronLeft,\r\n faClipboardListCheck,\r\n faChevronRight,\r\n faCheckCircle,\r\n faExclamationCircle,\r\n faTachometerAlt,\r\n faFaceSadTear,\r\n faFloppyDisk,\r\n faHandsHoldingDollar,\r\n faSealExclamation,\r\n faRightToBracket,\r\n faMemoCircleInfo,\r\n faCheck,\r\n faArrowRotateRight,\r\n faCommentAltExclamation,\r\n faSpinner,\r\n faBuildingColumns,\r\n faOctagonExclamation,\r\n faArrowRightFromBracket,\r\n faStarCircle,\r\n faEyeSlash as faEyeSlashSolid,\r\n faEye as faEyeSolid,\r\n faLockAlt as faLockAltSolid,\r\n faGift,\r\n faCouch,\r\n faCar,\r\n faUmbrella,\r\n faCircleQuestion,\r\n faShare as faShareSolid,\r\n faLightbulbOn as faLightbulbOnSolid,\r\n} from '@fortawesome/pro-solid-svg-icons';\r\nimport {\r\n faShare,\r\n faReply,\r\n faArrowCircleRight,\r\n faArrowCircleLeft,\r\n faRocketLaunch,\r\n faLockAlt,\r\n faMoon,\r\n faSun,\r\n faChartLine,\r\n faUserChart,\r\n faArrowsRotate,\r\n faEnvelope,\r\n faFileMagnifyingGlass,\r\n faPaperPlane,\r\n faFaceLaughBeam,\r\n} from '@fortawesome/pro-regular-svg-icons';\r\nimport {\r\n faCommentExclamation,\r\n faEye,\r\n faEyeSlash,\r\n faHomeHeart,\r\n faLightbulbOn,\r\n faFileCircleInfo,\r\n} from '@fortawesome/pro-light-svg-icons';\r\n\r\n// An enum-like singleton for icons\r\nexport class Icons {\r\n static readonly spinner = faSpinner;\r\n\r\n static readonly add = faPlusCircle;\r\n static readonly help = faQuestionCircle;\r\n static readonly error = faCommentAltExclamation;\r\n static readonly delete = faTrashAlt;\r\n static readonly share = faShare;\r\n static readonly shareSolid = faShareSolid;\r\n\r\n static readonly reply = faReply;\r\n static readonly borrower = faUserAlt;\r\n static readonly agent = faUserAlt;\r\n static readonly user = faUser;\r\n static readonly edit = faPenAlt;\r\n static readonly typeManually = faPenAlt;\r\n static readonly continue = faArrowCircleRight;\r\n\r\n static readonly previous = faArrowCircleLeft;\r\n static readonly location = faLocation;\r\n static readonly incomeRocket = faRocketLaunch;\r\n static readonly holdingDollar = faHandsHoldingDollar;\r\n static readonly homeHeart = faHomeHeart;\r\n static readonly lightbulbOn = faLightbulbOn;\r\n static readonly lightbulbSolid = faLightbulbOnSolid;\r\n\r\n static readonly progress = faChartLine;\r\n static readonly clipboard = faClipboardListCheck;\r\n static readonly chevronRight = faChevronRight;\r\n static readonly userChart = faUserChart;\r\n\r\n static readonly chevronLeft = faChevronLeft;\r\n\r\n static readonly clear = faEraser;\r\n static readonly close = faTimes;\r\n static readonly checkModal = faCheck;\r\n static readonly stop = faOctagonExclamation;\r\n static readonly hamburger = faBars;\r\n static readonly lock = faLockAlt;\r\n static readonly flinksAccount = faLockAltSolid;\r\n\r\n static readonly dashboard = faTachometerAlt;\r\n\r\n static readonly sun = faSun;\r\n static readonly moon = faMoon;\r\n\r\n static readonly check = faCheckCircle;\r\n\r\n static readonly exclamation = faExclamationCircle;\r\n static readonly commentExclamation = faCommentExclamation;\r\n\r\n static readonly sad = faFaceSadTear;\r\n\r\n static readonly logOut = faArrowRightFromBracket;\r\n\r\n static readonly logIn = faRightToBracket;\r\n static readonly save = faFloppyDisk;\r\n\r\n static readonly headsUp = faSealExclamation;\r\n\r\n static readonly openApplication = faMemoCircleInfo;\r\n\r\n static readonly refresh = faArrowRotateRight;\r\n\r\n static readonly loading = faArrowsRotate;\r\n static readonly eyeSlash = faEyeSlash;\r\n static readonly eyeSlashSolid = faEyeSlashSolid;\r\n\r\n static readonly eye = faEye;\r\n static readonly eyeSolid = faEyeSolid;\r\n\r\n static readonly banking = faBuildingColumns;\r\n\r\n static readonly email = faEnvelope;\r\n\r\n static readonly fileInfo = faFileCircleInfo;\r\n\r\n static readonly inReview = faFileMagnifyingGlass;\r\n\r\n static readonly submitted = faPaperPlane;\r\n\r\n static readonly closing = faFaceLaughBeam;\r\n\r\n static readonly appSubmitted = faStarCircle;\r\n\r\n static readonly gift = faGift;\r\n\r\n static readonly household = faCouch;\r\n\r\n static readonly insurance = faUmbrella;\r\n\r\n static readonly vehicle = faCar;\r\n\r\n static readonly question = faCircleQuestion;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { ClientJourneyContext } from '../shared/services/deal/client-journey-context';\r\nimport { Borrower } from '../shared/models/deal-resources/borrower.model';\r\nimport { JourneyStates } from '../router/journey-states';\r\nimport { UIRouter } from '@uirouter/core';\r\n\r\n@Component({\r\n selector: 'application-success',\r\n templateUrl: './application-success.component.html',\r\n styleUrls: ['./application-success.component.scss'],\r\n animations: animations,\r\n})\r\nexport class ApplicationSuccessComponent implements OnInit {\r\n icons = Icons;\r\n\r\n primaryBorrower: Borrower;\r\n\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.primaryBorrower = clientJourneyContext.deal.getPrimaryBorrower();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n transitionToLogin() {\r\n JourneyStates.transitionToLogin(this.uiRouter, false);\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Congratulations {{primaryBorrower.contact.firstName}}!\r\n

\r\n

Thank you for trusting us with your application.

\r\n

We look forward to working with you.

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Did you know?

\r\n

\r\n By \r\n creating an account \r\n you'll gain access to a dashboard where you can track the progress of\r\n your application.\r\n \r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","export enum SortDirection {\r\n Asc,\r\n Desc,\r\n}\r\n","
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n
1\">\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Agent\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n 1\"\r\n [agent]=\"panel.agent\">\r\n 1\"\r\n [ceInvite]=\"panel.ceInvite\">\r\n 1\"\r\n [deal]=\" panel.deal\"\r\n [orderIndex]=\"i\"\r\n (refresh)=\"refreshDeal($event)\">\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { SortDirection } from 'src/shared-utilities/models/sortDirection';\r\nimport { JourneyStates } from '../router/journey-states';\r\nimport { AgentDetails } from '../shared/models/agent-resources/agent-resource';\r\nimport { DashboardClientExperienceInvite } from './models/dashboard-client-experience-invite';\r\nimport { DashboardDeal, DealPanelStates } from './models/dashboard-deal.model';\r\nimport { DashboardView } from './models/dashboard-view.model';\r\nimport { DashboardService } from './services/dashboard.service';\r\nimport { Icons } from '../../enums/icons';\r\n\r\n@Component({\r\n selector: 'app-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n animations: animations,\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n ViewStates = ViewStates;\r\n viewState = ViewStates.Loading;\r\n icons = Icons;\r\n\r\n private _view: DashboardView;\r\n get view(): DashboardView {\r\n return this._view;\r\n }\r\n set view(value: DashboardView) {\r\n this._view = value;\r\n this.updateDashboardPanels();\r\n }\r\n\r\n DashboardPanelTypes = DashboardPanelTypes;\r\n panelGroups: DashboardPanelGroup[];\r\n agentsPanelGroups: DashboardPanelGroup[];\r\n agents: AgentDetails[] = undefined;\r\n selectedAgentId: number = 0;\r\n\r\n // Flag used in query params to determine if\r\n // the state was reached via the submit slide.\r\n fromSubmit = false;\r\n\r\n constructor(\r\n private dashboardService: DashboardService,\r\n private uiRouter: UIRouter,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // Extract the fromSubmit param, then transition to the current\r\n // state with the param false and the location replaced (no\r\n // additional history). The fromSubmit is dynamic so it doesn't\r\n // cause a full state reload just a URL update.\r\n // We do this to ensure a true fromSubmit is only seen once, and\r\n // any refresh causes the fromSubmit state to return to false.\r\n this.fromSubmit = this.uiRouter.globals.params.fromSubmit;\r\n this.uiRouter.stateService.go(\r\n '.',\r\n { fromSubmit: false },\r\n { location: 'replace' },\r\n );\r\n\r\n this.loadDashboardView();\r\n }\r\n\r\n async loadDashboardView() {\r\n this.viewState = ViewStates.Loading;\r\n let routeParams = this.uiRouter.globals.params;\r\n let shortCode = routeParams.shortCode;\r\n let [view, err] = await handle(\r\n this.dashboardService.loadDashboardView(shortCode),\r\n );\r\n if (err) {\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n const sortedDeals = this.getSortedDeals(view.deals, SortDirection.Desc);\r\n view.deals = sortedDeals;\r\n this.view = view;\r\n this.viewState = this.ViewStates.Idle;\r\n }\r\n\r\n getSortedDeals(deals: DashboardDeal[], sortDirection: SortDirection) {\r\n if (sortDirection == SortDirection.Desc) {\r\n return deals.sort((d1: DashboardDeal, d2: DashboardDeal) => {\r\n return (\r\n (d2.borrowers[0].lastActiveUtc?.getTime() ?? 0) -\r\n (d1.borrowers[0].lastActiveUtc?.getTime() ?? 0)\r\n );\r\n });\r\n }\r\n\r\n return deals.sort((d1: DashboardDeal, d2: DashboardDeal) => {\r\n return (\r\n (d1.borrowers[0].lastActiveUtc?.getTime() ?? 0) -\r\n (d2.borrowers[0].lastActiveUtc?.getTime() ?? 0)\r\n );\r\n });\r\n }\r\n\r\n /***\r\n * Determine required panels and panel order\r\n */\r\n private updateDashboardPanels() {\r\n // Resolve the progress state for each deal\r\n this.view.deals.forEach(d => d.resolvePanelState());\r\n\r\n // ceInvitePanels\r\n let ceInvitePanels = this.view.ceInvites.map(\r\n ceInvite => new ClientExperiencePanel(ceInvite),\r\n );\r\n let clientExperiencePanelGroup = new DashboardPanelGroup(ceInvitePanels);\r\n\r\n // inProgressDealPanelGroup\r\n let inProgressDealPanelGroup = DealPanelGroupFactory.create(\r\n this.view,\r\n DealPanelStates.InProgress,\r\n );\r\n\r\n // submittedDealPanelGroup\r\n let submittedDealPanelGroup = DealPanelGroupFactory.create(\r\n this.view,\r\n DealPanelStates.Submitted,\r\n );\r\n\r\n // completedDealPanelGroup\r\n let completedDealPanelGroup = DealPanelGroupFactory.create(\r\n this.view,\r\n DealPanelStates.Completed,\r\n );\r\n\r\n this.panelGroups = [\r\n clientExperiencePanelGroup,\r\n inProgressDealPanelGroup,\r\n submittedDealPanelGroup,\r\n completedDealPanelGroup,\r\n ];\r\n\r\n // The newDeal panel is special:\r\n // 1. It's not always required\r\n // 2. It injects at the bottom of all other panels\r\n this.addNewDealPanelGroup();\r\n\r\n // determine all distinct agents\r\n this.agents = [];\r\n const allAgents = this.view.deals.map(d => d.agent) || [];\r\n allAgents.push(this.view.agent);\r\n allAgents.forEach(agent => {\r\n if (!this.agents.some(a => a.agentId == agent.agentId)) {\r\n this.agents.push(agent);\r\n }\r\n });\r\n this.selectedAgentId = this.view.agent.agentId;\r\n this.agents.sort((a1, a2) =>\r\n `${a1.contact?.firstName} ${a1.contact?.lastName}` >\r\n `${a2.contact?.firstName} ${a2.contact?.lastName}`\r\n ? 1\r\n : -1,\r\n );\r\n }\r\n private addNewDealPanelGroup() {\r\n // Dashboard agent matches client experience invite\r\n let dashboardAgentMatchesClientExperience = this.view.ceInvites.some(\r\n ce => ce.agent.shortCode == this.view.agent.shortCode,\r\n );\r\n\r\n // Dashboard agent matches in-progress deal agent\r\n let dashboardAgentMatchesInProgressDealAgent = this.view.deals.some(\r\n d =>\r\n d.panelState == DealPanelStates.InProgress &&\r\n d.agent.shortCode == this.view.agent.shortCode,\r\n );\r\n\r\n let showNewDealPanel =\r\n !dashboardAgentMatchesClientExperience &&\r\n !dashboardAgentMatchesInProgressDealAgent;\r\n\r\n // Bail if the panel is not required.\r\n if (!showNewDealPanel) return;\r\n\r\n let newDealPanel = new NewDealPanel(this.view.agent);\r\n\r\n // We create a group for the panel, even though it only has the one panel\r\n let newDealPanelGroup = new DashboardPanelGroup([newDealPanel]);\r\n this.panelGroups.push(newDealPanelGroup);\r\n }\r\n\r\n // TODO: this could be improved by just reloading the one deal\r\n refreshDeal(deal: DashboardDeal) {\r\n if (!this.view) return;\r\n this.loadDashboardView();\r\n }\r\n}\r\n\r\nenum ViewStates {\r\n Loading,\r\n Idle,\r\n}\r\n\r\nenum DashboardPanelTypes {\r\n NewDeal,\r\n ClientExperience,\r\n Deal,\r\n}\r\n\r\nabstract class DashboardPanel {\r\n constructor(public readonly type: DashboardPanelTypes) {}\r\n}\r\n\r\nclass DashboardPanelGroup {\r\n public panels: DashboardPanel[] = [];\r\n\r\n constructor(panels?: DashboardPanel[]) {\r\n this.panels = panels;\r\n }\r\n}\r\n\r\nclass DealPanelGroupFactory {\r\n static create(\r\n view: DashboardView,\r\n progressState: DealPanelStates,\r\n ): DashboardPanelGroup {\r\n let deals = view.filterDealsByProgressState(progressState);\r\n let dealPanels = deals.map(d => new DealPanel(d));\r\n let dealPanelGroup = new DashboardPanelGroup();\r\n dealPanelGroup.panels = dealPanels;\r\n return dealPanelGroup;\r\n }\r\n}\r\n\r\nclass NewDealPanel extends DashboardPanel {\r\n constructor(public agent: AgentDetails) {\r\n super(DashboardPanelTypes.NewDeal);\r\n }\r\n}\r\n\r\nclass ClientExperiencePanel extends DashboardPanel {\r\n constructor(public ceInvite: DashboardClientExperienceInvite) {\r\n super(DashboardPanelTypes.ClientExperience);\r\n }\r\n}\r\n\r\nclass DealPanel extends DashboardPanel {\r\n constructor(public deal: DashboardDeal) {\r\n super(DashboardPanelTypes.Deal);\r\n }\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { AgentDetails } from '../../shared/models/agent-resources/agent-resource';\r\nimport { Address } from '../../shared/models/deal-resources/address.model';\r\nimport { DealStatuses } from '../../shared/models/deal-resources/enumerators';\r\nimport { DashboardBorrower } from './dashboard-borrower.model';\r\nimport { DashboardDealDocument } from './dashboard-deal-document.model';\r\n\r\n@HateoasResource('dashboardDeals')\r\nexport class DashboardDeal extends Resource {\r\n portalUrl: string;\r\n purpose: string;\r\n dealKey: string;\r\n loanCode: string;\r\n status: DealStatuses;\r\n closingDate: Date;\r\n agent: AgentDetails;\r\n subjectPropertyAddress: Address;\r\n borrowers: DashboardBorrower[];\r\n documents: DashboardDealDocument[];\r\n\r\n // Client-side calculated fields\r\n progressPercentage: number;\r\n portalProgressPercentage: number;\r\n panelState: DealPanelStates;\r\n progressState: DealProgressStates;\r\n\r\n resolvePanelState(): DealPanelStates {\r\n let dealPanelState: DealPanelStates = DealPanelStates.Completed;\r\n\r\n if (this.status == DealStatuses.Lead) {\r\n dealPanelState = DealPanelStates.InProgress;\r\n }\r\n\r\n let requiresDealDocuments = false;\r\n if (this.documents) {\r\n requiresDealDocuments = this.documents.some(d => !d.hasFile);\r\n }\r\n\r\n // Not lead and document status not 100%\r\n if (this.status != DealStatuses.Lead && requiresDealDocuments) {\r\n dealPanelState = DealPanelStates.Submitted;\r\n }\r\n\r\n // Not lead and document status is 100%\r\n if (this.status != DealStatuses.Lead && !requiresDealDocuments) {\r\n dealPanelState = DealPanelStates.Completed;\r\n }\r\n\r\n this.panelState = dealPanelState;\r\n return dealPanelState;\r\n }\r\n}\r\n\r\nexport enum DealPanelStates {\r\n // Lead status\r\n InProgress,\r\n\r\n // Deal status New\r\n Submitted,\r\n\r\n // One or more borrowers not complete\r\n WaitingOnBorrower,\r\n\r\n // All borrowers submitted\r\n // Document progress 100%\r\n Completed,\r\n}\r\n\r\nexport enum DealProgressStates {\r\n InProgress = 1,\r\n BorrowerReview = 2,\r\n BorrowerSubmit = 3,\r\n DocumentsCollection = 4,\r\n AgentReview = 5,\r\n Submitted = 6,\r\n Closing = 7,\r\n Complete = 8,\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { AgentDetails } from '../../shared/models/agent-resources/agent-resource';\r\nimport { DashboardClientExperienceInvite } from './dashboard-client-experience-invite';\r\nimport { DashboardDeal, DealPanelStates } from './dashboard-deal.model';\r\nimport { DashboardUser } from './dashboard-user.model';\r\n\r\n@HateoasResource('dashboard')\r\nexport class DashboardView extends Resource {\r\n agent: AgentDetails;\r\n ceInvites: DashboardClientExperienceInvite[];\r\n deals: DashboardDeal[];\r\n user: DashboardUser;\r\n\r\n filterDealsByProgressState(panelState: DealPanelStates): DashboardDeal[] {\r\n return this.deals.filter(d => d.panelState == panelState);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\nimport { HateoasResourceService } from '@lagoshny/ngx-hateoas-client';\r\nimport { BaseResource } from '@lagoshny/ngx-hateoas-client/lib/model/resource/base-resource';\r\nimport { first, lastValueFrom } from 'rxjs';\r\nimport { SettingsService } from 'src/app/settings';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { ClientLanguageService } from 'src/shared-utilities/services/client-language.service';\r\nimport { SlidesStateNames } from '../../router/slides-states';\r\nimport { AgentDetails } from '../../shared/models/agent-resources/agent-resource';\r\nimport { DealStatuses } from '../../shared/models/deal-resources/enumerators';\r\nimport { ClientJourneyEngagementService } from '../../shared/services/deal/client-journey-engagement.service';\r\nimport {\r\n ResourceTree,\r\n ResourceTreeCriteria,\r\n} from '../../shared/services/resource-tree';\r\nimport { DashboardBorrower } from '../models/dashboard-borrower.model';\r\nimport {\r\n DashboardDeal,\r\n DealProgressStates,\r\n} from '../models/dashboard-deal.model';\r\nimport { DashboardView } from '../models/dashboard-view.model';\r\n\r\n// Found on: https://decipher.dev/30-seconds-of-typescript/docs/maxDate/\r\nconst maxDate = (dates: Date[]) => new Date(Math.max(...dates.map(Number)));\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DashboardService {\r\n constructor(\r\n private settings: SettingsService,\r\n private cjEngagementService: ClientJourneyEngagementService,\r\n private auth0Service: AuthService,\r\n private httpClient: HttpClient,\r\n private resourceService: HateoasResourceService,\r\n private clientLanguageService: ClientLanguageService,\r\n ) {}\r\n\r\n async trySaveDeal(agent: AgentDetails, loanCode: string, dealKey: string) {\r\n let [isAuthenticated, isAuthenticatedErr] = await handle(\r\n lastValueFrom(this.auth0Service.isAuthenticated$.pipe(first())),\r\n );\r\n if (isAuthenticatedErr) return;\r\n if (!isAuthenticated) return;\r\n\r\n let url = `${this.settings.publicApiBaseUrl}/v2/dashboard/deals/${loanCode}/save?dealKey=${dealKey}&shortCode=${agent.shortCode}`;\r\n let [_, saveDashboardDealError] = await handle(\r\n lastValueFrom(this.httpClient.post(url, null)),\r\n );\r\n if (saveDashboardDealError) {\r\n console.error(saveDashboardDealError);\r\n }\r\n }\r\n\r\n private resourceTree: ResourceTree;\r\n private async buildResourceTree(\r\n shortCode: string,\r\n ): Promise> {\r\n let rootUrl = `view/?shortCode=${shortCode}`;\r\n let treeCriteria = new ResourceTreeCriteria(DashboardView, rootUrl)\r\n .include('$.agent')\r\n .include('$.agent.contact')\r\n .include('$.user')\r\n .include('$.ceInvites', { isArray: true })\r\n .include('$.ceInvites.agent')\r\n .include('$.ceInvites.agent.contact')\r\n .include('$.deals', { isArray: true })\r\n .include('$.deals.documents', {\r\n isArray: true,\r\n params: { lang: this.clientLanguageService.clientLanguage },\r\n })\r\n .include('$.deals.subjectPropertyAddress')\r\n .include('$.deals.agent')\r\n .include('$.deals.agent.contact')\r\n .include('$.deals.borrowers', { isArray: true })\r\n .include('$.deals.borrowers.cjEngagement')\r\n .include('$.deals.borrowers.cjEngagement.pages', {\r\n isArray: true,\r\n link: 'cjEngagementPages',\r\n });\r\n\r\n this.resourceTree = new ResourceTree(treeCriteria, this.resourceService);\r\n return this.resourceTree;\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' and contacts for all borrowers will be loaded\r\n async loadPath(root: DashboardView, path: string) {\r\n await this.resourceTree.loadPath(root, path);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' and parent borrowers (1...*) would load the contact\r\n // and contact child resources for those borrowers\r\n // Note parents are required.\r\n async loadPathForParents(path: string, parents: BaseResource[]) {\r\n await this.resourceTree.loadPathForParents(path, parents);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' will load all child data.\r\n // A resource is required.\r\n async loadResourceChildren(path: string, resources: BaseResource[]) {\r\n await this.resourceTree.loadResourceChildren(path, resources);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' returns an array of all contact objects (not grouped by borrower)\r\n getResources(root: DashboardView, path: string) {\r\n return this.resourceTree.getResources(root, path);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' returns an array of all borrower objects\r\n getParents(root: DashboardView, path: string) {\r\n return this.resourceTree.getParents(root, path);\r\n }\r\n\r\n async loadDashboardView(shortCode: string) {\r\n await this.buildResourceTree(shortCode);\r\n let view = await this.resourceTree.load();\r\n\r\n let deals = view.deals || [];\r\n for (let deal of deals) {\r\n this.resolveDates(deal);\r\n this.resolveDealProgressPercentages(deal);\r\n this.resolveLastViewed(deal);\r\n this.resolveProgressState(deal);\r\n }\r\n\r\n return view;\r\n }\r\n\r\n private resolveDates(deal: DashboardDeal) {\r\n deal.closingDate = deal.closingDate ? new Date(deal.closingDate) : null;\r\n }\r\n\r\n private resolveDealProgressPercentages(deal: DashboardDeal) {\r\n // TODO: The way we're calculating % totals across multiple borrowers\r\n // needs review. See the TODO block towards the bottom of this function\r\n // for an example.\r\n\r\n let totalBorrowerDealProgress = 0;\r\n let totalBorrowerPortalProgress = 0;\r\n let borrowers = deal.borrowers || [];\r\n\r\n // TODO: Until we have borrower invites, we're only supporting\r\n // the first (primary) borrower\r\n borrowers = borrowers.filter(b => b.order == 1);\r\n\r\n // Safety check\r\n if (borrowers.length == 0) {\r\n deal.progressPercentage = 100;\r\n deal.portalProgressPercentage = 100;\r\n return;\r\n }\r\n\r\n for (let borrower of borrowers) {\r\n // Get the percentages. These will not be rounded until after the loop.\r\n\r\n let borrowerDealProgressPercentage =\r\n this.getBorrowerDealProgressPercentage(deal, borrower);\r\n\r\n // TODO: There's commented code in getBorrowerPortalProgressPercentage\r\n // for when we support more than just the one borrower\r\n let borrowerPortalProgressPercentage =\r\n this.getBorrowerPortalProgressPercentage(deal, borrower);\r\n\r\n // Add the amounts to the running totals\r\n totalBorrowerDealProgress += borrowerDealProgressPercentage;\r\n totalBorrowerPortalProgress += borrowerPortalProgressPercentage;\r\n\r\n // Assign rounded values to the borrower\r\n borrower.dealProgressPercentage = Math.round(\r\n borrowerDealProgressPercentage,\r\n );\r\n borrower.portalProgressPercentage = Math.round(\r\n borrowerPortalProgressPercentage,\r\n );\r\n }\r\n // TODO: This needs some review. Summing a % per borrower then\r\n // dividing it by the number of borrowers doesn't necessarily\r\n // produce an accurate value.\r\n // Example:\r\n // Borrower one has uploaded 2 of 7 docs = ~30%\r\n // Borrower two has uploaded 1 of 1 docs = 100%\r\n // Sum = 130%, divided over the two borrowers = 65%\r\n // Reality is more like 37% (3 of 8)\r\n deal.progressPercentage = Math.round(\r\n totalBorrowerDealProgress / borrowers.length,\r\n );\r\n deal.portalProgressPercentage = Math.round(\r\n totalBorrowerPortalProgress / borrowers.length,\r\n );\r\n }\r\n\r\n private getBorrowerDealProgressPercentage(\r\n deal: DashboardDeal,\r\n borrower: DashboardBorrower,\r\n ): number {\r\n if (deal.status != DealStatuses.Lead) {\r\n return 100;\r\n }\r\n\r\n let borrowerDealProgressPercentage =\r\n this.cjEngagementService.getProgressPercentage(\r\n borrower.cjEngagement.pages,\r\n );\r\n return borrowerDealProgressPercentage;\r\n }\r\n\r\n private getBorrowerPortalProgressPercentage(\r\n deal: DashboardDeal,\r\n borrower: DashboardBorrower,\r\n ): number {\r\n if (!deal.documents) return 100;\r\n\r\n let borrowerDocuments = deal.documents || [];\r\n\r\n // TODO: filter the documents when the dashboard handles\r\n // more than just the primary borrower.\r\n // let borrowerDocuments = deal.documents.filter(d => {\r\n // let isBorrowerDocument = false;\r\n // isBorrowerDocument ||= borrower.order == 1 && !d.borrowerId;\r\n // isBorrowerDocument ||= borrower.borrowerId == d.borrowerId;\r\n // return isBorrowerDocument;\r\n // });\r\n let completedBorrowerDocuments = borrowerDocuments.filter(d => d.hasFile);\r\n\r\n let totalBorrowerDocumentsCount = borrowerDocuments.length;\r\n let completedBorrowerDocumentsCount = completedBorrowerDocuments.length;\r\n\r\n if (!totalBorrowerDocumentsCount) return 100;\r\n\r\n let borrowerPortalProgressPercentage =\r\n (completedBorrowerDocumentsCount / totalBorrowerDocumentsCount) * 100;\r\n return borrowerPortalProgressPercentage;\r\n }\r\n\r\n private resolveLastViewed(deal: DashboardDeal) {\r\n let borrowers = deal.borrowers || [];\r\n for (let borrower of borrowers) {\r\n this.resolveBorrowerLastViewed(borrower);\r\n }\r\n }\r\n\r\n private resolveBorrowerLastViewed(borrower: DashboardBorrower) {\r\n let lastActiveUtc: Date;\r\n let pages = borrower.cjEngagement?.pages || [];\r\n for (let page of pages) {\r\n let pageLastActiveUtc = new Date(page.lastActiveUtc);\r\n lastActiveUtc ||= pageLastActiveUtc;\r\n lastActiveUtc = maxDate([lastActiveUtc, pageLastActiveUtc]);\r\n }\r\n borrower.lastActiveUtc = lastActiveUtc;\r\n }\r\n\r\n private resolveProgressState(deal: DashboardDeal) {\r\n if (deal.status == DealStatuses.Lead) {\r\n let primaryBorrower = deal.borrowers?.filter(b => b.order == 1)[0];\r\n let hasReachedReviewState = primaryBorrower?.cjEngagement?.pages.some(\r\n p => p.stateName == SlidesStateNames.Review,\r\n );\r\n deal.progressState = hasReachedReviewState\r\n ? DealProgressStates.BorrowerReview\r\n : DealProgressStates.InProgress;\r\n }\r\n\r\n if (\r\n deal.status == DealStatuses.New ||\r\n deal.status == DealStatuses.Declined\r\n ) {\r\n let requiresDocuments = deal.documents.some(d => !d.hasFile);\r\n deal.progressState = requiresDocuments\r\n ? DealProgressStates.DocumentsCollection\r\n : DealProgressStates.AgentReview;\r\n }\r\n\r\n if (deal.status == DealStatuses.Submitted) {\r\n deal.progressState = DealProgressStates.Submitted;\r\n }\r\n\r\n if (\r\n deal.status >= DealStatuses.Approved &&\r\n deal.status < DealStatuses.Complete\r\n ) {\r\n deal.progressState = DealProgressStates.Closing;\r\n }\r\n\r\n if (deal.status == DealStatuses.Complete) {\r\n deal.progressState = DealProgressStates.Complete;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\n\r\n@Component({\r\n selector: 'app-electronic-signatures-and-records-consent',\r\n templateUrl: './electronic-signatures-and-records-consent.component.html',\r\n styleUrls: ['./../../../assets/design.scss'],\r\n})\r\nexport class ElectronicSignaturesAndRecordsConsentComponent implements OnInit {\r\n faTimes = faTimes;\r\n\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n

Electronic Signatures and Records Consent

\r\n

Newton, our affiliates, and third-party service providers may provide you\r\n with certain communications, notices, agreements, or disclosures in writing regarding your mortgage approval process. Your\r\n acceptance of this E-Sign consent confirms your willingness and ability to receive and act on communications electronically,\r\n rather than in paper form, and to include the use of electronic signatures in our relationship with you.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\n\r\n@Component({\r\n selector: 'app-privacy-policy',\r\n templateUrl: './privacy-policy.component.html',\r\n styleUrls: ['./../../../assets/design.scss'],\r\n})\r\nexport class PrivacyPolicyComponent implements OnInit {\r\n faTimes = faTimes;\r\n\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n

Privacy Policy

\r\n

\r\n This Privacy Agreement discloses the privacy practices of\r\n \r\n Newton.\r\n

\r\n\r\n

These practices apply solely to information collected via this online application.\r\n

\r\n

\r\n Newton’s entire Privacy Policy can be found\r\n \r\n here.\r\n

\r\n

Information collection, use & sharing

\r\n

Your Mortgage Broker/Brokerage are the sole owners of the information collected via this online\r\n application. Access to your personal information is limited to what you provide voluntarily here and via other means of direct\r\n contact your Broker has with you. This information is collected and used for the expressed purpose of obtaining an acceptable\r\n mortgage credit approval. We will not share your information with any third party without your consent. We may contact you via\r\n email or phone in future to inform you of new products, services, promotions and/or changes to this Privacy Agreement.\r\n

\r\n

You may opt out of any future contacts from us at any time.

\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\n\r\n@Component({\r\n selector: 'app-security-policy',\r\n templateUrl: './security-policy.component.html',\r\n styleUrls: ['./../../../assets/design.scss'],\r\n})\r\nexport class SecurityPolicyComponent implements OnInit {\r\n faTimes = faTimes;\r\n\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n

Security Policy

\r\n

Security Basics

\r\n

We understand that trust is the foundation of our relationship with our\r\n customers. We value the confidence you have put in us\r\n and take the responsibility of protecting your information seriously. Respect for security and privacy has been built with our\r\n business since the beginning. We have ensured the very best security measures and practices have been implemented to protect\r\n sensitive information.

\r\n\r\n

Bank-Grade or Better

\r\n

‘Bank-grade’ security means Newton adheres to the same or better security\r\n encryption standards as your bank. We routinely\r\n conduct security audits to ensure we meet these standards at all times. In addition to routine internal audits, we pay third\r\n parties to conduct additional security testing and external assessments to ensure the highest possible security standards.\r\n

\r\n\r\n

Securing your Data at Rest

\r\n

We encrypt your data at rest, meaning when the data is stored, it is\r\n encrypted where it is persisted. Your data is secured\r\n with\r\n 256-bit AES encryption, one of the strongest block ciphers available, and is FIPS 140-2 compliant.

\r\n\r\n

Securing Your Data in Transit

\r\n

Newton utilizes several security measures to help safeguard the\r\n authenticity, integrity, and privacy of data in transit. Data in transit is when your data moves over the internet from you to\r\n a Newton platform. When it moves, it is encrypted using Transport-Layer-Security (TLS), and no one can read that information.\r\n

\r\n\r\n

Mortgage Agent Access

\r\n

Your Mortgage Agent / Mortgage Team will only have access to what\r\n you choose to share with them.

\r\n\r\n

Privacy

\r\n

Newton takes your privacy very seriously. Our Privacy Policy\r\n tells you what your rights are and the rules we follow to protect your personal information, including compliance with PIPEDA\r\n and other regulatory governance.

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\n\r\n@Component({\r\n selector: 'app-terms-of-use-policy',\r\n templateUrl: './terms-of-use-policy.component.html',\r\n styleUrls: ['./../../../assets/design.scss'],\r\n})\r\nexport class TermsOfUsePolicyComponent implements OnInit {\r\n faTimes = faTimes;\r\n\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n

Terms of Use

\r\n

I/We understand and confirm that the information provided is true and correct and I/We\r\n understand that it is being used to determine credit worthiness.\r\n

\r\n

\r\n By accessing this online application, you are consenting to the collection, use, disclosure, and storage of your personal\r\n information by Newton in accordance with our Privacy Agreement. If you choose not to complete this application and have\r\n provided us with your email address and/or mobile phone number, you are consenting to us sending you email and/or SMS/text\r\n reminders with reference to your saved application\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { ClientJourneyStateNames } from '../router/journey-states';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-error',\r\n templateUrl: './error.component.html',\r\n styleUrls: ['./error.component.scss'],\r\n})\r\nexport class ErrorComponent implements OnInit {\r\n ClientJourneyStateName = ClientJourneyStateNames;\r\n\r\n icon = Icons;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","
\r\n
\r\n
\r\n

Uh oh… We’ve got a Gremlin!

\r\n

We’re really sorry, but something’s gone wrong.

\r\n

\r\n Please try \r\n refreshing the page\r\n and/or \r\n checking the link.\r\n

\r\n
\r\n
","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SaveErrorService {\r\n private _state: SaveErrorStates = SaveErrorStates.noError;\r\n\r\n get state(): SaveErrorStates {\r\n return this._state;\r\n }\r\n set state(value: SaveErrorStates) {\r\n // Once the failed state is reached there is no going back\r\n if (this._state == SaveErrorStates.failed) return;\r\n\r\n this._state = value;\r\n }\r\n\r\n constructor() {}\r\n}\r\n\r\nexport enum SaveErrorStates {\r\n noError,\r\n slow,\r\n failed,\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Reach your Mortgage Goals!

\r\n

\r\n \r\n We take your privacy and security seriously and ensure your data is kept safe by following a\r\n  \r\n strict security policy.\r\n

\r\n
\r\n
\r\n \r\n

\r\n I confirm I have read and agree to the \r\n \r\n Terms of Use,\r\n \r\n Privacy Policy,\r\n and\r\n \r\n Consent to Use Electronic Signatures and Records.\r\n

\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

The Benefits of Creating an Account

\r\n
    \r\n
  • \r\n \r\n Save your Application to complete later.\r\n
  • \r\n
  • \r\n \r\n Custom Dashboard to manage all your Applications.\r\n
  • \r\n
  • \r\n \r\n Live Progress updates.\r\n
  • \r\n
  • \r\n \r\n Up to date to do list of all Documents required.\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { faBadgeCheck } from '@fortawesome/pro-solid-svg-icons';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/angular';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { Icons } from '../../enums/icons';\r\nimport { ElectronicSignaturesAndRecordsConsentComponent } from '../dialogs/electronic-signatures-and-records-consent/electronic-signatures-and-records-consent.component';\r\nimport { PrivacyPolicyComponent } from '../dialogs/privacy-policy/privacy-policy.component';\r\nimport { SecurityPolicyComponent } from '../dialogs/security-policy/security-policy.component';\r\nimport { TermsOfUsePolicyComponent } from '../dialogs/terms-of-use-policy/terms-of-use-policy.component';\r\nimport { JourneyStates } from '../router/journey-states';\r\nimport { SlidesStateNames } from '../router/slides-states';\r\nimport { ClientJourneyContext } from '../shared/services/deal/client-journey-context';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss'],\r\n animations: animations,\r\n})\r\nexport class HomeComponent implements OnInit {\r\n termsChecked = false; // Checkbox to enable the start button\r\n isCreatingDeal = false; // Disable UI and show loading spinner\r\n SlidesStateNames = SlidesStateNames;\r\n icons = Icons;\r\n badgeCheck = faBadgeCheck;\r\n\r\n private _modalConfig = {\r\n size: 'lg',\r\n modalDialogClass: 'client-journey-modal',\r\n };\r\n\r\n constructor(\r\n private modalService: NgbModal,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private uiRouter: UIRouter,\r\n ) {\r\n clientJourneyContext.resetDeal();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n showSecurityPolicy() {\r\n this.modalService.open(SecurityPolicyComponent, this._modalConfig);\r\n }\r\n\r\n showTermsOfUsePolicy() {\r\n this.modalService.open(TermsOfUsePolicyComponent, this._modalConfig);\r\n }\r\n\r\n showPrivacyPolicy() {\r\n this.modalService.open(PrivacyPolicyComponent, this._modalConfig);\r\n }\r\n\r\n showElectronicSignaturesAndRecordsConsent() {\r\n this.modalService.open(\r\n ElectronicSignaturesAndRecordsConsentComponent,\r\n this._modalConfig,\r\n );\r\n }\r\n\r\n async createNewDeal(): Promise {\r\n this.isCreatingDeal = true;\r\n\r\n let shortCode = this.clientJourneyContext.agent.shortCode;\r\n let ceContactKey: string = this.uiRouter.globals.params.ceContactKey;\r\n let source: string = this.uiRouter.globals.params.source;\r\n let [deal, err] = await handle(\r\n this.clientJourneyContext.createNewDeal(shortCode, ceContactKey, source),\r\n );\r\n\r\n if (err) {\r\n console.error(err);\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n const gettingStartedParams = {\r\n dealKey: deal.dealKey,\r\n loanCode: deal.loanCode,\r\n };\r\n\r\n this.uiRouter.stateService.go(\r\n SlidesStateNames.GettingStarted,\r\n gettingStartedParams,\r\n );\r\n }\r\n\r\n login() {\r\n JourneyStates.transitionToLogin(this.uiRouter, true);\r\n }\r\n}\r\n","
\r\n
\r\n\r\n\r\n\r\n\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/angular';\r\nimport {\r\n SaveErrorService,\r\n SaveErrorStates,\r\n} from './error/save-error-overlay/save-error.service';\r\nimport {\r\n ClientLanguage,\r\n ClientLanguageService,\r\n} from 'src/shared-utilities/services/client-language.service';\r\nimport { animations } from '../animations/animations';\r\n\r\n@Component({\r\n selector: 'client-journey',\r\n templateUrl: './journey.component.html',\r\n styleUrls: ['./journey.component.scss', '../assets/themes.scss'],\r\n animations: animations,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ClientJourneyComponent implements OnInit {\r\n SaveErrorStates = SaveErrorStates;\r\n get saveErrorState(): SaveErrorStates {\r\n return this.saveErrorService.state;\r\n }\r\n ClientLanguage = ClientLanguage;\r\n\r\n constructor(\r\n //private uiRouter: UIRouter,\r\n private saveErrorService: SaveErrorService,\r\n public languageService: ClientLanguageService,\r\n ) {\r\n //document.title = 'Client Journey';\r\n // console.log('shortCode', this.uiRouter.globals.params?.shortCode);\r\n // console.log('ceContactKey', this.uiRouter.globals.params?.ceContactKey);\r\n // console.log('lang', this.uiRouter.globals.params?.lang);\r\n }\r\n\r\n ngOnInit(): void {\r\n //disable the auto scrolling down when switching slides\r\n if ('scrollRestoration' in history) {\r\n // Back off, browser, I got this...\r\n history.scrollRestoration = 'manual';\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/angular';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport {\r\n ClientJourneyStateNames,\r\n JourneyStates,\r\n} from '../router/journey-states';\r\nimport { AgentService } from '../shared/services/agent.service';\r\nimport { ClientJourneyContext } from '../shared/services/deal/client-journey-context';\r\nimport { ThemeTypes, ThemeService } from '../shared/services/theme.service';\r\nimport { OptionsCacheService } from '../shared/services/options-cache/options-cache.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { DealStatuses } from '../shared/models/deal-resources/enumerators';\r\nimport { ClientExperienceService } from '../shared/services/deal/client-experience.service';\r\n\r\n@Component({\r\n selector: 'cj-context-loader',\r\n templateUrl: './context-loader.component.html',\r\n styleUrls: ['./context-loader.component.scss'],\r\n})\r\nexport class ContextLoaderComponent implements AfterViewInit {\r\n private dealKey: string;\r\n private loanCode: string;\r\n private agentShortCode: string;\r\n private ceContactKey: string;\r\n\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private agentService: AgentService,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private clientExperienceService: ClientExperienceService,\r\n private themeService: ThemeService,\r\n private optionsCache: OptionsCacheService,\r\n ) {\r\n this.agentShortCode = this.uiRouter.globals.params?.shortCode;\r\n this.dealKey = this.uiRouter.globals.params?.dealKey;\r\n this.loanCode = this.uiRouter.globals.params?.loanCode;\r\n this.ceContactKey = this.uiRouter.globals.params?.ceContactKey;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.loadData();\r\n }\r\n\r\n private async loadData() {\r\n let [agent, err] = await handle(\r\n this.agentService.loadAgentDetails(this.agentShortCode),\r\n );\r\n if (err) {\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n let agentShortCodeMatchesRouterParams =\r\n agent?.shortCode === this.agentShortCode;\r\n if (!agent || !agentShortCodeMatchesRouterParams) {\r\n this.setTheme();\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n // Initialize clientJourneyContext\r\n await this.clientJourneyContext.init(agent);\r\n\r\n this.setTheme(agent.theme);\r\n\r\n // Loading of the OptionsCache has to go somewhere\r\n // This seems like as good a place as any.\r\n await this.optionsCache.load();\r\n\r\n let [_, saveClientExperienceContactError] = await handle(\r\n this.clientExperienceService.trySaveClientExperienceContact(\r\n this.ceContactKey,\r\n ),\r\n );\r\n if (saveClientExperienceContactError) {\r\n console.error(saveClientExperienceContactError);\r\n }\r\n\r\n if (this.agentShortCode && this.dealKey && this.loanCode) {\r\n // Load deal\r\n let [deal, dealLoadError] = await handle(\r\n this.clientJourneyContext.loadDeal(\r\n this.agentShortCode,\r\n this.loanCode,\r\n this.dealKey,\r\n ),\r\n );\r\n\r\n let dealHttpError = dealLoadError as HttpErrorResponse;\r\n if (dealHttpError?.status == 401) {\r\n JourneyStates.transitionToLoggedOutError(this.uiRouter);\r\n return;\r\n }\r\n\r\n if (dealLoadError) {\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n if (deal?.status != DealStatuses.Lead) {\r\n JourneyStates.transitionToDashboard(this.uiRouter);\r\n return;\r\n }\r\n }\r\n\r\n let returnUrl = this.uiRouter.globals.params?.returnUrl;\r\n if (!returnUrl) {\r\n this.uiRouter.stateService.go(ClientJourneyStateNames.Default);\r\n }\r\n\r\n // Sync is necessary when the url hasn't changed, but the current\r\n // state isn't matching the state of the URL.\r\n let currentUrl = this.uiRouter.urlService.url();\r\n if (returnUrl == currentUrl) {\r\n this.uiRouter.urlService.sync();\r\n return;\r\n }\r\n\r\n this.uiRouter.urlService.url(returnUrl);\r\n }\r\n\r\n setTheme(themeName?: string) {\r\n let themeType = ThemeTypes.default;\r\n themeName = (themeName || '').toLowerCase();\r\n\r\n switch (themeName) {\r\n case 'dlc':\r\n themeType = ThemeTypes.dlc;\r\n break;\r\n case 'ma':\r\n themeType = ThemeTypes.ma;\r\n break;\r\n case 'mcc':\r\n themeType = ThemeTypes.mcc;\r\n break;\r\n case 'brokerage':\r\n themeType = ThemeTypes.brokerage;\r\n break;\r\n }\r\n\r\n this.themeService.setTheme(themeType);\r\n }\r\n}\r\n","","import { Component } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport {\r\n ClientJourneyStateNames,\r\n JourneyStates,\r\n} from '../../router/journey-states';\r\n\r\n@Component({\r\n selector: 'logged-out-error',\r\n templateUrl: './logged-out-error.component.html',\r\n styleUrls: ['./logged-out-error.component.scss'],\r\n})\r\nexport class LoggedOutErrorComponent {\r\n icon = Icons;\r\n constructor(private uiRouter: UIRouter) {}\r\n\r\n transitionToLogin() {\r\n JourneyStates.transitionToLogin(this.uiRouter, false);\r\n }\r\n\r\n transitionToHome() {\r\n this.uiRouter.stateService.go(ClientJourneyStateNames.Home);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n

Oh snap! You're logged out

\r\n

No dramas, in a couple of seconds we'll have you back in your application.

\r\n\r\n \r\n
\r\n

Tip: Check 'Remember this device for 30 days' on the next screen to stay logged in.

\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
","import { Ng2StateDeclaration, UIRouter, UIView } from '@uirouter/angular';\r\nimport { ContextLoaderComponent } from '../layout/context-loader.component';\r\nimport { ErrorComponent } from '../error/error.component';\r\nimport { HomeComponent } from '../home/home.component';\r\nimport { ClientJourneyComponent } from '../journey.component';\r\nimport { SlidesStates } from './slides-states';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\nimport { DashboardComponent } from '../dashboard/dashboard.component';\r\nimport { ApplicationSuccessComponent } from '../application-success/application-success.component';\r\nimport {\r\n AuthStateNames,\r\n AuthStatesHelper,\r\n} from 'src/app/authentication/router/auth-states';\r\nimport { SettingsService } from 'src/app/settings';\r\nimport { first, lastValueFrom } from 'rxjs';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { defaultStateRedirectHandler } from './slides-redirect-handlers';\r\nimport { LoggedOutErrorComponent } from '../error/logged-out-error/logged-out-error.component';\r\nimport { ClientLanguageService } from 'src/shared-utilities/services/client-language.service';\r\nimport { isStringNullOrEmpty } from 'src/shared-utilities/string-helpers/string-helpers';\r\n\r\nexport class ClientJourneyStateNames {\r\n static readonly Default = 'client.journey';\r\n static readonly ContextLoader = `${this.Default}.contextLoader`;\r\n static readonly Home = `${this.Default}.home`;\r\n static readonly Login = `${this.Default}.login`;\r\n static readonly Logout = `${this.Default}.logout`;\r\n static readonly LoggedOutError = `${this.Default}.loggedOutError`;\r\n static readonly Error = `${this.Default}.error`;\r\n static readonly Success = `${this.Default}.success`;\r\n static readonly Dashboard = `${this.Default}.dashboard`;\r\n}\r\n\r\nconst defaultState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Default,\r\n url: '/journey?{shortCode}{loanCode}{dealKey}{ceContactKey}{source}',\r\n data: { documentTitle: 'My Mortgage - Application' },\r\n params: {\r\n shortCode: { value: '', dynamic: false },\r\n loanCode: { dynamic: false },\r\n dealKey: { dynamic: false },\r\n ceContactKey: { value: '', squash: true },\r\n source: { value: '', dynamic: true, squash: true },\r\n },\r\n component: ClientJourneyComponent,\r\n onEnter: defaultStateRedirectHandler,\r\n redirectTo: ClientJourneyStateNames.Home,\r\n};\r\n\r\nconst homeState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Home,\r\n url: '/home',\r\n component: HomeComponent,\r\n onEnter: async trans => {\r\n const injector = trans.injector();\r\n const auth0Service = injector.get(AuthService);\r\n let [isAuthenticated, _] = await handle(\r\n lastValueFrom(auth0Service.isAuthenticated$.pipe(first())),\r\n );\r\n if (!isAuthenticated) return true;\r\n\r\n trans.abort();\r\n JourneyStates.transitionToDashboard(trans.router);\r\n },\r\n};\r\n\r\nconst loginState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Login,\r\n url: '/login',\r\n component: UIView,\r\n params: {\r\n returnUrl: { value: null, squash: true },\r\n isSignUp: {\r\n type: 'bool',\r\n value: false,\r\n },\r\n },\r\n onEnter: function (trans) {\r\n try {\r\n this.auth0Service.logout({ localOnly: true });\r\n } catch {}\r\n\r\n let returnUrl = trans.router.globals.transition\r\n .targetState()\r\n .params()?.returnUrl;\r\n\r\n if (isStringNullOrEmpty(returnUrl, true)) {\r\n returnUrl = document.location.href;\r\n }\r\n\r\n let loginDoneUrl = trans.router.stateService.href(\r\n AuthStateNames.LoginDone,\r\n { returnUrl },\r\n { absolute: true, inherit: false },\r\n );\r\n\r\n console.log('Redirecting to login, with return as:', loginDoneUrl);\r\n const injector = trans.injector();\r\n const auth0Service = injector.get(AuthService);\r\n const settingsService = injector.get(SettingsService);\r\n const clientLanguageService = injector.get(\r\n ClientLanguageService,\r\n );\r\n\r\n const isSignUp =\r\n trans.router.globals.transition.targetState().params()?.isSignUp ?? false;\r\n\r\n // Push current url to history so that the back button works from within Auth0's login\r\n history.pushState({}, '');\r\n\r\n //saves redirect url to local storage before login\r\n AuthStatesHelper.saveAuthRedirectUrl(\r\n returnUrl,\r\n settingsService.auth0.redirectUriExpiryTimeSpan,\r\n );\r\n\r\n auth0Service.loginWithRedirect({\r\n authorizationParams: {\r\n redirect_uri: loginDoneUrl,\r\n redirectMethod: 'replace',\r\n audience: settingsService.auth0.authorizationParams.audience,\r\n ui_locales: clientLanguageService.auth0LanguageIdentifier,\r\n screen_hint: isSignUp ? 'signup' : '',\r\n },\r\n });\r\n },\r\n};\r\n\r\nconst logoutState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Logout,\r\n url: '/logout',\r\n component: UIView,\r\n onEnter: function (trans) {\r\n // The redirectUrl is where loginDone should redirect to\r\n let globalParams = trans.router.globals.params;\r\n let redirectParams = { shortCode: globalParams.shortCode };\r\n let returnUrl = trans.router.stateService.href(\r\n ClientJourneyStateNames.Home,\r\n redirectParams,\r\n { absolute: true, inherit: false },\r\n );\r\n\r\n let logoutDoneUrl = trans.router.stateService.href(\r\n AuthStateNames.LogoutDone,\r\n { returnUrl },\r\n { absolute: true },\r\n );\r\n\r\n console.log('Redirecting to logout, with return as:', logoutDoneUrl);\r\n const auth0Service = trans.injector().get(AuthService);\r\n auth0Service.logout({\r\n logoutParams: {\r\n returnTo: logoutDoneUrl,\r\n },\r\n });\r\n },\r\n};\r\n\r\nconst loggedOutErrorState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.LoggedOutError,\r\n url: '/loggedOut',\r\n component: LoggedOutErrorComponent,\r\n};\r\n\r\nconst errorState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Error,\r\n url: '/error',\r\n component: ErrorComponent,\r\n};\r\n\r\nconst loadAgentState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.ContextLoader,\r\n url: '',\r\n component: ContextLoaderComponent,\r\n params: {\r\n returnUrl: { value: '' },\r\n },\r\n};\r\n\r\nconst successState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Success,\r\n url: '/success',\r\n component: ApplicationSuccessComponent,\r\n onEnter: async trans => {\r\n const injector = trans.injector();\r\n const auth0Service = injector.get(AuthService);\r\n let [isAuthenticated, _] = await handle(\r\n lastValueFrom(auth0Service.isAuthenticated$.pipe(first())),\r\n );\r\n if (!isAuthenticated) return true;\r\n\r\n trans.abort();\r\n JourneyStates.transitionToDashboard(trans.router);\r\n },\r\n};\r\n\r\nconst dashboardState: Ng2StateDeclaration = {\r\n name: ClientJourneyStateNames.Dashboard,\r\n url: '/dashboard?{fromSubmit}',\r\n component: DashboardComponent,\r\n data: { documentTitle: 'My Mortgage - Dashboard' },\r\n params: {\r\n fromSubmit: {\r\n value: false,\r\n type: 'bool',\r\n squash: true,\r\n dynamic: true,\r\n },\r\n },\r\n onEnter: async trans => {\r\n const injector = trans.injector();\r\n const auth0Service = injector.get(AuthService);\r\n let [isAuthenticated, _] = await handle(\r\n lastValueFrom(auth0Service.isAuthenticated$.pipe(first())),\r\n );\r\n if (isAuthenticated) return true;\r\n\r\n trans.abort();\r\n let params = trans.router.globals.params;\r\n trans.router.stateService.go(ClientJourneyStateNames.Home, {\r\n shortCode: params.shortCode,\r\n dealKey: '',\r\n loanCode: '',\r\n });\r\n },\r\n};\r\n\r\nexport const ClientJourneyStates: Ng2StateDeclaration[] = [\r\n defaultState,\r\n homeState,\r\n loginState,\r\n logoutState,\r\n loggedOutErrorState,\r\n errorState,\r\n loadAgentState,\r\n dashboardState,\r\n successState,\r\n ...SlidesStates,\r\n];\r\n\r\nexport class JourneyStates {\r\n static transitionToErrorState(uiRouter: UIRouter): void {\r\n uiRouter.stateService.go(\r\n ClientJourneyStateNames.Error,\r\n uiRouter.globals.params,\r\n { location: false },\r\n );\r\n }\r\n\r\n static transitionToLogin(\r\n uiRouter: UIRouter,\r\n isSignUp: boolean,\r\n returnUrl = '',\r\n ) {\r\n uiRouter.stateService.go(\r\n ClientJourneyStateNames.Login,\r\n { isSignUp: isSignUp, returnUrl: returnUrl },\r\n {\r\n location: false,\r\n inherit: false,\r\n },\r\n );\r\n }\r\n\r\n static transitionToLogout(uiRouter: UIRouter) {\r\n uiRouter.stateService.go(ClientJourneyStateNames.Logout, null, {\r\n location: false,\r\n inherit: false,\r\n });\r\n }\r\n\r\n static transitionToLoggedOutError(uiRouter: UIRouter) {\r\n uiRouter.stateService.go(ClientJourneyStateNames.LoggedOutError, null, {\r\n location: false,\r\n });\r\n }\r\n\r\n static transitionToDashboard(uiRouter: UIRouter, fromSubmit = false) {\r\n let globalParams = uiRouter.globals.params;\r\n let dashboardParams = {\r\n shortCode: globalParams?.shortCode,\r\n ceContactKey: globalParams?.ceContactKey,\r\n fromSubmit,\r\n };\r\n uiRouter.stateService.go(\r\n ClientJourneyStateNames.Dashboard,\r\n dashboardParams,\r\n { inherit: false },\r\n );\r\n }\r\n}\r\n","import { RedirectToResult, Transition } from '@uirouter/angular';\r\nimport { refreshPropertyAddressAsync } from '../shared/helpers/address.helper';\r\nimport { AccountTypes } from '../shared/models/deal-resources/borrower-asset.model';\r\nimport { ClientJourneyContext } from '../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../shared/services/resource-context-store';\r\nimport { ClientJourneyStateNames, JourneyStates } from './journey-states';\r\nimport { SlidesStateNames } from './slides-states';\r\n\r\nexport function defaultStateRedirectHandler(trans: Transition) {\r\n let ignoredStateNames = [\r\n ClientJourneyStateNames.Login,\r\n ClientJourneyStateNames.Logout,\r\n ClientJourneyStateNames.ContextLoader,\r\n ClientJourneyStateNames.Error,\r\n ClientJourneyStateNames.LoggedOutError,\r\n ];\r\n\r\n let toStateName = trans.to()?.name;\r\n if (!toStateName) return null;\r\n if (ignoredStateNames.includes(toStateName)) return null;\r\n\r\n let shortCode = trans.params()?.shortCode;\r\n let hasShortCode = !!shortCode;\r\n\r\n // If short code is missing redirect to error state\r\n if (!hasShortCode) {\r\n trans.abort();\r\n JourneyStates.transitionToErrorState(trans.router);\r\n return null;\r\n }\r\n\r\n // Assume everything's good, and test to see\r\n // if a redirect is necessary.\r\n let redirectToContextLoader = false;\r\n\r\n let loanCode = trans.params()?.loanCode;\r\n let dealKey = trans.params()?.dealKey;\r\n let hasLoanCode = !!loanCode;\r\n let hasDelKey = !!dealKey;\r\n\r\n let clientJourneyContext = trans\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n let hasAgent = !!clientJourneyContext.agent;\r\n let shortCodeMatchesAgent =\r\n hasAgent && clientJourneyContext.agent.shortCode == shortCode;\r\n let isAgentLoaded = hasAgent && shortCodeMatchesAgent;\r\n\r\n // A missing or invalid agent requires a redirect\r\n redirectToContextLoader ||= !isAgentLoaded;\r\n\r\n if (hasLoanCode || hasDelKey) {\r\n let hasDeal = !!clientJourneyContext.deal;\r\n let loanCodeMatchesDeal =\r\n hasDeal && clientJourneyContext.deal.loanCode == loanCode;\r\n let dealKeyMatchesDeal =\r\n hasDeal && clientJourneyContext.deal.dealKey == dealKey;\r\n let isDealLoaded = hasDeal && loanCodeMatchesDeal && dealKeyMatchesDeal;\r\n\r\n // A missing or invalid deal requires a redirect\r\n redirectToContextLoader ||= !isDealLoaded;\r\n }\r\n\r\n // We're done, everything's loaded\r\n if (!redirectToContextLoader) return;\r\n\r\n let toState = trans.to();\r\n let toParams = trans.params('to');\r\n\r\n let returnUrl = '';\r\n if (toState) {\r\n returnUrl = trans.router.stateService.href(toState, toParams);\r\n }\r\n\r\n if (!returnUrl) {\r\n returnUrl = trans.router.stateService.href(\r\n ClientJourneyStateNames.Default,\r\n toParams,\r\n );\r\n }\r\n\r\n // The stateService seems to resolve the URL with the baseHref as part\r\n // of the URL. This is a problem since navigating to a route that includes\r\n // the baseHref will cause the baseHref to be duplicated. This will strip\r\n // the baseHref from the returnUrl.\r\n let baseHref = trans.router.locationConfig.baseHref();\r\n if (baseHref && returnUrl.startsWith(baseHref)) {\r\n returnUrl = returnUrl.substring(baseHref.length - 1);\r\n }\r\n\r\n let contextLoaderParams = {\r\n returnUrl,\r\n shortCode: toParams?.shortCode,\r\n loanCode: toParams?.loanCode,\r\n dealKey: toParams?.dealKey,\r\n ceContactKey: toParams?.ceContactKey,\r\n };\r\n trans.abort();\r\n trans.router.stateService.go(\r\n ClientJourneyStateNames.ContextLoader,\r\n contextLoaderParams,\r\n {\r\n location: false,\r\n },\r\n );\r\n}\r\n\r\nexport function borrowersRedirectHandler(\r\n transition: Transition,\r\n): RedirectToResult {\r\n let clientJourneyContext = transition\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n let hasReachedBorrowerSummary =\r\n clientJourneyContext.engagementService.hasReachedSate(\r\n SlidesStateNames.BorrowersSummary,\r\n );\r\n\r\n // Once a user has made it to the summary once, we always return them\r\n // to the summary. If the user has never reached the summary, we start\r\n // them at the edit page.\r\n let redirectState = hasReachedBorrowerSummary\r\n ? SlidesStateNames.BorrowersSummary\r\n : SlidesStateNames.BorrowersEdit;\r\n\r\n // If the redirect is unnecessary, return undefined\r\n let targetState = transition.targetState();\r\n if (redirectState == targetState.name()) return;\r\n\r\n return redirectState;\r\n}\r\n\r\nexport function incomeRedirectHandler(\r\n transition: Transition,\r\n): RedirectToResult {\r\n let clientJourneyContext = transition\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n let hasOtherIncome = clientJourneyContext.deal.borrowers.some(\r\n b => b.otherIncomes?.length,\r\n );\r\n let hasEmployments = clientJourneyContext.deal.borrowers.some(\r\n b => b.employments?.length,\r\n );\r\n\r\n // Resolve and return the redirect state\r\n let redirectState =\r\n hasOtherIncome || hasEmployments\r\n ? SlidesStateNames.IncomeSummary\r\n : SlidesStateNames.IncomeEdit;\r\n\r\n // If the redirect is unnecessary, return undefined\r\n let targetState = transition.targetState();\r\n if (redirectState == targetState.name()) return;\r\n\r\n return redirectState;\r\n}\r\n\r\nexport function bankingRedirectHandler(\r\n transition: Transition,\r\n): RedirectToResult {\r\n let clientJourneyContext = transition\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n let hasBankScrape = clientJourneyContext.deal.borrowers.some(\r\n b => b.bankScrapes.length,\r\n );\r\n\r\n let hasAccountAsset = clientJourneyContext.deal.borrowers.some(b =>\r\n b.assets.some(a => AccountTypes.includes(a.type)),\r\n );\r\n\r\n // Resolve and return the redirect state\r\n let redirectState =\r\n hasBankScrape || hasAccountAsset\r\n ? SlidesStateNames.BankingSummary\r\n : SlidesStateNames.BankingEdit;\r\n\r\n // If the redirect is unnecessary, return undefined\r\n let targetState = transition.targetState();\r\n if (redirectState == targetState.name()) return;\r\n\r\n return redirectState;\r\n}\r\n\r\nexport function assetsRedirectHandler(\r\n transition: Transition,\r\n): RedirectToResult {\r\n let clientJourneyContext = transition\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n let hasAssets = clientJourneyContext.deal.borrowers.some(b =>\r\n b.assets.some(a => AccountTypes.includes(a.type)),\r\n );\r\n\r\n // Resolve and return the redirect state\r\n let redirectState = hasAssets\r\n ? SlidesStateNames.AssetsSummary\r\n : SlidesStateNames.AssetsEdit;\r\n\r\n // If the redirect is unnecessary, return undefined\r\n let targetState = transition.targetState();\r\n if (redirectState == targetState.name()) return;\r\n\r\n return redirectState;\r\n}\r\n\r\nexport async function propertiesRedirectHandler(\r\n transition: Transition,\r\n): Promise {\r\n let clientJourneyContext = transition\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n let resourceContextStore = transition\r\n .injector()\r\n .get(ResourceContextStore);\r\n\r\n await refreshPropertyAddressAsync(clientJourneyContext, resourceContextStore);\r\n\r\n let hasProperty = clientJourneyContext.deal.borrowers.some(\r\n b => b.properties?.length,\r\n );\r\n\r\n // Resolve and return the redirect state\r\n let redirectState = hasProperty\r\n ? SlidesStateNames.PropertiesSummary\r\n : SlidesStateNames.PropertiesEdit;\r\n\r\n // If the redirect is unnecessary, return undefined\r\n let targetState = transition.targetState();\r\n if (redirectState == targetState.name()) return;\r\n\r\n return redirectState;\r\n}\r\n\r\nexport function referralRedirectHandler(\r\n transition: Transition,\r\n): RedirectToResult {\r\n let clientJourneyContext = transition\r\n .injector()\r\n .get(ClientJourneyContext);\r\n\r\n if (!clientJourneyContext.agent.referralActive) {\r\n return SlidesStateNames.Review;\r\n }\r\n\r\n let referralContact = clientJourneyContext.deal.referral?.contact;\r\n\r\n let referralName = `${referralContact?.firstName || ''} ${\r\n referralContact?.lastName || ''\r\n }`.trim();\r\n let referralCompany = referralContact?.companyName || '';\r\n let referralEmail = referralContact?.email || '';\r\n\r\n let hasReferral = referralName || referralCompany || referralEmail;\r\n\r\n // Resolve and return the redirect state\r\n let redirectState = hasReferral\r\n ? SlidesStateNames.Review\r\n : SlidesStateNames.ReferralEdit;\r\n\r\n // If the redirect is unnecessary, return undefined\r\n let targetState = transition.targetState();\r\n if (redirectState == targetState.name()) return;\r\n\r\n return redirectState;\r\n}\r\n","
\r\n

Add Referral

\r\n \r\n \r\n
\r\n \r\n
\r\n

Did anyone recommend us to you?

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Please enter a valid email\r\n \r\n \r\n
\r\n
\r\n

Referral Type?

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
","import {\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { ClientJourneyContext } from 'src/app/client/journey/shared/services/deal/client-journey-context';\r\nimport { DealService } from 'src/app/client/journey/shared/services/deal/deal.service';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { SlidesStateNames } from '../../../../router/slides-states';\r\nimport { ReferralTypes } from '../../../../shared/models/deal-resources/enumerators';\r\nimport { ReferralService } from '../../../../shared/services/referral.service';\r\nimport {\r\n ReferralContactValidationRules,\r\n ReferralContactValidator,\r\n} from '../validation/referral-contact.validator';\r\nimport { SubmitValidationStore } from '../validation/submit-validation.store';\r\n\r\n@Component({\r\n selector: 'cj-slide-referral',\r\n templateUrl: './referral-edit.component.html',\r\n styleUrls: ['./referral-edit.component.scss'],\r\n animations: animations,\r\n viewProviders: [ReferralService, DealService],\r\n})\r\nexport class ReferralEditComponent implements OnInit, OnDestroy {\r\n icon = Icons;\r\n SlidesStateNames = SlidesStateNames;\r\n ReferralContactValidationRules = ReferralContactValidationRules;\r\n recommendUsType = recommendUsType;\r\n recommendUs = null;\r\n referralTypeType = ReferralTypes;\r\n public isFlushing: boolean = false;\r\n removeReferenceToRealtors: boolean;\r\n\r\n private _referralContactValidator: ReferralContactValidator;\r\n @ViewChild('referalEmail') emailElementRef: ElementRef;\r\n\r\n constructor(\r\n private referralService: ReferralService,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private dealService: DealService,\r\n private uiRouter: UIRouter,\r\n ) {}\r\n\r\n async ngOnDestroy(): Promise {\r\n let [_, error] = await handle(this.referralService.flush());\r\n //TODO: handler error\r\n }\r\n\r\n ngOnInit(): void {\r\n this.removeReferenceToRealtors =\r\n this.clientJourneyContext.agent.office.removeReferenceToRealtors;\r\n\r\n let validationGlobalStore = this.clientJourneyContext.validationGlobalStore;\r\n\r\n let referralValidationStore: SubmitValidationStore =\r\n validationGlobalStore.getStore(SubmitValidationStore.globalStoreKey);\r\n\r\n this._referralContactValidator =\r\n referralValidationStore.getReferralContactValidator(this.contact);\r\n\r\n if (\r\n this.referral &&\r\n this.contact &&\r\n (this.contact.firstName ||\r\n this.contact.lastName ||\r\n this.referral.type != null)\r\n ) {\r\n this.recommendUs = recommendUsType.yes;\r\n this.validateReferralInput();\r\n }\r\n }\r\n\r\n get referral() {\r\n return this.referralService.referral;\r\n }\r\n\r\n get contact() {\r\n return this.referralService.contact;\r\n }\r\n\r\n public onReferralTypeChange() {\r\n this.referralService.saveReferral();\r\n if (this.referral && this.referral.type === ReferralTypes.Realtor) {\r\n this.dealService.deal.isRealtorExists = true;\r\n this.dealService.deal.isRealtorNeeded = null;\r\n } else {\r\n this.dealService.deal.isRealtorReferredToUs = null;\r\n }\r\n this.dealService.save();\r\n }\r\n public onContactChange() {\r\n this.referralService.saveReferralContact();\r\n }\r\n\r\n onEmailChange() {\r\n if (this.validateInputKey(ReferralContactValidationRules.EmailFormat)) {\r\n this.referralService.saveReferralContact();\r\n }\r\n }\r\n\r\n public async onContinueButtonClick(): Promise {\r\n if (!this._referralContactValidator.isValid) {\r\n this.scrollToValidationError();\r\n return;\r\n }\r\n\r\n try {\r\n this.isFlushing = true;\r\n await this.referralService.flush();\r\n this.uiRouter.stateService.go(SlidesStateNames.Review);\r\n } catch (error) {\r\n //TODO: handle error\r\n }\r\n this.isFlushing = false;\r\n }\r\n\r\n public isInputKeyValid(key: ReferralContactValidationRules) {\r\n let rule = this._referralContactValidator.getRule(key);\r\n if (rule) {\r\n return rule.isValid;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public validateInputKey(key: ReferralContactValidationRules) {\r\n let rule = this._referralContactValidator.getRule(key);\r\n\r\n if (rule) {\r\n return rule.validate();\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n private validateReferralInput(): void {\r\n this._referralContactValidator.validate();\r\n }\r\n\r\n private scrollToValidationError() {\r\n if (!this.validateInputKey(ReferralContactValidationRules.EmailFormat)) {\r\n this.emailElementRef.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center',\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport enum recommendUsType {\r\n yes,\r\n no,\r\n}\r\n","import { DomSanitizer } from '@angular/platform-browser';\r\nimport { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({ name: 'safeHtml' })\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitized: DomSanitizer) {}\r\n transform(value: any) {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\n\r\n@Component({\r\n selector: 'app-network-consent',\r\n templateUrl: './network-consent.component.html',\r\n styleUrls: [\r\n './../../../assets/design.scss',\r\n './network-consent.component.scss',\r\n ],\r\n})\r\nexport class NetworkConsentComponent implements OnInit {\r\n @Input() networkConsentHtml = '';\r\n faTimes = faTimes;\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-pep-relationship-modal',\r\n templateUrl: './pep-relationship-modal.component.html',\r\n styleUrls: ['./pep-relationship-modal.component.scss'],\r\n})\r\nexport class PepRelationshipModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n

Family Member

\r\n

A family member is considered to be:\r\n

\r\n
    \r\n
  1. Their spouse or common-law\r\n partner;
  2. \r\n\r\n
  3. Their child;
  4. \r\n\r\n
  5. Their mother or father;
  6. \r\n
  7. The mother or father of their spouse\r\n or common-law partner\r\n
  8. \r\n
  9. A child of their mother or father (sibling)”\r\n\r\n
  10. \r\n\r\n
\r\n\r\n

Close Associate

\r\n

A close associate is considered to\r\n be:\r\n

    \r\n
  1. Business partners with, or who beneficially owns or\r\n controls a business with, a PEP or HIO\r\n
  2. \r\n\r\n
  3. In a romantic relationship with a PEP or HIO, such\r\n as a boyfriend, girlfriend or mistress\r\n
  4. \r\n\r\n
  5. Involved in financial transactions with\r\n a PEP or a HIO;
  6. \r\n\r\n
  7. A prominent member of the same\r\n political\r\n party or union as a PEP or HIO
  8. \r\n\r\n
  9. Serving as a member of the same board as a\r\n PEP or HIO; or
  10. \r\n
  11. Closely carrying out charitable works with a PEP or HIO\r\n
  12. \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-pep-types-modal',\r\n templateUrl: './pep-types-modal.component.html',\r\n styleUrls: ['./pep-types-modal.component.scss'],\r\n})\r\nexport class PepTypesModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
    \r\n
  1. A foreign PEP is a person who holds or has held one of the\r\n following offices or positions in or on behalf of a foreign state: head of state\r\n or head of government; member of the executive council of government or member of a legislature; deputy minister or\r\n equivalent rank;\r\n ambassador, or attaché or counsellor of an ambassador; military officer with a rank of general or above; president of a\r\n state-owned company\r\n or a state-owned bank; head of a government agency; judge of a supreme court, constitutional court or other court of last\r\n resort; or leader\r\n or president of a political party represented in a legislature.
  2. \r\n
  3. A domestic PEP is a person who currently holds, or has held\r\n within the last 5 years, a specific office or position in or on behalf of the\r\n Canadian federal government, a Canadian provincial (or territorial) government, or a Canadian municipal government.\r\n Specifically, the person\r\n has held the office or position of: Governor General, lieutenant governor or head of government; member of the Senate or\r\n House of Commons or\r\n member of a legislature; deputy minister or equivalent rank; ambassador, or attaché or counsellor of an ambassador;\r\n military officer with a\r\n rank of general or above; president of a corporation that is wholly owned directly by His Majesty in right of Canada or a\r\n province; head of\r\n a government agency; judge of an appellate court in a province, the Federal Court of Appeal or the Supreme Court of\r\n Canada; leader or\r\n president of a political party represented in a legislature; or mayor, reeve or other similar chief officer of a municipal\r\n or local\r\n government.
  4. \r\n
  5. A HIO is a person who currently holds or has held\r\n within the last 5 years the specific office or position of head of an international\r\n organization and the international organization that they head or were head of is either: an international organization\r\n established by the\r\n governments of states; an institution of an organization referred to in 1 above; or an international sports\r\n organization.
  6. \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-pep-types-small-modal',\r\n templateUrl: './pep-types-small-modal.component.html',\r\n styleUrls: ['./pep-types-small-modal.component.scss'],\r\n})\r\nexport class PepTypesSmallModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Domestic PEPs

\r\n

Domestic PEPs are those who hold high-ranking public\r\n positions within Canada.

\r\n
\r\n\r\n
\r\n

Foreign PEPs

\r\n

Foreign PEPs are those who hold similar positions in other\r\n countries.

\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
","import { Injectable } from '@angular/core';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport {\r\n BorrowerValidationRuleKeys,\r\n BorrowerValidator,\r\n} from '../../borrowers/validation/borrower.validator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubmitValidationService {\r\n private _borrowerValidatorsMap = new Map();\r\n\r\n constructor(private clientJourneyContext: ClientJourneyContext) {\r\n clientJourneyContext.deal.borrowers.forEach(borrower => {\r\n let validator = new BorrowerValidator(borrower);\r\n this._borrowerValidatorsMap.set(borrower.id, validator);\r\n });\r\n }\r\n\r\n public validateBorrowerByRuleKey(\r\n borrowerId,\r\n key: BorrowerValidationRuleKeys,\r\n ): boolean {\r\n let validator = this._borrowerValidatorsMap.get(borrowerId);\r\n\r\n if (!validator) return false;\r\n\r\n validator.validate(key);\r\n return this.getBorrowerValidationResultByKey(borrowerId, key);\r\n }\r\n\r\n public getBorrowerValidationResultByKey(\r\n borrowerId,\r\n key: BorrowerValidationRuleKeys,\r\n ): boolean {\r\n let validator = this._borrowerValidatorsMap.get(borrowerId);\r\n\r\n if (!validator) return false;\r\n const rule = validator.getRule(key);\r\n return rule.isValid;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Temporal } from '@js-temporal/polyfill';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { SettingsService } from 'src/app/settings';\r\nimport { ClientLanguage } from 'src/shared-utilities/services/client-language.service';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { Contact } from '../../../shared/models/deal-resources/contact.model';\r\nimport { Deal } from '../../../shared/models/deal-resources/deal.model';\r\nimport { MortgageRequest } from '../../../shared/models/deal-resources/mortgage-request.model';\r\nimport { Note } from '../../../shared/models/deal-resources/note.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\nimport { PepDisclosureModel } from './pepModel.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubmitService {\r\n public borrowers: Borrower[];\r\n public borrowerUpdateModels: Map = new Map<\r\n number,\r\n Borrower\r\n >();\r\n\r\n public borrowerContactUpdateModels: Map = new Map<\r\n number,\r\n Contact\r\n >();\r\n\r\n public noteUpdateModel: Note;\r\n public dealUpdateModel: Deal;\r\n\r\n private _borrowerContexts: Map> = new Map<\r\n number,\r\n ResourceContext\r\n >();\r\n\r\n private _borrowerContactContexts: Map> =\r\n new Map>();\r\n\r\n private _noteContext: ResourceContext;\r\n private _dealContext: ResourceContext;\r\n\r\n constructor(\r\n private clientJourneyContext: ClientJourneyContext,\r\n private resourceContextStore: ResourceContextStore,\r\n private settings: SettingsService,\r\n private http: HttpClient,\r\n ) {\r\n this.borrowers = clientJourneyContext.deal.borrowers;\r\n\r\n this.borrowers.forEach(borrower => {\r\n //create Borrower contexts and begin enque updates\r\n const borrowerContext = resourceContextStore.getByResource(\r\n borrower,\r\n true,\r\n );\r\n\r\n this._borrowerContexts.set(borrower.id, borrowerContext);\r\n this.borrowerUpdateModels.set(borrower.id, borrower);\r\n\r\n //create Borrower Contact contexts and begin enque updates\r\n const borrowerContactContext = resourceContextStore.getByResource(\r\n borrower.contact,\r\n true,\r\n );\r\n\r\n this._borrowerContactContexts.set(borrower.id, borrowerContactContext);\r\n this.borrowerContactUpdateModels.set(borrower.id, borrower.contact);\r\n });\r\n\r\n //create Note context and begin enque updates\r\n this._noteContext = resourceContextStore.getByResource(\r\n clientJourneyContext.deal.note,\r\n true,\r\n );\r\n\r\n this.noteUpdateModel = clientJourneyContext.deal.note;\r\n\r\n //create Deal context and begin enque updates\r\n this._dealContext = resourceContextStore.getByResource(\r\n clientJourneyContext.deal,\r\n true,\r\n );\r\n this.dealUpdateModel = clientJourneyContext.deal;\r\n }\r\n\r\n public saveBorrower(borrowerModel: Borrower) {\r\n const borrowerContext = this._borrowerContexts.get(borrowerModel.id);\r\n borrowerContext?.patch();\r\n }\r\n\r\n public saveContact(borrowerId: number, contact: Contact) {\r\n const borrowerContactContext =\r\n this._borrowerContactContexts.get(borrowerId);\r\n borrowerContactContext?.patch();\r\n }\r\n\r\n public saveNote(note: Note) {\r\n this._noteContext.patch();\r\n }\r\n\r\n public saveDeal(deal: Deal) {\r\n this._dealContext.patch();\r\n }\r\n\r\n public async submitApplication(\r\n clientLanguage: ClientLanguage,\r\n insuranceReferralConsented: boolean,\r\n thirdPartyDisclosureConsented: boolean,\r\n pepModels: { [key: number]: PepDisclosureModel },\r\n ) {\r\n await this.flush();\r\n\r\n const url = `${this.settings.publicApiBaseUrl}/v2/mortgagerequest/${this.clientJourneyContext.deal.dealKey}/${this.clientJourneyContext.deal.loanCode}/${this.clientJourneyContext.agent.shortCode}/submit/${this.clientJourneyContext.deal.primaryMortgageRequest.id}`;\r\n\r\n let submitRequest: MortgageSubmitRequest = {\r\n sendAgentEmail: true,\r\n sendBorrowerEmail: true,\r\n borrowerEmailLanguage: clientLanguage,\r\n insuranceReferralConsented: insuranceReferralConsented,\r\n thirdPartyDisclosureConsented: thirdPartyDisclosureConsented,\r\n ianaId: Temporal.Now.timeZoneId(),\r\n borrowerPepDeclarations: pepModels,\r\n };\r\n\r\n await lastValueFrom(this.http.post(url, submitRequest));\r\n }\r\n\r\n public async flush(): Promise {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n\r\nexport class MortgageSubmitRequest {\r\n sendAgentEmail: boolean = true;\r\n sendBorrowerEmail: boolean = true;\r\n borrowerEmailLanguage: ClientLanguage = ClientLanguage.en;\r\n insuranceReferralConsented: boolean;\r\n thirdPartyDisclosureConsented: boolean;\r\n ianaId: string; //client IANA timezone id\r\n borrowerPepDeclarations: { [key: number]: PepDisclosureModel };\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'submit-progress-overlay',\r\n templateUrl: './submit-progress-overlay.component.html',\r\n styleUrls: ['./submit-progress-overlay.component.scss'],\r\n animations: animations,\r\n})\r\nexport class SubmitProgressOverlayComponent implements OnInit {\r\n icon = Icons;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Beep boop whirr whizz!

\r\n

\r\n Our robots are currently working hard to process your application.\r\n

\r\n

\r\n It usually only takes a few seconds but please do not refresh the page - it makes them sad.\r\n

\r\n
\r\n
\r\n
\r\n
","
\r\n \r\n \r\n\r\n
\r\n\r\n

Submit

\r\n
\r\n
\r\n

Do you have any other information that might be useful?

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n

CASL Consent

\r\n
\r\n
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

{{borrower.fullName}}

\r\n
\r\n
\r\n\r\n
\r\n \r\n

\r\n I accept all the above terms and understand I can unsubscribe at any time.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n

Insurance referral consent

\r\n
\r\n
\r\n
\r\n \r\n

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n

I/we accept the above terms & conditions.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n \r\n Client Consent for Credit and Sharing of Information\r\n *\r\n

\r\n
\r\n
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n

I/we accept the above terms & conditions.

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n

Borrower Politically Exposed Person (PEP) Declaration *

\r\n
\r\n
\r\n
\r\n\r\n \r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

Have any of the Borrower(s),\r\n their family members or close\r\n associates ever been:

\r\n
    \r\n
  1. a Foreign Politically Exposed Person
  2. \r\n
  3. a Domestic Politically Exposed Person
  4. \r\n
  5. a Head of an International\r\n Organization
  6. \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

{{borrower.fullName}}

\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Who is/was the Politically Exposed Person?

\r\n
\r\n
\r\n

\r\n First name *\r\n

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

Last name *

\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n

\r\n What is/was their PEP status?\r\n *\r\n \r\n \r\n

\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n Organization or institution name\r\n *\r\n

\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n Country where position is/was held\r\n *\r\n

\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n When did they start this position?\r\n *\r\n

\r\n\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n

\r\n Are they still in this position?\r\n *\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n When did they end this position?\r\n *\r\n

\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n

\r\n What is the position they\r\n held?\r\n hold?\r\n *\r\n

\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {{pepPosition.text}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n What is the title of the position they\r\n held?\r\n hold?\r\n *\r\n

\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n

\r\n \r\n What is their relationship to \r\n {{borrower.firstName}} ? * \r\n\r\n \r\n

\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n

\r\n Will they be providing any funding for this application? \r\n *\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n What is the source of these funds?\r\n *\r\n

\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n

I/we accept the above terms & conditions.

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n \r\n Network Consent\r\n \r\n *\r\n

\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n

I/we accept the above terms & conditions.

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\nimport { NgbDropdownModule, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { HookResult, Transition, UiOnExit, UIRouter } from '@uirouter/angular';\r\nimport { PureDate } from 'src/shared-utilities/models/pureDate';\r\nimport {\r\n ClientLanguage,\r\n ClientLanguageService,\r\n} from 'src/shared-utilities/services/client-language.service';\r\nimport { NetworkConsentComponent } from '../../../dialogs/network-consent/network-consent.component';\r\nimport { ClientJourneyStateNames } from '../../../router/journey-states';\r\nimport { DatePickerDirections } from '../../../shared/form-fields/date-picker/date-picker.component';\r\nimport { AgentOrganization } from '../../../shared/models/deal-resources/agent-organization.model';\r\nimport { InsuranceReferralProviderOptions } from '../../../shared/models/deal-resources/enumerators';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { BorrowerValidationRuleKeys } from '../../borrowers/validation/borrower.validator';\r\nimport { PepRelationshipModalComponent } from '../modals/pep-relationship-modal/pep-relationship-modal.component';\r\nimport { PepTypesModalComponent } from '../modals/pep-types-modal/pep-types-modal.component';\r\nimport { PepTypesSmallModalComponent } from '../modals/pep-types-small-modal/pep-types-small-modal.component';\r\nimport { SubmitValidationService } from '../validation/submit-validation.service';\r\n\r\nimport {\r\n PepDisclosureModel,\r\n PepPositions,\r\n PepPositionsEnum,\r\n PepRelationships,\r\n PepStatuses,\r\n} from './pepModel.model';\r\nimport { SubmitService } from './submit.service';\r\n\r\nimport { getEnumMemberFromValue } from 'src/shared-utilities/enum-helpers/enum-helpers';\r\nimport { PepValidationRules } from '../referral/validation/pep.validator';\r\nimport { SubmitValidationStore } from '../referral/validation/submit-validation.store';\r\nimport { BorrowerViewModel } from './borrowerView.model';\r\n\r\n@Component({\r\n selector: 'cj-slide-submit',\r\n templateUrl: './submit.component.html',\r\n styleUrls: ['./submit.component.scss'],\r\n animations: animations,\r\n viewProviders: [SubmitService, SubmitValidationService],\r\n})\r\nexport class SubmitComponent implements OnInit, UiOnExit {\r\n icons = Icons;\r\n BorrowerValidationRuleKeys = BorrowerValidationRuleKeys;\r\n ClientLanguage = ClientLanguage;\r\n InsuranceReferralProviderOptions = InsuranceReferralProviderOptions;\r\n collectInsuranceConsent = false;\r\n insuranceReferralConsentCheck = null;\r\n SubmitStates = SubmitStates;\r\n submitState = SubmitStates.NotSubmitted;\r\n DatePickerDirections = DatePickerDirections;\r\n\r\n public agentOrganization: AgentOrganization;\r\n private _networkConsentModalConfig = {\r\n size: 'lg',\r\n modalDialogClass: 'client-journey-modal',\r\n };\r\n\r\n private _pepTypesModalConfig = {\r\n size: 'lg',\r\n };\r\n\r\n private _pepTypesSmallModalConfig = {\r\n size: 'md',\r\n };\r\n\r\n private _pepRelationshipModalConfig = {\r\n size: 'lg',\r\n };\r\n\r\n submitRetries = 0;\r\n canSubmit = false;\r\n _termsAndConditionsCheck = false;\r\n\r\n get termsAndConditionsCheck(): boolean {\r\n return this._termsAndConditionsCheck;\r\n }\r\n set termsAndConditionsCheck(value: boolean) {\r\n this._termsAndConditionsCheck = value;\r\n this.updateCanSubmit();\r\n }\r\n\r\n _thirdPartyDisclosureCheck = false;\r\n get thirdPartyDisclosureCheck(): boolean {\r\n return this._thirdPartyDisclosureCheck;\r\n }\r\n set thirdPartyDisclosureCheck(value: boolean) {\r\n this._thirdPartyDisclosureCheck = value;\r\n }\r\n\r\n _networkConsentCheck = false;\r\n\r\n get networkConsentCheck(): boolean {\r\n return this._networkConsentCheck;\r\n }\r\n set networkConsentCheck(value: boolean) {\r\n this._networkConsentCheck = value;\r\n this.updateCanSubmit();\r\n }\r\n\r\n pepStatusesDropDownModel = PepStatuses.pepStatuses;\r\n pepPositionsDropDownModel = PepPositions.pepPositions;\r\n pepRelationshipsDropDownModel = PepRelationships.pepRelationships;\r\n PepPositionsEnum = PepPositionsEnum;\r\n\r\n private _referralValidationStore: SubmitValidationStore;\r\n\r\n constructor(\r\n private dropdownService: NgbDropdownModule,\r\n private modalService: NgbModal,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private clientLanguageService: ClientLanguageService,\r\n private submitService: SubmitService,\r\n private submitValidationService: SubmitValidationService,\r\n private uiRouter: UIRouter,\r\n ) {\r\n let validationGlobalStore = clientJourneyContext.validationGlobalStore;\r\n\r\n this._referralValidationStore = validationGlobalStore.getStore(\r\n SubmitValidationStore.globalStoreKey,\r\n );\r\n\r\n this.submitService.borrowers.forEach(borrower => {\r\n const borrowerUpdateModel = this.submitService.borrowerUpdateModels.get(\r\n borrower.id,\r\n );\r\n\r\n const borrowerContactUpdateModel =\r\n this.submitService.borrowerContactUpdateModels.get(borrower.id);\r\n\r\n const borrwerViewModel: BorrowerViewModel = {\r\n id: borrower.id,\r\n fullName: `${borrower.contact.firstName} ${borrower.contact.lastName}`,\r\n firstName: borrower.contact.firstName,\r\n borrowerUpdateModel: borrowerUpdateModel,\r\n borrowerContactUpdateModel: borrowerContactUpdateModel,\r\n hideSinInputText: true,\r\n pepDisclosureModel: borrower.pepDisclosureModel,\r\n };\r\n\r\n if (borrwerViewModel.pepDisclosureModel.isIinitialized) {\r\n this.validatePep([borrwerViewModel]);\r\n } else {\r\n borrwerViewModel.pepDisclosureModel.isIinitialized = true;\r\n }\r\n\r\n this._borrowers.push(borrwerViewModel);\r\n\r\n this.positionsHoldDropdown[\r\n borrower.id\r\n ] = $localize`:@@generic_select:Select`;\r\n });\r\n }\r\n\r\n //#region PEP\r\n @ViewChild('pepDeclaration') pepDeclarationElementRef: ElementRef;\r\n PepValidationRules = PepValidationRules;\r\n\r\n public invalidBorrowerPepValidationKeys: {\r\n [key: number]: string[];\r\n } = {};\r\n\r\n public positionsHoldDropdown: {\r\n [key: number]: string;\r\n } = {};\r\n\r\n public showPepTypesModal() {\r\n const modalRef = this.modalService.open(\r\n PepTypesModalComponent,\r\n this._pepTypesModalConfig,\r\n );\r\n }\r\n\r\n public showPepTypesSmallerModal() {\r\n const modalRef = this.modalService.open(\r\n PepTypesSmallModalComponent,\r\n this._pepTypesSmallModalConfig,\r\n );\r\n }\r\n\r\n public showPepRelationshipModal() {\r\n const modalRef = this.modalService.open(\r\n PepRelationshipModalComponent,\r\n this._pepRelationshipModalConfig,\r\n );\r\n }\r\n\r\n public onPepPositionEndDateChange(borrower: BorrowerViewModel, $event: Date) {\r\n borrower.pepDisclosureModel.datePositionEnd = new PureDate(\r\n $event.getDate(),\r\n $event.getMonth() + 1,\r\n $event.getFullYear(),\r\n );\r\n this.onPepInputChange(borrower, 'datePositionEnd');\r\n }\r\n\r\n public onPepPositionStartDateChange(\r\n borrower: BorrowerViewModel,\r\n $event: Date,\r\n ) {\r\n borrower.pepDisclosureModel.datePositionStart = new PureDate(\r\n $event.getDate(),\r\n $event.getMonth() + 1,\r\n $event.getFullYear(),\r\n );\r\n this.onPepInputChange(borrower, 'datePositionStart');\r\n }\r\n\r\n public updatePepPosition(borrower: BorrowerViewModel, positionId: number) {\r\n const pepPosition = this.pepPositionsDropDownModel.find(\r\n x => x.id == positionId,\r\n );\r\n const pepPositionEnumKey = getEnumMemberFromValue(\r\n PepPositionsEnum,\r\n positionId,\r\n );\r\n\r\n const pepPositionEnumParsed = PepPositionsEnum[pepPositionEnumKey];\r\n borrower.pepDisclosureModel.pepPosition = pepPositionEnumParsed;\r\n this.positionsHoldDropdown[borrower.id] = pepPosition.text;\r\n this.onPepInputChange(borrower, 'positionName');\r\n }\r\n\r\n public onPepInputChange(borrower: BorrowerViewModel, property: string) {\r\n switch (property) {\r\n case 'pepStatus':\r\n borrower.pepDisclosureModel.pepStatus =\r\n +borrower.pepDisclosureModel.pepStatus;\r\n break;\r\n case 'positionName':\r\n borrower.pepDisclosureModel.pepPosition =\r\n +borrower.pepDisclosureModel.pepPosition;\r\n break;\r\n case 'relationship':\r\n borrower.pepDisclosureModel.pepRelationship =\r\n +borrower.pepDisclosureModel.pepRelationship;\r\n break;\r\n\r\n case 'isActivePosition':\r\n if (!borrower.pepDisclosureModel.isActivePosition) {\r\n borrower.pepDisclosureModel.datePositionEnd = new PureDate(\r\n undefined,\r\n undefined,\r\n undefined,\r\n );\r\n }\r\n break;\r\n case 'isProvidingFunding':\r\n if (!borrower.pepDisclosureModel.isProvidingFunding) {\r\n borrower.pepDisclosureModel.sourceOfFunds = null;\r\n }\r\n break;\r\n case 'datePositionStart':\r\n case 'datePositionEnd':\r\n case 'firstName':\r\n case 'lastName':\r\n case 'organizationName':\r\n case 'positionCountry':\r\n case 'positionTitle':\r\n case 'sourceOfFunds':\r\n default:\r\n break;\r\n }\r\n\r\n this.validatePep([borrower]);\r\n }\r\n\r\n private validatePep(\r\n borrowers: BorrowerViewModel[],\r\n key: PepValidationRules = undefined,\r\n ): boolean {\r\n let isValid = true;\r\n // this._referralValidationStore.validate();\r\n\r\n for (const borrower of borrowers) {\r\n var validator = this._referralValidationStore.getPepValidator(\r\n borrower.borrowerUpdateModel,\r\n );\r\n\r\n if (key) {\r\n validator.validate(key);\r\n } else {\r\n validator.validate();\r\n }\r\n\r\n const invalidRules = validator.invalidRules;\r\n isValid = isValid && invalidRules.length == 0;\r\n\r\n //get names of invalid rules\r\n this.invalidBorrowerPepValidationKeys[borrower.id] = invalidRules.map(\r\n x => x.key,\r\n );\r\n }\r\n return isValid;\r\n }\r\n\r\n //#endregion\r\n\r\n private _borrowers: BorrowerViewModel[] = [];\r\n\r\n uiCanExit(newTransition?: Transition): HookResult {\r\n return this.submitState != SubmitStates.Submitting;\r\n }\r\n\r\n public enableAML = false;\r\n\r\n ngOnInit(): void {\r\n const office = this.clientJourneyContext.agent.office;\r\n this.agentOrganization = this.clientJourneyContext.deal.organization;\r\n this.enableAML =\r\n this.agentOrganization.enableAML && this.agentOffice.enableAML;\r\n\r\n this.insuranceReferralConsentCheck = this.deal.insuranceSupplierId != null;\r\n\r\n this.collectInsuranceConsent = office.insuranceSupplierId != null;\r\n\r\n this.updateCanSubmit();\r\n }\r\n\r\n get clientLanguage(): ClientLanguage {\r\n return this.clientLanguageService.clientLanguage;\r\n }\r\n\r\n get agentOffice() {\r\n return this.clientJourneyContext.agent.office;\r\n }\r\n\r\n get borrowers() {\r\n return this._borrowers;\r\n }\r\n\r\n get note() {\r\n return this.submitService.noteUpdateModel;\r\n }\r\n\r\n get deal() {\r\n return this.submitService.dealUpdateModel;\r\n }\r\n\r\n public onBorrowerDetailsChange(borrowerId: number) {\r\n const borrowerViewModel = this._borrowers.find(\r\n borrower => borrower.id === borrowerId,\r\n );\r\n\r\n const borrowerUpdateModel = borrowerViewModel.borrowerUpdateModel;\r\n\r\n if (borrowerUpdateModel)\r\n this.submitService.saveBorrower(borrowerUpdateModel);\r\n this.updateCanSubmit();\r\n }\r\n\r\n public onContactChange(borrowerId: number) {\r\n const borrowerViewModel = this._borrowers.find(\r\n borrower => borrower.id === borrowerId,\r\n );\r\n\r\n if (!borrowerViewModel) return;\r\n\r\n const contactModel = borrowerViewModel.borrowerContactUpdateModel;\r\n\r\n if (contactModel) this.submitService.saveContact(borrowerId, contactModel);\r\n this.updateCanSubmit();\r\n }\r\n\r\n public onNoteChange() {\r\n this.submitService.saveNote(this.note);\r\n }\r\n\r\n public onInsuranceReferralConsentChange($event: any) {\r\n const office = this.clientJourneyContext.agent.office;\r\n\r\n if (this.insuranceReferralConsentCheck) {\r\n this.deal.insuranceSupplierId = office.insuranceSupplierId;\r\n } else {\r\n this.deal.insuranceSupplierId = null;\r\n }\r\n\r\n this.submitService.saveDeal(this.deal);\r\n }\r\n\r\n showNetworkConsentModal() {\r\n const modalRef = this.modalService.open(\r\n NetworkConsentComponent,\r\n this._networkConsentModalConfig,\r\n );\r\n\r\n modalRef.componentInstance.networkConsentHtml =\r\n this.agentOrganization.networkConsentHtml;\r\n }\r\n\r\n updateCanSubmit() {\r\n let isValid = true;\r\n for (const borrower of this.borrowers) {\r\n const borrowerValid = this.validateBorrowerByKey(\r\n borrower.id,\r\n BorrowerValidationRuleKeys.Sin,\r\n );\r\n\r\n if (!borrowerValid) {\r\n isValid = borrowerValid;\r\n break;\r\n }\r\n }\r\n\r\n this.canSubmit = isValid;\r\n if (!this.canSubmit) return;\r\n\r\n if (\r\n this.agentOrganization.enableNetworkConsent &&\r\n !this.networkConsentCheck\r\n ) {\r\n this.canSubmit = false;\r\n return;\r\n }\r\n\r\n this.canSubmit = this.termsAndConditionsCheck;\r\n }\r\n\r\n public getBorrowerValidationByKey(\r\n borrowerId: number,\r\n key: BorrowerValidationRuleKeys,\r\n ): boolean {\r\n const validationResult =\r\n this.submitValidationService.getBorrowerValidationResultByKey(\r\n borrowerId,\r\n key,\r\n );\r\n\r\n return validationResult;\r\n }\r\n\r\n public validateBorrowerByKey(\r\n borrowerId: number,\r\n key: BorrowerValidationRuleKeys,\r\n ): boolean {\r\n const borrowerValid =\r\n this.submitValidationService.validateBorrowerByRuleKey(borrowerId, key);\r\n return borrowerValid;\r\n }\r\n\r\n public async onSubmitButtonClick() {\r\n if (this.submitState != SubmitStates.NotSubmitted) return;\r\n this.submitRetries++;\r\n // The canSubmit flag should already be updated, but\r\n // just in case it doesn't hurt to have it resolve again.\r\n\r\n const isPepValid = this.validatePep(this._borrowers);\r\n\r\n //scroll to first invalid pep section\r\n //iterate through invalidBorrowerPepValidationKeys\r\n Object.keys(this.invalidBorrowerPepValidationKeys).forEach(key => {\r\n const borrowerId = Number(key);\r\n if (this.invalidBorrowerPepValidationKeys[borrowerId].length > 0) {\r\n const pepErorElementRef =\r\n this.pepDeclarationElementRef?.nativeElement.querySelector(\r\n '#pep-' + borrowerId,\r\n );\r\n\r\n pepErorElementRef?.scrollIntoView({\r\n behavior: 'smooth',\r\n });\r\n return;\r\n }\r\n });\r\n\r\n if (!isPepValid) return;\r\n\r\n this.updateCanSubmit();\r\n if (!this.canSubmit) return;\r\n\r\n this.submitState = SubmitStates.Submitting;\r\n\r\n try {\r\n const pepModels = this.getBorrowerPepModels();\r\n await this.submitService.submitApplication(\r\n this.clientLanguageService.clientLanguage,\r\n this.insuranceReferralConsentCheck || false,\r\n this.thirdPartyDisclosureCheck || false,\r\n pepModels,\r\n );\r\n\r\n this.submitState = SubmitStates.Submitted;\r\n this.uiRouter.stateService.go(ClientJourneyStateNames.Success);\r\n } catch (error) {\r\n this.submitState = SubmitStates.NotSubmitted;\r\n console.error(error);\r\n //TODO:log/toast/redirect\r\n return;\r\n }\r\n }\r\n\r\n private getBorrowerPepModels(): { [key: number]: PepDisclosureModel } {\r\n const pepModels: { [key: number]: PepDisclosureModel } = {};\r\n\r\n for (const borrower of this.borrowers) {\r\n pepModels[borrower.id] = borrower.pepDisclosureModel;\r\n }\r\n\r\n return pepModels;\r\n }\r\n}\r\n\r\nexport enum SubmitStates {\r\n NotSubmitted,\r\n Submitting,\r\n Submitted,\r\n}\r\n","export function parseEnumValue(\r\n enumType: { [key: string]: T },\r\n enumString: string,\r\n): T | undefined {\r\n const enumValues = Object.keys(enumType).map(key => enumType[key]);\r\n return enumValues.find(value => value === enumString);\r\n}\r\n\r\nexport function getEnumMemberFromValue(\r\n enumObj: T,\r\n value: T[K],\r\n): K | undefined {\r\n return (Object.keys(enumObj) as Array).find(key => enumObj[key] === value);\r\n}\r\n","import { Ng2StateDeclaration, UIView } from '@uirouter/angular';\r\nimport { AssetsSummaryComponent } from '../slides/assets/assets-summary/assets-summary.component';\r\nimport { AssetEditComponent } from '../slides/assets/asset-edit/asset-edit.component';\r\nimport { BorrowerSummaryComponent } from '../slides/borrowers/borrower-summary/borrower-summary.component';\r\nimport { BorrowersEditComponent } from '../slides/borrowers/borrower-edit/borrower-edit.component';\r\nimport { GettingStartedComponent } from '../slides/getting-started/getting-started.component';\r\nimport { IncomeSummaryComponent } from '../slides/income/income-summary/income-summary.component';\r\nimport { IncomeEditComponent } from '../slides/income/income-edit/income-edit.component';\r\nimport { PropertiesSummaryComponent } from '../slides/properties/properties-summary/properties-summary.component';\r\nimport { PropertyEditComponent } from '../slides/properties/property-edit/property-edit.component';\r\nimport { ReferralEditComponent } from '../slides/reviewAndSubmit/referral/referral-edit/referral-edit.component';\r\nimport { ReviewComponent } from '../slides/reviewAndSubmit/review/review.component';\r\nimport { SlidesComponent } from '../slides/slides.component';\r\nimport { SubmitComponent } from '../slides/reviewAndSubmit/submit/submit.component';\r\nimport { BankingEditComponent } from '../slides/banking/banking-edit/banking-edit.component';\r\nimport { BankingSummaryComponent } from '../slides/banking/banking-summary/banking-summary.component';\r\n\r\nimport {\r\n assetsRedirectHandler,\r\n bankingRedirectHandler,\r\n borrowersRedirectHandler,\r\n incomeRedirectHandler,\r\n propertiesRedirectHandler,\r\n referralRedirectHandler,\r\n} from './slides-redirect-handlers';\r\n\r\nexport class SlidesStateNames {\r\n static readonly SlidesParent = 'client.journey.slides';\r\n static readonly GettingStarted = `${this.SlidesParent}.gettingStarted`;\r\n\r\n static readonly Borrowers = `${this.SlidesParent}.borrowers`;\r\n static readonly BorrowersEdit = `${this.Borrowers}.edit`;\r\n static readonly BorrowersSummary = `${this.Borrowers}.summary`;\r\n\r\n static readonly Income = `${this.SlidesParent}.income`;\r\n static readonly IncomeEdit = `${this.Income}.edit`;\r\n static readonly IncomeSummary = `${this.Income}.summary`;\r\n\r\n static readonly Banking = `${this.SlidesParent}.banking`;\r\n static readonly BankingEdit = `${this.Banking}.edit`;\r\n static readonly BankingSummary = `${this.Banking}.summary`;\r\n\r\n static readonly Assets = `${this.SlidesParent}.assets`;\r\n static readonly AssetsEdit = `${this.Assets}.edit`;\r\n static readonly AssetsSummary = `${this.Assets}.summary`;\r\n\r\n static readonly Properties = `${this.SlidesParent}.properties`;\r\n static readonly PropertiesEdit = `${this.Properties}.edit`;\r\n static readonly PropertiesSummary = `${this.Properties}.summary`;\r\n\r\n static readonly ReviewAndSubmit = `${this.SlidesParent}.reviewAndSubmit`;\r\n\r\n static readonly Referral = `${this.ReviewAndSubmit}.referral`;\r\n static readonly ReferralEdit = `${this.Referral}.edit`;\r\n\r\n static readonly Review = `${this.ReviewAndSubmit}.review`;\r\n\r\n static readonly Submit = `${this.ReviewAndSubmit}.submit`;\r\n}\r\n\r\nconst slidesState: Ng2StateDeclaration = {\r\n name: SlidesStateNames.SlidesParent,\r\n url: '/slides',\r\n abstract: true,\r\n component: SlidesComponent,\r\n};\r\n\r\nconst gettingStartedState: Ng2StateDeclaration = {\r\n name: SlidesStateNames.GettingStarted,\r\n url: '/gettingStarted',\r\n component: GettingStartedComponent,\r\n data: { isValid: true },\r\n};\r\n\r\nconst borrowerStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.Borrowers,\r\n url: '/borrowers?:borrowerId',\r\n component: UIView,\r\n redirectTo: borrowersRedirectHandler,\r\n params: {\r\n borrowerId: {\r\n type: 'int',\r\n dynamic: true,\r\n value: null,\r\n squash: true,\r\n },\r\n },\r\n data: { isValid: true },\r\n },\r\n {\r\n name: SlidesStateNames.BorrowersEdit,\r\n url: '/edit',\r\n component: BorrowersEditComponent,\r\n },\r\n {\r\n name: SlidesStateNames.BorrowersSummary,\r\n url: `/summary`,\r\n component: BorrowerSummaryComponent,\r\n },\r\n];\r\n\r\nconst incomeStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.Income,\r\n url: '/income',\r\n component: UIView,\r\n redirectTo: incomeRedirectHandler,\r\n data: { isValid: true },\r\n },\r\n {\r\n name: SlidesStateNames.IncomeEdit,\r\n url: `/edit?{borrowerId}{employmentId}{otherIncomeId}`,\r\n component: IncomeEditComponent,\r\n params: {\r\n borrowerId: { dynamic: true, value: null, type: 'path' },\r\n employmentId: { dynamic: true, value: null },\r\n otherIncomeId: { dynamic: true, value: null },\r\n },\r\n data: { displayName: 'Income' },\r\n },\r\n {\r\n name: SlidesStateNames.IncomeSummary,\r\n url: '/summary',\r\n component: IncomeSummaryComponent,\r\n params: {\r\n data: { displayName: 'Income' },\r\n },\r\n },\r\n];\r\n\r\nconst bankingStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.Banking,\r\n url: '/banking',\r\n component: UIView,\r\n redirectTo: bankingRedirectHandler,\r\n data: { isValid: true },\r\n },\r\n {\r\n name: SlidesStateNames.BankingEdit,\r\n url: '/edit?{borrowerId}{accountId}{bankId}{bankName}',\r\n component: BankingEditComponent,\r\n },\r\n {\r\n name: SlidesStateNames.BankingSummary,\r\n url: '/summary',\r\n component: BankingSummaryComponent,\r\n },\r\n];\r\n\r\nconst assetsStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.Assets,\r\n url: '/assets',\r\n component: UIView,\r\n redirectTo: assetsRedirectHandler,\r\n data: { isValid: true },\r\n },\r\n {\r\n name: SlidesStateNames.AssetsEdit,\r\n url: '/edit?{borrowerId}{assetId}',\r\n component: AssetEditComponent,\r\n },\r\n {\r\n name: SlidesStateNames.AssetsSummary,\r\n url: '/summary',\r\n component: AssetsSummaryComponent,\r\n },\r\n];\r\n\r\nconst propertiesStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.Properties,\r\n url: '/properties',\r\n component: UIView,\r\n redirectTo: propertiesRedirectHandler,\r\n data: { isValid: true },\r\n },\r\n {\r\n name: SlidesStateNames.PropertiesEdit,\r\n url: '/edit?{borrowerId}{propertyId}{scroll}',\r\n component: PropertyEditComponent,\r\n params: {\r\n borrowerId: { type: 'int', dynamic: true, value: null },\r\n propertyId: { type: 'int', dynamic: true, value: null, squash: true },\r\n scroll: { dynamic: true, value: null, squash: true },\r\n },\r\n },\r\n {\r\n name: SlidesStateNames.PropertiesSummary,\r\n url: '/summary',\r\n component: PropertiesSummaryComponent,\r\n },\r\n];\r\n\r\nconst referralStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.Referral,\r\n url: '/referral',\r\n component: UIView,\r\n redirectTo: referralRedirectHandler,\r\n },\r\n {\r\n name: SlidesStateNames.ReferralEdit,\r\n url: '/edit',\r\n component: ReferralEditComponent,\r\n },\r\n];\r\n\r\nconst reviewAndSubmitStates: Ng2StateDeclaration[] = [\r\n {\r\n name: SlidesStateNames.ReviewAndSubmit,\r\n url: '/reviewAndSubmit',\r\n component: UIView,\r\n redirectTo: SlidesStateNames.Referral,\r\n data: { isValid: true },\r\n },\r\n {\r\n name: SlidesStateNames.Review,\r\n url: '/review',\r\n component: ReviewComponent,\r\n },\r\n {\r\n name: SlidesStateNames.Submit,\r\n url: '/submit',\r\n component: SubmitComponent,\r\n },\r\n];\r\n\r\nexport const SlidesStates: Ng2StateDeclaration[] = [\r\n slidesState,\r\n gettingStartedState,\r\n ...borrowerStates,\r\n ...incomeStates,\r\n ...bankingStates,\r\n ...assetsStates,\r\n ...propertiesStates,\r\n ...referralStates,\r\n ...reviewAndSubmitStates,\r\n];\r\n","
\r\n
\r\n \r\n\r\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { TransitionOptions } from '@uirouter/angular';\r\n//Icons\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'continue-link',\r\n templateUrl: './continue-link.component.html',\r\n styleUrls: ['./continue-link.component.scss'],\r\n})\r\nexport class ContinueLinkComponent implements OnInit {\r\n @Input() showSpinner: boolean = false;\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() uiRouterSref: string;\r\n @Input() uiRouterParams: any;\r\n @Input() uiRouterOptions: TransitionOptions;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n //Icons\r\n icon = Icons;\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onClick() {\r\n if (!this.disabled && !this.showSpinner) {\r\n this.clickEvent.emit();\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n {{validationError}}\r\n
\r\n
\r\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n})\r\nexport class DatePickerComponent implements OnInit {\r\n @Input() dateDirection: DatePickerDirections = DatePickerDirections.Split;\r\n @Input() numberOfYears?: number;\r\n @Input() startYear?: number;\r\n @Input() minimumAge = 0;\r\n @Input() sortOrder?: DatePickerYearSortOrders;\r\n @Input() hideDays?: boolean;\r\n\r\n @Input() set date(value: Date) {\r\n if (!value) {\r\n this.day = null;\r\n this.month = null;\r\n this.year = null;\r\n return;\r\n }\r\n\r\n let date = new Date(value);\r\n this.day = date?.getDate();\r\n this.month = date?.getMonth() + 1;\r\n this.year = date?.getFullYear();\r\n }\r\n\r\n @Output() dateChange = new EventEmitter();\r\n\r\n month?: number = null;\r\n day?: number = null;\r\n year?: number = null;\r\n years: number[];\r\n\r\n dateIsInvalid: boolean = false;\r\n validationError: string;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.setYearsArray();\r\n if (this.hideDays) this.day = 1;\r\n }\r\n\r\n setYearsArray() {\r\n let thisYear = new Date().getFullYear();\r\n let years: number[] = [];\r\n let numberOfYears = 0;\r\n let startYear = this.startYear ?? thisYear;\r\n let sortOrder = this.sortOrder;\r\n\r\n switch (this.dateDirection) {\r\n case DatePickerDirections.Future:\r\n numberOfYears = Math.abs(this.numberOfYears || 10);\r\n sortOrder ??= DatePickerYearSortOrders.Descending;\r\n break;\r\n case DatePickerDirections.Past:\r\n numberOfYears = Math.abs(this.numberOfYears || 100);\r\n startYear -= numberOfYears - 1;\r\n sortOrder ??= DatePickerYearSortOrders.Ascending;\r\n break;\r\n case DatePickerDirections.Split:\r\n numberOfYears = Math.abs(this.numberOfYears || 100);\r\n let splitOffset = numberOfYears - Math.round(numberOfYears / 2);\r\n startYear -= splitOffset;\r\n sortOrder ??= DatePickerYearSortOrders.Descending;\r\n break;\r\n }\r\n\r\n startYear += -this.minimumAge;\r\n years = [...Array(numberOfYears).keys()].map(x => startYear + x);\r\n\r\n if (sortOrder == DatePickerYearSortOrders.Ascending) {\r\n years.sort((y1, y2) => y2 - y1);\r\n } else if (sortOrder == DatePickerYearSortOrders.Descending) {\r\n years.sort((y1, y2) => y1 - y2);\r\n }\r\n this.years = years;\r\n }\r\n\r\n dateChanged() {\r\n //validate and emit change if valid\r\n let day = this.day;\r\n let month = this.month;\r\n let year = this.year;\r\n\r\n if (!day || !month || !year) {\r\n return;\r\n }\r\n\r\n let d = new Date(year, month - 1, day);\r\n if (this.month && d.getMonth() != month - 1) {\r\n this.dateIsInvalid = true;\r\n this.validationError = ValidationErrors.invalidDate;\r\n return;\r\n }\r\n\r\n d.setHours(0, 0, 0, 0);\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n\r\n if (this.dateDirection == DatePickerDirections.Future && d < today) {\r\n this.dateIsInvalid = true;\r\n this.validationError = ValidationErrors.notAFutureDate;\r\n return;\r\n }\r\n\r\n if (this.dateDirection == DatePickerDirections.Past && d > today) {\r\n this.dateIsInvalid = true;\r\n this.validationError = ValidationErrors.notAPastDate;\r\n return;\r\n }\r\n\r\n if (!!this.minimumAge) {\r\n let dateAtMinAge = new Date(\r\n d.getFullYear() + this.minimumAge,\r\n d.getMonth(),\r\n d.getDate(),\r\n );\r\n if (dateAtMinAge > today) {\r\n this.dateIsInvalid = true;\r\n this.validationError = ValidationErrors.youMustBeOlder.replace(\r\n '{age}',\r\n this.minimumAge.toString(),\r\n );\r\n return;\r\n }\r\n }\r\n\r\n this.dateIsInvalid = false;\r\n this.validationError = undefined;\r\n this.dateChange.emit(d);\r\n }\r\n}\r\n\r\n//TODO: get messages from Uche, then translate\r\nexport enum ValidationErrors {\r\n invalidDate = 'Please enter a valid date',\r\n notAPastDate = 'Date must be in the past',\r\n notAFutureDate = 'Date must be in the future',\r\n incomplete = 'Please enter a date',\r\n youMustBeOlder = 'You must be {age} years or older',\r\n}\r\n\r\nexport enum DatePickerDirections {\r\n Past,\r\n Future,\r\n Split,\r\n}\r\n\r\nexport enum DatePickerYearSortOrders {\r\n Ascending,\r\n Descending,\r\n}\r\n","import { ClientJourneyContext } from '../services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../services/resource-context-store';\r\n\r\nexport async function refreshPropertyAddressAsync(\r\n clientJourneyContext: ClientJourneyContext,\r\n resourceContextStore: ResourceContextStore,\r\n) {\r\n await resourceContextStore.flush();\r\n\r\n // reload addresses as they may have been updated\r\n let deal = clientJourneyContext.deal;\r\n\r\n deal.borrowers.forEach(borrower =>\r\n borrower.properties.forEach(property =>\r\n resourceContextStore.removeByResource(property.address),\r\n ),\r\n );\r\n\r\n await clientJourneyContext.loadPathForParents(\r\n '$.borrowers.properties',\r\n deal.borrowers,\r\n );\r\n}\r\n\r\nexport async function refreshContactAddressAsync(\r\n clientJourneyContext: ClientJourneyContext,\r\n resourceContextStore: ResourceContextStore,\r\n borrowerId?: number,\r\n) {\r\n await resourceContextStore.flush('address service flush');\r\n\r\n // reload addresses as they may have been updated\r\n let deal = clientJourneyContext.deal;\r\n let borrower = borrowerId\r\n ? deal.borrowers.find(b => b.id == borrowerId)\r\n : deal.borrowers[0];\r\n if (!borrower) return;\r\n\r\n borrower.contact.addresses.forEach(address =>\r\n resourceContextStore.removeByResource(address),\r\n );\r\n\r\n await clientJourneyContext.loadPathForParents(\r\n '$.borrowers.contact.addresses',\r\n [borrower.contact],\r\n );\r\n}\r\n\r\nexport async function refreshSubjectPropertyAddressAsync(\r\n clientJourneyContext: ClientJourneyContext,\r\n resourceContextStore: ResourceContextStore,\r\n) {\r\n await resourceContextStore.flush();\r\n\r\n let subjectProperty = clientJourneyContext.deal.subjectProperty;\r\n resourceContextStore.removeByResource(subjectProperty.address);\r\n\r\n await clientJourneyContext.loadPathForParents('$.subjectProperty.address', [\r\n subjectProperty,\r\n ]);\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { InsuranceReferralProviderOptions } from '../deal-resources/enumerators';\r\n\r\n@HateoasResource('agent')\r\nexport class AgentDetails extends Resource {\r\n public shortCode: string;\r\n public agentId: number;\r\n public contact: AgentContact;\r\n public office: AgentOffice;\r\n public logoUrl: string;\r\n public theme: string;\r\n public firmCode: string;\r\n public velocityUrl: string;\r\n public ezAccountActive: boolean;\r\n public referralActive: boolean;\r\n public lifeInsuranceActive: boolean;\r\n}\r\n\r\n@HateoasResource('contact')\r\nexport class AgentContact extends Resource {\r\n public businessPhoneNumber: string;\r\n public cellPhoneNumber: string;\r\n public contactId: number;\r\n public email: string;\r\n public firstName: string;\r\n public lastName: string;\r\n}\r\n\r\n@HateoasResource('office')\r\nexport class AgentOffice extends Resource {\r\n officeId: number;\r\n officeName: string;\r\n creditBureauConsent: string;\r\n creditBureauConsentFrench: string;\r\n caslConsent: string;\r\n caslConsentFrench: string;\r\n trackThirdPartyDisclosure: boolean;\r\n thirdPartyDisclosureTitle: string;\r\n thirdPartyDisclosureTitleFrench: string;\r\n thirdPartyDisclosureConsent: string;\r\n thirdPartyDisclosureConsentFrench: string;\r\n enableAML: boolean;\r\n pepDeclaration: string;\r\n pepDeclarationFrench: string;\r\n // insuranceReferralProviderOption: InsuranceReferralProviderOptions;\r\n insuranceSupplierName: string;\r\n insuranceSupplierId: number;\r\n insuranceReferralConsent: string;\r\n InsuranceReferralConsentFrench: string;\r\n removeReferenceToRealtors: boolean;\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\n\r\n@HateoasResource('addresses')\r\nexport class Address extends Resource {\r\n id: number;\r\n streetNumber: string;\r\n unitNumber: string;\r\n streetName: string;\r\n streetDirection: string;\r\n streetType?: number;\r\n city: string;\r\n province?: number;\r\n country?: number;\r\n postalCode: string;\r\n yearsAtAddress?: number;\r\n monthsAtAddress?: number;\r\n dwellingStatus: DwellingStatuses; //TODO: enum FE + BE\r\n rentalPayment?: number;\r\n linkedAddressIds: Array;\r\n}\r\n\r\nexport enum DwellingStatuses {\r\n own = 'Own',\r\n previouslyOwned = 'Previously Owned',\r\n liveWithParents = 'Live with Parents',\r\n rent = 'Rent',\r\n other = 'Other',\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\n\r\n@HateoasResource('assets')\r\nexport class BorrowerAsset extends Resource {\r\n borrowerId: number;\r\n assetId: number;\r\n type: AssetTypes;\r\n value: number;\r\n description: string;\r\n downPaymentAmount: number;\r\n financialInstitution: string;\r\n}\r\n\r\nexport enum AssetTypes {\r\n // accounts\r\n mutualFunds = 'Mutual Fund/Stock/Bonds',\r\n chequing = 'Chequing Account',\r\n savings = 'Savings',\r\n rrsp = 'RRSP',\r\n\r\n //assets\r\n gift = 'Gift',\r\n householdGoods = 'Household Goods',\r\n vehicle = 'Vehicle',\r\n lifeInsurance = 'Life Insurance',\r\n\r\n //other\r\n other = 'Other',\r\n depositOnPurchase = 'Deposit on Purchase',\r\n}\r\n\r\nexport const AccountTypes = [\r\n AssetTypes.chequing,\r\n AssetTypes.savings,\r\n AssetTypes.mutualFunds,\r\n AssetTypes.rrsp,\r\n];\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { PepDisclosureModel } from '../../../slides/reviewAndSubmit/submit/pepModel.model';\r\nimport { BorrowerOtherIncome } from '../borrower-other-income.model';\r\nimport { BorrowerAsset } from './borrower-asset.model';\r\nimport { BankScrape } from './borrower-bank-scrape.model';\r\nimport { BorrowerEmployment } from './borrower-employment.model';\r\nimport { BorrowerProperty } from './borrower-property.model';\r\nimport { ClientJourneyEngagement } from './client-journey-engagement';\r\nimport { Contact } from './contact.model';\r\n\r\n@HateoasResource('borrowers')\r\nexport class Borrower extends Resource {\r\n /// Borrower Id\r\n id: number;\r\n\r\n /// Contact Id\r\n contactId: number;\r\n\r\n /// Order\r\n order: number;\r\n\r\n //NoaConsent\r\n noaConsent: boolean;\r\n\r\n /// Contact\r\n contact: Contact;\r\n\r\n ///Employments\r\n employments: Array;\r\n //Other incomes\r\n otherIncomes: Array;\r\n assets: Array;\r\n bankScrapes: Array;\r\n //properties\r\n properties: Array;\r\n\r\n cjEngagement: ClientJourneyEngagement;\r\n\r\n //local model not backed by the db\r\n pepDisclosureModel: PepDisclosureModel = new PepDisclosureModel();\r\n}\r\n\r\nexport function getPrimaryBorrower(borrowers: Borrower[]): Borrower {\r\n return borrowers.sort((b1, b2) => {\r\n return b1.order > b2.order ? 1 : -1;\r\n })[0];\r\n}\r\n\r\nexport function getPrimaryBorrowerId(borrowers: Borrower[]): number {\r\n return getPrimaryBorrower(borrowers).id;\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { Address } from './address.model';\r\nimport {\r\n ContactCorrespondenceLanguages,\r\n ContactRelationshipTypes,\r\n ContactResidantTypes as ContactResidentTypes,\r\n ContactSalutations,\r\n ContactStatus,\r\n ContactSuffixTypes,\r\n HasLifeInsuranceOptions,\r\n} from './enumerators';\r\n\r\n@HateoasResource('contacts')\r\nexport class Contact extends Resource {\r\n id: number;\r\n status?: ContactStatus;\r\n salutation?: ContactSalutations;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n suffix?: ContactSuffixTypes;\r\n email: string;\r\n homePhone: string;\r\n cellPhone: string;\r\n businessPhone: string;\r\n companyName: string;\r\n dateOfBirth: Date;\r\n sin: string;\r\n maritalStatus: string;\r\n contactPreference: string;\r\n residentType?: ContactResidentTypes;\r\n correspondenceLanguage?: ContactCorrespondenceLanguages;\r\n firstTimeBuyer?: boolean;\r\n numOfDependents: number;\r\n primaryAddressId?: number;\r\n primaryAddressLinkedKey?: string;\r\n caslOptIn: boolean;\r\n relationshipToPrimary: ContactRelationshipTypes;\r\n hasLifeInsurance: HasLifeInsuranceOptions;\r\n addresses: Address[];\r\n\r\n getFullName(): string {\r\n let fullName = contactFullName(this);\r\n return fullName;\r\n }\r\n}\r\n\r\nexport function contactFullName(contact: Contact) {\r\n let nameParts = [\r\n contact?.firstName ?? '',\r\n contact?.middleName ?? '',\r\n contact?.lastName ?? '',\r\n ];\r\n\r\n // Remove empties\r\n nameParts = nameParts.filter(n => n);\r\n\r\n let fullName = nameParts.join(' ');\r\n return fullName;\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { AgentOrganization } from './agent-organization.model';\r\nimport { Borrower, getPrimaryBorrower } from './borrower.model';\r\nimport { DocumentRequest } from './document-request.model';\r\nimport { DealStatuses, InsuranceReferralProviderOptions } from './enumerators';\r\nimport { MortgageRequest } from './mortgage-request.model';\r\nimport { Note } from './note.model';\r\nimport { Referral } from './referral.model';\r\nimport { SubjectProperty } from './subject-property.model';\r\n\r\n@HateoasResource('deal')\r\nexport class Deal extends Resource {\r\n dealId: number;\r\n loanCode: string;\r\n dealKey: string;\r\n purchasePrice?: number;\r\n closingDate?: Date;\r\n isRealtorExists: boolean;\r\n isRealtorNeeded: boolean;\r\n isRealtorReferredToUs: boolean;\r\n status: DealStatuses;\r\n organization: AgentOrganization;\r\n subjectProperty: SubjectProperty;\r\n primaryMortgageRequest: MortgageRequest;\r\n borrowers: Array;\r\n note: Note;\r\n referral: Referral;\r\n documentRequests: Array;\r\n insuranceSupplierId: number;\r\n\r\n getPrimaryBorrower() {\r\n return getPrimaryBorrower(this.borrowers);\r\n }\r\n}\r\n","export enum DealStatuses {\r\n Lead = 0,\r\n New = 1,\r\n Submitted = 2,\r\n Approved = 3,\r\n Accepted = 4,\r\n WaitingToClose = 5,\r\n Funded = 6,\r\n Complete = 7,\r\n Parked = 8,\r\n Cancelled = 9,\r\n Declined = 10,\r\n}\r\n\r\nexport enum NetworkTypes {\r\n Other = 0,\r\n DLC = 1,\r\n MCC = 2,\r\n MA = 3,\r\n}\r\n\r\nexport enum PropertyOccupancyOptions {\r\n OwnerOccupied = 0,\r\n OwnerOccupiedAndRental = 1,\r\n Rental = 2,\r\n SecondHome = 3,\r\n}\r\n\r\nexport enum ReferralTypes {\r\n Builder = 2,\r\n Realtor = 7,\r\n Client = 8,\r\n Other = 9,\r\n}\r\n\r\nexport enum ContactStatus {\r\n Contact = 1,\r\n Lead = 2,\r\n}\r\n\r\nexport enum ContactSalutations {\r\n Mr = 1,\r\n Mrs = 2,\r\n Ms = 3,\r\n Dr = 4,\r\n Rev = 5,\r\n Miss = 6,\r\n Judge = 7,\r\n}\r\n\r\nexport enum ContactSuffixTypes {\r\n Sr = 1,\r\n Jr = 2,\r\n}\r\n\r\nexport enum ContactResidantTypes {\r\n CanadianCitizen = 10,\r\n LandedImmigrant = 22,\r\n WorkVisa = 30,\r\n Other = 99,\r\n}\r\n\r\nexport enum ContactCorrespondenceLanguages {\r\n English = 1,\r\n French = 2,\r\n}\r\n\r\nexport enum ContactRelationshipTypes {\r\n Spouse = 0,\r\n CommonLaw = 1,\r\n RelatedFamilyMember = 2,\r\n Other = 3,\r\n Parent = 4,\r\n Sibling = 5,\r\n Child = 6,\r\n Grandchild = 7,\r\n Grandparent = 8,\r\n}\r\n\r\nexport enum BorrowerEmploymentEmployeeTypes {\r\n FullTime = 0,\r\n PartTime = 1,\r\n Seasonal = 2,\r\n}\r\n\r\nexport enum BorrowerEmploymentIndustrySectors {\r\n Other = 0,\r\n Construction = 1,\r\n Government = 2,\r\n Health = 3,\r\n Education = 4,\r\n HighTech = 5,\r\n RetailSales = 6,\r\n LeisureOrEntertainment = 7,\r\n BankingOrFinance = 8,\r\n Transportation = 9,\r\n Services = 10,\r\n Manufacturing = 11,\r\n FarmingOrNaturalResources = 12,\r\n Varies = 13,\r\n}\r\n\r\nexport enum IncomePeriods {\r\n Annual = 0,\r\n SemiAnnual = 1,\r\n Quarterly = 2,\r\n Monthly = 3,\r\n SemiMonthly = 4,\r\n BiWeekly = 5,\r\n Weekly = 6,\r\n}\r\n\r\nexport enum EmployerReceivesBenefitsOptions {\r\n Default = 1,\r\n Yes = 2,\r\n No = 3,\r\n NoSelection = 4,\r\n}\r\n\r\nexport enum LoanType {\r\n buy = 'Purchase',\r\n refinance = 'Refinance',\r\n renew = 'Switch / Transfer',\r\n}\r\n\r\nexport enum BorrowerOtherIncomeTypes {\r\n InterestIncome = 4,\r\n ChildSupport = 5,\r\n Pension = 6,\r\n Alimony = 7,\r\n CanadianPensionPlan = 8,\r\n SurvivorBenefitPension = 9,\r\n Other = 10,\r\n OldAgeSecurity = 11,\r\n CanadaChildBenefit = 12,\r\n}\r\n\r\nexport enum BorrowerPropertyFutureStatusTypes {\r\n Selling = 0,\r\n NotSelling = 1,\r\n Renting = 2,\r\n}\r\n\r\nexport enum InsuranceReferralProviderOptions {\r\n None = 1,\r\n Insureline = 2,\r\n Opta = 3,\r\n SunLife = 4,\r\n Walnut = 5,\r\n}\r\n\r\nexport enum PropertyFoundTypes {\r\n yes = 'Approval',\r\n no = 'Pre-Approval',\r\n}\r\n\r\nexport enum HasLifeInsuranceOptions {\r\n Default = 1,\r\n Yes = 2,\r\n No = 3,\r\n NoSelection = 4,\r\n}\r\n","import { HateoasResource, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { DealStatuses, LoanType } from './enumerators';\r\nimport { MortgageRequestMortgage } from './mortgage-request-mortgage.model';\r\n\r\n@HateoasResource('mortgagerequest')\r\nexport class MortgageRequest extends Resource {\r\n /// \r\n /// Mortgage request Id\r\n /// \r\n id: number;\r\n\r\n /// \r\n /// Downpayment total\r\n /// \r\n downPaymentTotal?: number;\r\n\r\n /// \r\n /// Purpose\r\n /// \r\n purpose?: LoanType;\r\n\r\n /// \r\n /// Type\r\n /// \r\n type: string;\r\n\r\n /// \r\n /// Status\r\n /// \r\n status?: DealStatuses;\r\n\r\n mortgages: Array;\r\n}\r\n\r\n@HateoasResource('primarymortgagerequest')\r\nexport class PrimaryMortgageRequest extends MortgageRequest {\r\n /// \r\n /// Mortgage request Id\r\n /// \r\n id: number;\r\n\r\n /// \r\n /// Downpayment total\r\n /// \r\n downPaymentTotal?: number;\r\n\r\n /// \r\n /// Purpose\r\n /// \r\n purpose: LoanType;\r\n\r\n /// \r\n /// Type\r\n /// \r\n type: string;\r\n\r\n /// \r\n /// Status\r\n /// \r\n status?: DealStatuses;\r\n\r\n mortgages: Array;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OptionsGroupItem } from 'src/app/utilities/optionsCache/options.models';\r\nimport { Address } from '../models/deal-resources/address.model';\r\nimport { AddressOptionsCacheService } from './options-cache/address-options-cache.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AddressFormatService {\r\n constructor(private addressOptionsCache: AddressOptionsCacheService) {}\r\n\r\n public isStreetTypeOptionValid(optionId: number): boolean {\r\n return this.addressOptionsCache.streetTypes.some(o => o.value == optionId);\r\n }\r\n\r\n public isCountryTypeOptionValid(optionId: number): boolean {\r\n return this.addressOptionsCache.countries.some(o => o.value == optionId);\r\n }\r\n\r\n public isProvinceTypeOptionValid(\r\n provinceOptionId: number,\r\n countryOptionId: number,\r\n ): boolean {\r\n if (\r\n countryOptionId == this.addressOptionsCache.canadaOptionsGroup.value &&\r\n this.addressOptionsCache.canadianProvinces.some(\r\n o => o.value == provinceOptionId,\r\n )\r\n ) {\r\n return true;\r\n } else if (\r\n countryOptionId == this.addressOptionsCache.usaOptionsGroup.value &&\r\n this.addressOptionsCache.usaStates.some(o => o.value == provinceOptionId)\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //TODO: this is the english version of the address\r\n public asString(address: Address): string {\r\n if (!address) return '';\r\n\r\n let streetTypeOption = this.addressOptionsCache.streetTypes.find(\r\n o => o.value == address.streetType,\r\n );\r\n\r\n let countryOption = this.addressOptionsCache.countries.find(\r\n o => o.value == address.country,\r\n );\r\n\r\n let provinceOption = this.resolveProvinceOptionItem(address);\r\n\r\n let addressString = (\r\n `${address.unitNumber ? address.unitNumber + ' - ' : ''}` +\r\n `${address.streetNumber ? address.streetNumber + ' ' : ''}` +\r\n `${address.streetName ? address.streetName + ' ' : ''}` +\r\n `${streetTypeOption ? streetTypeOption.displayValue + ' ' : ''}` +\r\n `${address.streetDirection ?? ''}, ` +\r\n `${address.city ? address.city + ', ' : ''}` +\r\n `${provinceOption ? provinceOption.displayValue + ', ' : ''}` +\r\n `${address.postalCode ? address.postalCode + ', ' : ''}` +\r\n `${countryOption ? countryOption.displayValue : ''}`\r\n ).trim();\r\n\r\n if (\r\n addressString == ',' ||\r\n addressString == ', Canada' ||\r\n addressString == ', United States'\r\n ) {\r\n addressString = '';\r\n }\r\n\r\n return addressString;\r\n }\r\n\r\n public streetAddress(address: Address): string {\r\n if (!address) return '';\r\n\r\n let streetTypeOption = this.addressOptionsCache.streetTypes.find(\r\n o => o.value == address.streetType,\r\n );\r\n\r\n //TODO: this is the english version of the street address\r\n let addressString = (\r\n `${address.unitNumber ? address.unitNumber + ' - ' : ''}` +\r\n `${address.streetNumber ? address.streetNumber + ' ' : ''}` +\r\n `${address.streetName ? address.streetName + ' ' : ''}` +\r\n `${streetTypeOption ? streetTypeOption.displayValue + ' ' : ''}` +\r\n `${address.streetDirection ?? ''}, `\r\n ).trim();\r\n\r\n if (addressString.endsWith(' ,'))\r\n addressString = addressString.slice(0, -2) + ',';\r\n\r\n if (addressString == ',') {\r\n addressString = '';\r\n }\r\n\r\n return addressString;\r\n }\r\n\r\n public provinceName(address: Address) {\r\n if (!address?.province) return '';\r\n let provinceOption = this.resolveProvinceOptionItem(address);\r\n return provinceOption.displayValue;\r\n }\r\n\r\n private resolveProvinceOptionItem(address: Address) {\r\n let provinceOptionItem: OptionsGroupItem = null;\r\n if (address.country == this.addressOptionsCache.canadaOptionsGroup.value) {\r\n provinceOptionItem = this.addressOptionsCache.canadianProvinces.find(\r\n o => o.value == address.province,\r\n );\r\n } else if (\r\n address.country == this.addressOptionsCache.usaOptionsGroup.value\r\n ) {\r\n provinceOptionItem = this.addressOptionsCache.usaStates.find(\r\n o => o.value == address.province,\r\n );\r\n }\r\n return provinceOptionItem;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HateoasResourceService } from '@lagoshny/ngx-hateoas-client';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport {\r\n AgentDetails,\r\n AgentContact,\r\n AgentOffice,\r\n} from '../models/agent-resources/agent-resource';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AgentService {\r\n private _agent: AgentDetails = null;\r\n\r\n constructor(private resourceService: HateoasResourceService) {}\r\n\r\n get agent(): AgentDetails {\r\n return this._agent === null ? null : ({ ...this._agent } as AgentDetails);\r\n }\r\n\r\n public async loadAgentDetails(shortCode: string): Promise {\r\n // Return cached agent\r\n if (this._agent && this._agent.shortCode == shortCode) {\r\n return this.agent;\r\n }\r\n\r\n let agent = await lastValueFrom(\r\n this.resourceService.getResource(AgentDetails, shortCode),\r\n );\r\n if (!agent?.agentId) return null;\r\n this._agent = agent;\r\n\r\n let contact = await lastValueFrom(\r\n agent.getRelation('contact'),\r\n );\r\n agent.contact = contact;\r\n\r\n let office = await lastValueFrom(agent.getRelation('office'));\r\n agent.office = office;\r\n\r\n return agent;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\nimport { first, lastValueFrom } from 'rxjs';\r\nimport { SettingsService } from 'src/app/settings';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\n\r\n@Injectable()\r\nexport class ClientExperienceService {\r\n constructor(\r\n private settings: SettingsService,\r\n private auth0Service: AuthService,\r\n private httpClient: HttpClient,\r\n ) {}\r\n\r\n async trySaveClientExperienceContact(ceContactKey: string) {\r\n if (!ceContactKey) return;\r\n\r\n let [isAuthenticated, isAuthenticatedErr] = await handle(\r\n lastValueFrom(this.auth0Service.isAuthenticated$.pipe(first())),\r\n );\r\n if (isAuthenticatedErr) return;\r\n if (!isAuthenticated) return;\r\n\r\n let url = `${this.settings.publicApiBaseUrl}/v2/client/experience/contact/${ceContactKey}/save`;\r\n let [_, saveError] = await handle(\r\n lastValueFrom(this.httpClient.post(url, null)),\r\n );\r\n if (saveError) {\r\n console.error(saveError);\r\n }\r\n }\r\n}\r\n","import { ValidatorRule, ValidatorStore } from './validation.interfaces';\r\n\r\n/**\r\n * The purpose of this to serve validation stores\r\n * and provide system-wide validation.\r\n */\r\nexport class ValidationGlobalStore {\r\n private validationStores = new Map();\r\n\r\n private _isDisposed: boolean;\r\n get isDisposed(): boolean {\r\n return this._isDisposed;\r\n }\r\n\r\n constructor() {}\r\n\r\n addStore(store: ValidatorStore, key: string) {\r\n this.validationStores.set(key, store);\r\n }\r\n\r\n /**\r\n * Get an existing store or if one does not exist, create, add, and return a new store.\r\n */\r\n getStore(key: string): TStore {\r\n let store = this.validationStores.get(key) as TStore;\r\n return store;\r\n }\r\n\r\n getRulesByMetadata(\r\n rulePredicate: (metadata: any) => boolean,\r\n ): ValidatorRule[] {\r\n let stores = [...this.validationStores.values()];\r\n let rules = stores.flatMap(s => s.getRulesByMetadata(rulePredicate));\r\n return rules;\r\n }\r\n\r\n validateByMetadata(rulePredicate: (metadata: any) => boolean) {\r\n var rules = this.getRulesByMetadata(rulePredicate);\r\n rules.forEach(r => r.validate());\r\n }\r\n\r\n get isValid(): boolean {\r\n let stores = [...this.validationStores.values()];\r\n let isValid = stores.every(s => s.isValid);\r\n return isValid;\r\n }\r\n\r\n dispose() {\r\n this._isDisposed = true;\r\n let stores = [...this.validationStores.values()];\r\n stores.forEach(s => s.dispose());\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { HateoasResourceService } from '@lagoshny/ngx-hateoas-client';\r\nimport { BaseResource } from '@lagoshny/ngx-hateoas-client/lib/model/resource/base-resource';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { SettingsService } from 'src/app/settings';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { ClientLanguageService } from 'src/shared-utilities/services/client-language.service';\r\nimport { ValidationGlobalStore } from '../../../../../utilities/validation/validation-global-store';\r\nimport { DashboardService } from '../../../dashboard/services/dashboard.service';\r\nimport { BorrowersValidatorStore } from '../../../slides/borrowers/validation/borrowers-validator.store';\r\nimport { GettingStartedValidatorStore } from '../../../slides/getting-started/validation/getting-started-validator.store';\r\nimport { IncomeValidationStore } from '../../../slides/income/validation/income-validation.store';\r\nimport { MenuService } from '../../../slides/menu/menu.service';\r\nimport { SubmitValidationStore } from '../../../slides/reviewAndSubmit/referral/validation/submit-validation.store';\r\nimport { AgentDetails } from '../../models/agent-resources/agent-resource';\r\nimport { Deal } from '../../models/deal-resources/deal.model';\r\nimport { ResourceCommandStream } from '../resource-command-stream.service';\r\nimport { ResourceContextStore } from '../resource-context-store';\r\nimport { ResourceTree, ResourceTreeCriteria } from '../resource-tree';\r\nimport { ClientJourneyEngagementService } from './client-journey-engagement.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ClientJourneyContext {\r\n private _agent: AgentDetails;\r\n get agent(): AgentDetails {\r\n return this._agent;\r\n }\r\n\r\n private _deal: Deal = null;\r\n get deal(): Deal {\r\n return this._deal;\r\n }\r\n\r\n private _validationGlobalStore: ValidationGlobalStore;\r\n get validationGlobalStore(): ValidationGlobalStore {\r\n if (!this._validationGlobalStore) {\r\n let globalStore = new ValidationGlobalStore();\r\n globalStore.addStore(\r\n new GettingStartedValidatorStore(globalStore, this),\r\n GettingStartedValidatorStore.globalStoreKey,\r\n );\r\n\r\n globalStore.addStore(\r\n new BorrowersValidatorStore(globalStore, this),\r\n BorrowersValidatorStore.globalStoreKey,\r\n );\r\n\r\n globalStore.addStore(\r\n new IncomeValidationStore(globalStore, this),\r\n IncomeValidationStore.globalStoreKey,\r\n );\r\n\r\n globalStore.addStore(\r\n new SubmitValidationStore(globalStore, this),\r\n SubmitValidationStore.globalStoreKey,\r\n );\r\n\r\n this._validationGlobalStore = globalStore;\r\n }\r\n return this._validationGlobalStore;\r\n }\r\n\r\n private resourceTree: ResourceTree;\r\n\r\n constructor(\r\n private resourceService: HateoasResourceService,\r\n private settings: SettingsService,\r\n private http: HttpClient,\r\n public readonly engagementService: ClientJourneyEngagementService,\r\n private dashboardService: DashboardService,\r\n public resourceCommandStream: ResourceCommandStream,\r\n private resourceContextStore: ResourceContextStore,\r\n public readonly menuService: MenuService,\r\n private clientLanguageService: ClientLanguageService,\r\n ) {}\r\n\r\n async init(agentDetails: AgentDetails) {\r\n this._agent = agentDetails;\r\n await this.resetDeal();\r\n }\r\n\r\n // Used when loading a new deal, initializing the agent,\r\n // or landing on the home page.\r\n async resetDeal() {\r\n await this.engagementService.stopTracking();\r\n this.resourceContextStore.reset();\r\n\r\n this._validationGlobalStore?.dispose();\r\n this._validationGlobalStore = null;\r\n\r\n this._deal = null;\r\n }\r\n\r\n private async buildResourceTree(\r\n shortCode: string,\r\n loanCode: string,\r\n dealKey: string,\r\n ): Promise> {\r\n let rootUrl = `${shortCode}/${dealKey}/${loanCode}`;\r\n let treeCriteria = new ResourceTreeCriteria(Deal, rootUrl)\r\n .include('$.organization', {\r\n params: { lang: this.clientLanguageService.clientLanguage },\r\n })\r\n .include('$.primaryMortgageRequest')\r\n .include('$.primaryMortgageRequest.mortgages', { isArray: true })\r\n .include('$.referral')\r\n .include('$.referral.contact')\r\n .include('$.note', { link: 'notes' })\r\n .include('$.subjectProperty')\r\n .include('$.subjectProperty.address', { link: 'addresses' })\r\n .include('$.borrowers', { isArray: true })\r\n .include('$.borrowers.employments', { isArray: true })\r\n .include('$.borrowers.employments.address')\r\n .include('$.borrowers.otherIncomes', {\r\n isArray: true,\r\n link: 'otherincomes',\r\n })\r\n .include('$.borrowers.bankScrapes', {\r\n isArray: true,\r\n link: 'bankscrapes',\r\n })\r\n .include('$.borrowers.properties', { isArray: true })\r\n .include('$.borrowers.properties.address')\r\n .include('$.borrowers.properties.downPayment', { link: 'downpayment' })\r\n .include('$.borrowers.properties.mortgages', { isArray: true })\r\n .include('$.borrowers.assets', { isArray: true })\r\n .include('$.borrowers.contact', { link: 'contacts' })\r\n .include('$.borrowers.contact.addresses', { isArray: true })\r\n .include('$.borrowers.cjEngagement')\r\n .include('$.borrowers.cjEngagement.pages', {\r\n isArray: true,\r\n link: 'cjEngagementPages',\r\n });\r\n\r\n this.resourceTree = new ResourceTree(treeCriteria, this.resourceService);\r\n return this.resourceTree;\r\n }\r\n\r\n public async loadDeal(\r\n shortCode: string,\r\n loanCode: string,\r\n dealKey: string,\r\n ): Promise {\r\n await this.resetDeal();\r\n let resourceTree = await this.buildResourceTree(\r\n shortCode,\r\n loanCode,\r\n dealKey,\r\n );\r\n let [_, trySaveError] = await handle(\r\n this.dashboardService.trySaveDeal(this._agent, loanCode, dealKey),\r\n );\r\n if (trySaveError) {\r\n console.error(trySaveError);\r\n }\r\n\r\n this._deal = await resourceTree.load();\r\n\r\n await this.engagementService.startTracking(this);\r\n return this._deal;\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' and contacts for all borrowers will be loaded\r\n async loadPath(root: Deal, path: string) {\r\n await this.resourceTree.loadPath(root, path);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' and parent borrowers (1...*) would load the contact\r\n // and contact child resources for those borrowers\r\n // Note parents are required.\r\n async loadPathForParents(path: string, parents: BaseResource[]) {\r\n await this.resourceTree.loadPathForParents(path, parents);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' will load all child data.\r\n // A resource is required.\r\n async loadResourceChildren(path: string, resources: BaseResource[]) {\r\n await this.resourceTree.loadResourceChildren(path, resources);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' returns an array of all contact objects (not grouped by borrower)\r\n getResources(root: Deal, path: string) {\r\n return this.resourceTree.getResources(root, path);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' returns an array of all borrower objects\r\n getParents(root: Deal, path: string) {\r\n return this.resourceTree.getParents(root, path);\r\n }\r\n\r\n public async createNewDeal(\r\n shortCode: string,\r\n ceContactKey?: string,\r\n customSource?: string,\r\n ): Promise {\r\n let url = `${this.settings.publicApiBaseUrl}/v2/deal/${shortCode}`;\r\n if (ceContactKey) {\r\n url += `?ceContactKey=${ceContactKey}`;\r\n }\r\n\r\n let newDealRequest = {\r\n overrideDownPayment: true,\r\n customSource: customSource,\r\n };\r\n\r\n //Create new Deal\r\n let newDeal = await lastValueFrom(\r\n this.http.post(url, newDealRequest),\r\n );\r\n\r\n let deal = await this.loadDeal(\r\n this.agent.shortCode,\r\n newDeal.loanCode,\r\n newDeal.dealKey,\r\n );\r\n\r\n return deal;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\n\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { MenuService } from '../../../slides/menu/menu.service';\r\nimport { ClientJourneyEngagement } from '../../models/deal-resources/client-journey-engagement';\r\nimport { ClientJourneyEngagementPage } from '../../models/deal-resources/client-journey-engagement-page';\r\nimport { ResourceContextStore } from '../resource-context-store';\r\nimport { ResourceContext } from '../resource-context.service';\r\nimport { ClientJourneyContext } from './client-journey-context';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ClientJourneyEngagementService {\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private menuService: MenuService,\r\n private resourceContextStore: ResourceContextStore,\r\n ) {}\r\n\r\n // We can't inject the ClientJourneyContext since that'll cause\r\n // a circular reference on injection. However, it's possible\r\n // to pass the instance from the context into this service when\r\n // the tracking is started.\r\n private clientJourneyContext: ClientJourneyContext;\r\n\r\n private deregisterTransitionHook: Function;\r\n private progressContext: ResourceContext;\r\n async startTracking(\r\n clientJourneyContext: ClientJourneyContext,\r\n ): Promise {\r\n await this.stopTracking(); // Ensure we're stopped before starting\r\n this.clientJourneyContext = clientJourneyContext;\r\n\r\n let primaryBorrower = this.clientJourneyContext.deal.getPrimaryBorrower();\r\n\r\n let engagement = primaryBorrower.cjEngagement;\r\n if (!engagement) return;\r\n\r\n this.progressContext = this.resourceContextStore.getByResource(\r\n engagement,\r\n true,\r\n );\r\n this.deregisterTransitionHook = this.uiRouter.transitionService.onSuccess(\r\n { to: 'client.journey.slides.**' },\r\n transition => {\r\n this.savePage();\r\n },\r\n );\r\n\r\n setTimeout(() => this.savePage());\r\n }\r\n\r\n async stopTracking(): Promise {\r\n if (this.progressContext) {\r\n await this.progressContext.flush();\r\n this.resourceContextStore.removeByKey(this.progressContext.key);\r\n this.progressContext = null;\r\n }\r\n\r\n if (this.deregisterTransitionHook) {\r\n this.deregisterTransitionHook();\r\n this.deregisterTransitionHook = null;\r\n }\r\n\r\n this.clientJourneyContext = null;\r\n }\r\n\r\n async savePage() {\r\n if (!this.clientJourneyContext) return;\r\n\r\n let primaryBorrower = this.clientJourneyContext.deal.getPrimaryBorrower();\r\n let cjEngagement = primaryBorrower.cjEngagement;\r\n\r\n let params = this.uiRouter.globals?.params || {};\r\n let response$ = cjEngagement.postRelation('cjEngagementPages', {\r\n body: {\r\n url: location.href.toString(),\r\n stateName: this.uiRouter.globals.current.name,\r\n stateParams: JSON.stringify(params),\r\n },\r\n });\r\n\r\n let [savedPage, err] = await handle(lastValueFrom(response$));\r\n if (err || !savedPage) {\r\n this.updateMenuItems();\r\n return;\r\n }\r\n\r\n // Add or update the returned page in the pages array\r\n cjEngagement.pages = cjEngagement.pages || [];\r\n let pages = cjEngagement.pages;\r\n let pageIndex = pages.findIndex(\r\n p =>\r\n p.clientJourneyEngagementPageId ==\r\n savedPage.clientJourneyEngagementPageId,\r\n );\r\n if (pageIndex != -1) {\r\n pages.splice(pageIndex, 1, savedPage);\r\n } else {\r\n pages.push(savedPage);\r\n }\r\n\r\n this.updateMenuItems();\r\n }\r\n\r\n private getPrimaryBorrowerTrackedStateName() {\r\n let primaryBorrower = this.clientJourneyContext.deal.getPrimaryBorrower();\r\n let engagementPages = primaryBorrower.cjEngagement.pages;\r\n return this.getTrackedStateName(engagementPages);\r\n }\r\n\r\n private getTrackedStateName(\r\n engagementPages: ClientJourneyEngagementPage[],\r\n ): string {\r\n if (!engagementPages) return '';\r\n\r\n let maxSlideIndex = -1;\r\n for (let engagementPage of engagementPages) {\r\n let engagementPageSlideIndex = this.getSlideIndex(\r\n engagementPage.stateName,\r\n );\r\n maxSlideIndex = Math.max(maxSlideIndex, engagementPageSlideIndex);\r\n }\r\n\r\n let menuSlideStates = this.menuService.getSlideSates();\r\n let trackedState = menuSlideStates[maxSlideIndex] || {};\r\n let trackedStateName = trackedState.name || '';\r\n return trackedStateName;\r\n }\r\n\r\n getSlideIndex(stateName): number {\r\n if (!stateName) return -1;\r\n\r\n let menuSlideStates = this.menuService.getSlideSates();\r\n let stateIndex = menuSlideStates.findIndex(s =>\r\n stateName.startsWith(s.name),\r\n );\r\n\r\n return stateIndex;\r\n }\r\n\r\n getMaxReachedSlideIndex(): number {\r\n let currentState = this.uiRouter.globals.current;\r\n let currentStateName = currentState.name;\r\n let trackedStateName =\r\n this.getPrimaryBorrowerTrackedStateName() || currentStateName;\r\n\r\n let currentSlideIndex = this.getSlideIndex(currentStateName);\r\n let trackedSlideIndex = this.getSlideIndex(trackedStateName);\r\n\r\n let maxReachedSlideIndex = Math.max(currentSlideIndex, trackedSlideIndex);\r\n\r\n return maxReachedSlideIndex;\r\n }\r\n\r\n /**\r\n * This will check the exact state, not just a slide. A slide can\r\n * include multiple states.\r\n */\r\n hasReachedSate(stateName: string): boolean {\r\n let currentState = this.uiRouter.globals.current;\r\n let currentStateName = currentState.name;\r\n if (currentStateName == stateName) return true;\r\n\r\n let primaryBorrower = this.clientJourneyContext.deal.getPrimaryBorrower();\r\n let engagementPages = primaryBorrower.cjEngagement.pages;\r\n\r\n let hasReachedState = engagementPages.some(p => p.stateName == stateName);\r\n return hasReachedState;\r\n }\r\n\r\n private updateMenuItems(): void {\r\n let currentState = this.uiRouter.globals.current;\r\n let currentStateName = currentState.name;\r\n\r\n // Menu items are enabled up to a cut-off and then they're disabled.\r\n let menuSlideStates = this.menuService.getSlideSates();\r\n let maxReachedSlideIndex = this.getMaxReachedSlideIndex();\r\n\r\n let hasReachedBorrowerSummary = this.hasReachedSate(\r\n SlidesStateNames.BorrowersSummary,\r\n );\r\n\r\n menuSlideStates.forEach((slideState, index) => {\r\n let menuItemEnabled = index <= maxReachedSlideIndex;\r\n menuItemEnabled ||= hasReachedBorrowerSummary;\r\n\r\n slideState.data.menuItemEnabled = menuItemEnabled;\r\n\r\n let hasReached = index <= maxReachedSlideIndex;\r\n slideState.data.hasReached = hasReached;\r\n });\r\n }\r\n\r\n /**\r\n * Calculates the percentage completed\r\n * @param maxPercentage We default to a max of 95% with the remaining 5\r\n * to be assumed when the deal is no longer in the lead status (has been\r\n * submitted)\r\n */\r\n getProgressPercentage(\r\n engagementPages: ClientJourneyEngagementPage[],\r\n maxPercentage = 95,\r\n ): number {\r\n let trackedStateName = this.getTrackedStateName(engagementPages);\r\n let trackedSlideIndex = this.getSlideIndex(trackedStateName);\r\n\r\n let menuSlideStates = this.menuService.getSlideSates();\r\n let percentagePerMenuSlides = maxPercentage / menuSlideStates.length;\r\n\r\n let slideNumber = trackedSlideIndex + 1;\r\n let progressPercentage =\r\n Math.round(percentagePerMenuSlides * slideNumber) || 0;\r\n\r\n return progressPercentage;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HateoasResourceService } from '@lagoshny/ngx-hateoas-client';\r\nimport { Deal } from '../../models/deal-resources/deal.model';\r\nimport { ClientJourneyContext } from './client-journey-context';\r\nimport { ResourceContextStore } from '../resource-context-store';\r\nimport { ResourceContext } from '../resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DealService {\r\n private dealResourceContext: ResourceContext;\r\n public deal: Deal;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private dealResourceService: ClientJourneyContext,\r\n ) {\r\n this.deal = this.dealResourceService.deal;\r\n\r\n this.dealResourceContext = this.resourceContextStore.getByResource(\r\n this.deal,\r\n );\r\n }\r\n\r\n public save() {\r\n this.dealResourceContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { refreshSubjectPropertyAddressAsync } from '../../helpers/address.helper';\r\nimport { Address } from '../../models/deal-resources/address.model';\r\nimport { ClientJourneyContext } from './client-journey-context';\r\nimport { ResourceContextStore } from '../resource-context-store';\r\nimport { ResourceContext } from '../resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubjectPropertyAddressService {\r\n private _subjectPropertyAddressContext: ResourceContext
;\r\n public subjectPropertyAddress: Address;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {}\r\n\r\n async initialize() {\r\n await refreshSubjectPropertyAddressAsync(\r\n this.clientJourneyContext,\r\n this.resourceContextStore,\r\n );\r\n\r\n this.subjectPropertyAddress =\r\n this.clientJourneyContext.deal.subjectProperty.address;\r\n\r\n this._subjectPropertyAddressContext =\r\n this.resourceContextStore.getByResource(this.subjectPropertyAddress);\r\n }\r\n\r\n public save() {\r\n this._subjectPropertyAddressContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SubjectProperty } from '../../models/deal-resources/subject-property.model';\r\nimport { ClientJourneyContext } from './client-journey-context';\r\nimport { ResourceContextStore } from '../resource-context-store';\r\nimport { ResourceContext } from '../resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubjectPropertyService {\r\n private _subjectPropertyContext: ResourceContext;\r\n public subjectProperty: SubjectProperty;\r\n\r\n constructor(\r\n private dealResourceService: ClientJourneyContext,\r\n private resourceContextStore: ResourceContextStore,\r\n ) {\r\n this.subjectProperty = this.dealResourceService.deal.subjectProperty;\r\n this._subjectPropertyContext = this.resourceContextStore.getByResource(\r\n this.subjectProperty,\r\n );\r\n }\r\n\r\n public save() {\r\n this._subjectPropertyContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OptionsGroupItem } from 'src/app/utilities/optionsCache/options.models';\r\nimport { OptionsCache } from 'src/app/utilities/optionsCache/optionsCache';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AddressOptionsCacheService {\r\n streetTypes: OptionsGroupItem[];\r\n streetDirections: OptionsGroupItem[];\r\n countries: OptionsGroupItem[];\r\n canadianProvinces: OptionsGroupItem[];\r\n usaStates: OptionsGroupItem[];\r\n\r\n canadaOptionsGroup: OptionsGroupItem;\r\n usaOptionsGroup: OptionsGroupItem;\r\n\r\n constructor(private optionsCache: OptionsCache) {}\r\n\r\n async load() {\r\n await this.optionsCache.loadResourceOptions('contacts.address');\r\n this.streetTypes = this.optionsCache.getOptionsGroup('streetTypes')?.items;\r\n this.streetDirections =\r\n this.optionsCache.getOptionsGroup('streetDirections')?.items;\r\n this.countries = this.optionsCache.getOptionsGroup('countries')?.items;\r\n this.canadianProvinces =\r\n this.optionsCache.getOptionsGroup('canadianProvinces')?.items;\r\n this.usaStates = this.optionsCache.getOptionsGroup('usaStates')?.items;\r\n\r\n this.canadaOptionsGroup = this.countries.find(c => c.key == 'canada');\r\n this.usaOptionsGroup = this.countries.find(c => c.key == 'unitedStates');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OptionsGroupItem } from 'src/app/utilities/optionsCache/options.models';\r\nimport { OptionsCache } from 'src/app/utilities/optionsCache/optionsCache';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MortgageOptionsCacheService {\r\n paymentFrequencies: OptionsGroupItem[];\r\n\r\n constructor(private optionsCache: OptionsCache) {}\r\n\r\n async load() {\r\n await this.optionsCache.loadResourceOptions('Mortgage');\r\n this.paymentFrequencies = this.optionsCache.getOptionsGroup('MortgagePaymentFrequency')?.items.sort((a, b) => a.suggestedSortOrder - b.suggestedSortOrder);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OptionsGroupItem } from 'src/app/utilities/optionsCache/options.models';\r\nimport { OptionsCache } from 'src/app/utilities/optionsCache/optionsCache';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ContactOptionsCacheService {\r\n maritalStatuses: OptionsGroupItem[];\r\n\r\n constructor(private optionsCache: OptionsCache) {}\r\n\r\n async load() {\r\n await this.optionsCache.loadResourceOptions('Contact');\r\n this.maritalStatuses = this.optionsCache.getOptionsGroup('MaritalStatus')?.items.sort((a, b) => a.suggestedSortOrder - b.suggestedSortOrder);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OptionsGroupItem } from 'src/app/utilities/optionsCache/options.models';\r\nimport { OptionsCache } from 'src/app/utilities/optionsCache/optionsCache';\r\nimport { AddressOptionsCacheService } from './address-options-cache.service';\r\nimport { ContactOptionsCacheService } from './contact-options.cache.service';\r\nimport { MortgageOptionsCacheService } from './mortgage-options-cache.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OptionsCacheService {\r\n constructor(private addressOptionsCache: AddressOptionsCacheService,\r\n private mortageOptionsCache: MortgageOptionsCacheService,\r\n private contactOptionsCache: ContactOptionsCacheService) { }\r\n\r\n async load() {\r\n await this.addressOptionsCache.load();\r\n await this.mortageOptionsCache.load();\r\n await this.contactOptionsCache.load();\r\n }\r\n \r\n public get address() {\r\n return this.addressOptionsCache;\r\n }\r\n\r\n public get mortgage() {\r\n return this.mortageOptionsCache;\r\n }\r\n \r\n public get contact() {\r\n return this.contactOptionsCache;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { MortgageRequest } from '../models/deal-resources/mortgage-request.model';\r\nimport { ClientJourneyContext } from './deal/client-journey-context';\r\nimport { ResourceContextStore } from './resource-context-store';\r\nimport { ResourceContext } from './resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PrimaryMortgageService {\r\n private _isDealLoaded: boolean = false;\r\n private _primaryMortgageContext: ResourceContext;\r\n public primaryMortgage: MortgageRequest = new MortgageRequest();\r\n\r\n get isDealLoaded() {\r\n return this._isDealLoaded;\r\n }\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.loadDeal();\r\n }\r\n\r\n private loadDeal(): boolean {\r\n if (this._isDealLoaded) return true;\r\n\r\n if (this.clientJourneyContext.deal) {\r\n this.initializeResourceContextManager();\r\n this._isDealLoaded = true;\r\n }\r\n\r\n return this._isDealLoaded;\r\n }\r\n\r\n private initializeResourceContextManager() {\r\n this.primaryMortgage =\r\n this.clientJourneyContext.deal.primaryMortgageRequest;\r\n\r\n this._primaryMortgageContext = this.resourceContextStore.getByResource(\r\n this.primaryMortgage,\r\n );\r\n }\r\n\r\n public save() {\r\n if (!this._isDealLoaded) {\r\n this.loadDeal();\r\n }\r\n this._primaryMortgageContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Referral } from '../../shared/models/deal-resources/referral.model';\r\nimport { ClientJourneyContext } from './deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../shared/services/resource-context.service';\r\nimport { Contact } from '../models/deal-resources/contact.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ReferralService {\r\n private _resourceContextStore: ResourceContextStore;\r\n private _referralResourceContext: ResourceContext;\r\n private _contactContext: ResourceContext;\r\n\r\n public referral: Referral;\r\n public contact: Contact;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this._resourceContextStore = resourceContextStore;\r\n\r\n this.referral = this.clientJourneyContext.deal.referral;\r\n this._referralResourceContext = this.resourceContextStore.getByResource(\r\n this.referral,\r\n );\r\n\r\n this.contact = this.clientJourneyContext.deal.referral.contact;\r\n this._contactContext = this.resourceContextStore.getByResource(\r\n this.contact,\r\n );\r\n }\r\n\r\n public clearReferrerContactData() {\r\n this.contact.firstName = undefined;\r\n this.contact.lastName = undefined;\r\n this.contact.middleName = undefined;\r\n this.contact.companyName = undefined;\r\n this.contact.email = undefined;\r\n this.contact.homePhone = undefined;\r\n this.contact.cellPhone = undefined;\r\n this.contact.businessPhone = undefined;\r\n this.saveReferralContact();\r\n }\r\n\r\n public saveReferral() {\r\n this._referralResourceContext.patch();\r\n }\r\n\r\n public saveReferralContact() {\r\n this._contactContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","// Note: This is exported but not injectable. This is on purpose as\r\n// it's not intended to be a singleton and doesn't need to be tied\r\n// specifically to Angular.\r\n\r\nexport class CancellationToken {\r\n private _isCancelled: boolean = false;\r\n get isCancelled(): boolean {\r\n return this._isCancelled;\r\n }\r\n \r\n constructor(private source: CancellationTokenSource) {\r\n let boundCallback = this.onSourceCancelled.bind(this);\r\n source.notify(() => boundCallback());\r\n }\r\n \r\n private onSourceCancelled() {\r\n this._isCancelled = true;\r\n if (this.source.throwOnCancel) {\r\n throw 'A request to cancel has been invoked';\r\n }\r\n }\r\n }\r\n \r\n export class CancellationTokenSource {\r\n private _token: CancellationToken;\r\n get token(): CancellationToken {\r\n return this._token;\r\n }\r\n \r\n throwOnCancel: boolean = false;\r\n \r\n callbacks: (() => any)[] = [];\r\n \r\n constructor() {\r\n this._token = new CancellationToken(this);\r\n }\r\n \r\n notify(callback: () => any) {\r\n this.callbacks.push(callback);\r\n }\r\n \r\n cancel() {\r\n for (let callback of this.callbacks) {\r\n callback();\r\n }\r\n }\r\n }\r\n ","// Note: This is exported but not injectable. This is on purpose as\r\n// it's not intended to be a singleton and doesn't need to be tied\r\n// specifically to Angular.\r\n\r\nimport { CancellationTokenSource, CancellationToken } from './cancellation-token';\r\n\r\ninterface TimeoutCallback {\r\n callback: () => any;\r\n ms: number;\r\n}\r\n\r\ninterface StartOptions {\r\n throwOnStop?: boolean;\r\n}\r\n\r\nconst delayAsync = (ms: number, value?: T) => {\r\n return new Promise(resolve => setTimeout(() => resolve(value), ms));\r\n};\r\n\r\nexport class AsyncWorker {\r\n private timeoutCallbacks: TimeoutCallback[] = [];\r\n private startCallback: () => any = () => {};\r\n private successCallback: () => any = () => {};\r\n private errorCallback: (error: any) => any = () => {};\r\n private stoppedCallback: () => any = () => {};\r\n\r\n private _executionState: ExecutionStates = ExecutionStates.Idle;\r\n get executionState(): ExecutionStates {\r\n return this._executionState;\r\n }\r\n\r\n //FIXME: Switch to AbortController\r\n private cancellationTokenSource?: CancellationTokenSource;\r\n\r\n constructor() {}\r\n\r\n async start(work: (cancellationToken: CancellationToken) => Promise, options?: StartOptions) {\r\n if (this._executionState !== ExecutionStates.Idle) {\r\n throw 'Cannot start already running async worker';\r\n }\r\n\r\n let defaultOptions: StartOptions = {\r\n throwOnStop: true,\r\n };\r\n options ||= {};\r\n options = Object.assign({}, defaultOptions, options);\r\n\r\n this._executionState = ExecutionStates.Running;\r\n this.cancellationTokenSource = new CancellationTokenSource();\r\n this.cancellationTokenSource.throwOnCancel = options?.throwOnStop ?? defaultOptions.throwOnStop ?? true;\r\n let cancellationToken = this.cancellationTokenSource.token;\r\n let timeoutTokenSource = new CancellationTokenSource();\r\n\r\n if (this.startCallback) this.startCallback();\r\n\r\n let workPromise = work(cancellationToken);\r\n let continuationPromise = workPromise.then(\r\n result => {\r\n timeoutTokenSource.cancel();\r\n this._executionState = ExecutionStates.Stopping;\r\n if (this.successCallback && !cancellationToken.isCancelled) {\r\n return this.successCallback();\r\n }\r\n return result;\r\n },\r\n error => {\r\n timeoutTokenSource.cancel();\r\n this._executionState = ExecutionStates.Stopping;\r\n if (this.errorCallback) {\r\n return this.errorCallback(error);\r\n } else {\r\n // Throw the error again since there\r\n // isn't a callback to send it to\r\n throw error;\r\n }\r\n },\r\n );\r\n\r\n // We process the timeouts without awaiting\r\n let _ = this.processTimeouts(timeoutTokenSource.token);\r\n\r\n // When the work is done, set the state back to idle\r\n await continuationPromise;\r\n this._executionState = ExecutionStates.Idle;\r\n }\r\n\r\n private async processTimeouts(token: CancellationToken) {\r\n for (let timeoutCallback of this.timeoutCallbacks) {\r\n await delayAsync(timeoutCallback.ms);\r\n // The token will be cancelled when the work finishes,\r\n // resolve or reject. This is needed in addition to the\r\n // executionState check which follows. A long timeout delay\r\n // might mean we reach this point after the worker entered\r\n // idle and been started again. The token would ensure we\r\n // stop processing timeouts for the previous worker run.\r\n if (token.isCancelled) break;\r\n // Hack: TypeScript incorrectly assumes the _executionState\r\n // is always running since it doesn't see the options of\r\n // the promise chain as part of the execution path.\r\n // We can work around the problem by try-casting it to\r\n // tempExecutionState.\r\n let tempExecutionState = this._executionState as ExecutionStates;\r\n if (tempExecutionState != ExecutionStates.Running) break;\r\n if (timeoutCallback.callback) {\r\n let callbackResult = timeoutCallback.callback();\r\n let callbackPromise = Promise.resolve(callbackResult);\r\n await callbackPromise;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Note: The stopped callback won't be reached if\r\n * cancellation is set to throw (which is the default).\r\n * This can be changed with the options passed to start.\r\n * */\r\n stop() {\r\n if (this._executionState !== ExecutionStates.Running) {\r\n return;\r\n }\r\n this.cancellationTokenSource?.cancel();\r\n if (this.stoppedCallback) this.stoppedCallback();\r\n }\r\n\r\n withTimeout(ms: number, callback: () => any): AsyncWorker {\r\n let timeoutCallback: TimeoutCallback = { ms, callback };\r\n this.timeoutCallbacks.push(timeoutCallback);\r\n return this;\r\n }\r\n\r\n onStart(callback: () => any): AsyncWorker {\r\n this.startCallback = callback;\r\n return this;\r\n }\r\n\r\n onSuccess(callback: () => any): AsyncWorker {\r\n this.successCallback = callback;\r\n return this;\r\n }\r\n\r\n onError(callback: (error: any) => any): AsyncWorker {\r\n this.errorCallback = callback;\r\n return this;\r\n }\r\n\r\n onStop(callback: () => any): AsyncWorker {\r\n this.stoppedCallback = callback;\r\n return this;\r\n }\r\n}\r\n\r\nexport enum ExecutionStates {\r\n Idle,\r\n Running,\r\n Stopping,\r\n}\r\n","/**\r\n * Generics free interface for a Command\r\n */\r\nexport interface Command {\r\n readonly result: Promise;\r\n readonly hasExecuted: boolean;\r\n\r\n execute(): Promise;\r\n}\r\n\r\n/**\r\n * Base class for a command\r\n */\r\nexport abstract class CommandBase implements Command {\r\n constructor() {\r\n this._result = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n\r\n private _result: Promise;\r\n get result(): Promise {\r\n return this._result;\r\n }\r\n\r\n private resolve = (value: any | PromiseLike): void => {};\r\n private reject = (reason?: any): void => {};\r\n\r\n private _syncedCommand: Command;\r\n public get syncedCommand(): Command {\r\n return this._syncedCommand;\r\n }\r\n\r\n /***\r\n * Syncing this command to another means this command cannot be executed,\r\n * and the result promise will resolve or reject based on the synced\r\n * command.\r\n */\r\n protected sync(command: Command) {\r\n if (this._syncedCommand)\r\n throw 'An attempt was made to sync a command that is already synced.';\r\n\r\n this._syncedCommand = command;\r\n command.result\r\n .then(value => this.resolve(value))\r\n .catch(err => this.reject(err));\r\n }\r\n\r\n private _hasExecuted = false;\r\n get hasExecuted(): boolean {\r\n return this._hasExecuted;\r\n }\r\n\r\n async execute(): Promise {\r\n if (this._hasExecuted)\r\n throw 'An attempt was made to execute an already executed command.';\r\n\r\n if (this._syncedCommand)\r\n throw 'An attempt was made to execute a command that is synced to another.';\r\n\r\n this._hasExecuted = true;\r\n try {\r\n let value = await this.doWork();\r\n this.resolve(value);\r\n } catch (err) {\r\n this.reject(err);\r\n }\r\n await this.result;\r\n }\r\n\r\n protected abstract doWork(): Promise;\r\n}\r\n\r\n/**\r\n * Helper command for flush notifications\r\n */\r\nclass FlushNotificationCommand extends CommandBase {\r\n constructor(public message: string) {\r\n super();\r\n }\r\n protected async doWork(): Promise {\r\n // No work required\r\n }\r\n}\r\n\r\n/**\r\n * The default commandStream (can be extended)\r\n */\r\nexport class CommandStream {\r\n private commands: Command[] = [];\r\n private _bufferedCommandsQueue: Command[] = [];\r\n private _bufferedCommands: Command[] = [];\r\n get bufferedCommands(): T[] {\r\n // The buffered commands are only accurate if we include any queued\r\n // commands. It's safe (and necessary) to do this even while processing\r\n // the buffer. An override of the rebuildBuffer would use this to get\r\n // access to buffer changes if executing async (such as the rebuild using\r\n // await on a delayAsync)\r\n this.moveBufferQueueToBuffer();\r\n\r\n return [...(this._bufferedCommands)];\r\n }\r\n\r\n private _isPaused: boolean = false;\r\n get isPaused(): boolean {\r\n return this._isPaused;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Add a command to the buffer and processes the buffer\r\n */\r\n add(command: T) {\r\n if (command.hasExecuted) throw 'Unable to buffer already executed command';\r\n\r\n // When the buffer is processing we queue the commands for the buffer. This\r\n // prevents commands from being lost due to a buffer rebuild.\r\n if (this.isBufferProcessing) {\r\n this._bufferedCommandsQueue.push(command);\r\n this.onCommandAdded();\r\n return;\r\n }\r\n\r\n this._bufferedCommands.push(command);\r\n this.onCommandAdded();\r\n this.processBuffer();\r\n }\r\n\r\n protected get commandsCount(): number {\r\n const commandsCount =\r\n this._bufferedCommandsQueue.length +\r\n this._bufferedCommands.length +\r\n this.commands.length;\r\n return commandsCount;\r\n }\r\n\r\n pause() {\r\n this._isPaused = true;\r\n }\r\n\r\n resume() {\r\n this._isPaused = false;\r\n this.processCommands();\r\n }\r\n\r\n private isBufferProcessing = false;\r\n private async processBuffer() {\r\n if (this.isBufferProcessing) return;\r\n\r\n this.isBufferProcessing = true;\r\n this.moveBufferQueueToBuffer();\r\n\r\n // Rebuild the buffer as needed\r\n this._bufferedCommands = await this.rebuildBuffer();\r\n\r\n // Take the top command from the buffer and add it to the list of commands for processing\r\n let hasBufferedCommands = this._bufferedCommands.length > 0;\r\n if (hasBufferedCommands) {\r\n // Remove the first element from the buffer and move it to the commands\r\n let nextCommand = this._bufferedCommands.shift();\r\n this.addCommand(nextCommand);\r\n }\r\n\r\n this.moveBufferQueueToBuffer();\r\n this.isBufferProcessing = false;\r\n\r\n let shouldProcessBuffer = this._bufferedCommands.length > 0;\r\n if (shouldProcessBuffer) this.processBuffer();\r\n }\r\n\r\n private moveBufferQueueToBuffer() {\r\n // Move the commands from bufferedCommandsQueue (commands added during buffer\r\n // processing) to the buffer and clear the bufferedCommandsQueue.\r\n this._bufferedCommands.push(...this._bufferedCommandsQueue);\r\n this._bufferedCommandsQueue = [];\r\n }\r\n\r\n // Intended to be overridden in derived commandStream\r\n protected async rebuildBuffer() {\r\n return this._bufferedCommands;\r\n }\r\n\r\n protected onCommandAdded() {\r\n // Intended to be overridden in derived commandStream\r\n }\r\n\r\n // Adds a command and processes\r\n private addCommand(command: Command) {\r\n this.commands.push(command);\r\n this.processCommands();\r\n }\r\n\r\n private commandSuccessCallbacks: ((command: Command) => void)[] = [];\r\n onCommandSuccess(callback: (command: Command) => void): () => void {\r\n this.commandSuccessCallbacks.push(callback);\r\n let callbackDetach = () => {\r\n let callbackIndex = this.commandSuccessCallbacks.indexOf(callback);\r\n if (callbackIndex == -1) return;\r\n this.commandSuccessCallbacks.splice(callbackIndex, 1);\r\n };\r\n return callbackDetach;\r\n }\r\n\r\n private raiseCommandSuccess(command: Command) {\r\n this.commandSuccessCallbacks.forEach(c => c(command));\r\n }\r\n\r\n private isProcessing = false;\r\n private async processCommands() {\r\n if (this.isPaused) return;\r\n\r\n if (this.isProcessing) return;\r\n this.isProcessing = true;\r\n\r\n let hasCommands = this.commands.length > 0;\r\n if (hasCommands) {\r\n let nextCommand = this.commands.shift();\r\n\r\n try {\r\n await this.executeCommand(nextCommand);\r\n this.raiseCommandSuccess(nextCommand);\r\n } catch (error) {\r\n console.error(error);\r\n this.pause();\r\n }\r\n }\r\n\r\n this.isProcessing = false;\r\n hasCommands = this.commands.length > 0;\r\n if (hasCommands) this.processCommands();\r\n }\r\n\r\n protected async executeCommand(command: Command) {\r\n await command.execute();\r\n }\r\n\r\n /**\r\n * Buffer a command that does nothing, but can be used to notify\r\n * when the command stream has been executed up to that point.\r\n * Note: New commands can still be added to the buffer while\r\n * flushing. The expectation is not to block the stream from\r\n * adding new commands, but to guarantee that when the flush\r\n * promise resolves, all buffered commands (at the time the\r\n * flush was requested) have completed.\r\n */\r\n flush(message: string = ''): Promise {\r\n let flushNotificationCommand = new FlushNotificationCommand(message);\r\n this.add((flushNotificationCommand)); // Hacky type conversion\r\n return flushNotificationCommand.result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HateoasResourceService,\r\n Include,\r\n Resource,\r\n} from '@lagoshny/ngx-hateoas-client';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { AsyncWorker } from 'src/shared-utilities/async-helpers/async-worker/async-worker';\r\nimport { delayAsync } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport {\r\n SaveErrorService,\r\n SaveErrorStates,\r\n} from '../../error/save-error-overlay/save-error.service';\r\nimport { Command, CommandBase, CommandStream } from './command-stream';\r\nimport { ResourceContext } from './resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResourceCommandStream extends CommandStream {\r\n private defaultDebounceTimeInMilliseconds = 400;\r\n\r\n constructor(private saveErrorService: SaveErrorService) {\r\n super();\r\n }\r\n\r\n private rebuildBufferDelayAbortController: AbortController | undefined;\r\n\r\n protected async rebuildBuffer(): Promise {\r\n // Getting the buffered commands reaches the get property, which will move any queued buffered commands\r\n // into the buffered commands.\r\n\r\n let bufferedCommands = this.bufferedCommands;\r\n let previousSequentialPatchCommandsCount = 0;\r\n\r\n let sequentialPatchCommands =\r\n this.getSequentialPatchCommands(bufferedCommands);\r\n let sequentialPatchCommandsCount = sequentialPatchCommands.length;\r\n\r\n // If the sequentialPatchCommandsCount doesn't match the previous count, than we're still adding\r\n // new patch commands and can continue to wait.\r\n let waitForNewPatchCommands =\r\n sequentialPatchCommandsCount != previousSequentialPatchCommandsCount;\r\n\r\n // Continue to wait the debounce amount while the sequentialPatchCommandsCount\r\n // grows. This can happen if patch commands for the same resource (same key) are\r\n // being added to the buffer while the delay is waiting.\r\n while (waitForNewPatchCommands) {\r\n this.rebuildBufferDelayAbortController ??= new AbortController();\r\n const abortSignal = this.rebuildBufferDelayAbortController.signal;\r\n\r\n try {\r\n await delayAsync(this.defaultDebounceTimeInMilliseconds, abortSignal);\r\n } catch {\r\n /* Do nothing! */\r\n }\r\n\r\n if (abortSignal.aborted) {\r\n this.rebuildBufferDelayAbortController = new AbortController();\r\n }\r\n\r\n // Get an updated set of the buffered commands since they may have changed during the delay\r\n bufferedCommands = this.bufferedCommands;\r\n\r\n previousSequentialPatchCommandsCount = sequentialPatchCommandsCount;\r\n sequentialPatchCommands =\r\n this.getSequentialPatchCommands(bufferedCommands);\r\n sequentialPatchCommandsCount = sequentialPatchCommands.length;\r\n waitForNewPatchCommands =\r\n sequentialPatchCommandsCount != previousSequentialPatchCommandsCount;\r\n }\r\n\r\n // Remove the rebuildBufferDelayAbortController since we're done processing, and we don't want\r\n // calls to \"onCommandAdded\" to trigger the abort before the next loop of the rebuild starts.\r\n delete this.rebuildBufferDelayAbortController;\r\n\r\n // Collapse the sequentialPatchCommands if more than 1 is found\r\n if (sequentialPatchCommandsCount > 1) {\r\n const collapsedPatchCommand = sequentialPatchCommands[0];\r\n for (let i = 1; i < sequentialPatchCommands.length; i++) {\r\n const mergeCommand = sequentialPatchCommands[i];\r\n collapsedPatchCommand.merge(mergeCommand);\r\n }\r\n // Remove resources that have been merged down\r\n bufferedCommands.splice(1, sequentialPatchCommandsCount - 1);\r\n }\r\n\r\n // Returns the rebuilt bufferedCommands\r\n return bufferedCommands;\r\n }\r\n\r\n private getSequentialPatchCommands(\r\n bufferedCommands: ResourceCommand[],\r\n ): PatchResourceCommand[] {\r\n let sequentialPatchCommands: PatchResourceCommand[] = [];\r\n let previousCommandKey = '';\r\n for (let command of bufferedCommands) {\r\n let isPatchCommand = command instanceof PatchResourceCommand;\r\n if (!isPatchCommand) break;\r\n\r\n let patchCommand = command as PatchResourceCommand;\r\n\r\n let currentCommandKey = patchCommand.key;\r\n previousCommandKey ||= patchCommand.key;\r\n if (currentCommandKey != previousCommandKey) break;\r\n\r\n sequentialPatchCommands.push(patchCommand);\r\n }\r\n return sequentialPatchCommands;\r\n }\r\n\r\n protected override onCommandAdded() {\r\n this.rebuildBufferDelayAbortController?.abort('Cancelled');\r\n }\r\n\r\n protected override async executeCommand(command: Command): Promise {\r\n let asyncWorker = new AsyncWorker()\r\n .withTimeout(\r\n 1,\r\n\r\n () => (this.saveErrorService.state = SaveErrorStates.slow),\r\n )\r\n .onError(() => (this.saveErrorService.state = SaveErrorStates.failed))\r\n .onSuccess(() => {\r\n // If we were slow, and there are commands remaining, don't clear the slow state.\r\n const isSlow = this.saveErrorService.state == SaveErrorStates.slow;\r\n const hasCommands = this.commandsCount > 0;\r\n if (isSlow && hasCommands) return;\r\n\r\n this.saveErrorService.state = SaveErrorStates.noError;\r\n });\r\n\r\n await asyncWorker.start(async () => {\r\n // await delayAsync(1000); // Testing. Uncomment to test slow state.\r\n return await command.execute();\r\n });\r\n }\r\n}\r\n\r\nexport interface ResourceCommand extends Command {}\r\n\r\nexport abstract class ResourceCommandBase\r\n extends CommandBase\r\n implements ResourceCommand\r\n{\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\nexport class PostResourceCommand<\r\n T extends Resource,\r\n> extends ResourceCommandBase {\r\n constructor(\r\n private parentResource: Resource,\r\n private relationName: string,\r\n public readonly resource?: Partial,\r\n ) {\r\n super();\r\n }\r\n\r\n protected async doWork(): Promise {\r\n let postResource$ = this.parentResource.postRelation(this.relationName, {\r\n body: this.resource,\r\n });\r\n\r\n return await lastValueFrom(postResource$);\r\n }\r\n}\r\n\r\nexport class PatchResourceCommand<\r\n T extends Resource,\r\n> extends ResourceCommandBase {\r\n get key(): string {\r\n return ResourceContext.getResourceKey(this.resource);\r\n }\r\n\r\n constructor(\r\n public readonly resource: T,\r\n public snapshot: Partial,\r\n private hateoasResourceService: HateoasResourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n protected override async doWork(): Promise {\r\n //bail if the snapshot is empty\r\n if (this.snapshot && Object.keys(this.snapshot).length === 0) return;\r\n\r\n let patchResource$ = this.hateoasResourceService.patchResource(\r\n this.resource,\r\n {\r\n body: this.snapshot,\r\n valuesOption: {\r\n include: Include.NULL_VALUES,\r\n },\r\n },\r\n );\r\n\r\n return await lastValueFrom(patchResource$);\r\n }\r\n\r\n merge(command: PatchResourceCommand, sync: boolean = true) {\r\n if (command.key != this.key)\r\n throw 'Cannot merge commands with mismatched keys';\r\n\r\n Object.assign(this.snapshot, command.snapshot);\r\n\r\n // Merged commands will be removed from the buffer,\r\n // but it's still possibly useful to know when the\r\n // work is completed. Syncing the result will make\r\n // its result promise resolve when the command handling\r\n // the work resolves.\r\n if (sync) command.sync(this);\r\n }\r\n}\r\n\r\nexport class DeleteResourceCommand<\r\n T extends Resource,\r\n> extends ResourceCommandBase {\r\n constructor(\r\n public readonly resource: T,\r\n private hateoasResourceService: HateoasResourceService,\r\n private params: any = null,\r\n ) {\r\n super();\r\n }\r\n\r\n protected override async doWork(): Promise {\r\n let deleteResource$ = this.hateoasResourceService.deleteResource(\r\n this.resource,\r\n { params: this.params },\r\n );\r\n return await lastValueFrom(deleteResource$);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HateoasResourceService, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { Subscription } from 'rxjs';\r\nimport { ResourceCommandStream } from './resource-command-stream.service';\r\nimport { ResourceContext } from './resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResourceContextStore {\r\n constructor(\r\n private commandStream: ResourceCommandStream,\r\n private hateoasResourceService: HateoasResourceService,\r\n ) {}\r\n\r\n private _contextDictionary: { [key: string]: ResourceContext } = {};\r\n private _resourceEventsSubscriptions: { [key: string]: Subscription } = {};\r\n\r\n public reset() {\r\n for (let key in this._contextDictionary) {\r\n this.removeByKey(key);\r\n }\r\n this._contextDictionary = {};\r\n this._resourceEventsSubscriptions = {};\r\n }\r\n\r\n public flush(message: string = '') {\r\n return this.commandStream.flush(message);\r\n }\r\n\r\n public getByKey(key: string): ResourceContext {\r\n return >this._contextDictionary[key];\r\n }\r\n\r\n public getByResource(\r\n resource: T,\r\n createIfNotExists: boolean = true,\r\n ): ResourceContext {\r\n if (!resource) return;\r\n const key = ResourceContext.getResourceKey(resource);\r\n const context = this.getByKey(key);\r\n if (!context && createIfNotExists) {\r\n return this.add(resource);\r\n }\r\n return this.getByKey(key);\r\n }\r\n\r\n public add(resource: T): ResourceContext {\r\n const key = ResourceContext.getResourceKey(resource);\r\n if (this._contextDictionary[key]) return;\r\n\r\n const context = new ResourceContext(\r\n resource,\r\n this.commandStream,\r\n this.hateoasResourceService,\r\n );\r\n this._contextDictionary[key] = context;\r\n\r\n return this.getByKey(key);\r\n }\r\n\r\n public removeByResource(resource: T) {\r\n const key = ResourceContext.getResourceKey(resource);\r\n this.removeByKey(key);\r\n }\r\n\r\n public removeByKey(key: string) {\r\n let resource = this._contextDictionary[key];\r\n if (!resource) return;\r\n this._resourceEventsSubscriptions[key]?.unsubscribe();\r\n delete this._resourceEventsSubscriptions[key];\r\n delete this._contextDictionary[key];\r\n }\r\n}\r\n","export class SnapshotProvider {\r\n public static capture(source: T, deep: boolean = false): T {\r\n let snapshot: any = {};\r\n for (let property in source) {\r\n if (\r\n source[property] instanceof Object &&\r\n !(source[property] instanceof Date)\r\n ) {\r\n if (deep) {\r\n snapshot[property] = SnapshotProvider.capture(source[property], deep);\r\n }\r\n } else {\r\n snapshot[property] = source[property];\r\n }\r\n }\r\n return snapshot as T;\r\n }\r\n\r\n public static diff(\r\n original: T,\r\n updated: T,\r\n keys: string[] = null,\r\n excludedKeys: string[] = ['_links'],\r\n ) {\r\n let diffObj: any = {};\r\n keys ??= Object.keys(original);\r\n keys = keys.filter(k => !excludedKeys.includes(k));\r\n\r\n for (let key of keys) {\r\n let updatedValue = updated[key];\r\n let originalValue = original[key];\r\n if (originalValue == updatedValue) {\r\n continue;\r\n }\r\n diffObj[key] = updatedValue;\r\n }\r\n return diffObj;\r\n }\r\n}\r\n","import { HateoasResourceService, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport {\r\n DeleteResourceCommand,\r\n PatchResourceCommand,\r\n PostResourceCommand,\r\n ResourceCommand,\r\n ResourceCommandStream,\r\n} from './resource-command-stream.service';\r\nimport { SnapshotProvider } from './snapshot-provider';\r\n\r\n// Goals:\r\n// - Capture snapshot (storing state)\r\n// - Post, Patch, Delete\r\n\r\nexport class ResourceContext {\r\n private modelSnapshot: T;\r\n\r\n private _key: string;\r\n public get key(): string {\r\n return this._key;\r\n }\r\n\r\n constructor(\r\n private model: T,\r\n private commandStream: ResourceCommandStream,\r\n private hateoasResourceService: HateoasResourceService,\r\n ) {\r\n this._key = ResourceContext.getResourceKey(model);\r\n this.captureSnapshot();\r\n }\r\n\r\n public static getResourceKey(resource: T) {\r\n return resource['_links']['self'].href;\r\n }\r\n\r\n private captureSnapshot() {\r\n this.modelSnapshot = SnapshotProvider.capture(this.model, false);\r\n }\r\n post(\r\n relationName: string,\r\n resource: any = {},\r\n addToStream: boolean = true,\r\n ): ResourceCommand {\r\n this.captureSnapshot();\r\n let command = new PostResourceCommand(this.model, relationName, resource);\r\n\r\n if (addToStream) {\r\n this.commandStream.add(command);\r\n }\r\n\r\n return command;\r\n }\r\n\r\n //replace the model\r\n set(newModel: T | Partial) {\r\n this.model = newModel;\r\n }\r\n\r\n //update the model\r\n update(newModel: T | Partial) {\r\n this.model = Object.assign(this.model, newModel);\r\n }\r\n\r\n patch(addToStream: boolean = true): PatchResourceCommand {\r\n let diff = SnapshotProvider.diff(this.modelSnapshot, this.model);\r\n this.captureSnapshot();\r\n\r\n let command = new PatchResourceCommand(\r\n this.model,\r\n diff,\r\n this.hateoasResourceService,\r\n );\r\n\r\n if (addToStream) {\r\n this.commandStream.add(command);\r\n }\r\n\r\n return command;\r\n }\r\n\r\n delete(params: any = null, addToStream: boolean = true): ResourceCommand {\r\n let command = new DeleteResourceCommand(\r\n this.model,\r\n this.hateoasResourceService,\r\n params,\r\n );\r\n\r\n if (addToStream) {\r\n this.commandStream.add(command);\r\n }\r\n\r\n return command;\r\n }\r\n\r\n flush(message: string = ''): Promise {\r\n return this.commandStream.flush(message);\r\n }\r\n}\r\n\r\nexport class ResourceHelper {\r\n public static GetKey(resource: Resource) {\r\n return resource['_links']['self'].href;\r\n }\r\n}\r\n","import { HateoasResourceService, Resource } from '@lagoshny/ngx-hateoas-client';\r\nimport { BaseResource } from '@lagoshny/ngx-hateoas-client/lib/model/resource/base-resource';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nclass NodePath {\r\n static create(path: NodePath | string): NodePath {\r\n if (path instanceof NodePath) return path;\r\n return new NodePath(path);\r\n }\r\n\r\n public static readonly Root: NodePath = new NodePath('$');\r\n\r\n constructor(public raw: string) {\r\n let splitPath = raw.split('.');\r\n\r\n this.depth = [...splitPath].length;\r\n this.name = [...splitPath].pop();\r\n\r\n if (this.depth > 1) {\r\n let parentRaw = [...splitPath].slice(0, -1).join('.');\r\n this.parent = new NodePath(parentRaw);\r\n }\r\n }\r\n\r\n getParentAtDepth(depth: number): NodePath {\r\n let maxDepth = this.depth;\r\n if (depth < 1)\r\n throw `Unable to get path depth lower than 1 for ${this.raw}`;\r\n if (depth > maxDepth)\r\n throw `Unable to get parent path at depth ${depth}. Path at ${this.raw} only has ${maxDepth} levels.`;\r\n\r\n let pathAtResolvedDepth: NodePath = this;\r\n for (let d = maxDepth - 1; d >= depth; d--) {\r\n pathAtResolvedDepth = pathAtResolvedDepth.parent;\r\n }\r\n return pathAtResolvedDepth;\r\n }\r\n\r\n isMatch(path: NodePath) {\r\n return this.raw == path.raw;\r\n }\r\n\r\n readonly depth: number;\r\n readonly name: string;\r\n readonly parent?: NodePath;\r\n}\r\n\r\nexport interface RootResourceTreeCriteriaOptions {\r\n useCache?: boolean;\r\n params?: any;\r\n headers?: HttpHeaders;\r\n}\r\n\r\nexport interface ResourceTreeCriteriaOptions\r\n extends RootResourceTreeCriteriaOptions {\r\n isArray?: boolean;\r\n link?: string;\r\n headers?: HttpHeaders;\r\n}\r\n\r\nexport class ResourceTreeCriteria {\r\n constructor(\r\n public resourceFactory: new () => T,\r\n public rootUrl: string,\r\n public options?: RootResourceTreeCriteriaOptions,\r\n ) {}\r\n\r\n public readonly nodesCriteria: ResourceTreeNodeCriteria[] = [];\r\n\r\n include(\r\n path: string,\r\n options?: ResourceTreeCriteriaOptions,\r\n ): ResourceTreeCriteria {\r\n let nodeCriteria = new ResourceTreeNodeCriteria(path, options);\r\n this.nodesCriteria.push(nodeCriteria);\r\n return this;\r\n }\r\n\r\n findNodesCriteriaByPath(path: string): ResourceTreeNodeCriteria {\r\n return this.nodesCriteria.find(c => c.path.raw == path);\r\n }\r\n\r\n getChildNodesCriteria(path: NodePath) {\r\n let childNodesCriteria = this.nodesCriteria.filter(n => {\r\n let nodeParentPath = n.path.parent;\r\n if (!nodeParentPath) return false;\r\n return nodeParentPath.isMatch(path);\r\n });\r\n return childNodesCriteria;\r\n }\r\n}\r\n\r\nexport class ResourceTreeNodeCriteria {\r\n path: NodePath;\r\n\r\n constructor(path: string, public options?: ResourceTreeCriteriaOptions) {\r\n this.path = new NodePath(path);\r\n }\r\n}\r\n\r\nexport class ResourceTree {\r\n constructor(\r\n private criteria: ResourceTreeCriteria,\r\n private hateoasResourceService: HateoasResourceService,\r\n ) {}\r\n\r\n async load(): Promise {\r\n let rootResourceLoader = new RootResourceLoader(\r\n this.hateoasResourceService,\r\n this.criteria.resourceFactory,\r\n this.criteria.rootUrl,\r\n this.criteria.options,\r\n );\r\n\r\n let resource = await rootResourceLoader.load();\r\n\r\n let resources = [resource];\r\n\r\n await this.loadResourceChildren(NodePath.Root, resources);\r\n\r\n return resource;\r\n }\r\n\r\n private async loadSpecificChildResources(\r\n parents: BaseResource[],\r\n childNodesCriteria: ResourceTreeNodeCriteria[],\r\n ) {\r\n let relatedResourceLoadPromises: Promise[] = [];\r\n for (let childNodeCriteria of childNodesCriteria) {\r\n for (let parent of parents) {\r\n let relatedResourceLoader = new RelatedResourceLoader(\r\n parent,\r\n childNodeCriteria.path,\r\n childNodeCriteria.options,\r\n );\r\n let relatedResourceLoadPromise = relatedResourceLoader.load();\r\n relatedResourceLoadPromises.push(relatedResourceLoadPromise);\r\n }\r\n }\r\n\r\n // Recursion fun\r\n let childLoadingPromises: Promise[] = [];\r\n for (let relatedResourceLoadPromise of relatedResourceLoadPromises) {\r\n let resourcePath = await relatedResourceLoadPromise;\r\n if (!resourcePath) continue;\r\n let loadChildResourcesPromise = this.loadResourceChildren(\r\n resourcePath.path,\r\n resourcePath.resources,\r\n );\r\n childLoadingPromises.push(loadChildResourcesPromise);\r\n }\r\n await Promise.all(childLoadingPromises);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' and contacts for all borrowers will be loaded\r\n async loadPath(root: TRootResource, path: string) {\r\n let parents = this.getParents(root, path);\r\n await this.loadPathForParents(path, parents);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' and parent borrowers (1...*) would load the contact\r\n // and contact child resources for those borrowers\r\n // Note parents are required.\r\n async loadPathForParents(path: string, parents: BaseResource[]) {\r\n let childNodeCriteria = this.criteria.findNodesCriteriaByPath(path);\r\n await this.loadSpecificChildResources(parents, [childNodeCriteria]);\r\n }\r\n\r\n // Example:\r\n // Path: '$.borrowers.contact' will load all child data.\r\n // A resource is required.\r\n async loadResourceChildren(\r\n path: string | NodePath,\r\n resources: BaseResource[],\r\n ) {\r\n let nodePath = NodePath.create(path);\r\n let childNodesCriteria = this.criteria.getChildNodesCriteria(nodePath);\r\n await this.loadSpecificChildResources(resources, childNodesCriteria);\r\n }\r\n\r\n // TODO: loadResourceOnParent. Path + Resource. Pull resource via self link, load\r\n // its children (via loadResourceChildren) then replace the resource on the\r\n // tree (that part's tricky).\r\n\r\n // Will return parent objects matching the path.\r\n // Note: the return type is always an array, even if only one parent is expected\r\n // Examples:\r\n // '$.borrowers.contacts' will return an array of all contacts\r\n // '$.borrowers.contacts.addresses' will return an array of all addresses\r\n getResources(\r\n root: TRootResource,\r\n path: string,\r\n ): TResource[] {\r\n let currentPath = NodePath.Root;\r\n let targetPath = new NodePath(path);\r\n let parents = [root];\r\n return this.getChildResources(\r\n currentPath,\r\n targetPath,\r\n parents,\r\n ) as TResource[];\r\n }\r\n\r\n private getChildResources(\r\n path: NodePath,\r\n targetPath: NodePath,\r\n parents: BaseResource[],\r\n ): BaseResource[] {\r\n let currentDepth = path.depth;\r\n let targetDepth = targetPath.depth;\r\n\r\n // Goal reached, stop the recursion\r\n if (currentDepth == targetDepth) return parents;\r\n\r\n let nextDepth = currentDepth + 1;\r\n let nextPath = targetPath.getParentAtDepth(nextDepth);\r\n\r\n // Get the children for the next path\r\n let children: BaseResource[] = [];\r\n for (let parent of parents) {\r\n let childValue = parent[nextPath.name];\r\n if (!childValue) continue;\r\n let childValues = Array.isArray(childValue) ? childValue : [childValue];\r\n children.push(...childValues);\r\n }\r\n\r\n // The children from this depth become the parents for the next\r\n let nextChildren = this.getChildResources(nextPath, targetPath, children);\r\n return nextChildren;\r\n }\r\n\r\n getParents(\r\n root: TRootResource,\r\n path: string,\r\n ): TParent[] {\r\n let childPath = new NodePath(path);\r\n let parentPath = childPath.parent;\r\n return this.getResources(root, parentPath.raw);\r\n }\r\n}\r\n\r\nclass RootResourceLoader {\r\n constructor(\r\n private hateoasResourceService: HateoasResourceService,\r\n private resourceFactory: new () => T,\r\n private rootUrl: string,\r\n private options?: ResourceTreeCriteriaOptions,\r\n ) {}\r\n\r\n async load(): Promise {\r\n let resource$ = this.hateoasResourceService.getResource(\r\n this.resourceFactory,\r\n this.rootUrl,\r\n {\r\n useCache: this.options?.useCache,\r\n headers: this.options?.headers,\r\n },\r\n );\r\n\r\n let resource = await lastValueFrom(resource$);\r\n return resource;\r\n }\r\n}\r\n\r\nclass ResourcesPath {\r\n constructor(public resources: BaseResource[], public path: NodePath) {}\r\n}\r\n\r\nclass RelatedResourceLoader {\r\n constructor(\r\n private parent: BaseResource,\r\n private path: NodePath,\r\n private options?: ResourceTreeCriteriaOptions,\r\n ) {}\r\n\r\n async load() {\r\n let relationName = this.options?.link || this.path.name;\r\n\r\n if (this.options?.isArray) {\r\n return await this.loadRelatedCollection(relationName);\r\n }\r\n return await this.loadRelated(relationName);\r\n }\r\n\r\n private getOptionsParams(options: ResourceTreeCriteriaOptions): any {\r\n let useCache = this.options?.useCache ?? false;\r\n let params = this.options?.params;\r\n\r\n if (!useCache) {\r\n params = params || {};\r\n params.noCache = uuidv4();\r\n }\r\n return params;\r\n }\r\n\r\n private async loadRelatedCollection(relationName: string) {\r\n if (!this.parent.hasRelation(relationName)) return null;\r\n\r\n let useCache = this.options?.useCache ?? false;\r\n let params = this.getOptionsParams(this.options);\r\n\r\n let related$ = this.parent.getRelatedCollection(relationName, {\r\n useCache,\r\n params,\r\n headers: this.options?.headers,\r\n });\r\n let related = await lastValueFrom(related$);\r\n\r\n let propertyName = this.path.name;\r\n this.parent[propertyName] = related.resources;\r\n\r\n return new ResourcesPath(related.resources, this.path);\r\n }\r\n\r\n private async loadRelated(relationName: string) {\r\n if (!this.parent.hasRelation(relationName)) return null;\r\n\r\n let useCache = this.options?.useCache ?? false;\r\n let params = this.getOptionsParams(this.options);\r\n\r\n let related$ = this.parent.getRelation(relationName, {\r\n useCache,\r\n params,\r\n headers: this.options?.headers,\r\n });\r\n\r\n let resource = await lastValueFrom(related$);\r\n\r\n let propertyName = this.path.name;\r\n this.parent[propertyName] = resource;\r\n\r\n return new ResourcesPath([resource], this.path);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ClientJourneyContext } from './deal/client-journey-context';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ThemeService {\r\n private _themeType = ThemeTypes.default;\r\n get themeType() {\r\n return this._themeType;\r\n }\r\n\r\n private _tone = ThemeTones.light;\r\n get tone() {\r\n return this._tone;\r\n }\r\n\r\n private className: string;\r\n\r\n constructor(private clientJourneyContext: ClientJourneyContext) {}\r\n\r\n setTheme(themeType: ThemeTypes) {\r\n this._themeType = themeType;\r\n this.updateThemeClass();\r\n }\r\n\r\n setTone(tone: ThemeTones) {\r\n this._tone = tone;\r\n this.updateThemeClass();\r\n }\r\n\r\n updateThemeClass() {\r\n this.removeClass(this.className);\r\n\r\n let themeName: string = this._themeType;\r\n if (this._themeType == ThemeTypes.brokerage) {\r\n themeName = this.clientJourneyContext?.agent?.firmCode?.toLowerCase();\r\n }\r\n\r\n // Fall back to the default if one was not resolved\r\n themeName ||= ThemeTypes.default;\r\n\r\n this.className = `${themeName}-theme-${this._tone}`;\r\n this.addClass(this.className);\r\n }\r\n\r\n private removeClass(className) {\r\n if (!className) return;\r\n document.body.classList.remove(className);\r\n }\r\n\r\n private addClass(className: string) {\r\n if (!document.body.classList.contains(className)) {\r\n document.body.classList.add(className);\r\n }\r\n }\r\n}\r\n\r\nexport enum ThemeTones {\r\n light = 'light',\r\n dark = 'dark',\r\n}\r\n\r\nexport enum ThemeTypes {\r\n default = 'default',\r\n dlc = 'dlc',\r\n mcc = 'mcc',\r\n ma = 'ma',\r\n brokerage = 'brokerage',\r\n}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { ValidationGlobalStore } from 'src/app/utilities/validation/validation-global-store';\r\nimport { Validator } from 'src/app/utilities/validation/validation.interfaces';\r\nimport { ValidatorStoreBase } from 'src/app/utilities/validation/validator-store-base';\r\nimport { ClientJourneyContext } from '../services/deal/client-journey-context';\r\nimport { ClientJourneyValidationMetadata } from './client-journey-validation-metadata';\r\n\r\nexport abstract class ClientJourneyValidatorStoreBase extends ValidatorStoreBase {\r\n private slideState: Ng2StateDeclaration;\r\n\r\n constructor(\r\n globalStore: ValidationGlobalStore,\r\n protected readonly clientJourneyContext: ClientJourneyContext,\r\n menuStateName: string,\r\n ) {\r\n super(globalStore);\r\n\r\n let menuService = clientJourneyContext.menuService;\r\n let slideStates = menuService.getSlideSates();\r\n this.slideState = slideStates.find(s => s.name == menuStateName);\r\n }\r\n\r\n protected override isValidStateChanged(): void {\r\n if (!this.slideState) return;\r\n\r\n let invalidRules = this.getInvalidRules();\r\n let metadata: ClientJourneyValidationMetadata[] = invalidRules.map(\r\n r => r.metadata,\r\n );\r\n let showInvalidMenuState = metadata.some(m => m.showInMenu);\r\n this.slideState.data.isValid = !showInvalidMenuState;\r\n }\r\n}\r\n","import { ValidationGlobalStore } from './validation-global-store';\r\nimport {\r\n ValidatorRule,\r\n ValidatorStore,\r\n Validator,\r\n} from './validation.interfaces';\r\n\r\nexport abstract class ValidatorStoreBase\r\n implements ValidatorStore\r\n{\r\n private validatorsMap = new Map();\r\n\r\n private unhookStateChangedCallbacks: (() => void)[] = [];\r\n\r\n constructor(public readonly globalStore: ValidationGlobalStore) {}\r\n\r\n getRules(): ValidatorRule[] {\r\n let validators = [...this.validatorsMap.values()];\r\n let rules = validators.flatMap(v => v.rules);\r\n return rules;\r\n }\r\n\r\n getInvalidRules(): ValidatorRule[] {\r\n let validators = [...this.validatorsMap.values()];\r\n let invalidRules = validators.flatMap(v => v.invalidRules);\r\n return invalidRules;\r\n }\r\n\r\n getValidRules(): ValidatorRule[] {\r\n let validators = [...this.validatorsMap.values()];\r\n let validRules = validators.flatMap(v => v.validRules);\r\n return validRules;\r\n }\r\n\r\n getRulesByMetadata(\r\n rulePredicate: (metadata: any) => boolean,\r\n ): ValidatorRule[] {\r\n let validators = [...this.validatorsMap.values()];\r\n let rules = validators.flatMap(v =>\r\n v.rules.filter(r => rulePredicate(r.metadata)),\r\n );\r\n return rules;\r\n }\r\n\r\n validateByMetadata(rulePredicate: (metadata: any) => boolean): void {\r\n let rules = this.getRulesByMetadata(rulePredicate);\r\n rules.forEach(r => r.validate());\r\n }\r\n\r\n validate() {\r\n let validators = [...this.validatorsMap.values()];\r\n validators.forEach(v => v.validate());\r\n }\r\n\r\n private _isValid: boolean;\r\n get isValid(): boolean {\r\n return this._isValid;\r\n }\r\n\r\n protected getValidator(key: string): TValidator {\r\n let hasValidator = this.hasValidator(key);\r\n if (!hasValidator) return null;\r\n let validator = this.validatorsMap.get(key);\r\n return validator;\r\n }\r\n\r\n protected addValidator(key: string, validator: TValidator) {\r\n let hasValidator = this.hasValidator(key);\r\n if (hasValidator) {\r\n throw `Validator for key '${key}' is already added to the validation store.`;\r\n }\r\n this.validatorsMap.set(key, validator);\r\n let unhookStateChangedCallback = validator.onStateChanged(validator =>\r\n this.validatorStateChanged(validator),\r\n );\r\n this.unhookStateChangedCallbacks.push(unhookStateChangedCallback);\r\n this.updateValidationState();\r\n return validator;\r\n }\r\n\r\n protected removeValidator(key: string) {\r\n let hasValidator = this.hasValidator(key);\r\n if (!hasValidator) return;\r\n this.validatorsMap.delete(key);\r\n this.updateValidationState();\r\n }\r\n\r\n protected hasValidator(key: string): boolean {\r\n return this.validatorsMap.has(key);\r\n }\r\n\r\n private updateValidationState() {\r\n let validators = [...this.validatorsMap.values()];\r\n let isValid = validators.every(v => v.isValid);\r\n if (this.isValid == isValid) return;\r\n\r\n this._isValid = isValid;\r\n this.isValidStateChanged();\r\n }\r\n\r\n private validatorStateChanged(validator: Validator) {\r\n this.updateValidationState();\r\n }\r\n\r\n // Can be overridden\r\n protected isValidStateChanged() {}\r\n\r\n dispose() {\r\n this.unhookStateChangedCallbacks.forEach(c => c());\r\n }\r\n}\r\n","import { ValidatorRuleBase } from 'src/app/utilities/validation/validator-rule-base';\r\nimport { ModelValidator } from './model-validator';\r\n\r\nexport class ModelValidatorRule<\r\n TModel,\r\n TInput,\r\n TMetadata,\r\n> extends ValidatorRuleBase {\r\n private isValidPredicate: (inputValue: TInput) => boolean;\r\n private shouldValidatePredicate: (model: TModel) => boolean;\r\n\r\n constructor(\r\n private owner: ModelValidator,\r\n key: string,\r\n private inputPredicate: (model: TModel) => TInput,\r\n metadata: any,\r\n ) {\r\n super(key, metadata);\r\n }\r\n\r\n protected override doValidate(): boolean {\r\n if (!this.isValidPredicate) return true;\r\n\r\n let shouldValidate = true;\r\n if (this.shouldValidatePredicate) {\r\n shouldValidate = this.shouldValidatePredicate(this.owner.model);\r\n }\r\n if (!shouldValidate) return true;\r\n\r\n let inputValue = this.inputPredicate(this.owner.model);\r\n let isValid = this.isValidPredicate(inputValue);\r\n\r\n return isValid;\r\n }\r\n\r\n must(\r\n predicate: (inputValue: TInput) => boolean,\r\n ): ModelValidatorRule {\r\n if (this.isValidPredicate) {\r\n throw 'Validation predicate cannot change after being set.';\r\n }\r\n this.isValidPredicate = predicate;\r\n return this;\r\n }\r\n\r\n when(\r\n predicate: (model: TModel) => boolean,\r\n ): ModelValidatorRule {\r\n if (this.shouldValidatePredicate) {\r\n throw 'Validation predicate cannot change after being set.';\r\n }\r\n this.shouldValidatePredicate = predicate;\r\n return this;\r\n }\r\n}\r\n","import { ValidatorRule } from './validation.interfaces';\r\n\r\nexport abstract class ValidatorRuleBase implements ValidatorRule {\r\n private _isValid = true;\r\n get isValid(): boolean {\r\n return this._isValid;\r\n }\r\n\r\n private _hasValidated = false;\r\n get hasValidated(): boolean {\r\n return this._hasValidated;\r\n }\r\n\r\n private stateChangedCallbacks: ((rule: ValidatorRule) => void)[] = [];\r\n onStateChanged(callback: (rule: ValidatorRule) => void): () => void {\r\n this.stateChangedCallbacks.push(callback);\r\n\r\n let detachHandler = () => {\r\n let callbackIndex = this.stateChangedCallbacks.indexOf(callback);\r\n if (callbackIndex == -1) return;\r\n this.stateChangedCallbacks.splice(callbackIndex, 1);\r\n };\r\n return detachHandler;\r\n }\r\n\r\n constructor(\r\n public readonly key: string,\r\n public readonly metadata: TMetadata,\r\n ) {}\r\n\r\n validate(): boolean {\r\n this._hasValidated = true;\r\n let isValid = this.doValidate();\r\n this.setIsValidState(isValid);\r\n return isValid;\r\n }\r\n\r\n protected abstract doValidate(): boolean;\r\n\r\n private setIsValidState(isValidState: boolean) {\r\n if (this._isValid == isValidState) return;\r\n this._isValid = isValidState;\r\n\r\n // Raise the callbacks\r\n for (let stateChangeCallback of this.stateChangedCallbacks) {\r\n stateChangeCallback(this);\r\n }\r\n }\r\n}\r\n","import { ModelValidatorRule } from './model-validator-rule';\r\nimport { ValidatorBase } from '../../../../utilities/validation/validator-base';\r\n\r\nexport class ModelValidator extends ValidatorBase {\r\n private _model: TModel;\r\n get model(): TModel {\r\n return this._model;\r\n }\r\n\r\n constructor(model: TModel) {\r\n super();\r\n this._model = model;\r\n }\r\n\r\n ruleFor(\r\n source: (model: TModel) => TInput,\r\n key: string,\r\n metadata: TMetadata,\r\n ): ModelValidatorRule {\r\n let existingRule = this.getRule(key);\r\n if (existingRule) {\r\n throw `A validation rule for key ${key} has already been created`;\r\n }\r\n\r\n let rule = new ModelValidatorRule(this, key, source, metadata);\r\n this.addRule(rule, key);\r\n return rule;\r\n }\r\n}\r\n","import { ValidatorRule, Validator } from './validation.interfaces';\r\n\r\nexport abstract class ValidatorBase implements Validator {\r\n private rulesMap = new Map();\r\n\r\n private _invalidRules: ValidatorRule[] = [];\r\n get invalidRules(): ValidatorRule[] {\r\n return this._invalidRules;\r\n }\r\n\r\n private _validRules: ValidatorRule[] = [];\r\n get validRules(): ValidatorRule[] {\r\n return this._validRules;\r\n }\r\n\r\n private _isValid: boolean;\r\n get isValid(): boolean {\r\n return this._isValid;\r\n }\r\n\r\n get rules(): ValidatorRule[] {\r\n return [...this.rulesMap.values()];\r\n }\r\n\r\n constructor() {}\r\n\r\n protected addRule(rule: ValidatorRule, key: string): void {\r\n rule.onStateChanged(rule => this.updateResultSets(rule));\r\n this.rulesMap.set(key, rule);\r\n this.updateResultSets(rule);\r\n }\r\n\r\n public getRule(key: string) {\r\n return this.rulesMap.get(key);\r\n }\r\n\r\n validate(key?: string) {\r\n let validationRules: ValidatorRule[];\r\n\r\n // Validate just the key, or validate all rules\r\n if (key) {\r\n let rule = this.getRule(key);\r\n validationRules = [rule];\r\n } else {\r\n validationRules = [...this.rulesMap.values()];\r\n }\r\n\r\n for (let rule of validationRules) {\r\n rule.validate();\r\n }\r\n }\r\n\r\n protected updateResultSets(rule: ValidatorRule) {\r\n // Remove from invalid as needed\r\n let indexInInvalid = this.invalidRules.indexOf(rule);\r\n if (rule.isValid && indexInInvalid != -1) {\r\n this.invalidRules.splice(indexInInvalid, 1);\r\n }\r\n\r\n // Remove from valid as needed\r\n let indexInValid = this.validRules.indexOf(rule);\r\n if (!rule.isValid && indexInValid != -1) {\r\n this.validRules.splice(indexInValid, 1);\r\n }\r\n\r\n // Add to invalid as needed\r\n if (!rule.isValid && indexInInvalid == -1) {\r\n this.invalidRules.push(rule);\r\n }\r\n\r\n // Add to valid as needed\r\n if (rule.isValid && indexInInvalid == -1) {\r\n this.validRules.push(rule);\r\n }\r\n\r\n this.updateIsValidState();\r\n }\r\n\r\n private updateIsValidState() {\r\n let isValid = this._invalidRules.length == 0;\r\n this.setIsValidState(isValid);\r\n }\r\n\r\n private stateChangedCallbacks: ((validator: Validator) => void)[] = [];\r\n onStateChanged(callback: (validator: Validator) => void): () => void {\r\n this.stateChangedCallbacks.push(callback);\r\n\r\n let detachHandler = () => {\r\n let callbackIndex = this.stateChangedCallbacks.indexOf(callback);\r\n if (callbackIndex == -1) return;\r\n this.stateChangedCallbacks.splice(callbackIndex, 1);\r\n };\r\n return detachHandler;\r\n }\r\n\r\n private setIsValidState(isValidState: boolean) {\r\n if (this._isValid == isValidState) return;\r\n this._isValid = isValidState;\r\n\r\n // Raise the callbacks\r\n for (let stateChangeCallback of this.stateChangedCallbacks) {\r\n stateChangeCallback(this);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-assets-switch-confirm-modal',\r\n templateUrl: './assets-switch-confirm-modal.component.html',\r\n styleUrls: ['./assets-switch-confirm-modal.component.scss'],\r\n})\r\nexport class AssetsSwitchConfirmModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Switching asset types will clear any information\r\n you just entered.\r\n

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
","
\r\n\r\n

Assets

\r\n\r\n \r\n\r\n
\r\n

Add an Asset

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n

Gift from family

\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

Household Goods

\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

Vehicle

\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

Life Insurance

\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Did you know?...

\r\n

Some types of Life Insurance can be used as Assets towards your\r\n Mortgage Qualification.

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n

Do you have Life Insurance?

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { UIRouter } from '@uirouter/angular';\r\nimport { AssetsService } from '../assets.service';\r\nimport {\r\n AssetTypes,\r\n BorrowerAsset,\r\n} from '../../../shared/models/deal-resources/borrower-asset.model';\r\nimport { BorrowersService } from '../../borrowers/services/borrowers.service';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AssetsSwitchConfirmModalComponent } from '../modals/assets-switch-confirm-modal/assets-switch-confirm-modal.component';\r\nimport { AssetsRemoveConfirmModalComponent } from '../modals/assets-remove-confirm-modal/assets-remove-confirm-modal.component';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { PrimaryMortgageService } from '../../../shared/services/primary-mortgage.service';\r\nimport { AgentDetails } from '../../../shared/models/agent-resources/agent-resource';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { HasLifeInsuranceOptions } from '../../../shared/models/deal-resources/enumerators';\r\nimport { BorrowerContactService } from '../../borrowers/services/borrower-contact.service';\r\n\r\n@Component({\r\n selector: 'cj-slide-assets',\r\n templateUrl: './asset-edit.component.html',\r\n styleUrls: ['./asset-edit.component.scss'],\r\n animations: animations,\r\n viewProviders: [AssetsService, BorrowersService, BorrowerContactService],\r\n})\r\nexport class AssetEditComponent implements OnInit {\r\n previousBorrowerId: number;\r\n borrowerId: number;\r\n assetId: number;\r\n\r\n asset: BorrowerAsset;\r\n\r\n type: AssetTypes;\r\n AssetTypes = AssetTypes;\r\n\r\n sendAGiftLetter: boolean;\r\n giftFromBorrower: boolean;\r\n\r\n SlidesStateNames = SlidesStateNames;\r\n\r\n agent: AgentDetails;\r\n hasLifeInsuranceOptions = HasLifeInsuranceOptions;\r\n\r\n get borrowerContact() {\r\n return this.borrowerContactService.contact;\r\n }\r\n\r\n //Icons\r\n icon = Icons;\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private assetsService: AssetsService,\r\n private borrowersService: BorrowersService,\r\n private borrowerContactService: BorrowerContactService,\r\n\r\n private clientJourneyContext: ClientJourneyContext,\r\n\r\n private modalService: NgbModal,\r\n ) {\r\n this.agent = clientJourneyContext.agent;\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.borrowerId = +this.uiRouter.globals.params?.borrowerId;\r\n this.assetId = +this.uiRouter.globals.params?.assetId;\r\n\r\n if (!this.borrowerId)\r\n this.borrowerId = this.borrowersService.borrowers[0].id;\r\n\r\n this.assetsService.initialize(this.borrowerId);\r\n await this.borrowerContactService.initialize(this.borrowerId);\r\n\r\n if (this.assetId) {\r\n this.asset = this.assetsService.assets.find(\r\n a => a.assetId == this.assetId,\r\n );\r\n this.type = this.asset?.type;\r\n }\r\n\r\n this.previousBorrowerId = this.borrowerId;\r\n }\r\n\r\n clearAsset() {\r\n if (!!this.asset) {\r\n this.asset.value = undefined;\r\n this.asset.description = undefined;\r\n this.asset.downPaymentAmount = undefined;\r\n }\r\n }\r\n\r\n async onBorrowerIdChange(toBorrowerId: number) {\r\n this.borrowerId = toBorrowerId;\r\n if (!this.asset) return;\r\n\r\n try {\r\n await this.assetsService.swapBorrower(\r\n this.asset?.assetId,\r\n this.previousBorrowerId,\r\n this.borrowerId,\r\n );\r\n } catch (error) {\r\n //TODO: show message?\r\n }\r\n\r\n //route to editing the asset\r\n await this.uiRouter.stateService.go(SlidesStateNames.AssetsEdit, {\r\n borrowerId: toBorrowerId,\r\n assetId: this.assetId,\r\n });\r\n }\r\n\r\n onAssetChange() {\r\n this.assetsService.save(this.asset);\r\n }\r\n\r\n public async onRemoveClick(): Promise {\r\n if (!this.asset) return;\r\n\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n\r\n if (dismiss) return;\r\n\r\n let [_, err] = await handle(this.assetsService.delete(this.asset.assetId));\r\n\r\n // TODO: toast?\r\n if (err) return;\r\n\r\n this.type = null;\r\n }\r\n\r\n async switchType(type: AssetTypes, event: Event) {\r\n if (this.type === type) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (this.isDirty()) {\r\n event.preventDefault();\r\n let switchingIncomeTypeModal = this.showSwitchTypeModal();\r\n let [_, dismiss] = await handle(switchingIncomeTypeModal.result);\r\n if (dismiss) return;\r\n this.clearAsset();\r\n }\r\n\r\n if (!this.asset) this.asset = await this.assetsService.createAsset(type);\r\n\r\n this.type = type;\r\n this.asset.type = this.type;\r\n this.assetsService.save(this.asset);\r\n }\r\n\r\n public onLifeInsuranceOptionsChange() {\r\n this.borrowerContactService.save();\r\n }\r\n\r\n isDirty() {\r\n return (\r\n this.asset?.value ||\r\n this.asset?.description ||\r\n this.asset?.downPaymentAmount\r\n );\r\n }\r\n\r\n private showSwitchTypeModal() {\r\n let config = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n\r\n return this.modalService.open(AssetsSwitchConfirmModalComponent, config);\r\n }\r\n\r\n private showRemoveModal() {\r\n let config = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n\r\n return this.modalService.open(AssetsRemoveConfirmModalComponent, config);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n AccountTypes,\r\n AssetTypes,\r\n BorrowerAsset,\r\n} from '../../../shared/models/deal-resources/borrower-asset.model';\r\nimport { contactFullName } from '../../../shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AssetsSummaryService {\r\n constructor(private clientJourneyContext: ClientJourneyContext) {}\r\n\r\n private assetsName(assetType: AssetTypes) {\r\n if (assetType == AssetTypes.gift)\r\n return $localize`:@@addAsset_tile_giftFromFamily:Gift from Family`;\r\n\r\n if (assetType == AssetTypes.householdGoods)\r\n return $localize`:@@addAsset_tile_householdGoods:Household Goods`;\r\n\r\n if (assetType == AssetTypes.vehicle)\r\n return $localize`:@@addAsset_tile_vehicle:Vehicle`;\r\n\r\n if (assetType == AssetTypes.lifeInsurance)\r\n return $localize`:@@addAsset_tile_insurance:Life Insurance`;\r\n\r\n return '';\r\n }\r\n\r\n public get summary(): BorrowerSummary[] {\r\n let borrowers = this.clientJourneyContext.deal.borrowers.map(borrower => {\r\n let assets =\r\n borrower.assets?.filter(x => !AccountTypes.includes(x.type)) || [];\r\n\r\n let summary = {\r\n id: borrower.id,\r\n order: borrower.order,\r\n name: contactFullName(borrower.contact),\r\n friendlyName: borrower.contact.firstName,\r\n total: assets\r\n .map(x => x.value)\r\n .reduce((total, assetValue) => total + +assetValue, 0),\r\n summaryAssets:\r\n assets\r\n .map(\r\n a =>\r\n {\r\n name: this.assetsName(a.type),\r\n id: a.assetId,\r\n asset: a,\r\n type: a.type,\r\n value: a.value,\r\n isDownPayment: a.value == a.downPaymentAmount,\r\n description: a.description,\r\n },\r\n )\r\n ?.sort((a, b) => (a.name > b.name ? 1 : -1)) || [],\r\n };\r\n\r\n return summary;\r\n });\r\n\r\n return borrowers.sort((a, b) => a.order - b.order);\r\n }\r\n}\r\n\r\nexport interface BorrowerSummary {\r\n id: number;\r\n order: number;\r\n name: string;\r\n\r\n friendlyName: string;\r\n total: number;\r\n summaryAssets: SummaryAsset[];\r\n}\r\n\r\nexport interface SummaryAsset {\r\n id: number;\r\n name: string;\r\n type: string;\r\n value: number;\r\n isDownPayment: boolean;\r\n description: string;\r\n asset: BorrowerAsset;\r\n}\r\n","
\r\n

Assets

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{borrower.name}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

It looks like you haven't added any assets for\r\n {{borrower.friendlyName}} yet

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{asset.name}}

\r\n\r\n
\r\n
\r\n
\r\n

{{asset.description}}

\r\n
\r\n
\r\n

${{asset.value | mask: 'separator':','}}

\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Total:

\r\n

${{borrower.total | mask: 'separator':','}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { AssetsService } from '../assets.service';\r\nimport {\r\n AssetsSummaryService,\r\n BorrowerSummary as BorrowerSummary,\r\n} from './assets-summary.service';\r\n\r\nimport { AssetsRemoveConfirmModalComponent } from '../modals/assets-remove-confirm-modal/assets-remove-confirm-modal.component';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\n\r\n@Component({\r\n selector: 'assets-summary',\r\n templateUrl: './assets-summary.component.html',\r\n styleUrls: ['./assets-summary.component.scss'],\r\n animations: animations,\r\n viewProviders: [AssetsService, AssetsSummaryService],\r\n})\r\nexport class AssetsSummaryComponent implements OnInit, OnChanges {\r\n //Icons\r\n icon = Icons;\r\n\r\n SlidesStateNames = SlidesStateNames;\r\n\r\n _summary: BorrowerSummary[];\r\n public get summary() {\r\n if (!this._summary?.length) this._summary = this.summaryService.summary;\r\n\r\n return this._summary;\r\n }\r\n\r\n @Input() showContinueLink: boolean = true;\r\n @Input() isCompleteView: boolean = true;\r\n @Input() deletedBorrowerId: number = null;\r\n\r\n constructor(\r\n public summaryService: AssetsSummaryService,\r\n public assetsService: AssetsService,\r\n private modalService: NgbModal,\r\n ) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n 'deletedBorrowerId' in changes &&\r\n changes['deletedBorrowerId'].currentValue !=\r\n changes['deletedBorrowerId'].previousValue\r\n ) {\r\n this._summary = [];\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n private _assetRemoveConfirmmodalConfig = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n\r\n private showRemoveModal() {\r\n return this.modalService.open(\r\n AssetsRemoveConfirmModalComponent,\r\n this._assetRemoveConfirmmodalConfig,\r\n );\r\n }\r\n\r\n async onDeleteClick(borrowerId: number, assetId: number) {\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n this.assetsService.initialize(borrowerId);\r\n\r\n let [_, err] = await handle(this.assetsService.delete(assetId));\r\n\r\n this.removeAssetFromUI(borrowerId, assetId);\r\n }\r\n\r\n removeAssetFromUI(borrowerId: number, assetId: number) {\r\n let borrowerSummary = this.summary.find(x => x.id == borrowerId);\r\n let index = borrowerSummary.summaryAssets.findIndex(a => a.id == assetId);\r\n\r\n borrowerSummary.summaryAssets.splice(index, 1);\r\n }\r\n\r\n public hasAssets(borrowerid): boolean {\r\n const borrower = this._summary.find(b => b.id === borrowerid);\r\n return borrower.summaryAssets?.length > 0;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport {\r\n AccountTypes,\r\n AssetTypes,\r\n BorrowerAsset,\r\n} from '../../shared/models/deal-resources/borrower-asset.model';\r\nimport { Borrower } from '../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from '../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AssetsService {\r\n private borrower: Borrower;\r\n private _assets: BorrowerAsset[];\r\n private contexts: ResourceContext[];\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.resourceContextStore = resourceContextStore;\r\n }\r\n\r\n private getBorrower(id: number): Borrower {\r\n let borrower = this.clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id == +id,\r\n );\r\n\r\n return borrower;\r\n }\r\n\r\n public initialize(borrowerId: number): BorrowerAsset {\r\n if (borrowerId == this.borrower?.id) return;\r\n\r\n this.borrower = this.getBorrower(borrowerId);\r\n\r\n let assets = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id == borrowerId,\r\n ).assets;\r\n this.contexts = [];\r\n this._assets = [];\r\n\r\n assets.forEach(asset => {\r\n let context = this.resourceContextStore.getByResource(asset, true);\r\n this.contexts.push(context);\r\n this._assets.push(asset);\r\n });\r\n }\r\n\r\n public get assets(): BorrowerAsset[] {\r\n return (\r\n this.borrower.assets?.filter(x => !AccountTypes.includes(x.type)) || []\r\n );\r\n }\r\n\r\n public get accounts(): BorrowerAsset[] {\r\n return (\r\n this.borrower.assets?.filter(x => AccountTypes.includes(x.type)) || []\r\n );\r\n }\r\n\r\n public save(asset: BorrowerAsset) {\r\n let i = this._assets.findIndex(x => x.assetId == asset.assetId);\r\n this.contexts[i].patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n\r\n public async createAsset(\r\n type: AssetTypes,\r\n financialInstitution: string = null,\r\n ): Promise {\r\n let borrowerContext = this.resourceContextStore.getByResource(\r\n this.borrower,\r\n );\r\n let defaultAsset: Partial = {\r\n type,\r\n financialInstitution,\r\n };\r\n let newAsset: BorrowerAsset = await borrowerContext.post(\r\n 'create-asset',\r\n defaultAsset,\r\n ).result;\r\n this.borrower.assets.push(newAsset);\r\n\r\n let newContext = this.resourceContextStore.getByResource(newAsset);\r\n this.contexts.push(newContext);\r\n this._assets.push(newAsset);\r\n\r\n return newAsset;\r\n }\r\n\r\n public async delete(assetId: number) {\r\n let assetToDelete = this.borrower.assets.find(x => x.assetId == assetId);\r\n if (!assetToDelete) return;\r\n\r\n let contextToDelete =\r\n this.resourceContextStore.getByResource(assetToDelete);\r\n if (!contextToDelete) {\r\n return;\r\n }\r\n\r\n await contextToDelete.delete().result;\r\n\r\n let i = this._assets.findIndex(x => x.assetId == assetId);\r\n if (i >= 0) {\r\n this.borrower.assets.splice(i, 1);\r\n this._assets.splice(i, 1);\r\n this.contexts.splice(i, 1);\r\n }\r\n }\r\n\r\n public async swapBorrower(\r\n assetId: number,\r\n fromBorrowerId: number,\r\n toBorrowerId: number,\r\n ): Promise {\r\n const asset = this._assets.find(a => a.assetId == assetId);\r\n const context = this.resourceContextStore.getByResource(asset);\r\n\r\n let updatedAsset = await context.post('swap-borrower', { toBorrowerId })\r\n .result;\r\n\r\n //remove old asset from context\r\n this.resourceContextStore.removeByResource(asset);\r\n //remove old asset from previous borrower\r\n const fromBorrowerResource = this.getBorrower(fromBorrowerId);\r\n fromBorrowerResource.assets = fromBorrowerResource.assets.filter(\r\n a => a.assetId != assetId,\r\n );\r\n\r\n //add new asset to context\r\n this.resourceContextStore.add(updatedAsset);\r\n //add new asset to the new borrower\r\n const toBorrowerResource = this.getBorrower(toBorrowerId);\r\n toBorrowerResource.assets.push(updatedAsset);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-assets-remove-confirm-modal',\r\n templateUrl: './assets-remove-confirm-modal.component.html',\r\n styleUrls: ['./assets-remove-confirm-modal.component.scss'],\r\n})\r\nexport class AssetsRemoveConfirmModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Are you sure\r\n you want to remove this asset?

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SlidesStateNames } from '../../../../router/slides-states';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-cancel-bank-connection-modal',\r\n templateUrl: './cancel-bank-connection-modal.component.html',\r\n styleUrls: ['./cancel-bank-connection-modal.component.scss'],\r\n})\r\nexport class CancelBankConnectionModalComponent implements OnInit {\r\n onContinueClick() {\r\n this.uiRouter.stateService.go(SlidesStateNames.BankingSummary);\r\n }\r\n\r\n constructor(public activeModal: NgbActiveModal, private uiRouter: UIRouter) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

If you continue you will lose any\r\n account details you just entered.

\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","\r\n\r\n
\r\n

Banking

\r\n\r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n

Add Bank Accounts

\r\n

Who are you banking with?

\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n

What's the name of this financial institution?

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n Securely connect your accounts and automatically import your information.\r\n If you connect your accounts now, you may not need to upload statements later.

\r\n
\r\n
\r\n
\r\n\r\n
\r\n

Do you want to connect your accounts?

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
","import { Component, Input, OnInit } from '@angular/core';\r\nimport { faNoteMedical } from '@fortawesome/pro-light-svg-icons';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { AgentDetails } from '../../../shared/models/agent-resources/agent-resource';\r\nimport { BankScrape } from '../../../shared/models/deal-resources/borrower-bank-scrape.model';\r\nimport { contactFullName } from '../../../shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { AssetsService } from '../../assets/assets.service';\r\nimport {\r\n FinancialInstitution,\r\n FinancialInstitutionConstants,\r\n} from '../financialInstitutions';\r\nimport { CancelBankConnectionModalComponent } from '../modals/cancel-bank-connection-modal/cancel-bank-connection-modal.component';\r\nimport { FlinksService } from './flinks-connect/flinks.service';\r\n\r\n@Component({\r\n selector: 'cj-slides-banking',\r\n templateUrl: './banking-edit.component.html',\r\n styleUrls: ['./banking-edit.component.scss'],\r\n animations: animations,\r\n viewProviders: [FlinksService, AssetsService],\r\n})\r\nexport class BankingEditComponent implements OnInit {\r\n public isFlushing: boolean = false;\r\n previousBorrowerId: number;\r\n borrowerId: number;\r\n bankId: string;\r\n bankName: string;\r\n accountId: number;\r\n\r\n financialInstitutions = this.flinksService.demoMode\r\n ? FinancialInstitutionConstants.financialInstitutions\r\n : FinancialInstitutionConstants.financialInstitutions.filter(\r\n fi => !fi.isDemo,\r\n );\r\n connectAccounts = null;\r\n\r\n accountBank: string = null;\r\n selectedBank: FinancialInstitution = null;\r\n SlidesStateNames = SlidesStateNames;\r\n flinksDemoMode = false;\r\n dealKey: string;\r\n\r\n visitReasons = visitReasons;\r\n visitReason: visitReasons;\r\n\r\n icon = Icons;\r\n fullName = contactFullName;\r\n agent: AgentDetails;\r\n\r\n constructor(\r\n private uiRouter: UIRouter,\r\n public flinksService: FlinksService,\r\n public assetsService: AssetsService,\r\n private modalService: NgbModal,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.agent = clientJourneyContext.agent;\r\n }\r\n\r\n //TO DO: Hook up Modal\r\n cancelAccountConnectionModal() {}\r\n\r\n ngOnInit() {\r\n this.dealKey = this.uiRouter.globals.params?.dealKey;\r\n this.bankId = this.uiRouter.globals.params?.bankId;\r\n this.bankName = this.uiRouter.globals.params?.bankName;\r\n this.borrowerId = +this.uiRouter.globals.params?.borrowerId;\r\n this.accountId = +this.uiRouter.globals.params?.accountId;\r\n\r\n this.connectAccounts =\r\n this.agent.ezAccountActive === true ? undefined : false;\r\n\r\n if (!!this.accountId) {\r\n //editing an existing account\r\n this.visitReason = visitReasons.edit;\r\n this.connectAccounts = false;\r\n } else if (this.borrowerId) {\r\n //adding new account\r\n this.visitReason = visitReasons.add;\r\n } else {\r\n this.visitReason = visitReasons.firstTime;\r\n }\r\n\r\n this.onSelectedBankChange();\r\n\r\n this.previousBorrowerId = this.borrowerId;\r\n }\r\n\r\n onBankNameChange() {\r\n this.onSelectedBankChange();\r\n }\r\n\r\n onSelectedBankChange() {\r\n this.selectedBank =\r\n FinancialInstitutionConstants.financialInstitutions.find(\r\n fi => fi.id == this.bankId,\r\n );\r\n if (this.selectedBank?.isOther) this.connectAccounts = false;\r\n this.accountBank = this.selectedBank?.isOther\r\n ? this.bankName\r\n : this.selectedBank?.id;\r\n this.showConnectCancelButton = true;\r\n }\r\n\r\n showConnectCancelButton = true;\r\n scrapeIsComplete = false;\r\n\r\n onBankScrapeAcquired(bankScrape: BankScrape) {\r\n //the event parameter contains details about the scrapped accounts\r\n this.flinksService.updateBorrowerBankScrapes(bankScrape);\r\n this.showConnectCancelButton = false;\r\n this.scrapeIsComplete = true;\r\n }\r\n\r\n onCancelConnectionClick() {\r\n this.connectAccounts = null;\r\n }\r\n\r\n onConnectAccountsChange() {\r\n this.showConnectCancelButton = true;\r\n }\r\n\r\n async onContinueClick() {\r\n this.isFlushing = true;\r\n if (this.accountId && !this.connectAccounts) {\r\n await this.assetsService.flush();\r\n }\r\n\r\n if (!this.connectAccounts || this.scrapeIsComplete) {\r\n this.uiRouter.stateService.go(SlidesStateNames.BankingSummary);\r\n } else {\r\n this.isFlushing = false;\r\n\r\n return this.modalService.open(CancelBankConnectionModalComponent, {\r\n size: 'md',\r\n modalDialogClass: 'client-journey-modal remove-modal continueBank',\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport enum visitReasons {\r\n firstTime = 1,\r\n edit,\r\n add,\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { BankScrape } from 'src/app/client/journey/shared/models/deal-resources/borrower-bank-scrape.model';\r\nimport { Borrower } from 'src/app/client/journey/shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from 'src/app/client/journey/shared/services/deal/client-journey-context';\r\nimport { SettingsService } from 'src/app/settings';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { DealService } from '../../../../shared/services/deal/deal.service';\r\nimport { AgentService } from '../../../../shared/services/agent.service';\r\nimport { ClientLanguageService } from 'src/shared-utilities/services/client-language.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FlinksService {\r\n constructor(\r\n private settingsService: SettingsService,\r\n private agentService: AgentService,\r\n private dealService: DealService,\r\n private sanitizer: DomSanitizer,\r\n private http: HttpClient,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private clientLanguageService: ClientLanguageService,\r\n ) {}\r\n\r\n private get flinksConnectDomain() {\r\n return `https://${this.settingsService.flinks.environmentName}-iframe.private.fin.ag/v2/`;\r\n }\r\n\r\n private _institutions: { name: string; id: number }[];\r\n private _institutionNames: string[];\r\n public async institutions(): Promise {\r\n if (this._institutions?.length) return this._institutionNames;\r\n\r\n let lang = this.clientLanguageService.flinksLanguageIdentifier;\r\n\r\n this._institutions = [];\r\n let velocityUrl = this.agentService.agent?.velocityUrl;\r\n let url = `${velocityUrl}/api/Banking/FlinksInstitutions/${lang}`;\r\n\r\n await this.http\r\n .get(url)\r\n .toPromise()\r\n .then(\r\n (result: any) => {\r\n this._institutions = result;\r\n },\r\n error => {},\r\n );\r\n\r\n this._institutionNames = this._institutions.map(x => x.name);\r\n return this._institutionNames;\r\n }\r\n\r\n public institutionId(name: string): number {\r\n return this._institutions.find(x => x.name == name)?.id;\r\n }\r\n\r\n public get demoMode() {\r\n return this.settingsService.flinks.demoMode;\r\n }\r\n\r\n public iFrameSrc(financialInstitution: string): SafeResourceUrl {\r\n if (!financialInstitution)\r\n return this.sanitizer.bypassSecurityTrustResourceUrl('');\r\n\r\n let lang = this.clientLanguageService.flinksLanguageIdentifier;\r\n\r\n let params = {\r\n theme: 'light',\r\n //redirectUrl: `${this.velocityUrl}/api/Banking/FlinksCallback`,\r\n innerRedirect: true,\r\n desktopLayout: true,\r\n demo: this.demoMode,\r\n accountSelectorEnable: true,\r\n accountSelectorMultiple: true,\r\n headerImgEnable: false,\r\n institutionFilterEnable: false,\r\n showAllOperationsAccounts: true,\r\n showAllAccounts: true,\r\n detailsAndStatementEnable: true,\r\n monthsOfStatements: '12',\r\n language: lang,\r\n };\r\n\r\n let queryString = Object.keys(params)\r\n .map(key => key + '=' + params[key])\r\n .join('&');\r\n\r\n let urlBase = `${this.flinksConnectDomain}Credential/${financialInstitution}`;\r\n let url = `${urlBase}?${queryString}`;\r\n\r\n let iFrameSrc = this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n\r\n return iFrameSrc;\r\n }\r\n\r\n public async updateBorrowerBankScrapes(bankScrape: BankScrape) {\r\n //reload updated bank scrapes\r\n let borrower: Borrower = this.clientJourneyContext.deal.borrowers.find(\r\n (b: Borrower) => b.id == bankScrape.borrowerId,\r\n );\r\n\r\n let oldBankScrapeIndex = borrower.bankScrapes.findIndex(\r\n bs => bs.bankScrapeId == bankScrape.bankScrapeId,\r\n );\r\n\r\n if (oldBankScrapeIndex >= 0) {\r\n //replace existing bank scrape\r\n borrower.bankScrapes[oldBankScrapeIndex] = bankScrape;\r\n return;\r\n }\r\n\r\n //add the bank scrape\r\n borrower.bankScrapes.push(bankScrape);\r\n }\r\n\r\n public get processUrl() {\r\n let dealKey = this.dealService.deal.dealKey;\r\n let loanCode = this.dealService.deal.loanCode;\r\n let shortCode = this.agentService.agent?.shortCode;\r\n\r\n let url = `${this.settingsService.publicApiBaseUrl}/v2/bankScrapes/${dealKey}/${loanCode}/${shortCode}/scrapeBankAccounts`;\r\n console.log('Flinks url:', url);\r\n return url;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n AccountTypes,\r\n AssetTypes,\r\n BorrowerAsset,\r\n} from '../../../shared/models/deal-resources/borrower-asset.model';\r\nimport {\r\n BankScrape,\r\n BankScrapeAccount,\r\n} from '../../../shared/models/deal-resources/borrower-bank-scrape.model';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { contactFullName } from '../../../shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport {\r\n FinancialInstitution,\r\n FinancialInstitutionConstants,\r\n} from '../financialInstitutions';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BankingSummaryService {\r\n reset() {\r\n this._summary = [];\r\n }\r\n constructor(private clientJourneyContext: ClientJourneyContext) {}\r\n\r\n private accountGroupName(assetType: AssetTypes) {\r\n if (assetType == AssetTypes.savings || assetType == AssetTypes.chequing)\r\n return $localize`:@@banking_account_type_cash:Cash`;\r\n\r\n if (assetType == AssetTypes.mutualFunds)\r\n return $localize`:@@banking_account_type_investment:Investments`;\r\n\r\n if (assetType == AssetTypes.rrsp)\r\n return $localize`:@@banking_account_type_rrsp:RRSP`;\r\n\r\n return 'unexpected ' + assetType;\r\n }\r\n\r\n private _summary: BankingSummaryBorrower[] = [];\r\n public get summary(): BankingSummaryBorrower[] {\r\n if (this._summary.length > 0) return this._summary;\r\n\r\n let borrowers = this.clientJourneyContext.deal.borrowers.map(borrower => {\r\n let banks = this.buildBanks(borrower);\r\n\r\n let borrowerSummary = {\r\n id: borrower.id,\r\n order: borrower.order,\r\n name: contactFullName(borrower.contact),\r\n friendlyName: borrower.contact.firstName,\r\n total: banks.map(b => b.total).reduce((a, b) => a + b, 0),\r\n banks: banks,\r\n };\r\n\r\n //this.addBankScrapeAccountsToSummary(borrowerSummary, borrower);\r\n //this.addManualAccountsToSummary(borrowerSummary, borrower);\r\n\r\n return borrowerSummary;\r\n });\r\n\r\n this._summary = borrowers.sort((a, b) => a.order - b.order);\r\n //console.log('this._summary', this._summary);\r\n return this._summary;\r\n }\r\n\r\n private getAccountIndex(\r\n accountGroup: BankingSummaryAccountGroup,\r\n accountId: number,\r\n ) {\r\n return accountGroup.accounts.findIndex(a => a.id == accountId);\r\n }\r\n\r\n private getAccountGroupIndex(bank: BankingSummaryBank, assetId: number) {\r\n return bank.accountGroups.findIndex(\r\n accountGroup => this.getAccountIndex(accountGroup, assetId) >= 0,\r\n );\r\n }\r\n\r\n private getBankIndex(borrower: BankingSummaryBorrower, assetId: number) {\r\n return borrower.banks.findIndex(\r\n bank => this.getAccountGroupIndex(bank, assetId) >= 0,\r\n );\r\n }\r\n\r\n removeManualAccountFomSummary(borrowerId: number, assetId: number) {\r\n let summary = this.summary.find(x => x.id == borrowerId);\r\n\r\n let bankIndex = this.getBankIndex(summary, assetId);\r\n let bank = summary.banks[bankIndex];\r\n let accountGroupIndex = this.getAccountGroupIndex(bank, assetId);\r\n let accountGroup = bank.accountGroups[accountGroupIndex];\r\n let accountIndex = this.getAccountIndex(accountGroup, assetId);\r\n\r\n let accountValue = accountGroup.accounts[accountIndex].value;\r\n accountGroup.total -= accountValue;\r\n bank.total -= accountValue;\r\n summary.total -= accountValue;\r\n\r\n accountGroup.accounts.splice(accountIndex, 1);\r\n\r\n if (accountGroup.accounts.length == 0)\r\n bank.accountGroups.splice(accountGroupIndex, 1);\r\n\r\n if (bank.accountGroups.length == 0) summary.banks.splice(bankIndex, 1);\r\n }\r\n\r\n getAccounts(rawAccounts: RawAccount[]): BankingSummaryAccount[] {\r\n let accounts = rawAccounts\r\n .map(\r\n account =>\r\n {\r\n id: account.id,\r\n asset: account.asset,\r\n type: account.type,\r\n value: account.value,\r\n isDownPayment: account.isDownPayment,\r\n },\r\n )\r\n .sort((a, b) => (a.type > b.type ? 1 : -1));\r\n\r\n // console.log('accounts', accounts, 'rawAccounts', rawAccounts);\r\n\r\n return accounts;\r\n }\r\n\r\n getAccountGroups(rawAccounts: RawAccount[]): BankingSummaryAccountGroup[] {\r\n let accountsGrouped = rawAccounts.reduce(function (r, a) {\r\n r[a.categoryName] = r[a.categoryName] || [];\r\n r[a.categoryName].push(a);\r\n return r;\r\n }, Object.create(null));\r\n\r\n let accountGroups = Object.keys(accountsGrouped)\r\n .map(key => {\r\n let groupRawAccounts: RawAccount[] = accountsGrouped[key];\r\n let accounts = this.getAccounts(groupRawAccounts);\r\n\r\n return {\r\n accounts: accounts,\r\n isManual: groupRawAccounts[0].isManual,\r\n name: groupRawAccounts[0].categoryName,\r\n total: accounts.map(a => a.value).reduce((a, b) => a + b, 0),\r\n };\r\n })\r\n .sort((a, b) => (a.name > b.name ? 1 : -1));\r\n\r\n //console.log('accountGroups', accountGroups, 'rawAccounts', rawAccounts);\r\n\r\n return accountGroups;\r\n }\r\n\r\n buildBanks(borrower: Borrower) {\r\n let rawAccounts = this.getRawAccounts(borrower);\r\n\r\n let banksGrouped = rawAccounts.reduce(function (r, a) {\r\n r[a.bank.name] = r[a.bank.name] || [];\r\n r[a.bank.name].push(a);\r\n return r;\r\n }, Object.create(null));\r\n\r\n let banks = Object.keys(banksGrouped).map(key => {\r\n let bankRawAccounts: RawAccount[] = banksGrouped[key];\r\n let accountGroups = this.getAccountGroups(bankRawAccounts);\r\n\r\n let bank = bankRawAccounts[0].bank;\r\n return {\r\n id: bank.id,\r\n flinksId: bank.flinksId,\r\n name: bank.name,\r\n shortName: bank.shortName,\r\n accountGroups: accountGroups,\r\n total: accountGroups.map(ag => ag.total).reduce((a, b) => a + b, 0),\r\n };\r\n });\r\n\r\n //console.log('banks', banks, 'borrower', borrower);\r\n\r\n return banks;\r\n }\r\n\r\n private getRawAccounts(borrower: Borrower): RawAccount[] {\r\n let bankScrapes = borrower.bankScrapes;\r\n\r\n let rawAccountsData = [];\r\n bankScrapes.forEach(bankScrape => {\r\n let rawAccounts = bankScrape.accounts.map(\r\n a =>\r\n {\r\n categoryName: a.categoryName,\r\n asset: null,\r\n bank: FinancialInstitutionConstants.financialInstitutions.find(\r\n x => x.flinksId == bankScrape.institution,\r\n ),\r\n borrowerId: borrower.id,\r\n borrowerName: borrower.contact.firstName,\r\n borrowerOrder: borrower.order,\r\n id: a.id,\r\n isDownPayment: false,\r\n isManual: false,\r\n type: a.title,\r\n value: a.balance,\r\n },\r\n );\r\n rawAccountsData.push(...rawAccounts);\r\n });\r\n\r\n //console.log('bankScrapes', bankScrapes);\r\n //console.log('rawAccountsData', rawAccountsData);\r\n\r\n let manualAccounts =\r\n borrower.assets?.filter(x => AccountTypes.includes(x.type)) || [];\r\n manualAccounts.forEach(a => {\r\n let bank = FinancialInstitutionConstants.financialInstitutions.find(\r\n x => x.id == a.financialInstitution,\r\n );\r\n if (!bank) {\r\n bank = FinancialInstitutionConstants.financialInstitutions.find(\r\n x => x.isOther,\r\n );\r\n bank.name = !!a.financialInstitution ? a.financialInstitution : 'Other';\r\n bank.shortName = bank.name;\r\n }\r\n let rawAccount = {\r\n categoryName: this.accountGroupName(a.type),\r\n asset: a,\r\n bank: bank,\r\n borrowerId: borrower.id,\r\n borrowerName: borrower.contact.firstName,\r\n borrowerOrder: borrower.order,\r\n id: a.assetId,\r\n isDownPayment: a.downPaymentAmount == a.value,\r\n isManual: true,\r\n type: a.type,\r\n value: a.value,\r\n };\r\n\r\n rawAccountsData.push(rawAccount);\r\n });\r\n\r\n return rawAccountsData;\r\n }\r\n}\r\n\r\nexport interface RawAccount {\r\n borrowerId: number;\r\n borrowerOrder: number;\r\n borrowerName: string;\r\n bank: FinancialInstitution;\r\n categoryName: string;\r\n isManual: boolean;\r\n id: number;\r\n type: string;\r\n value: number;\r\n isDownPayment: boolean;\r\n asset: BorrowerAsset;\r\n}\r\n\r\nexport interface BankingSummaryBorrower {\r\n id: number;\r\n order: number;\r\n name: string;\r\n\r\n friendlyName: string;\r\n total: number;\r\n banks: BankingSummaryBank[];\r\n}\r\n\r\nexport interface BankingSummaryBank {\r\n id: string;\r\n flinksId: string;\r\n name: string;\r\n shortName: string;\r\n accountGroups: BankingSummaryAccountGroup[];\r\n total: number;\r\n}\r\n\r\nexport interface BankingSummaryAccountGroup {\r\n name: string;\r\n isManual: boolean;\r\n accounts: BankingSummaryAccount[];\r\n total: number;\r\n}\r\n\r\nexport interface BankingSummaryAccount {\r\n id: number;\r\n type: string;\r\n value: number;\r\n isDownPayment: boolean;\r\n asset: BorrowerAsset;\r\n}\r\n","
\r\n

Banking

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{borrower.name}}

\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

It looks like you haven't added any banking for\r\n {{borrower.friendlyName}} yet

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{bank.name}}

\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
{{accountGroup.name}}\r\n \r\n\r\n
\r\n \r\n This account was securely connected and\r\n cannot be\r\n edited.\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{{getAccountTypeText(account.type)}}

\r\n
\r\n
\r\n

\r\n $\r\n {{account.value | mask: 'separator':','}}

\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Total:

\r\n

${{borrower.total | mask: 'separator':','}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport {\r\n BankingSummaryAccount,\r\n BankingSummaryAccountGroup,\r\n BankingSummaryService,\r\n BankingSummaryBorrower,\r\n} from './banking-summary.service';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { AssetsService } from '../../assets/assets.service';\r\n\r\nimport { BankingRemoveConfirmModalComponent } from '../modals/banking-remove-confirm-modal/banking-remove-confirm-modal.component';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { AssetTypes } from '../../../shared/models/deal-resources/borrower-asset.model';\r\n\r\n@Component({\r\n selector: 'banking-summary',\r\n templateUrl: './banking-summary.component.html',\r\n styleUrls: ['./banking-summary.component.scss'],\r\n animations: animations,\r\n viewProviders: [BankingSummaryService, AssetsService],\r\n})\r\nexport class BankingSummaryComponent implements OnInit, OnChanges {\r\n //Icons\r\n icon = Icons;\r\n\r\n SlidesStateNames = SlidesStateNames;\r\n\r\n public get summary(): BankingSummaryBorrower[] {\r\n return this.summaryService.summary;\r\n }\r\n\r\n @Input() showContinueLink: boolean = true;\r\n @Input() isCompleteView: boolean = true;\r\n @Input() deletedBorrowerId: number = null;\r\n\r\n constructor(\r\n public summaryService: BankingSummaryService,\r\n public assetsService: AssetsService,\r\n private modalService: NgbModal,\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n 'deletedBorrowerId' in changes &&\r\n changes['deletedBorrowerId'].currentValue !=\r\n changes['deletedBorrowerId'].previousValue\r\n ) {\r\n this.summaryService.reset();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.summaryService.reset();\r\n }\r\n\r\n private _bankingSummaryRemoveConfirmmodalConfig = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n\r\n private showRemoveModal() {\r\n return this.modalService.open(\r\n BankingRemoveConfirmModalComponent,\r\n this._bankingSummaryRemoveConfirmmodalConfig,\r\n );\r\n }\r\n\r\n async onDeleteClick(borrowerId: number, assetId: number) {\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n this.assetsService.initialize(borrowerId);\r\n\r\n let [_, err] = await handle(this.assetsService.delete(assetId));\r\n\r\n //removing the deleted item from summary - the animation should reflect that in the UI\r\n this.summaryService.removeManualAccountFomSummary(borrowerId, assetId);\r\n }\r\n\r\n accountIdentity(index: number, account: BankingSummaryAccount) {\r\n return account.id;\r\n }\r\n accountGroupIdentity(\r\n index: number,\r\n accountGroup: BankingSummaryAccountGroup,\r\n ) {\r\n return accountGroup.name;\r\n }\r\n\r\n summaryIdentity(index: number, summary: BankingSummaryBorrower) {\r\n return summary.id;\r\n }\r\n\r\n public hasBanking(borrowerId): boolean {\r\n const borrower = this.summary.find(b => b.id === borrowerId);\r\n return borrower.banks?.length > 0;\r\n }\r\n\r\n public getAccountTypeText(type: AssetTypes) {\r\n switch (type) {\r\n case AssetTypes.chequing:\r\n return $localize`:@@banking_bankingSummary_account_type_chequing:Chequing Account`;\r\n case AssetTypes.savings:\r\n return $localize`:@@banking_bankingSummary_account_type_savings:Savings Account`;\r\n\r\n case AssetTypes.rrsp:\r\n return $localize`:@@banking_bankingSummary_account_type_rrsp:RRSP Account`;\r\n case AssetTypes.mutualFunds:\r\n return $localize`:@@banking_bankingSummary_account_type_mutualFunds: Mutual Fund/Stock/Bonds`;\r\n\r\n default:\r\n return '';\r\n }\r\n }\r\n}\r\n","export interface FinancialInstitution {\r\n id: string;\r\n flinksId: string;\r\n name: string;\r\n shortName: string;\r\n isOther?: boolean;\r\n isDemo?: boolean;\r\n}\r\n\r\nexport abstract class FinancialInstitutionConstants {\r\n static get financialInstitutions(): FinancialInstitution[] {\r\n /**return a copy of the instituions constants to prevent edititng the values*/\r\n return this._financialInstitutions.map(element => ({ ...element }));\r\n }\r\n\r\n private static readonly _financialInstitutions: FinancialInstitution[] = [\r\n //{ flinksId: 'default', name: 'default', shortName: 'default' },\r\n {\r\n id: `Flinks`,\r\n flinksId: `FlinksCapital`,\r\n name: $localize`:@@financialAccounts_FlinksCapital:Flinks Capital`,\r\n shortName: $localize`:@@financialAccounts_FlinksCapital_Short:Flinks Capital`,\r\n isDemo: true,\r\n },\r\n {\r\n id: `TD`,\r\n flinksId: `TD`,\r\n name: $localize`:@@financialAccounts_TD:TD Canada Trust`,\r\n shortName: $localize`:@@financialAccounts_TD_Short:TD`,\r\n },\r\n {\r\n id: `RBC`,\r\n flinksId: `RBC`,\r\n name: $localize`:@@financialAccounts_RBC:Royal Bank of Canada (RBC)`,\r\n shortName: $localize`:@@financialAccounts_RBC_Short:RBC`,\r\n },\r\n {\r\n id: `BMO`,\r\n flinksId: `BMO`,\r\n name: $localize`:@@financialAccounts_BMO:Bank of Montreal (BMO)`,\r\n shortName: $localize`:@@financialAccounts_BMO_Short:BMO`,\r\n },\r\n {\r\n id: `Scotia`,\r\n flinksId: `Scotia`,\r\n name: $localize`:@@financialAccounts_Scotia:Scotiabank`,\r\n shortName: $localize`:@@financialAccounts_Scotia_Short:Scotiabank`,\r\n },\r\n {\r\n id: `CIBC`,\r\n flinksId: `CIBC`,\r\n name: $localize`:@@financialAccounts_CIBC:CIBC`,\r\n shortName: $localize`:@@financialAccounts_CIBC_Short:CIBC`,\r\n },\r\n {\r\n id: `National`,\r\n flinksId: `National`,\r\n name: $localize`:@@financialAccounts_National:National Bank`,\r\n shortName: $localize`:@@financialAccounts_National_Short:National Bank`,\r\n },\r\n {\r\n id: `Desjardins`,\r\n flinksId: `Desjardins`,\r\n name: $localize`:@@financialAccounts_Desjardins:Desjardins`,\r\n shortName: $localize`:@@financialAccounts_Desjardins_Short:Desjardins`,\r\n },\r\n {\r\n id: `Tangerine`,\r\n flinksId: `Tangerine`,\r\n name: $localize`:@@financialAccounts_Tangerine:Tangerine`,\r\n shortName: $localize`:@@financialAccounts_Tangerine_Short:Tangerine`,\r\n },\r\n {\r\n id: `Vancity`,\r\n flinksId: `Vancity`,\r\n name: $localize`:@@financialAccounts_Vancity:Vancity`,\r\n shortName: $localize`:@@financialAccounts_Vancity_Short:Vancity`,\r\n },\r\n {\r\n id: `ATB`,\r\n flinksId: `ATB`,\r\n name: $localize`:@@financialAccounts_ATB:ATB Financial`,\r\n shortName: $localize`:@@financialAccounts_ATB_Short:ATB Financial`,\r\n },\r\n {\r\n id: `Simplii`,\r\n flinksId: `Simplii`,\r\n name: $localize`:@@financialAccounts_Simplii:Simplii`,\r\n shortName: $localize`:@@financialAccounts_Simplii_Short:Simplii`,\r\n },\r\n {\r\n id: `Meridian`,\r\n flinksId: `Meridian`,\r\n name: $localize`:@@financialAccounts_Meridian:Meridian`,\r\n shortName: $localize`:@@financialAccounts_Meridian_Short:Meridian`,\r\n },\r\n {\r\n id: `Laurentian`,\r\n flinksId: `Laurentienne`,\r\n name: $localize`:@@financialAccounts_Laurentienne:Laurentian`,\r\n shortName: $localize`:@@financialAccounts_Laurentienne_Short:Laurentian`,\r\n },\r\n {\r\n id: `CoastCapital`,\r\n flinksId: `CoastCapital`,\r\n name: $localize`:@@financialAccounts_CoastCapital:Coast Capital`,\r\n shortName: $localize`:@@financialAccounts_CoastCapital_Short:Coast Capital`,\r\n },\r\n {\r\n id: `HSBC`,\r\n flinksId: `HSBC`,\r\n name: $localize`:@@financialAccounts_HSBC:HSBC`,\r\n shortName: $localize`:@@financialAccounts_HSBC_Short:HSBC`,\r\n },\r\n {\r\n id: `EQBank`,\r\n flinksId: `EQBank`,\r\n name: $localize`:@@financialAccounts_EQBank:EQ Bank`,\r\n shortName: $localize`:@@financialAccounts_EQBank_Short:EQ Bank`,\r\n },\r\n {\r\n id: `other`,\r\n isOther: true,\r\n flinksId: ``,\r\n name: $localize`:@@financialAccounts_Other:Other`,\r\n shortName: $localize`:@@financialAccounts_Other_Short:Other`,\r\n },\r\n ];\r\n}\r\n\r\n// export enum financialInstitutions2 {\r\n// default = 'default',\r\n// RBC = 'RBC',\r\n// BMO = 'BMO',\r\n// TD = 'TD',\r\n// Scotiabank = 'Scotia',\r\n// CIBC = 'CIBC',\r\n// NationalBank = 'National',\r\n// Desjardins = 'Desjardins',\r\n// Tangerine = 'Tangerine',\r\n// Vancity = 'Vancity',\r\n// ATB = 'ATB',\r\n// Simplii = 'Simplii',\r\n// Meridian = 'Meridian',\r\n// Laurentian = 'Laurentienne',\r\n// CoastCapital = 'CoastCapital',\r\n// HSBC = 'HSBC',\r\n// EQBank = 'EQBank',\r\n// other = 'other',\r\n// FlinksCapital = 'FlinksCapital',\r\n// }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-banking-remove-confirm-modal',\r\n templateUrl: './banking-remove-confirm-modal.component.html',\r\n styleUrls: ['./banking-remove-confirm-modal.component.scss'],\r\n})\r\nexport class BankingRemoveConfirmModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Are you sure\r\n you want to remove this account?

\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-borrower-failed-validation-modal',\r\n templateUrl: './borrower-failed-validation-modal.component.html',\r\n styleUrls: ['./borrower-failed-validation-modal.component.scss'],\r\n})\r\nexport class BorrowerFailedValidationModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Whoa Nelly!\r\n

\r\n

You haven't filled out some required fields.

\r\n

Please go back and fill out these fields to continue your application.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","
\r\n\r\n \r\n
\r\n\r\n
\r\n

\r\n Tell us about the borrowers\r\n

\r\n
\r\n\r\n
\r\n

How many borrowers will there be?

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n HookResult,\r\n Transition,\r\n UiOnExit,\r\n UiOnParamsChanged,\r\n UIRouter,\r\n} from '@uirouter/angular';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { JourneyStates } from '../../../router/journey-states';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { BorrowerFailedValidationModalComponent } from '../modals/borrower-failed-validation-modal/borrower-failed-validation-modal.component';\r\nimport { BorrowerRemoveConfirmModalComponent } from '../modals/borrower-remove-confirm-modal/borrower-remove-confirm-modal.component';\r\nimport { BorrowerContactAddressService } from '../services/borrower-contact-address.service';\r\nimport { BorrowerContactService } from '../services/borrower-contact.service';\r\nimport { BorrowersService } from '../services/borrowers.service';\r\nimport { BorrowerValidator } from '../validation/borrower.validator';\r\nimport { BorrowersValidatorStore } from '../validation/borrowers-validator.store';\r\nimport { BorrowerComponent } from './borrower/borrower.component';\r\n\r\n@Component({\r\n selector: 'cj-slide-borrowers',\r\n templateUrl: './borrower-edit.component.html',\r\n styleUrls: ['./borrower-edit.component.scss'],\r\n animations: animations,\r\n viewProviders: [\r\n BorrowersService,\r\n BorrowerContactService,\r\n BorrowerContactAddressService,\r\n ],\r\n})\r\nexport class BorrowersEditComponent\r\n implements OnInit, UiOnParamsChanged, OnDestroy, UiOnExit\r\n{\r\n requestedBorrowersCount: number;\r\n showRequestedBorrowersCountDropdown: boolean = false;\r\n\r\n borrower: Borrower;\r\n\r\n @ViewChild(BorrowerComponent)\r\n private borrowerComponent!: BorrowerComponent;\r\n\r\n private validationContext: BorrowerValidator;\r\n\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private borrowersService: BorrowersService,\r\n private modalService: NgbModal,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {}\r\n\r\n uiOnParamsChanged(\r\n newParams: { [paramName: string]: any },\r\n trans?: Transition,\r\n ): void {\r\n if ('borrowerId' in newParams) {\r\n this.initializeBorrower();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n\r\n ngOnInit(): void {\r\n this.initializeBorrower();\r\n }\r\n\r\n private initializeBorrower() {\r\n let borrowersCount = this.borrowersService.borrowers.length;\r\n if (!borrowersCount) {\r\n // TODO: Instead of giving up (bailing to the error page) refresh\r\n // borrowers, and if still 0, add a new one\r\n JourneyStates.transitionToErrorState(this.uiRouter);\r\n return;\r\n }\r\n\r\n // If the system only has one borrower, than show the\r\n // dropdown option for adding more borrowers\r\n this.showRequestedBorrowersCountDropdown = borrowersCount == 1;\r\n this.requestedBorrowersCount = borrowersCount;\r\n\r\n let borrowerId = this.uiRouter.globals.params?.borrowerId;\r\n if (!borrowerId) {\r\n let primaryBorrower = this.borrowersService.borrowers[0];\r\n let primaryBorrowerId = primaryBorrower.id;\r\n\r\n // Redirect to the same URL, replacing the one that didn't have the ID with the primaryBorrowerId\r\n this.uiRouter.stateService.go(\r\n '.',\r\n { borrowerId: primaryBorrowerId },\r\n { location: 'replace' },\r\n );\r\n return;\r\n }\r\n\r\n this.borrower = this.borrowersService.borrowers.find(\r\n b => b.id == borrowerId,\r\n );\r\n\r\n let validationGlobalStore = this.clientJourneyContext.validationGlobalStore;\r\n let borrowersValidationStore: BorrowersValidatorStore =\r\n validationGlobalStore.getStore(BorrowersValidatorStore.globalStoreKey);\r\n this.validationContext = borrowersValidationStore.getBorrowerValidator(\r\n this.borrower,\r\n );\r\n }\r\n\r\n uiCanExit(newTransition?: Transition): HookResult {\r\n if (this.borrowerIsDeleted) return;\r\n\r\n this.validate();\r\n if (!this.validationContext.isValid) newTransition.abort();\r\n return this.validationContext.isValid;\r\n }\r\n\r\n async validate(): Promise {\r\n this.validationContext.validate();\r\n if (this.validationContext.isValid) return true;\r\n\r\n let modal = this.modalService.open(BorrowerFailedValidationModalComponent, {\r\n size: 'md',\r\n modalDialogClass: 'client-journey-modal alert-modal',\r\n });\r\n await handle(modal.result);\r\n\r\n this.borrowerComponent.scrollToValidationError();\r\n return false;\r\n }\r\n\r\n borrowerIsDeleted: boolean = false;\r\n async onBorrowerDeleteRequest(borrowerId: number) {\r\n let removeConfirmationModal = this.modalService.open(\r\n BorrowerRemoveConfirmModalComponent,\r\n {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n },\r\n );\r\n let [_, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n await this.borrowersService.deleteBorrower(borrowerId);\r\n this.borrowerIsDeleted = true;\r\n\r\n this.moveToNextComponent();\r\n }\r\n\r\n showSpinner = false;\r\n applyValidation = false;\r\n async onContinueClick() {\r\n //do not continue if the borrower data was not displayed yet\r\n //this will prevent validating before entering data for the first time\r\n if (!document.getElementById('inputBorrowerFirstName')) return;\r\n\r\n await this.borrowersService.flush();\r\n\r\n let isValid = await this.validate();\r\n if (!isValid) return;\r\n\r\n if (this.showRequestedBorrowersCountDropdown) {\r\n await this.createRequestedBorrowers();\r\n }\r\n\r\n this.moveToNextComponent();\r\n }\r\n\r\n private async createRequestedBorrowers() {\r\n let borrowersCount = this.borrowersService.borrowers.length;\r\n let borrowerCountToCreate = this.requestedBorrowersCount - borrowersCount;\r\n if (borrowerCountToCreate <= 0) return;\r\n\r\n this.showSpinner = true;\r\n for (let i = 0; i < borrowerCountToCreate; i++) {\r\n await this.borrowersService.flush();\r\n await this.borrowersService.createBorrower();\r\n }\r\n this.showSpinner = false;\r\n }\r\n\r\n moveToNextComponent() {\r\n let nextBorrower = this.borrowersService.findNextBorrower(\r\n this.borrower.id,\r\n b => !b.contact.getFullName(),\r\n );\r\n if (nextBorrower) {\r\n // route to next borrower when they don't have a name set\r\n this.uiRouter.stateService.go(SlidesStateNames.BorrowersEdit, {\r\n borrowerId: nextBorrower.id,\r\n });\r\n return;\r\n }\r\n\r\n // route to summary\r\n this.uiRouter.stateService.go(SlidesStateNames.BorrowersSummary);\r\n }\r\n}\r\n","
\r\n

\r\n Borrower \r\n {{borrower?.order}}\r\n

\r\n \r\n\r\n
\r\n
\r\n

\r\n First name *\r\n

\r\n
\r\n \r\n
\r\n \r\n Please enter the borrower's first name\r\n \r\n
\r\n\r\n
\r\n

Middle name

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

Last name *

\r\n
\r\n \r\n
\r\n \r\n Please enter the borrower's last name\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

Email *

\r\n
\r\n \r\n
\r\n \r\n  \r\n We need the Borrower's email\r\n Please enter a valid email\r\n \r\n
\r\n\r\n
\r\n

Cell phone number *

\r\n
\r\n \r\n
\r\n \r\n  \r\n We need the Borrower's cell number\r\n Please enter a valid\r\n phone\r\n number\r\n \r\n
\r\n\r\n
\r\n

Home phone number

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

Work phone number

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n

Do you want to invite {{fullName(contact)}}\r\n to fill out the application?\r\n

\r\n \r\n Once\r\n {{primaryBorrowerFullName}} accepts the\r\n application you will no\r\n longer be able to view or edit their information\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n

Message for {{fullName(contact)}}

\r\n
\r\n

Hi {{fullName(contact)}}!

\r\n

{{fullName(primaryBorrowerContact)}} has invited you to\r\n fill out an Application to help\r\n reach your Mortgage goals.

\r\n

Please use the link below to get started.

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n

\r\n Date of birth\r\n *\r\n

\r\n\r\n \r\n
\r\n
\r\n
\r\n

Marital status

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Social Insurance Number (SIN)\r\n *\r\n

\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n Please enter the borrower's Social Insurance Number (SIN)\r\n
\r\n
\r\n

Number of dependents

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n

Where do you live?

\r\n\r\n
\r\n\r\n \r\n
\r\n

Current address

\r\n

What's your current address?

\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n

Previous address

\r\n

What was your previous address?

\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { SlidesStateNames } from '../../../../router/slides-states';\r\nimport { BorrowersService } from '../../services/borrowers.service';\r\nimport {\r\n Contact,\r\n contactFullName,\r\n} from '../../../../shared/models/deal-resources/contact.model';\r\nimport { BorrowerContactService } from '../../services/borrower-contact.service';\r\nimport { BorrowerContactAddressService } from '../../services/borrower-contact-address.service';\r\nimport {\r\n Address,\r\n DwellingStatuses,\r\n} from '../../../../shared/models/deal-resources/address.model';\r\nimport { Borrower } from '../../../../shared/models/deal-resources/borrower.model';\r\nimport { DatePickerDirections } from '../../../../shared/form-fields/date-picker/date-picker.component';\r\nimport { OptionsCacheService } from 'src/app/client/journey/shared/services/options-cache/options-cache.service';\r\nimport { BorrowersValidatorStore } from '../../validation/borrowers-validator.store';\r\nimport {\r\n BorrowerValidationRuleKeys,\r\n BorrowerValidator,\r\n} from '../../validation/borrower.validator';\r\nimport { ClientJourneyContext } from 'src/app/client/journey/shared/services/deal/client-journey-context';\r\n\r\n@Component({\r\n selector: 'borrower',\r\n templateUrl: './borrower.component.html',\r\n styleUrls: ['./borrower.component.scss'],\r\n animations: animations,\r\n})\r\nexport class BorrowerComponent implements OnInit {\r\n private _borrower: Borrower;\r\n public get borrower(): Borrower {\r\n return this._borrower;\r\n }\r\n @Input() set borrower(value: Borrower) {\r\n this._borrower = value;\r\n this.initialize();\r\n }\r\n\r\n otherBorrowerAddresses: Address[] = [];\r\n\r\n @Output() borrowerDeleteRequest: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild('borrowerFirstName') firstNameElementRef: ElementRef;\r\n @ViewChild('borrowerSinNumber') borrowerSinNumberRef: ElementRef;\r\n\r\n @ViewChild('borrowerLastName') lastNameElementRef: ElementRef;\r\n @ViewChild('borrowerEmail') emailElementRef: ElementRef;\r\n @ViewChild('borrowerPhone') phoneNumberElementRef: ElementRef;\r\n @ViewChild('borrowerDateOfBirth') borrowerDateOfBirthElementRef: ElementRef;\r\n\r\n DatePickerDirections = DatePickerDirections;\r\n SlidesStateNames = SlidesStateNames;\r\n\r\n dwellingStatuses = DwellingStatuses;\r\n maritalStatusType = maritalStatusType;\r\n borrowerFillType = borrowerFillType;\r\n borrowerFill = null;\r\n\r\n spouseOnApplicationType = spouseOnApplicationType;\r\n spouseOnApplication = null;\r\n\r\n get emailIsValid(): boolean {\r\n return this.borrowerValidator?.emailIsValid ?? true;\r\n }\r\n get emailFormatIsValid(): boolean {\r\n return this.borrowerValidator?.emailFormatIsValid ?? true;\r\n }\r\n get firstNameIsValid(): boolean {\r\n return this.borrowerValidator?.firstNameIsValid ?? true;\r\n }\r\n get lastNameIsValid(): boolean {\r\n return this.borrowerValidator?.lastNameIsValid ?? true;\r\n }\r\n get phoneNumberIsValid(): boolean {\r\n return this.borrowerValidator?.phoneIsValid ?? true;\r\n }\r\n get phoneNumberFormatIsValid(): boolean {\r\n return this.borrowerValidator?.phoneFormatIsValid ?? true;\r\n }\r\n\r\n get sinIsValid(): boolean {\r\n return this.borrowerValidator?.sinIsValid ?? true;\r\n }\r\n\r\n get dateOfBirthIsValid(): boolean {\r\n return this.borrowerValidator?.dateOfBirthIsValid ?? true;\r\n }\r\n\r\n startLivingHereDate: Date;\r\n canRemove: boolean;\r\n\r\n //Icons\r\n icon = Icons;\r\n fullName = contactFullName;\r\n\r\n hideSinInput: boolean = true;\r\n\r\n public get primaryBorrowerContactId(): number {\r\n return this.borrowersService.borrowers[0].contact?.id;\r\n }\r\n\r\n public get isPrimaryBorrower(): boolean {\r\n return this.primaryBorrowerContactId == this.contact.id;\r\n }\r\n\r\n public get contact(): Contact {\r\n let contact = this.borrowerContactService.contact;\r\n return contact;\r\n }\r\n\r\n public get borrowerAddresses(): Address[] {\r\n return this.borrowerContactAddressService.addresses;\r\n }\r\n\r\n private borrowerValidator: BorrowerValidator;\r\n\r\n constructor(\r\n private borrowersService: BorrowersService,\r\n private borrowerContactService: BorrowerContactService,\r\n private borrowerContactAddressService: BorrowerContactAddressService,\r\n public optionsCache: OptionsCacheService,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n async initialize() {\r\n if (!this.borrower) return;\r\n\r\n let validationGlobalStore = this.clientJourneyContext.validationGlobalStore;\r\n let borrowersValidationStore: BorrowersValidatorStore =\r\n validationGlobalStore.getStore(BorrowersValidatorStore.globalStoreKey);\r\n this.borrowerValidator = borrowersValidationStore.getBorrowerValidator(\r\n this.borrower,\r\n );\r\n this.scrollToValidationError();\r\n\r\n let contactServiceInitializePromise =\r\n this.borrowerContactService.initialize(this.borrower.id);\r\n let addressServiceInitializePromise =\r\n this.borrowerContactAddressService.initialize(this.borrower.id);\r\n\r\n await Promise.all([\r\n contactServiceInitializePromise,\r\n addressServiceInitializePromise,\r\n ]);\r\n\r\n this.otherBorrowerAddresses =\r\n this.borrowerContactAddressService.getOtherBorrowerAddresses();\r\n\r\n this.canRemove = this.borrower.order != 1;\r\n }\r\n\r\n public scrollToValidationError() {\r\n if (!this.firstNameIsValid) {\r\n setTimeout(() => {\r\n this.firstNameElementRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!this.sinIsValid) {\r\n setTimeout(() => {\r\n this.borrowerSinNumberRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!this.lastNameIsValid) {\r\n setTimeout(() => {\r\n this.lastNameElementRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!this.emailIsValid || !this.emailFormatIsValid) {\r\n setTimeout(() => {\r\n this.emailElementRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!this.phoneNumberIsValid || !this.phoneNumberFormatIsValid) {\r\n setTimeout(() => {\r\n this.phoneNumberElementRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!this.dateOfBirthIsValid) {\r\n setTimeout(() => {\r\n this.borrowerDateOfBirthElementRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n return;\r\n }\r\n }\r\n\r\n onContactChange(): void {\r\n this.borrowerContactService.save();\r\n }\r\n\r\n onAddressChange(event: any): void {\r\n //TODO: do we need to refresh the linked addresses?\r\n }\r\n\r\n canInviteBorrower() {\r\n //TODO\r\n return this.emailIsValid;\r\n }\r\n\r\n onSinChange(): void {\r\n this.borrowerContactService.save();\r\n this.validateSIN();\r\n }\r\n\r\n onFirstNameChange() {\r\n this.validateFirstName();\r\n this.onContactChange();\r\n }\r\n\r\n validateFirstName() {\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.FirstName);\r\n }\r\n\r\n onLastNameChange() {\r\n this.validateLastName();\r\n this.onContactChange();\r\n }\r\n\r\n validateLastName() {\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.LastName);\r\n }\r\n\r\n validateSIN() {\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.Sin);\r\n }\r\n\r\n onEmailChange() {\r\n this.validateEmail();\r\n\r\n if (this.emailFormatIsValid && this.emailIsValid) {\r\n this.onContactChange();\r\n }\r\n }\r\n\r\n validateEmail() {\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.Email);\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.EmailFormat);\r\n }\r\n\r\n onPhoneChange() {\r\n this.validatePhone();\r\n this.onContactChange();\r\n }\r\n validatePhone() {\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.Phone);\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.PhoneFormat);\r\n }\r\n\r\n onDateOfBirthChange() {\r\n this.validateDateOfBirth();\r\n this.onContactChange();\r\n }\r\n validateDateOfBirth() {\r\n this.borrowerValidator.validate(BorrowerValidationRuleKeys.DateOfBirth);\r\n }\r\n\r\n async onRemoveBorrowerClick() {\r\n this.borrowerDeleteRequest.emit(this.borrower.id);\r\n }\r\n}\r\n\r\nexport enum maritalStatusType {\r\n single = 'single',\r\n married = 'married',\r\n commonLaw = 'common law',\r\n separated = 'separated',\r\n divorced = 'divorced',\r\n widowed = 'widowed',\r\n}\r\n\r\nexport enum borrowerFillType {\r\n yes,\r\n no,\r\n}\r\n\r\nexport enum spouseOnApplicationType {\r\n yes,\r\n no,\r\n}\r\n","
\r\n

Add or edit your Borrowers

\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{{fullName(borrower.contact)}}

\r\n
\r\n

{{borrower.contact.cellPhone | mask:'(000) 000-0000'}}\r\n (Cell)\r\n

\r\n

{{borrower.contact.homePhone | mask:'(000) 000-0000'}}\r\n (Home)\r\n

\r\n

{{borrower.contact.businessPhone | mask:'(000) 000-0000 00000'}}\r\n (Work)\r\n

\r\n\r\n

{{borrower.contact.email}}

\r\n\r\n \r\n
    \r\n\r\n
  • \r\n \r\n First name missing\r\n
  • \r\n\r\n
  • \r\n \r\n Last name missing\r\n
  • \r\n\r\n
  • \r\n \r\n Email address missing\r\n
  • \r\n\r\n
  • \r\n \r\n Please enter a valid email\r\n\r\n
  • \r\n\r\n
  • \r\n \r\n Phone number missing\r\n\r\n
  • \r\n\r\n
  • \r\n \r\n Please enter a valid phone number\r\n
  • \r\n\r\n
  • \r\n \r\n \r\n Social Insurance Number (SIN) missing\r\n
  • \r\n\r\n
  • \r\n \r\n Please enter a valid date of birth\r\n
  • \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport {\r\n Borrower,\r\n getPrimaryBorrowerId,\r\n} from '../../../shared/models/deal-resources/borrower.model';\r\nimport { contactFullName } from '../../../shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { BorrowerRemoveConfirmModalComponent } from '../modals/borrower-remove-confirm-modal/borrower-remove-confirm-modal.component';\r\nimport { BorrowersService } from '../services/borrowers.service';\r\nimport { BorrowerValidator } from '../validation/borrower.validator';\r\nimport { BorrowersValidatorStore } from '../validation/borrowers-validator.store';\r\n\r\n@Component({\r\n selector: 'borrower-summary',\r\n templateUrl: './borrower-summary.component.html',\r\n styleUrls: ['./borrower-summary.component.scss'],\r\n animations: animations,\r\n viewProviders: [BorrowersService],\r\n})\r\nexport class BorrowerSummaryComponent implements OnInit {\r\n public incomeRouterLinkState = {\r\n uiSref: SlidesStateNames.IncomeEdit,\r\n uiParams: {},\r\n };\r\n\r\n public borrowerIdUiParam: number;\r\n public borrowers: Borrower[] = [];\r\n\r\n private borrowersValidationStore: BorrowersValidatorStore;\r\n public validator(borrower: Borrower): BorrowerValidator {\r\n return this.borrowersValidationStore.getBorrowerValidator(borrower);\r\n }\r\n\r\n @Input() showContinueLink: boolean = true;\r\n @Input() isCompleteView: boolean = true;\r\n\r\n @Output() deleteBorrowerEvent: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n public borrowerService: BorrowersService,\r\n private clientJourneyContext: ClientJourneyContext,\r\n public router: UIRouter,\r\n private modalService: NgbModal,\r\n ) {\r\n let validationGlobalStore = clientJourneyContext.validationGlobalStore;\r\n this.borrowersValidationStore = validationGlobalStore.getStore(\r\n BorrowersValidatorStore.globalStoreKey,\r\n );\r\n }\r\n\r\n icon = Icons;\r\n SlidesStateNames = SlidesStateNames;\r\n fullName = contactFullName;\r\n\r\n ngOnInit(): void {\r\n this.borrowers = [...this.clientJourneyContext.deal.borrowers];\r\n this.borrowersValidationStore.validate();\r\n\r\n this.incomeRouterLinkState = {\r\n uiSref: SlidesStateNames.IncomeEdit,\r\n uiParams: { borrowerId: getPrimaryBorrowerId(this.borrowers) },\r\n };\r\n }\r\n\r\n private showRemoveModal() {\r\n return this.modalService.open(BorrowerRemoveConfirmModalComponent, {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n });\r\n }\r\n\r\n async onRemoveBorrowerClick(borrower: Borrower) {\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n let [_, err] = await handle(\r\n this.borrowerService.deleteBorrower(borrower.id),\r\n );\r\n\r\n if (err) {\r\n // TODO: toast?\r\n return;\r\n }\r\n\r\n this.borrowers = this.borrowers.filter(b => b.id != borrower.id);\r\n this.deleteBorrowerEvent.emit(borrower.id);\r\n }\r\n\r\n public isAddingBorrower: boolean = false;\r\n async onAddBorrowerClick() {\r\n if (this.isAddingBorrower) return;\r\n\r\n this.isAddingBorrower = true;\r\n try {\r\n let newBorrower = await this.borrowerService.createBorrower();\r\n this.router.stateService.go(SlidesStateNames.BorrowersEdit, {\r\n borrowerId: newBorrower.id,\r\n });\r\n } catch (error) {\r\n //TODO:log , display error?\r\n this.isAddingBorrower = false;\r\n } finally {\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-borrower-remove-confirm-modal',\r\n templateUrl: './borrower-remove-confirm-modal.component.html',\r\n styleUrls: ['./borrower-remove-confirm-modal.component.scss'],\r\n})\r\nexport class BorrowerRemoveConfirmModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Are you sure\r\n you want to remove this borrower?

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","import { Injectable } from '@angular/core';\r\nimport { refreshContactAddressAsync } from '../../../shared/helpers/address.helper';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { AddressFormatService } from '../../../shared/services/address-format.service';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BorrowerContactAddressService {\r\n private addressContexts: ResourceContext
[];\r\n public addresses: Address[];\r\n\r\n private borrowerId: number;\r\n\r\n constructor(\r\n private clientJourneyContext: ClientJourneyContext,\r\n private addressFormatService: AddressFormatService,\r\n private resourceContextStore: ResourceContextStore,\r\n ) {}\r\n\r\n async initialize(borrowerId: number) {\r\n await refreshContactAddressAsync(\r\n this.clientJourneyContext,\r\n this.resourceContextStore,\r\n borrowerId,\r\n );\r\n\r\n let borrower = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id == borrowerId,\r\n );\r\n if (!borrower) {\r\n throw `Error initializing borrower contact address service. Borrower ${borrowerId} not found.`;\r\n }\r\n\r\n this.borrowerId = borrowerId;\r\n this.addresses = borrower.contact.addresses;\r\n\r\n this.addressContexts = [];\r\n this.addresses.forEach(address => {\r\n let addressContext = this.resourceContextStore.getByResource(address);\r\n this.addressContexts.push(addressContext);\r\n });\r\n }\r\n\r\n public getOtherBorrowerAddresses(): Address[] {\r\n let otherAddresses = this.clientJourneyContext.deal.borrowers\r\n .filter(x => x.id != this.borrowerId)\r\n .flatMap(b => b.contact.addresses)\r\n .filter(a => this.addressFormatService.asString(a) != '') // not empty\r\n .filter(\r\n (address, i, arr) =>\r\n arr.findIndex(\r\n a =>\r\n this.addressFormatService.asString(a) ===\r\n this.addressFormatService.asString(address),\r\n ) === i,\r\n ); // distinct\r\n\r\n return otherAddresses;\r\n }\r\n\r\n public save() {\r\n for (let i = 0; i < this.addresses.length; i++) {\r\n this.addressContexts[i].patch();\r\n }\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n\r\n public async createAddress(): Promise {\r\n const contact = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id == this.borrowerId,\r\n ).contact;\r\n\r\n const contactContext = this.resourceContextStore.getByResource(contact);\r\n let newAddress: Address = await contactContext.post('create-address')\r\n .result;\r\n this.addresses.push(newAddress);\r\n\r\n let newAddressContext = this.resourceContextStore.getByResource(newAddress);\r\n this.addressContexts.push(newAddressContext);\r\n }\r\n\r\n public async deleteAddress(addressId: number) {\r\n let addressToDelete = this.addresses.find(a => a.id == addressId);\r\n if (!addressToDelete) return;\r\n\r\n let contextToDelete: ResourceContext
=\r\n this.resourceContextStore.getByResource(addressToDelete);\r\n if (!contextToDelete) return;\r\n\r\n let borrower = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id == this.borrowerId,\r\n );\r\n if (!borrower) return;\r\n\r\n const contact = borrower.contact;\r\n await contextToDelete.delete({ contactId: contact.id }).result;\r\n this.resourceContextStore.removeByResource(addressToDelete);\r\n\r\n let addressIndex = this.addresses.findIndex(\r\n a => a.id == addressToDelete.id,\r\n );\r\n if (addressIndex != -1) {\r\n this.addresses.splice(addressIndex, 1);\r\n }\r\n\r\n let addressContextIndex = this.addressContexts.indexOf(contextToDelete);\r\n if (addressContextIndex != -1) {\r\n this.addressContexts.splice(addressContextIndex, 1);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { Contact } from '../../../shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BorrowerContactService {\r\n private contactContext: ResourceContext;\r\n\r\n private _contact: Contact;\r\n get contact(): Contact {\r\n return this._contact;\r\n }\r\n\r\n private _borrower: Borrower;\r\n get borrower(): Borrower {\r\n return this._borrower;\r\n }\r\n\r\n constructor(\r\n private clientJourneyContext: ClientJourneyContext,\r\n private resourceContextStore: ResourceContextStore,\r\n ) {}\r\n\r\n async initialize(borrowerId: number) {\r\n await this.flush('contact service flush');\r\n\r\n this._borrower = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id == borrowerId,\r\n );\r\n if (!this.borrower) return;\r\n\r\n this._contact = this.borrower.contact;\r\n\r\n // Remove any existing context and create a new one.\r\n this.resourceContextStore.removeByResource(this.contact);\r\n this.contactContext = this.resourceContextStore.getByResource(this.contact);\r\n }\r\n\r\n save() {\r\n this.contactContext.patch();\r\n }\r\n\r\n flush(message: string = '') {\r\n return this.resourceContextStore.flush(message);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport {\r\n Contact,\r\n contactFullName,\r\n} from '../../../shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BorrowersService {\r\n private _borrowerContexts: ResourceContext[];\r\n public borrowers: Borrower[];\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.borrowers = this.clientJourneyContext.deal.borrowers;\r\n\r\n this._borrowerContexts = this.borrowers?.map(borrower =>\r\n this.resourceContextStore.getByResource(borrower),\r\n );\r\n }\r\n\r\n public async createBorrower(): Promise {\r\n const deal = this.clientJourneyContext.deal;\r\n\r\n const dealContext = this.resourceContextStore.getByResource(deal);\r\n let newBorrower: Borrower = await dealContext.post('create-borrower')\r\n .result;\r\n deal.borrowers.push(newBorrower);\r\n\r\n // Load the child resources for the newBorrower\r\n await this.clientJourneyContext.loadResourceChildren('$.borrowers', [\r\n newBorrower,\r\n ]);\r\n\r\n // update contexts\r\n let newBorrowerContext =\r\n this.resourceContextStore.getByResource(newBorrower);\r\n this._borrowerContexts.push(newBorrowerContext);\r\n\r\n // update local borrowers\r\n this.borrowers = deal.borrowers;\r\n\r\n return newBorrower;\r\n }\r\n\r\n public async deleteBorrower(borrowerId: number) {\r\n let dealResource = this.clientJourneyContext.deal;\r\n\r\n let borrowerToDelete = dealResource?.borrowers?.find(\r\n b => borrowerId == b.id,\r\n );\r\n\r\n if (!borrowerToDelete) return;\r\n\r\n // get context for borrower and call delete command on it\r\n let contextToDelete = this.resourceContextStore.getByResource(\r\n borrowerToDelete,\r\n true,\r\n );\r\n await contextToDelete.delete().result;\r\n\r\n // remove borrower from the deal resource\r\n dealResource.borrowers = dealResource.borrowers.filter(\r\n b => b.id != borrowerId,\r\n );\r\n // update contexts\r\n this._borrowerContexts = this._borrowerContexts.filter(\r\n x => x.key != contextToDelete.key,\r\n );\r\n // update local borrowers\r\n //--update order field\r\n this.borrowers\r\n .filter(b => b.order > borrowerToDelete.order)\r\n .forEach(b => b.order--);\r\n //--remove deleted borrower\r\n this.borrowers = this.borrowers.filter(x => x.id != borrowerId);\r\n }\r\n\r\n private borrowerNames: { id: number; name: string }[] = [];\r\n public getBorrowerNames(): { id: number; name: string }[] {\r\n if (\r\n this.borrowerNames?.length !=\r\n this.clientJourneyContext.deal.borrowers?.length\r\n )\r\n this.borrowerNames = this.clientJourneyContext.deal.borrowers?.map(\r\n borrower => {\r\n return {\r\n id: borrower.id,\r\n name: contactFullName(borrower.contact),\r\n };\r\n },\r\n );\r\n\r\n return this.borrowerNames;\r\n }\r\n\r\n public save(borrowerId: number) {\r\n const borrower = this.borrowers.find(b => b.id == borrowerId);\r\n const context = this.resourceContextStore.getByResource(borrower);\r\n context.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n\r\n public contact(borrowerId: number): Contact {\r\n return this.clientJourneyContext.deal.borrowers?.find(\r\n borrower => borrower.id == borrowerId,\r\n )?.contact;\r\n }\r\n\r\n isLastBorrower(borrowerId: number): boolean {\r\n const borrowers = this.borrowers;\r\n return borrowers.findIndex(x => x.id == borrowerId) + 1 == borrowers.length;\r\n }\r\n\r\n findNextBorrower(\r\n borrowerId: number,\r\n predicate: (borrower: Borrower) => boolean = () => true,\r\n ): Borrower {\r\n const borrowers = this.borrowers;\r\n\r\n let borrowerIndex = borrowers.findIndex(x => x.id == borrowerId);\r\n if (borrowerIndex == -1) borrowerIndex = 0;\r\n\r\n const nextIndex = borrowerIndex + 1;\r\n if (nextIndex == borrowers.length) return null;\r\n\r\n let nextBorrower = borrowers[nextIndex];\r\n\r\n // Ensure the borrower is valid by testing the predicate,\r\n // if it's not, find the next valid one.\r\n if (predicate && !predicate(nextBorrower)) {\r\n return this.findNextBorrower(nextBorrower.id, predicate);\r\n }\r\n\r\n return nextBorrower;\r\n }\r\n\r\n hasName(borrowerId: number): boolean {\r\n let contact = this.clientJourneyContext.deal.borrowers?.find(\r\n b => b.id == borrowerId,\r\n )?.contact;\r\n return !!contact?.firstName && !!contact?.lastName;\r\n }\r\n}\r\n","import {\r\n isEmail,\r\n isStringNullOrEmpty,\r\n} from '../../../../../../shared-utilities/string-helpers/string-helpers';\r\nimport { ValidatorRule } from '../../../../../utilities/validation/validation.interfaces';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyValidationMetadata } from '../../../shared/validation/client-journey-validation-metadata';\r\nimport { ModelValidator } from '../../../shared/validation/model-validator';\r\n\r\nexport enum BorrowerValidationRuleKeys {\r\n FirstName = 'firstName',\r\n LastName = 'lastName',\r\n Email = 'email',\r\n EmailFormat = 'emailFormat',\r\n Phone = 'phone',\r\n PhoneFormat = 'phoneFormat',\r\n Sin = 'sin',\r\n DateOfBirth = 'dateOfBirth',\r\n}\r\n\r\nexport class BorrowerValidator extends ModelValidator<\r\n Borrower,\r\n ClientJourneyValidationMetadata\r\n> {\r\n private firstNameValidationRule: ValidatorRule;\r\n get firstNameIsValid(): boolean {\r\n return this.firstNameValidationRule.isValid;\r\n }\r\n\r\n private lastNameValidationRule: ValidatorRule;\r\n get lastNameIsValid(): boolean {\r\n return this.lastNameValidationRule.isValid;\r\n }\r\n\r\n private emailValidationRule: ValidatorRule;\r\n get emailIsValid(): boolean {\r\n return this.emailValidationRule.isValid;\r\n }\r\n\r\n private emailFormatValidationRule: ValidatorRule;\r\n get emailFormatIsValid(): boolean {\r\n return this.emailFormatValidationRule.isValid;\r\n }\r\n\r\n private phoneValidationRule: ValidatorRule;\r\n get phoneIsValid(): boolean {\r\n return this.phoneValidationRule.isValid;\r\n }\r\n\r\n private phoneFormatValidationRule: ValidatorRule;\r\n get phoneFormatIsValid(): boolean {\r\n return this.phoneFormatValidationRule.isValid;\r\n }\r\n\r\n private sinValidationRule: ValidatorRule;\r\n get sinIsValid(): boolean {\r\n return this.sinValidationRule.isValid;\r\n }\r\n\r\n private dateOfBirthValidationRule: ValidatorRule;\r\n get dateOfBirthIsValid(): boolean {\r\n return this.dateOfBirthValidationRule.isValid;\r\n }\r\n\r\n constructor(borrower: Borrower) {\r\n super(borrower);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: true,\r\n showInMenu: true,\r\n };\r\n\r\n //first name\r\n this.firstNameValidationRule = this.ruleFor(\r\n b => b.contact.firstName,\r\n BorrowerValidationRuleKeys.FirstName,\r\n navigationMetadata,\r\n ).must(firstName => firstName?.length > 0);\r\n\r\n //last name\r\n this.lastNameValidationRule = this.ruleFor(\r\n b => b.contact.lastName,\r\n BorrowerValidationRuleKeys.LastName,\r\n navigationMetadata,\r\n ).must(lastName => lastName?.length > 0);\r\n\r\n //email - required\r\n this.emailValidationRule = this.ruleFor(\r\n b => b.contact.email,\r\n BorrowerValidationRuleKeys.Email,\r\n navigationMetadata,\r\n ).must(email => email?.length > 0);\r\n\r\n //email - format\r\n this.emailFormatValidationRule = this.ruleFor(\r\n b => b.contact.email,\r\n BorrowerValidationRuleKeys.EmailFormat,\r\n navigationMetadata,\r\n )\r\n .when(b => b.contact.email?.length > 0)\r\n .must(email => {\r\n // const emailPattern =\r\n // /^(?!\\.)(\"([^\"\\r\\\\]|\\\\[\"\\r\\\\])*\"|([-a-z0-9!#$%&'*+\\/=?^_`{|}~]|(? b.contact.cellPhone,\r\n BorrowerValidationRuleKeys.Phone,\r\n navigationMetadata,\r\n )\r\n .when(\r\n b =>\r\n !(b.contact.homePhone?.length > 0) &&\r\n !(b.contact.businessPhone?.length > 0),\r\n )\r\n .must(cellPhone => cellPhone?.length > 0);\r\n\r\n //phone number format\r\n this.phoneFormatValidationRule = this.ruleFor(\r\n b => b.contact.cellPhone,\r\n BorrowerValidationRuleKeys.PhoneFormat,\r\n navigationMetadata,\r\n )\r\n .when(\r\n b =>\r\n !(b.contact.homePhone?.length >= 10) &&\r\n !(b.contact.businessPhone?.length >= 10),\r\n )\r\n .must(cellPhone => cellPhone?.length >= 10);\r\n\r\n //SIN\r\n this.sinValidationRule = this.ruleFor(\r\n b => b.contact.sin,\r\n BorrowerValidationRuleKeys.Sin,\r\n navigationMetadata,\r\n )\r\n .when(b => b.noaConsent ?? false)\r\n .must(sin => !isStringNullOrEmpty(sin, true));\r\n\r\n this.dateOfBirthValidationRule = this.ruleFor(\r\n b => b.contact.dateOfBirth,\r\n BorrowerValidationRuleKeys.DateOfBirth,\r\n navigationMetadata,\r\n ).must(dateOfBirth => dateOfBirth != null);\r\n }\r\n}\r\n","import { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport {\r\n DeleteResourceCommand,\r\n PostResourceCommand,\r\n ResourceCommand,\r\n} from '../../../shared/services/resource-command-stream.service';\r\nimport { ValidationGlobalStore } from '../../../../../utilities/validation/validation-global-store';\r\nimport { BorrowerValidator } from './borrower.validator';\r\nimport { ClientJourneyValidatorStoreBase } from '../../../shared/validation/client-journey-validator-store-base';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\n\r\nexport class BorrowersValidatorStore extends ClientJourneyValidatorStoreBase {\r\n static readonly globalStoreKey = 'BorrowersValidationStore';\r\n\r\n private commandStreamEventDetach: () => void;\r\n\r\n constructor(\r\n globalStore: ValidationGlobalStore,\r\n clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n super(globalStore, clientJourneyContext, SlidesStateNames.Borrowers);\r\n\r\n // Create a validator for each borrower\r\n clientJourneyContext.deal.borrowers.forEach(b =>\r\n this.getBorrowerValidator(b),\r\n );\r\n\r\n // Hook the command stream to be notified of new or removed borrowers\r\n this.commandStreamEventDetach =\r\n clientJourneyContext.resourceCommandStream.onCommandSuccess(command =>\r\n this.onCommandSuccess(command),\r\n );\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n this.commandStreamEventDetach();\r\n }\r\n\r\n private async onCommandSuccess(command: ResourceCommand) {\r\n // Post uses Partial for command.resource, so we can't rely on that\r\n // to get the borrower, but we can use the result of the command.\r\n // Delete will return a http response object for the result, so we can't\r\n // rely on that to get the borrower, but we can use the command.resource.\r\n let [result, err] = await handle(command.result);\r\n if (!result || err) return;\r\n\r\n if (command instanceof PostResourceCommand && result instanceof Borrower) {\r\n this.getBorrowerValidator(result);\r\n }\r\n\r\n if (\r\n command instanceof DeleteResourceCommand &&\r\n command.resource &&\r\n command.resource instanceof Borrower\r\n ) {\r\n this.removeBorrowerValidator(command.resource);\r\n }\r\n }\r\n\r\n private getBorrowerKey(borrower: Borrower): string {\r\n let key = `borrower_${borrower.id}`;\r\n return key;\r\n }\r\n\r\n getBorrowerValidator(borrower: Borrower): BorrowerValidator {\r\n let key = this.getBorrowerKey(borrower);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new BorrowerValidator(borrower);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as BorrowerValidator;\r\n }\r\n\r\n removeBorrowerValidator(borrower: Borrower) {\r\n let key = this.getBorrowerKey(borrower);\r\n this.removeValidator(key);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-getting-started-failed-validation-modal',\r\n templateUrl: './getting-started-failed-validation-modal.component.html',\r\n styleUrls: ['./getting-started-failed-validation-modal.component.scss'],\r\n})\r\nexport class GettingStartedFailedValidationModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Whoa Nelly!\r\n

\r\n

You haven't filled out some required fields.

\r\n

Please go back and fill out these fields to continue your application.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","
\r\n\r\n
\r\n

\r\n Let's get started with your application!\r\n

\r\n
\r\n
\r\n\r\n \r\n
\r\n

What are you looking to do?*\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n To continue, we need to know what you're looking to do \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { HookResult, Transition, UiOnExit, UIRouter } from '@uirouter/angular';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { SlidesStateNames } from '../../router/slides-states';\r\nimport { LoanType } from '../../shared/models/deal-resources/enumerators';\r\nimport { DealService } from '../../shared/services/deal/deal.service';\r\nimport { PrimaryMortgageService } from '../../shared/services/primary-mortgage.service';\r\nimport { ReferralService } from '../../shared/services/referral.service';\r\nimport { SubjectPropertyAddressService } from '../../shared/services/deal/subject-property-address.service';\r\nimport { SubjectPropertyService } from '../../shared/services/deal/subject-property.service';\r\nimport { BorrowerContactService } from '../borrowers/services/borrower-contact.service';\r\nimport { BorrowersService } from '../borrowers/services/borrowers.service';\r\nimport { GettingStartedFailedValidationModalComponent } from './modals/getting-started-failed-validation-modal/getting-started-failed-validation-modal.component';\r\nimport { MortgageRequestMortgagesService } from './shared/property-info/mortgage-request-mortgages.service';\r\nimport { ClientJourneyContext } from '../../shared/services/deal/client-journey-context';\r\nimport { GettingStartedValidatorStore } from './validation/getting-started-validator.store';\r\nimport { MortgageRequestValidator } from './validation/mortgage-request.validator';\r\n\r\n@Component({\r\n selector: 'getting-started',\r\n templateUrl: './getting-started.component.html',\r\n styleUrls: ['./getting-started.component.scss'],\r\n animations: animations,\r\n viewProviders: [\r\n DealService,\r\n PrimaryMortgageService,\r\n BorrowersService,\r\n MortgageRequestMortgagesService,\r\n SubjectPropertyService,\r\n SubjectPropertyAddressService,\r\n ReferralService,\r\n BorrowerContactService,\r\n ],\r\n})\r\nexport class GettingStartedComponent implements OnInit, UiOnExit {\r\n public isFlushing: boolean = false;\r\n SlidesStateNames = SlidesStateNames;\r\n loanType = LoanType;\r\n private validationContext: MortgageRequestValidator;\r\n\r\n public get mortgageRequestModel() {\r\n return this.primaryMortgageService.primaryMortgage;\r\n }\r\n\r\n public get isDealLoaded() {\r\n return this.primaryMortgageService.isDealLoaded;\r\n }\r\n\r\n constructor(\r\n private primaryMortgageService: PrimaryMortgageService,\r\n private modalService: NgbModal,\r\n private uiRouter: UIRouter,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private dealService: DealService,\r\n private referralService: ReferralService,\r\n ) {}\r\n\r\n async uiCanExit(newTransition?: Transition): Promise {\r\n await this.validate(true);\r\n\r\n if (!this.validationContext.isValid) newTransition.abort();\r\n return this.validationContext.isValid;\r\n }\r\n\r\n async ngOnDestroy(): Promise {\r\n let [_, error] = await handle(this.dealService.flush());\r\n //TODO: log exception\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n let validationGlobalStore = this.clientJourneyContext.validationGlobalStore;\r\n let borrowersValidationStore: GettingStartedValidatorStore =\r\n validationGlobalStore.getStore(\r\n GettingStartedValidatorStore.globalStoreKey,\r\n );\r\n this.validationContext =\r\n borrowersValidationStore.getMortgageRequestValidator(\r\n this.mortgageRequestModel,\r\n );\r\n }\r\n\r\n icon = Icons;\r\n\r\n public async onLoanPurposeChangeEvent(event: any): Promise {\r\n this.mortgagePurposeIsValid = true;\r\n this.primaryMortgageService.save();\r\n\r\n if (\r\n this.mortgageRequestModel.purpose &&\r\n (this.mortgageRequestModel.purpose === LoanType.refinance ||\r\n this.mortgageRequestModel.purpose === LoanType.renew)\r\n ) {\r\n this.dealService.deal.isRealtorExists = null;\r\n this.dealService.deal.isRealtorNeeded = null;\r\n this.dealService.save();\r\n //clear referral data if deal type is not purchase\r\n this.referralService.referral.type = null;\r\n this.referralService.saveReferral();\r\n this.referralService.clearReferrerContactData();\r\n }\r\n }\r\n\r\n mortgagePurposeIsValid: boolean = true;\r\n async validate(all: boolean = false): Promise {\r\n this.validationContext.validate();\r\n if (this.validationContext.isValid) return true;\r\n\r\n let modal = this.modalService.open(\r\n GettingStartedFailedValidationModalComponent,\r\n {\r\n size: 'md',\r\n modalDialogClass: 'client-journey-modal alert-modal',\r\n },\r\n );\r\n await handle(modal.result);\r\n\r\n if (!this.validationContext.purposeIsValid) {\r\n this.mortgagePurposeIsValid = false;\r\n return false;\r\n }\r\n\r\n return (\r\n this.validationContext.typeIsValid &&\r\n this.validationContext.firstTimeBuyerIsValid\r\n );\r\n }\r\n\r\n @ViewChild('mortgagePurpose') mortgagePurposeElementRef: ElementRef;\r\n validateChildren: boolean = false;\r\n async onContinueClick() {\r\n this.isFlushing = true;\r\n await this.primaryMortgageService.flush();\r\n\r\n let isValid = await this.validate();\r\n if (isValid) this.uiRouter.stateService.go(SlidesStateNames.Borrowers);\r\n\r\n this.highlightInvalidField();\r\n\r\n //all madatory fields are on the top of the page\r\n this.mortgagePurposeElementRef?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n });\r\n\r\n this.isFlushing = false;\r\n }\r\n\r\n highlightInvalidField() {\r\n this.validateChildren = true;\r\n //reset so we can apply it again\r\n setTimeout(() => (this.validateChildren = false), 200);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HateoasResourceService } from '@lagoshny/ngx-hateoas-client';\r\nimport { Deal } from '../../../../shared/models/deal-resources/deal.model';\r\nimport { MortgageRequestMortgage } from '../../../../shared/models/deal-resources/mortgage-request-mortgage.model';\r\nimport { ClientJourneyContext } from '../../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MortgageRequestMortgagesService {\r\n private _resourceContextStore: ResourceContextStore;\r\n private _firstMortgageContext: ResourceContext;\r\n public firstMortgage: MortgageRequestMortgage;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private dealResourceService: ClientJourneyContext,\r\n ) {\r\n this._resourceContextStore = resourceContextStore;\r\n this.firstMortgage =\r\n this.dealResourceService.deal.primaryMortgageRequest.mortgages.find(\r\n m => m.number === 1,\r\n );\r\n\r\n this._firstMortgageContext = this.resourceContextStore.getByResource(\r\n this.firstMortgage,\r\n );\r\n }\r\n\r\n public save() {\r\n this._firstMortgageContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","import { ClientJourneyValidationMetadata } from '../../../shared/validation/client-journey-validation-metadata';\r\nimport { ModelValidator } from '../../../shared/validation/model-validator';\r\nimport { MortgageRequest } from '../../../shared/models/deal-resources/mortgage-request.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport {\r\n LoanType,\r\n PropertyFoundTypes,\r\n} from '../../../shared/models/deal-resources/enumerators';\r\nimport { ValidatorRule } from 'src/app/utilities/validation/validation.interfaces';\r\n\r\nexport enum MortgageRequestValidationRules {\r\n Purpose = 'purpose',\r\n Type = 'type',\r\n FirstTimeBuyer = 'firstTimeBuyer',\r\n}\r\n\r\nexport class MortgageRequestValidator extends ModelValidator<\r\n MortgageRequest,\r\n ClientJourneyValidationMetadata\r\n> {\r\n private purposeValidationRule: ValidatorRule;\r\n get purposeIsValid(): boolean {\r\n return this.purposeValidationRule.isValid;\r\n }\r\n\r\n private typeValidationRule: ValidatorRule;\r\n get typeIsValid(): boolean {\r\n return this.typeValidationRule.isValid;\r\n }\r\n\r\n private firstTimeBuyerValidationRule: ValidatorRule;\r\n get firstTimeBuyerIsValid(): boolean {\r\n return this.firstTimeBuyerValidationRule.isValid;\r\n }\r\n\r\n constructor(\r\n mortgageRequest: MortgageRequest,\r\n clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n super(mortgageRequest);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: true,\r\n showInMenu: true,\r\n };\r\n\r\n //purpose\r\n this.purposeValidationRule = this.ruleFor(\r\n mr => mr.purpose,\r\n MortgageRequestValidationRules.Purpose,\r\n navigationMetadata,\r\n ).must(purpose => purpose != null);\r\n\r\n //type\r\n this.typeValidationRule = this.ruleFor(\r\n mr => mr.type,\r\n MortgageRequestValidationRules.Type,\r\n navigationMetadata,\r\n )\r\n .when(mr => mr.purpose == LoanType.buy)\r\n .must(type => type != null);\r\n\r\n //first time buyer\r\n this.firstTimeBuyerValidationRule = this.ruleFor(\r\n mr => mr.type, //we don't need this field specified in this case\r\n MortgageRequestValidationRules.FirstTimeBuyer,\r\n navigationMetadata,\r\n )\r\n .when(\r\n mr => mr.purpose == LoanType.buy && mr.type == PropertyFoundTypes.yes,\r\n )\r\n .must(type => {\r\n let primaryBorrower = clientJourneyContext.deal.getPrimaryBorrower();\r\n return primaryBorrower.contact.firstTimeBuyer != null;\r\n });\r\n }\r\n}\r\n","import { ClientJourneyValidationMetadata } from '../../../shared/validation/client-journey-validation-metadata';\r\nimport { ModelValidator } from '../../../shared/validation/model-validator';\r\nimport { Contact } from '../../../shared/models/deal-resources/contact.model';\r\nimport { ValidatorRule } from 'src/app/utilities/validation/validation.interfaces';\r\n\r\nexport enum RealtorContactValidationRules {\r\n EmailFormat = 'emailFormat',\r\n}\r\n\r\nexport class RealtorContactValidator extends ModelValidator<\r\n Contact,\r\n ClientJourneyValidationMetadata\r\n> {\r\n private emailFormatValidationRule: ValidatorRule;\r\n get emailFormatIsValid(): boolean {\r\n return this.emailFormatValidationRule.isValid;\r\n }\r\n\r\n constructor(contact: Contact) {\r\n super(contact);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: false,\r\n showInMenu: true,\r\n };\r\n\r\n //email - format\r\n this.emailFormatValidationRule = this.ruleFor(\r\n c => c.email,\r\n RealtorContactValidationRules.EmailFormat,\r\n navigationMetadata,\r\n )\r\n .when(c => c.email?.length > 0)\r\n .must(email => {\r\n let indexOfAt = email?.indexOf('@');\r\n let lastIndexOfDot = email?.lastIndexOf('.');\r\n let isValid =\r\n !!email &&\r\n indexOfAt > 0 &&\r\n lastIndexOfDot + 1 < email?.length &&\r\n lastIndexOfDot - indexOfAt > 1;\r\n return isValid;\r\n });\r\n }\r\n}\r\n","import { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport {\r\n DeleteResourceCommand,\r\n PostResourceCommand,\r\n ResourceCommand,\r\n} from '../../../shared/services/resource-command-stream.service';\r\nimport { ValidationGlobalStore } from '../../../../../utilities/validation/validation-global-store';\r\nimport { ClientJourneyValidatorStoreBase } from '../../../shared/validation/client-journey-validator-store-base';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { MortgageRequestValidator } from './mortgage-request.validator';\r\nimport { MortgageRequest } from '../../../shared/models/deal-resources/mortgage-request.model';\r\nimport { RealtorContactValidator } from './realtor-contact.validator';\r\nimport { Contact } from '../../../shared/models/deal-resources/contact.model';\r\n\r\nexport class GettingStartedValidatorStore extends ClientJourneyValidatorStoreBase {\r\n static readonly globalStoreKey = 'GettingStartedValidationStore';\r\n\r\n constructor(\r\n globalStore: ValidationGlobalStore,\r\n clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n super(globalStore, clientJourneyContext, SlidesStateNames.GettingStarted);\r\n\r\n // Create a mortgage request validator\r\n this.getMortgageRequestValidator;\r\n\r\n // Create a realtor contact validator\r\n this.getRealtorContactValidator;\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n }\r\n\r\n private getMortgageRequestKey(mortgageRequest: MortgageRequest): string {\r\n let key = `mortgageRequest_${mortgageRequest.id}`;\r\n return key;\r\n }\r\n\r\n private getContactKey(contact: Contact): string {\r\n let key = `contact_${contact.id}`;\r\n return key;\r\n }\r\n\r\n getMortgageRequestValidator(\r\n mortgageRequest: MortgageRequest,\r\n ): MortgageRequestValidator {\r\n let key = this.getMortgageRequestKey(mortgageRequest);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new MortgageRequestValidator(\r\n mortgageRequest,\r\n this.clientJourneyContext,\r\n );\r\n this.addValidator(key, validator);\r\n }\r\n return validator as MortgageRequestValidator;\r\n }\r\n\r\n getRealtorContactValidator(contact: Contact): RealtorContactValidator {\r\n let key = this.getContactKey(contact);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new RealtorContactValidator(contact);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as RealtorContactValidator;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Borrower } from '../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from '../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BorrowerIncomeService {\r\n private _resourceContextStore: ResourceContextStore;\r\n private _clientJourneyContext: ClientJourneyContext;\r\n private _borrowers: Borrower[] = [];\r\n\r\n private _borrowerContext: ResourceContext;\r\n private _borrowerModel: Borrower;\r\n\r\n constructor(\r\n resourceContextStore: ResourceContextStore,\r\n clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this._resourceContextStore = resourceContextStore;\r\n this._clientJourneyContext = clientJourneyContext;\r\n this._borrowers = this._clientJourneyContext.deal.borrowers;\r\n }\r\n\r\n get borrowers(): Borrower[] {\r\n return [...this._borrowers];\r\n }\r\n\r\n public getBorrowerModel(borrowerId: number) {\r\n if (this._borrowerModel && this._borrowerModel.id === borrowerId) {\r\n return this._borrowerModel;\r\n }\r\n\r\n this._borrowerModel = this._borrowers.find(b => b.id === borrowerId);\r\n this._borrowerContext = this._resourceContextStore.getByResource(\r\n this._borrowerModel,\r\n );\r\n\r\n return this._borrowerModel;\r\n }\r\n\r\n public save() {\r\n this._borrowerContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this._resourceContextStore.flush();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Address } from '../../shared/models/deal-resources/address.model';\r\nimport { ClientJourneyContext } from '../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EmploymentAddressService {\r\n private _employmentAddressContext: ResourceContext
;\r\n private _employmentAddressResource: Address;\r\n private _employmentAddress: Address;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {}\r\n\r\n public loadBorrowerEmploymentAddress(\r\n borrowerId: number,\r\n employmentId: number,\r\n ): Address {\r\n if (this._employmentAddress) {\r\n return this._employmentAddress;\r\n }\r\n\r\n const borrowerResource = this.clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id === borrowerId,\r\n );\r\n\r\n const employmentResource = borrowerResource.employments.find(\r\n employment => employment.employmentId === employmentId,\r\n );\r\n\r\n this._employmentAddressResource = employmentResource.address;\r\n this._employmentAddress = this._employmentAddressResource;\r\n\r\n this._employmentAddressContext = this.resourceContextStore.getByResource(\r\n this._employmentAddress,\r\n true,\r\n );\r\n\r\n return this._employmentAddress;\r\n }\r\n\r\n public async removeAddress() {\r\n //TODO: use await this._employmentAddressContext.delete().result;\r\n this.resourceContextStore.removeByResource(this._employmentAddressResource);\r\n this._employmentAddressContext = null;\r\n this._employmentAddressResource = null;\r\n this._employmentAddress = null;\r\n }\r\n\r\n public save() {\r\n if (!this._employmentAddressContext) return;\r\n this._employmentAddressContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Address } from '../../shared/models/deal-resources/address.model';\r\nimport { BorrowerEmployment } from '../../shared/models/deal-resources/borrower-employment.model';\r\nimport { Borrower } from '../../shared/models/deal-resources/borrower.model';\r\nimport { IncomePeriods } from '../../shared/models/deal-resources/enumerators';\r\nimport { ClientJourneyContext } from '../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../shared/services/resource-context.service';\r\nimport { EmploymentAddressService } from './employment-address.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EmploymentIncomeService {\r\n private _employmentContext: ResourceContext;\r\n\r\n private _employmentModel: BorrowerEmployment;\r\n private _employmentAddressModel: Address;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private employmentAddressService: EmploymentAddressService,\r\n ) {}\r\n\r\n public async createBorrowerEmployment(\r\n borrowerId: number,\r\n isSelfEmployed: boolean,\r\n isCurrent: boolean,\r\n jobType?: string,\r\n ): Promise<[BorrowerEmployment, Address]> {\r\n const borrowerResource = this.getBorrowerResource(borrowerId);\r\n\r\n const requestBody: CreateEmploymentRequest = {\r\n selfEmployed: isSelfEmployed,\r\n isCurrent: isCurrent,\r\n start: null,\r\n jobType: jobType,\r\n incomePeriod: IncomePeriods.Annual,\r\n };\r\n\r\n const borrowerContext =\r\n this.resourceContextStore.getByResource(borrowerResource);\r\n let newEmployment: BorrowerEmployment = await borrowerContext.post(\r\n 'create-employment',\r\n requestBody,\r\n ).result;\r\n\r\n await this.clientJourneyContext.loadPathForParents(\r\n '$.borrowers.employments',\r\n [borrowerResource],\r\n );\r\n\r\n let employmentResource = borrowerResource.employments.find(\r\n e => e.employmentId == newEmployment.employmentId,\r\n );\r\n\r\n this.loadModels(employmentResource);\r\n return [this._employmentModel, this._employmentAddressModel];\r\n }\r\n\r\n public getBorrowerEmploymentModel(\r\n borrowerId: number,\r\n employmentId: number,\r\n ): [BorrowerEmployment, Address] {\r\n const borrowerResource = this.getBorrowerResource(borrowerId);\r\n\r\n const employmentResource = borrowerResource.employments.find(\r\n employment => employment.employmentId === employmentId,\r\n );\r\n\r\n if (employmentResource) {\r\n this.loadModels(employmentResource);\r\n } else {\r\n this._employmentModel = null;\r\n }\r\n\r\n return [this._employmentModel, this._employmentAddressModel];\r\n }\r\n\r\n public async deleteBorrowerEmployment(\r\n borrowerId: number,\r\n employmentId: number,\r\n ): Promise {\r\n //get the Borrower resource\r\n const borrowerResource = this.getBorrowerResource(borrowerId);\r\n\r\n if (!borrowerResource) return;\r\n\r\n //get BorrowerEmployment resources\r\n let employmentResourcesToRemove = borrowerResource?.employments?.find(\r\n employment => employment.employmentId == employmentId,\r\n );\r\n\r\n if (!employmentResourcesToRemove) return;\r\n\r\n let employmentContext = this.resourceContextStore.getByResource(\r\n employmentResourcesToRemove,\r\n true,\r\n );\r\n await employmentContext.delete().result;\r\n\r\n // Reload all employments for the given borrower\r\n await this.clientJourneyContext.loadPathForParents(\r\n '$.borrowers.employments',\r\n [borrowerResource],\r\n );\r\n\r\n if (\r\n this._employmentModel &&\r\n this._employmentModel.employmentId == employmentId\r\n ) {\r\n this.employmentAddressService.removeAddress();\r\n this._employmentAddressModel = null;\r\n this._employmentModel = null;\r\n }\r\n }\r\n\r\n public saveEmployment() {\r\n let patchCommand = this._employmentContext.patch(false);\r\n\r\n // If any of the isCurrent, start, or end properties are found in the snapshot,\r\n // we set the includeDateRange to true. We then force the start and end to be\r\n // included in the snapshot, even if the snapshot provider didn't see a diff.\r\n // This guarantees changes tot he isCurrent flag are sending the necessary\r\n // date range data to the server for saving.\r\n let includeDateRange = false;\r\n includeDateRange ||= 'isCurrent' in patchCommand.snapshot;\r\n includeDateRange ||= 'start' in patchCommand.snapshot;\r\n includeDateRange ||= 'end' in patchCommand.snapshot;\r\n\r\n if (includeDateRange) {\r\n patchCommand.snapshot.start = this._employmentModel.start;\r\n patchCommand.snapshot.end = this._employmentModel.end;\r\n }\r\n\r\n this.clientJourneyContext.resourceCommandStream.add(patchCommand);\r\n }\r\n\r\n public saveAddress() {\r\n this.employmentAddressService.save();\r\n }\r\n\r\n public async swapEmployment(\r\n employmentId: number,\r\n fromBorrowerId: number,\r\n toBorrowerId: number,\r\n ): Promise {\r\n let updatedEmployment = await this._employmentContext.post(\r\n 'swap-borrower',\r\n { toBorrowerId },\r\n ).result;\r\n\r\n //preserve the address for the new new employment\r\n updatedEmployment.address = this._employmentModel.address;\r\n\r\n //remove old employment from context\r\n this.resourceContextStore.removeByResource(this._employmentModel);\r\n //remove old employment from previous borrower\r\n const fromBorrowerResource = this.getBorrowerResource(fromBorrowerId);\r\n fromBorrowerResource.employments = fromBorrowerResource.employments.filter(\r\n a => a.employmentId != employmentId,\r\n );\r\n\r\n //add new employment to context\r\n this.resourceContextStore.add(updatedEmployment);\r\n //add new employment to the new borrower\r\n const toBorrowerResource = this.getBorrowerResource(toBorrowerId);\r\n toBorrowerResource.employments.push(updatedEmployment);\r\n }\r\n\r\n private loadModels(employmentResource: BorrowerEmployment) {\r\n this._employmentContext =\r\n this.resourceContextStore.getByResource(employmentResource);\r\n\r\n this._employmentModel = employmentResource;\r\n\r\n this._employmentAddressModel =\r\n this.employmentAddressService.loadBorrowerEmploymentAddress(\r\n employmentResource.borrowerId,\r\n employmentResource.employmentId,\r\n );\r\n }\r\n\r\n private getBorrowerResource(borrowerId: number): Borrower {\r\n const borrowerResource = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id === borrowerId,\r\n );\r\n return borrowerResource;\r\n }\r\n}\r\n\r\nexport interface CreateEmploymentRequest {\r\n selfEmployed: boolean;\r\n isCurrent: boolean;\r\n start: Date;\r\n jobType: string;\r\n incomePeriod: IncomePeriods;\r\n}\r\n","import { BorrowerOtherIncome } from '../../shared/models/borrower-other-income.model';\r\nimport { BorrowerEmployment } from '../../shared/models/deal-resources/borrower-employment.model';\r\nimport { BorrowerOtherIncomeTypes } from '../../shared/models/deal-resources/enumerators';\r\n\r\nexport enum IncomeTypes {\r\n Employment,\r\n SelfEmployment,\r\n Pension,\r\n CanadianPensionPlan,\r\n OldAgeSecurity,\r\n ChildSupport,\r\n SpousalSupport,\r\n CanadaChildBenefit,\r\n SurvivorBenefitPension,\r\n Homemaker,\r\n Unemployed,\r\n Retired,\r\n}\r\n\r\nexport enum JobTypes {\r\n Homemaker = 'Homemaker',\r\n Unemployed = 'Unemployed',\r\n Retired = 'Retired',\r\n Other = 'Other',\r\n}\r\n\r\nexport enum IncomeComponentTypes {\r\n Employed,\r\n SelfEmployed,\r\n OtherIncome,\r\n JobType,\r\n}\r\n\r\nexport function resolveEmploymentIncomeType(\r\n employment: BorrowerEmployment,\r\n): IncomeTypes {\r\n const jobType = employment.jobType;\r\n if (!jobType) {\r\n return employment.selfEmployed\r\n ? IncomeTypes.SelfEmployment\r\n : IncomeTypes.Employment;\r\n }\r\n\r\n switch (jobType) {\r\n case JobTypes.Homemaker:\r\n return IncomeTypes.Homemaker;\r\n case JobTypes.Retired:\r\n return IncomeTypes.Retired;\r\n case JobTypes.Unemployed:\r\n return IncomeTypes.Unemployed;\r\n\r\n default:\r\n return IncomeTypes.Employment;\r\n }\r\n}\r\n\r\nexport function resolveOtherIncomeIncomeType(\r\n borrowerOtherIncome: BorrowerOtherIncome,\r\n): IncomeTypes {\r\n switch (borrowerOtherIncome.type) {\r\n case BorrowerOtherIncomeTypes.Pension:\r\n return IncomeTypes.Pension;\r\n case BorrowerOtherIncomeTypes.CanadianPensionPlan:\r\n return IncomeTypes.CanadianPensionPlan;\r\n case BorrowerOtherIncomeTypes.OldAgeSecurity:\r\n return IncomeTypes.OldAgeSecurity;\r\n case BorrowerOtherIncomeTypes.SurvivorBenefitPension:\r\n return IncomeTypes.SurvivorBenefitPension;\r\n case BorrowerOtherIncomeTypes.Alimony:\r\n return IncomeTypes.SpousalSupport;\r\n case BorrowerOtherIncomeTypes.ChildSupport:\r\n return IncomeTypes.ChildSupport;\r\n case BorrowerOtherIncomeTypes.CanadaChildBenefit:\r\n return IncomeTypes.CanadaChildBenefit;\r\n default:\r\n return IncomeTypes.Pension;\r\n }\r\n}\r\n\r\nexport function resolveComponentType(\r\n incomeType: IncomeTypes,\r\n): IncomeComponentTypes {\r\n switch (incomeType) {\r\n case IncomeTypes.Employment:\r\n return IncomeComponentTypes.Employed;\r\n\r\n case IncomeTypes.SelfEmployment:\r\n return IncomeComponentTypes.SelfEmployed;\r\n\r\n case IncomeTypes.Pension:\r\n case IncomeTypes.CanadianPensionPlan:\r\n case IncomeTypes.OldAgeSecurity:\r\n case IncomeTypes.ChildSupport:\r\n case IncomeTypes.SpousalSupport:\r\n case IncomeTypes.CanadaChildBenefit:\r\n case IncomeTypes.SurvivorBenefitPension:\r\n return IncomeComponentTypes.OtherIncome;\r\n\r\n case IncomeTypes.Homemaker:\r\n case IncomeTypes.Unemployed:\r\n case IncomeTypes.Retired:\r\n return IncomeComponentTypes.JobType;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-switching-income-modal',\r\n templateUrl: './switching-income-modal.component.html',\r\n styleUrls: ['./switching-income-modal.component.scss'],\r\n})\r\nexport class SwitchingIncomeModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Switching income will clear any information you just entered.\r\n

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/angular';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { SlidesStateNames } from 'src/app/client/journey/router/slides-states';\r\n\r\n@Component({\r\n selector: 'app-current-employment-reminder',\r\n templateUrl: './current-employment-reminder.component.html',\r\n styleUrls: ['./current-employment-reminder.component.scss'],\r\n})\r\nexport class CurrentEmploymentReminderComponent implements OnInit {\r\n onContinueClick() {\r\n this.uiRouter.stateService.go(SlidesStateNames.IncomeSummary);\r\n }\r\n\r\n constructor(public activeModal: NgbActiveModal, private uiRouter: UIRouter) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Just Checking...

\r\n

You didn't complete the employment details, so they won't be\r\n saved.\r\n

\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","
\r\n

Income

\r\n\r\n \r\n\r\n
\r\n

What type of income do you have? *\r\n

\r\n (You can add more after clicking 'continue' at the bottom\r\n of the page)\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n Pension\r\n

\r\n

\r\n Canadian Pension Plan (CPP)\r\n

\r\n

\r\n Old Age Security (OAS)\r\n

\r\n

\r\n Child Support\r\n

\r\n

\r\n Spousal Support\r\n

\r\n

\r\n Canada Child Benefit (CCB)\r\n

\r\n

\r\n Survivor Benefit Pension\r\n

\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n

Homemaker

\r\n

Unemployed

\r\n

Retired

\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n
","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { BorrowerIncomeService } from '../borrower-income.service';\r\nimport {\r\n Borrower,\r\n getPrimaryBorrowerId,\r\n} from '../../../shared/models/deal-resources/borrower.model';\r\nimport { BorrowerEmployment } from '../../../shared/models/deal-resources/borrower-employment.model';\r\nimport { Transition, UiOnParamsChanged, UIRouter } from '@uirouter/angular';\r\nimport { BorrowerOtherIncome } from '../../../shared/models/borrower-other-income.model';\r\nimport {\r\n IncomeComponentTypes,\r\n IncomeTypes,\r\n JobTypes,\r\n resolveComponentType,\r\n resolveEmploymentIncomeType,\r\n resolveOtherIncomeIncomeType,\r\n} from '../helper.model';\r\nimport { BorrowerOtherIncomeTypes } from '../../../shared/models/deal-resources/enumerators';\r\nimport { IncomeRemoveModalComponent } from '../modals/income-remove-modal/income-remove-modal.component';\r\nimport { SwitchingIncomeModalComponent } from '../modals/switching-income-modal/switching-income-modal.component';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { EmploymentIncomeService } from '../employment-income.service';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { EmploymentAddressService } from '../employment-address.service';\r\nimport { OtherIncomeService } from '../other-income.service';\r\nimport { TransitionService } from 'src/app/transition.service';\r\nimport { BorrowerContactService } from '../../borrowers/services/borrower-contact.service';\r\nimport { Contact } from '../../../shared/models/deal-resources/contact.model';\r\nimport { CurrentEmploymentReminderComponent } from './modals/current-employment-reminder/current-employment-reminder.component';\r\n\r\n@Component({\r\n selector: 'cj-slide-income',\r\n templateUrl: './income-edit.component.html',\r\n styleUrls: ['./income-edit.component.scss'],\r\n animations: animations,\r\n viewProviders: [\r\n BorrowerIncomeService,\r\n OtherIncomeService,\r\n EmploymentIncomeService,\r\n EmploymentAddressService,\r\n BorrowerContactService,\r\n ],\r\n})\r\nexport class IncomeEditComponent implements OnInit, UiOnParamsChanged {\r\n icon = Icons;\r\n //enum declaration\r\n SlidesStateNames = SlidesStateNames;\r\n IncomeTypes = IncomeTypes;\r\n IncomeComponentTypes = IncomeComponentTypes;\r\n JobTypes = JobTypes;\r\n\r\n incomeTypeSelection?: IncomeTypes = null;\r\n public isFlushing: boolean = false;\r\n\r\n @ViewChild('incomeComponentContainer') incomeComponentContainer: ElementRef;\r\n\r\n private _incomeComponentType: IncomeComponentTypes = null;\r\n get incomeComponentType(): IncomeComponentTypes {\r\n return this._incomeComponentType;\r\n }\r\n set incomeComponentType(value: IncomeComponentTypes) {\r\n this._incomeComponentType = value;\r\n\r\n if (this._incomeComponentType == null) return;\r\n setTimeout(() => {\r\n this.incomeComponentContainer?.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n });\r\n }\r\n\r\n loadingEmploymentModel: boolean = false;\r\n incomeTypes = IncomeTypes;\r\n borrowerModel: Borrower = new Borrower();\r\n borrowerEmploymentModel: BorrowerEmployment = null;\r\n employmentAddressModel: Address = null;\r\n borrowerOtherIncomeModel: BorrowerOtherIncome;\r\n hideSinInputText: boolean = true;\r\n\r\n editMode: boolean = false;\r\n\r\n public get contact(): Contact {\r\n return this.borrowerContactService.contact;\r\n }\r\n\r\n private _borrowers: Borrower[];\r\n private _currentBorrowerId: number;\r\n private _incomeRemoveModalConfig = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n private _incomeTypeSwitchModalConfig = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n\r\n constructor(\r\n private router: UIRouter,\r\n private borrowerIncomeService: BorrowerIncomeService,\r\n private employmentIncomeService: EmploymentIncomeService,\r\n private otherIncomeService: OtherIncomeService,\r\n private modalService: NgbModal,\r\n private transitionService: TransitionService,\r\n private borrowerContactService: BorrowerContactService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n if (!this.borrowerIncomeService.borrowers) {\r\n this.GoToGettingStarted();\r\n }\r\n\r\n this._borrowers = this.borrowerIncomeService.borrowers;\r\n this._currentBorrowerId = +this.router.globals.params.borrowerId;\r\n\r\n if (!this._currentBorrowerId || this._currentBorrowerId === 0) {\r\n this._currentBorrowerId = getPrimaryBorrowerId(this._borrowers);\r\n\r\n this.router.stateService.go(SlidesStateNames.IncomeEdit, {\r\n borrowerId: this._currentBorrowerId,\r\n });\r\n }\r\n\r\n this.borrowerModel = this.borrowerIncomeService.getBorrowerModel(\r\n this._currentBorrowerId,\r\n );\r\n\r\n const employmentId = +this.router.globals.params.employmentId;\r\n if (employmentId && employmentId > 0) {\r\n this.editMode = true;\r\n this.loadEmploymentModel(+this.router.globals.params.employmentId);\r\n }\r\n\r\n const otherIncomeId = +this.router.globals.params.otherIncomeId;\r\n if (otherIncomeId && otherIncomeId > 0) {\r\n this.editMode = true;\r\n this.loadOtherIncomeModel(+this.router.globals.params.otherIncomeId);\r\n }\r\n\r\n await this.borrowerContactService.initialize(this.borrower.id);\r\n }\r\n\r\n public async onEmploymentUpdateEvent(employment: BorrowerEmployment) {\r\n this.employmentIncomeService.saveEmployment();\r\n }\r\n\r\n public onEmploymentAddressUpdateEvent(address: Address) {\r\n this.employmentIncomeService.saveAddress();\r\n }\r\n\r\n public async onOtherIncomeUpdateEvent(otherIncome: BorrowerOtherIncome) {\r\n this.otherIncomeService.save();\r\n }\r\n\r\n public onContactChange($event: any) {\r\n this.borrowerContactService.save();\r\n }\r\n\r\n public onNoaConsentChange(): void {\r\n this.borrowerIncomeService.save();\r\n }\r\n\r\n public uiOnParamsChanged(\r\n newParams: { [paramName: string]: any },\r\n trans?: Transition,\r\n ): void {\r\n if ('borrowerId' in newParams) {\r\n this._currentBorrowerId = +this.router.globals.params.borrowerId;\r\n this.borrowerModel = this.borrowerIncomeService.getBorrowerModel(\r\n this._currentBorrowerId,\r\n );\r\n\r\n this.borrowerEmploymentModel = null;\r\n this.borrowerOtherIncomeModel = null;\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n get borrower(): Borrower {\r\n if (this._borrowers && this._borrowers.length) {\r\n return this._borrowers.find(\r\n borrower => borrower.id === this._currentBorrowerId,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n public async onBorrowerIdChange(borrowerId: number) {\r\n if (this.borrowerEmploymentModel) {\r\n await this.swapBorrowerEmployment(borrowerId);\r\n } else if (this.borrowerOtherIncomeModel) {\r\n await this.swapBorrowerOtherIncome(borrowerId);\r\n }\r\n\r\n await this.router.stateService.go(SlidesStateNames.IncomeEdit, {\r\n borrowerId: borrowerId,\r\n });\r\n }\r\n\r\n public async onDeleteOtherIncome(otherIncomeId: number): Promise {\r\n const currentTimeStamp = Date.now();\r\n if (!this.borrowerOtherIncomeModel) return;\r\n\r\n if (this.borrowerOtherIncomeModel.otherIncomeId === otherIncomeId) {\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n\r\n if (dismiss) return;\r\n\r\n let [_, err] = await handle(\r\n this.removeOtherIncome(\r\n this.borrower.id,\r\n this.borrowerOtherIncomeModel.otherIncomeId,\r\n ),\r\n );\r\n\r\n if (err) {\r\n // TODO: toast?\r\n return;\r\n }\r\n\r\n this.updateIncomeStateParam(currentTimeStamp, null, null);\r\n }\r\n }\r\n\r\n public async addEmployment(\r\n isSelfEmployed = false,\r\n isCurrent = false,\r\n jobType?: JobTypes,\r\n ): Promise {\r\n const currentTimeStamp = Date.now();\r\n this.loadingEmploymentModel = true; //this will prevent the current employment reminder from showing\r\n [this.borrowerEmploymentModel, this.employmentAddressModel] =\r\n await this.employmentIncomeService.createBorrowerEmployment(\r\n this.borrower.id,\r\n isSelfEmployed,\r\n isCurrent,\r\n jobType,\r\n );\r\n this.loadingEmploymentModel = false;\r\n\r\n this.transitionService.disableScrollToTop();\r\n await this.updateIncomeStateParam(\r\n currentTimeStamp,\r\n this.borrowerEmploymentModel.employmentId,\r\n null,\r\n this.incomeTypeSelection,\r\n );\r\n this.transitionService.enableScrollToTop();\r\n }\r\n\r\n public async onDeleteEmployment(employmentId: number): Promise {\r\n if (this.borrowerEmploymentModel.employmentId === employmentId) {\r\n const currentTimeStamp = Date.now();\r\n\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n if (!this.borrowerEmploymentModel) return;\r\n\r\n let [_, err] = await handle(\r\n this.removeEmployment(\r\n this.borrower.id,\r\n this.borrowerEmploymentModel.employmentId,\r\n ),\r\n );\r\n\r\n if (err) {\r\n // TODO: toast?\r\n return;\r\n }\r\n\r\n this.updateIncomeStateParam(currentTimeStamp, null, null);\r\n }\r\n }\r\n\r\n public async onSelectionChange(event: Event, incomeType: IncomeTypes) {\r\n // There are scenarios where we don't want the new incomeType to be selected. By\r\n // calling preventDefault on the event we can block the checkbox from automatically\r\n // representing a toggled state.\r\n const currentTimeStamp = Date.now();\r\n\r\n if (this.incomeTypeSelection === incomeType) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (this.incomeTypeSelection !== null) {\r\n event.preventDefault();\r\n let switchingIncomeTypeModal = this.showSwitchingIncomeTypeModal();\r\n let [_, dismiss] = await handle(switchingIncomeTypeModal.result);\r\n if (dismiss) return;\r\n\r\n await this.removeIncome();\r\n await this.updateIncomeStateParam(\r\n currentTimeStamp,\r\n null,\r\n null,\r\n incomeType,\r\n );\r\n }\r\n\r\n // this.incomeTypeSelection = incomeType;\r\n // this.incomeComponentType = resolveComponentType(incomeType);\r\n let otherIncomeId: number | null = null;\r\n\r\n switch (incomeType) {\r\n case IncomeTypes.Pension:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.Pension,\r\n );\r\n break;\r\n\r\n case IncomeTypes.CanadianPensionPlan:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.CanadianPensionPlan,\r\n );\r\n break;\r\n\r\n case IncomeTypes.OldAgeSecurity:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.OldAgeSecurity,\r\n );\r\n break;\r\n\r\n case IncomeTypes.ChildSupport:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.ChildSupport,\r\n );\r\n break;\r\n\r\n case IncomeTypes.SpousalSupport:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.Alimony,\r\n );\r\n break;\r\n\r\n case IncomeTypes.CanadaChildBenefit:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.CanadaChildBenefit,\r\n );\r\n break;\r\n\r\n case IncomeTypes.SurvivorBenefitPension:\r\n otherIncomeId = await this.addOtherIncome(\r\n BorrowerOtherIncomeTypes.SurvivorBenefitPension,\r\n );\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n await this.updateIncomeStateParam(\r\n currentTimeStamp,\r\n null,\r\n otherIncomeId,\r\n incomeType,\r\n );\r\n }\r\n\r\n public getJobTypeFromIncomeType(incomeType: IncomeTypes): JobTypes {\r\n switch (incomeType) {\r\n case IncomeTypes.Homemaker:\r\n return JobTypes.Homemaker;\r\n\r\n case IncomeTypes.Unemployed:\r\n return JobTypes.Unemployed;\r\n\r\n case IncomeTypes.Retired:\r\n return JobTypes.Retired;\r\n\r\n case IncomeTypes.Employment:\r\n return JobTypes.Other;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public async onContinueButtonClick() {\r\n if (\r\n [IncomeTypes.Employment, IncomeTypes.SelfEmployment].includes(\r\n this.incomeTypeSelection,\r\n ) &&\r\n !this.loadingEmploymentModel &&\r\n this.borrowerEmploymentModel == null\r\n ) {\r\n let currentEmploymentReminderModal =\r\n this.showCurrentEmploymentReminderModal();\r\n let [_, cancel] = await handle(currentEmploymentReminderModal.result);\r\n\r\n if (cancel) return;\r\n }\r\n\r\n try {\r\n this.isFlushing = true;\r\n await this.borrowerIncomeService.flush();\r\n this.router.stateService.go(SlidesStateNames.IncomeSummary);\r\n } catch (error) {\r\n //TODO: handle error\r\n }\r\n\r\n this.isFlushing = false;\r\n }\r\n\r\n private showCurrentEmploymentReminderModal() {\r\n return this.modalService.open(CurrentEmploymentReminderComponent, {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal notComplete',\r\n });\r\n }\r\n\r\n private async addOtherIncome(\r\n otherIncomeType: BorrowerOtherIncomeTypes,\r\n ): Promise {\r\n this.loadingEmploymentModel = true;\r\n this.borrowerOtherIncomeModel =\r\n await this.otherIncomeService.createOtherIncome(\r\n this.borrower.id,\r\n otherIncomeType,\r\n );\r\n this.loadingEmploymentModel = false;\r\n\r\n return this.borrowerOtherIncomeModel.otherIncomeId;\r\n }\r\n\r\n private showSwitchingIncomeTypeModal() {\r\n return this.modalService.open(\r\n SwitchingIncomeModalComponent,\r\n this._incomeTypeSwitchModalConfig,\r\n );\r\n }\r\n\r\n private showRemoveModal() {\r\n return this.modalService.open(\r\n IncomeRemoveModalComponent,\r\n this._incomeRemoveModalConfig,\r\n );\r\n }\r\n\r\n private loadOtherIncomeModel(ohterIncomeId: number): void {\r\n this.borrowerOtherIncomeModel =\r\n this.otherIncomeService.getBorrowerOtherIncomeByOtherIncomeId(\r\n this._currentBorrowerId,\r\n ohterIncomeId,\r\n );\r\n\r\n this.incomeTypeSelection = resolveOtherIncomeIncomeType(\r\n this.borrowerOtherIncomeModel,\r\n );\r\n this.incomeComponentType = resolveComponentType(this.incomeTypeSelection);\r\n }\r\n\r\n private loadEmploymentModel(employmentId: number): void {\r\n [this.borrowerEmploymentModel, this.employmentAddressModel] =\r\n this.employmentIncomeService.getBorrowerEmploymentModel(\r\n this._currentBorrowerId,\r\n employmentId,\r\n );\r\n\r\n this.incomeTypeSelection = resolveEmploymentIncomeType(\r\n this.borrowerEmploymentModel,\r\n );\r\n this.incomeComponentType = resolveComponentType(this.incomeTypeSelection);\r\n }\r\n\r\n private async swapBorrowerOtherIncome(borrowerId: number) {\r\n try {\r\n await this.otherIncomeService.swapOtherIncome(\r\n +this.borrowerOtherIncomeModel.otherIncomeId,\r\n +this._currentBorrowerId,\r\n +borrowerId,\r\n );\r\n } catch (error) {\r\n await this.router.stateService.go(SlidesStateNames.IncomeEdit, {\r\n borrowerId: borrowerId,\r\n });\r\n }\r\n\r\n await this.router.stateService.go(\r\n SlidesStateNames.IncomeEdit,\r\n {\r\n borrowerId: borrowerId,\r\n otherIncomeId: +this.borrowerOtherIncomeModel.otherIncomeId,\r\n },\r\n { reload: true, location: true },\r\n );\r\n }\r\n\r\n private async swapBorrowerEmployment(borrowerId: number) {\r\n try {\r\n await this.employmentIncomeService.swapEmployment(\r\n +this.borrowerEmploymentModel.employmentId,\r\n +this._currentBorrowerId,\r\n +borrowerId,\r\n );\r\n } catch (error) {\r\n await this.router.stateService.go(SlidesStateNames.IncomeEdit, {\r\n borrowerId: borrowerId,\r\n });\r\n }\r\n\r\n await this.router.stateService.go(\r\n SlidesStateNames.IncomeEdit,\r\n {\r\n borrowerId: borrowerId,\r\n employmentId: +this.borrowerEmploymentModel.employmentId,\r\n },\r\n { reload: true, location: true },\r\n );\r\n }\r\n\r\n private async removeIncome() {\r\n switch (this.incomeTypeSelection) {\r\n case IncomeTypes.Employment:\r\n case IncomeTypes.SelfEmployment:\r\n case IncomeTypes.Homemaker:\r\n case IncomeTypes.Unemployed:\r\n case IncomeTypes.Retired:\r\n if (this.borrowerEmploymentModel && this.borrowerModel) {\r\n await this.removeEmployment(\r\n this.borrowerModel.id,\r\n this.borrowerEmploymentModel.employmentId,\r\n );\r\n }\r\n\r\n break;\r\n\r\n case IncomeTypes.Pension:\r\n case IncomeTypes.CanadianPensionPlan:\r\n case IncomeTypes.OldAgeSecurity:\r\n case IncomeTypes.ChildSupport:\r\n case IncomeTypes.SpousalSupport:\r\n case IncomeTypes.CanadaChildBenefit:\r\n case IncomeTypes.SurvivorBenefitPension:\r\n if (this.borrowerModel && this.borrowerOtherIncomeModel) {\r\n await this.removeOtherIncome(\r\n this.borrowerModel.id,\r\n this.borrowerOtherIncomeModel.otherIncomeId,\r\n );\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private pendingOtherIncomeDeletions = new Set();\r\n private async removeOtherIncome(\r\n borrowerId: number,\r\n otherIncomeId: number,\r\n ): Promise {\r\n const key = `${borrowerId}-${otherIncomeId}`;\r\n\r\n if (!this.pendingOtherIncomeDeletions.has(key)) {\r\n this.pendingOtherIncomeDeletions.add(key);\r\n\r\n await this.otherIncomeService.deleteBorrowerOtherIncome(\r\n borrowerId,\r\n otherIncomeId,\r\n );\r\n }\r\n\r\n this.borrowerOtherIncomeModel = null;\r\n }\r\n\r\n private pendingEmploymentDeletions = new Set();\r\n private async removeEmployment(\r\n borrowerId: number,\r\n employmentId: number,\r\n ): Promise {\r\n const key = `${borrowerId}-${employmentId}`;\r\n\r\n if (!this.pendingEmploymentDeletions.has(key)) {\r\n this.pendingEmploymentDeletions.add(key);\r\n\r\n await this.employmentIncomeService.deleteBorrowerEmployment(\r\n borrowerId,\r\n employmentId,\r\n );\r\n }\r\n\r\n this.borrowerEmploymentModel = null;\r\n this.employmentAddressModel = null;\r\n }\r\n\r\n private clearSelection(): void {\r\n this.incomeTypeSelection = null;\r\n this.incomeComponentType = null;\r\n }\r\n\r\n private lastStateUpdateTimeStamp = 0;\r\n private async updateIncomeStateParam(\r\n timestamp: number,\r\n employmentId?: number,\r\n otherIncomeId?: number,\r\n incomeType?: IncomeTypes,\r\n ): Promise {\r\n if (timestamp && timestamp <= this.lastStateUpdateTimeStamp) return;\r\n this.lastStateUpdateTimeStamp = timestamp;\r\n this.incomeTypeSelection = incomeType;\r\n this.incomeComponentType = resolveComponentType(incomeType);\r\n\r\n this.transitionService.disableScrollToTop();\r\n await this.router.stateService.go(SlidesStateNames.IncomeEdit, {\r\n borrowerId: this._currentBorrowerId,\r\n employmentId: employmentId,\r\n otherIncomeId: otherIncomeId,\r\n });\r\n this.transitionService.enableScrollToTop();\r\n }\r\n\r\n private GoToGettingStarted() {\r\n this.router.stateService.go(\r\n SlidesStateNames.GettingStarted,\r\n {},\r\n { location: true },\r\n );\r\n }\r\n}\r\n","
\r\n

Income

\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{{borrower.contact.firstName}} {{borrower.contact.lastName}}

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

It looks like you haven't added any income for\r\n {{borrower.contact.firstName}} yet

\r\n
\r\n
\r\n
\r\n
\r\n\r\n 0\">\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Total:

\r\n

${{borrowerTotalIncomes.get(borrower.id) | mask: 'separator':','}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Most Lenders require income history of more than 3\r\n years. Please make sure to add previous income.

\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n

Homemaker

\r\n

Unemployed

\r\n

Retired

\r\n

{{employment.companyName}}

\r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{employment.jobTitle}}

\r\n

\r\n\r\n \r\n
    \r\n\r\n
  • \r\n Start date must be before stop date\r\n
  • \r\n \r\n \r\n\r\n
  • \r\n \r\n Company name missing \r\n
  • \r\n
  • \r\n \r\n Job title missing \r\n
  • \r\n \r\n\r\n
  • \r\n \r\n Start date missing\r\n
  • \r\n\r\n
  • \r\n \r\n End date missing\r\n
  • \r\n\r\n
  • \r\n \r\n Annual income missing\r\n
  • \r\n
\r\n\r\n
\r\n\r\n
\r\n

\r\n ${{employment.income == null? 0: employment.income | mask: 'separator':','}}\r\n

\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n Edit\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n

Child Support\r\n

\r\n

Pension

\r\n

Alimony

\r\n

\r\n Canadian Pension Plan

\r\n

Survivor Benefit Pension

\r\n

Other

\r\n

Old Age\r\n Security\r\n

\r\n

\r\n Canada\r\n Child Benefit

\r\n
\r\n
\r\n
\r\n
\r\n

({{otherIncome.start | date: 'MMM d, y'}} -\r\n {{otherIncome.end == null?'Present':otherIncome.end | date: 'MMM d, y'}})

\r\n\r\n
    \r\n
  • \r\n \r\n Annual income missing\r\n
  • \r\n
  • \r\n \r\n Date income started being received missing\r\n
  • \r\n
\r\n
\r\n\r\n
\r\n

${{otherIncome.amount == null ? 0 : otherIncome.amount | mask: 'separator':','}}

\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n Edit\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n
","import { DatePipe } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { BorrowerOtherIncome } from '../../../shared/models/borrower-other-income.model';\r\nimport { BorrowerEmployment } from '../../../shared/models/deal-resources/borrower-employment.model';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { BorrowerOtherIncomeTypes } from '../../../shared/models/deal-resources/enumerators';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { EmploymentAddressService } from '../employment-address.service';\r\nimport { EmploymentIncomeService } from '../employment-income.service';\r\nimport { JobTypes } from '../helper.model';\r\nimport { IncomeRemoveModalComponent } from '../modals/income-remove-modal/income-remove-modal.component';\r\nimport { OtherIncomeService } from '../other-income.service';\r\nimport { BorrowerEmploymentValidationRules } from '../validation/borrower-employment.validator';\r\nimport { BorrowerIncomeHistoryRules } from '../validation/borrower-income-history.validator';\r\nimport { OtherIncomeValidationRules } from '../validation/borrower-other-income.validator';\r\nimport { IncomeValidationStore } from '../validation/income-validation.store';\r\n\r\n@Component({\r\n selector: 'income-summary',\r\n templateUrl: './income-summary.component.html',\r\n styleUrls: ['./income-summary.component.scss'],\r\n animations: animations,\r\n viewProviders: [\r\n EmploymentIncomeService,\r\n EmploymentAddressService,\r\n OtherIncomeService,\r\n ],\r\n})\r\nexport class IncomeSummaryComponent implements OnInit, OnChanges {\r\n icon = Icons;\r\n private readonly IncomeValidationMonth = 36;\r\n JobTypes = JobTypes;\r\n MixedIncomeTypes = MixedIncomeTypes;\r\n BorrowerOtherIncomeTypes = BorrowerOtherIncomeTypes;\r\n SlidesStateNames = SlidesStateNames;\r\n OtherIncomeValidationRules = OtherIncomeValidationRules;\r\n BorrowerEmploymentValidationRules = BorrowerEmploymentValidationRules;\r\n\r\n public borrowers: Borrower[];\r\n public borrowerTotalIncomes: Map = new Map();\r\n private _incomeValidationStore: IncomeValidationStore;\r\n private _presentEmploymentTextLocalization: string;\r\n\r\n @Input() showContinueLink: boolean = true;\r\n @Input() isCompleteView: boolean = true;\r\n @Input() deletedBorrowerId: number = null;\r\n\r\n constructor(\r\n private employmentIncomeService: EmploymentIncomeService,\r\n private otherIncomeService: OtherIncomeService,\r\n private clientJourneyContext: ClientJourneyContext,\r\n private datePipe: DatePipe,\r\n\r\n private router: UIRouter,\r\n private modalService: NgbModal,\r\n ) {\r\n let validationGlobalStore = clientJourneyContext.validationGlobalStore;\r\n\r\n this._incomeValidationStore = validationGlobalStore.getStore(\r\n IncomeValidationStore.globalStoreKey,\r\n );\r\n\r\n this._presentEmploymentTextLocalization = $localize`:@@cj2_generic_present:Present`;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n 'deletedBorrowerId' in changes &&\r\n changes['deletedBorrowerId'].currentValue !=\r\n changes['deletedBorrowerId'].previousValue\r\n ) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n this._incomeValidationStore.validate();\r\n }\r\n\r\n private showRemoveModal() {\r\n return this.modalService.open(IncomeRemoveModalComponent, {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n });\r\n }\r\n\r\n private removeSortedIncome(\r\n borrowerId: number,\r\n id: number,\r\n type: MixedIncomeTypes,\r\n ) {\r\n const sortedIncomeIndex = this.sortedIncomes[borrowerId].findIndex(i => {\r\n return i.type == type && i.id == id;\r\n });\r\n if (sortedIncomeIndex > -1) {\r\n this.sortedIncomes[borrowerId].splice(sortedIncomeIndex, 1);\r\n }\r\n }\r\n\r\n async removeEmployment(\r\n borrowerId: number,\r\n employmentId: number,\r\n ): Promise {\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n let [_, err] = await handle(\r\n this.employmentIncomeService.deleteBorrowerEmployment(\r\n borrowerId,\r\n employmentId,\r\n ),\r\n );\r\n if (err) {\r\n // TODO: toast?\r\n return;\r\n }\r\n\r\n this.removeSortedIncome(\r\n borrowerId,\r\n employmentId,\r\n MixedIncomeTypes.employment,\r\n );\r\n this.calculateTotalIncome(borrowerId);\r\n this._incomeValidationStore.validate();\r\n }\r\n\r\n public onEditEmployment(employment: BorrowerEmployment): void {\r\n const params = {\r\n borrowerId: employment.borrowerId,\r\n employmentId: employment.employmentId,\r\n };\r\n this.router.stateService.go(SlidesStateNames.IncomeEdit, params);\r\n }\r\n\r\n public async removeOtherIncome(\r\n borrowerId: number,\r\n otherIncomeId: number,\r\n ): Promise {\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n let [_, err] = await handle(\r\n this.otherIncomeService.deleteBorrowerOtherIncome(\r\n borrowerId,\r\n otherIncomeId,\r\n ),\r\n );\r\n if (err) {\r\n // TODO: toast?\r\n return;\r\n }\r\n\r\n this.removeSortedIncome(\r\n borrowerId,\r\n otherIncomeId,\r\n MixedIncomeTypes.otherIncome,\r\n );\r\n this.calculateTotalIncome(borrowerId);\r\n this._incomeValidationStore.validate();\r\n }\r\n\r\n public onEditOtherIncome(borrowerOtherIncome: BorrowerOtherIncome): void {\r\n const params = {\r\n borrowerId: borrowerOtherIncome.borrowerId,\r\n otherIncomeId: borrowerOtherIncome.otherIncomeId,\r\n };\r\n this.router.stateService.go(SlidesStateNames.IncomeEdit, params);\r\n }\r\n\r\n public onAddIncome(borrower: Borrower): void {\r\n const params = {\r\n borrowerId: borrower.id,\r\n };\r\n this.router.stateService.go(SlidesStateNames.IncomeEdit, params);\r\n }\r\n\r\n public hasIncome(borrowerId: number): boolean {\r\n const borrower = this.borrowers.find(b => b.id === borrowerId);\r\n return !(\r\n (!borrower.otherIncomes || borrower.otherIncomes.length == 0) &&\r\n (!borrower.employments || borrower.employments.length == 0)\r\n );\r\n }\r\n\r\n //TODO:move to validator\r\n public isEmplymentDateRangeValid(employment: BorrowerEmployment) {\r\n var startDate = new Date(employment.start);\r\n var endDate = new Date(employment.end);\r\n return endDate < startDate;\r\n }\r\n\r\n public isOtherIncomeValidByKey(\r\n otherIncome: BorrowerOtherIncome,\r\n key: OtherIncomeValidationRules,\r\n ) {\r\n let otherIncomeValidator =\r\n this._incomeValidationStore.getBorrowerOtherIncomeValidator(otherIncome);\r\n\r\n let rule = otherIncomeValidator.getRule(key);\r\n\r\n if (rule) {\r\n return rule.isValid;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public isEmploymentValidByKey(\r\n borrowerEmployment: BorrowerEmployment,\r\n key: BorrowerEmploymentValidationRules,\r\n ) {\r\n let borrowerEmploymentValidator =\r\n this._incomeValidationStore.getBorrowerEmploymentValidator(\r\n borrowerEmployment,\r\n );\r\n\r\n let rule = borrowerEmploymentValidator.getRule(key);\r\n\r\n if (rule) {\r\n return rule.isValid;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public isIncomeHistoryValid(borrower: Borrower) {\r\n let borrowerIncomeHistoryValidator =\r\n this._incomeValidationStore.getBorrowerIncomeHistoryValidator(borrower);\r\n\r\n let rule = borrowerIncomeHistoryValidator.getRule(\r\n BorrowerIncomeHistoryRules.IncomeHistoryPeriod,\r\n );\r\n\r\n if (rule) {\r\n return rule.isValid;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public getEmploymentDatesText(employment: BorrowerEmployment): string {\r\n let employmentStartDateText = this.datePipe.transform(\r\n employment.start,\r\n 'MMM d, y',\r\n );\r\n\r\n let employmentEndDateText = employment.isCurrent\r\n ? this._presentEmploymentTextLocalization\r\n : this.datePipe.transform(employment.end, 'MMM d, y');\r\n\r\n return `(${employmentStartDateText} - ${employmentEndDateText})`;\r\n }\r\n\r\n private loadData() {\r\n this.borrowers = this.clientJourneyContext.deal.borrowers.sort(\r\n (borrower1, borrower2) => (borrower1.order > borrower2.order ? 1 : -1),\r\n );\r\n\r\n this.borrowers.forEach(borrower => {\r\n this.calculateTotalIncome(borrower.id);\r\n this.mergeAllIncomes(borrower.id);\r\n });\r\n }\r\n\r\n sortedIncomes: MixedIncome[][] = [];\r\n private mergeAllIncomes(borrowerId: number): void {\r\n let borrower = this.borrowers.find(borrower => borrower.id === borrowerId);\r\n if (!borrower) return;\r\n\r\n let today: Date = new Date();\r\n\r\n this.sortedIncomes[borrowerId] = borrower.employments.map(\r\n employment =>\r\n {\r\n id: employment.employmentId,\r\n start: employment.start == null ? today : new Date(employment.start),\r\n end: employment.end == null ? today : new Date(employment.end),\r\n type: MixedIncomeTypes.employment,\r\n },\r\n );\r\n\r\n this.sortedIncomes[borrowerId].push(\r\n ...borrower.otherIncomes.map(\r\n otherIncome =>\r\n {\r\n id: otherIncome.otherIncomeId,\r\n start:\r\n otherIncome.start == null ? today : new Date(otherIncome.start),\r\n end: otherIncome.end == null ? today : new Date(otherIncome.end),\r\n type: MixedIncomeTypes.otherIncome,\r\n },\r\n ),\r\n );\r\n\r\n this.sortedIncomes[borrowerId] = this.sortedIncomes[borrowerId].sort(\r\n (i1, i2) => {\r\n if (i1.end == i2.end) return i1.start > i2.start ? -1 : 1;\r\n\r\n return i1.end > i2.end ? -1 : 1;\r\n },\r\n );\r\n }\r\n\r\n private calculateTotalIncome(borrowerId: number): void {\r\n let borrower = this.borrowers.find(borrower => borrower.id === borrowerId);\r\n if (!borrower) return;\r\n\r\n this.borrowerTotalIncomes.set(borrowerId, 0);\r\n let totalIncome = this.borrowerTotalIncomes.get(borrower.id);\r\n\r\n borrower.employments\r\n .filter(e => e.isCurrent)\r\n .forEach(employment => {\r\n totalIncome += employment.income || 0;\r\n });\r\n\r\n borrower.otherIncomes.forEach(otherIncome => {\r\n totalIncome += otherIncome.amount || 0;\r\n });\r\n\r\n this.borrowerTotalIncomes.set(borrower.id, totalIncome);\r\n }\r\n\r\n getIncome(borrower: Borrower, mixedIncome: MixedIncome) {\r\n if (mixedIncome.type == MixedIncomeTypes.employment) {\r\n return borrower.employments.find(x => x.employmentId == mixedIncome.id);\r\n }\r\n\r\n if (mixedIncome.type == MixedIncomeTypes.otherIncome) {\r\n return borrower.otherIncomes.find(x => x.otherIncomeId == mixedIncome.id);\r\n }\r\n }\r\n}\r\n\r\nexport class MixedIncome {\r\n id: number;\r\n start: Date;\r\n end: Date;\r\n type: MixedIncomeTypes;\r\n}\r\n\r\nenum MixedIncomeTypes {\r\n employment = 1,\r\n otherIncome = 2,\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-income-remove-modal',\r\n templateUrl: './income-remove-modal.component.html',\r\n styleUrls: ['./income-remove-modal.component.scss'],\r\n})\r\nexport class IncomeRemoveModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Are you sure\r\n you want to remove this income?

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
","import { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BorrowerOtherIncome } from '../../shared/models/borrower-other-income.model';\r\nimport { Borrower } from '../../shared/models/deal-resources/borrower.model';\r\nimport {\r\n BorrowerOtherIncomeTypes,\r\n IncomePeriods,\r\n} from '../../shared/models/deal-resources/enumerators';\r\nimport { ClientJourneyContext } from '../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../shared/services/resource-context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OtherIncomeService {\r\n private _otherIncomeContext: ResourceContext;\r\n private _otherIncomeModel: BorrowerOtherIncome;\r\n\r\n private _resourceContextStore: ResourceContextStore;\r\n private _clientJourneyContext: ClientJourneyContext;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this._resourceContextStore = resourceContextStore;\r\n this._clientJourneyContext = clientJourneyContext;\r\n }\r\n\r\n public async createOtherIncome(\r\n borrowerId: number,\r\n borrowerOtherIncomeTypes: BorrowerOtherIncomeTypes,\r\n ): Promise {\r\n const borrowerResource = this._clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id === borrowerId,\r\n );\r\n\r\n const requestBody: CreateOtherIncomeRequest = {\r\n start: null,\r\n type: borrowerOtherIncomeTypes,\r\n incomePeriod: IncomePeriods.Annual,\r\n };\r\n\r\n const borrowerContext =\r\n this.resourceContextStore.getByResource(borrowerResource);\r\n let newOtherIncome: BorrowerOtherIncome = await borrowerContext.post(\r\n 'create-otherincome',\r\n requestBody,\r\n ).result;\r\n\r\n let newOtherIncomeId = newOtherIncome.otherIncomeId;\r\n\r\n // Reload all borrower's other incomes for the given borrower\r\n await this._clientJourneyContext.loadPathForParents(\r\n '$.borrowers.otherIncomes',\r\n [borrowerResource],\r\n );\r\n\r\n newOtherIncome = borrowerResource.otherIncomes.find(\r\n i => i.otherIncomeId == newOtherIncomeId,\r\n );\r\n\r\n this._otherIncomeContext =\r\n this.resourceContextStore.getByResource(newOtherIncome);\r\n if (!this._otherIncomeContext) return;\r\n\r\n this._otherIncomeModel = newOtherIncome;\r\n return this._otherIncomeModel;\r\n }\r\n\r\n public getBorrowerOtherIncomeByOtherIncomeId(\r\n borrowerId: number,\r\n otherIncomeId: number,\r\n ): BorrowerOtherIncome {\r\n const borrowerResource = this.clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id === borrowerId,\r\n );\r\n\r\n this._otherIncomeModel = borrowerResource.otherIncomes.find(\r\n otherIncome => otherIncome.otherIncomeId === otherIncomeId,\r\n );\r\n\r\n this._otherIncomeContext = this.resourceContextStore.getByResource(\r\n this._otherIncomeModel,\r\n );\r\n\r\n return this._otherIncomeModel;\r\n }\r\n\r\n public async deleteBorrowerOtherIncome(\r\n borrowerId: number,\r\n otherIncomeId: number,\r\n ): Promise {\r\n //get the Borrower resource\r\n let borrowerResource = this._clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id === borrowerId,\r\n );\r\n if (!borrowerResource) return;\r\n\r\n //get Borrower otherIncome resources\r\n let otherIncomeResourcesToRemove = borrowerResource?.otherIncomes?.find(\r\n otherIncome => otherIncome.otherIncomeId == otherIncomeId,\r\n );\r\n\r\n if (!otherIncomeResourcesToRemove) return;\r\n\r\n let otherIncomeContext = this._resourceContextStore.getByResource(\r\n otherIncomeResourcesToRemove,\r\n true,\r\n );\r\n await otherIncomeContext.delete().result;\r\n\r\n // Reload all borrower's other incomes for the given borrower\r\n await this._clientJourneyContext.loadPathForParents(\r\n '$.borrowers.otherIncomes',\r\n [borrowerResource],\r\n );\r\n\r\n if (\r\n this._otherIncomeModel &&\r\n this._otherIncomeModel.otherIncomeId == otherIncomeId\r\n ) {\r\n this._otherIncomeModel = null;\r\n }\r\n }\r\n\r\n public async swapOtherIncome(\r\n otherIncomeId: number,\r\n fromBorrowerId: number,\r\n toBorrowerId: number,\r\n ): Promise {\r\n let updatedOtherIncome = await this._otherIncomeContext.post(\r\n 'swap-borrower',\r\n { toBorrowerId },\r\n ).result;\r\n\r\n //remove old otherIncome from context\r\n this._resourceContextStore.removeByResource(this._otherIncomeModel);\r\n //remove old otherIncome from previous borrower\r\n const fromBorrowerResource = this.getBorrowerResource(fromBorrowerId);\r\n fromBorrowerResource.otherIncomes =\r\n fromBorrowerResource.otherIncomes.filter(\r\n a => a.otherIncomeId != otherIncomeId,\r\n );\r\n\r\n //add new otherIncome to context\r\n this._resourceContextStore.add(updatedOtherIncome);\r\n //add new otherIncome to the new borrower\r\n const toBorrowerResource = this.getBorrowerResource(toBorrowerId);\r\n toBorrowerResource.otherIncomes.push(updatedOtherIncome);\r\n }\r\n\r\n public save() {\r\n this._otherIncomeContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n\r\n private getBorrowerResource(borrowerId: number): Borrower {\r\n const borrowerResource = this._clientJourneyContext.deal.borrowers.find(\r\n b => b.id === borrowerId,\r\n );\r\n return borrowerResource;\r\n }\r\n}\r\n\r\nexport interface CreateOtherIncomeRequest {\r\n start: Date;\r\n type: BorrowerOtherIncomeTypes;\r\n incomePeriod: IncomePeriods;\r\n}\r\n","import { BorrowerEmployment } from '../../../shared/models/deal-resources/borrower-employment.model';\r\nimport { ModelValidator } from '../../../shared/validation/model-validator';\r\n\r\nimport { ClientJourneyValidationMetadata } from '../../../shared/validation/client-journey-validation-metadata';\r\n\r\nexport enum BorrowerEmploymentValidationRules {\r\n CompanyName = 'companyName',\r\n JobTitle = 'jobTitle',\r\n IncomeStartDate = 'start',\r\n IncomeEndDate = 'end',\r\n IncomeAmount = 'income',\r\n}\r\n\r\nexport class BorrowerEmploymentValidator extends ModelValidator<\r\n BorrowerEmployment,\r\n ClientJourneyValidationMetadata\r\n> {\r\n constructor(borrowerEmployment: BorrowerEmployment) {\r\n super(borrowerEmployment);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: false,\r\n showInMenu: true,\r\n };\r\n\r\n //Company name\r\n this.ruleFor(\r\n employment => employment.companyName,\r\n BorrowerEmploymentValidationRules.CompanyName,\r\n navigationMetadata,\r\n ).must(companyName => companyName?.length > 0);\r\n\r\n //Company name\r\n this.ruleFor(\r\n employment => employment.jobTitle,\r\n BorrowerEmploymentValidationRules.JobTitle,\r\n navigationMetadata,\r\n )\r\n .when(employment => !employment.selfEmployed)\r\n .must(jobTitle => jobTitle?.length > 0);\r\n\r\n //income\r\n this.ruleFor(\r\n employment => employment.income,\r\n BorrowerEmploymentValidationRules.IncomeAmount,\r\n navigationMetadata,\r\n ).must(income => income > 0);\r\n\r\n //start date\r\n this.ruleFor(\r\n employment => employment.start,\r\n BorrowerEmploymentValidationRules.IncomeStartDate,\r\n navigationMetadata,\r\n ).must(startDate => startDate != null);\r\n\r\n //end date\r\n this.ruleFor(\r\n employment => employment.end,\r\n BorrowerEmploymentValidationRules.IncomeEndDate,\r\n navigationMetadata,\r\n )\r\n .when(employment => employment.isCurrent == false)\r\n .must(endDate => endDate != null);\r\n\r\n // // selfEmployedPaymentMethod\r\n // this.ruleFor(\r\n // employment => {\r\n // let hasPaymentMethod =\r\n // employment.selfEmployedCommissionPaymentMethod ||\r\n // employment.selfEmployedBusinessIncomePaymentMethod ||\r\n // employment.selfEmployedDividendsPaymentMethod ||\r\n // employment.selfEmployedT4PaymentMethod;\r\n // return hasPaymentMethod;\r\n // },\r\n // BorrowerEmploymentValidationRules.SelfEmployedPaymentMethod,\r\n // navigationMetadata,\r\n // )\r\n // .when(employment => employment.selfEmployed)\r\n // .must(hasPaymentMethod => hasPaymentMethod);\r\n }\r\n\r\n override validate(key?: string): void {\r\n super.validate(key);\r\n }\r\n}\r\n","export class IncomeDateRangeValidationService {\r\n private _start: Date;\r\n private _end: Date;\r\n private _rangeMap: Map = new Map();\r\n\r\n constructor(start: Date, end: Date) {\r\n this._start = start;\r\n this._end = end;\r\n this.createDateRangeMap();\r\n }\r\n public validate(dateRanges: DateRange[]) {\r\n if (!dateRanges || dateRanges.length == 0) return false;\r\n\r\n dateRanges.forEach(dataRange => {\r\n let loopDate = new Date(dataRange.start);\r\n loopDate.setDate(1);\r\n const endDate = new Date(dataRange.end);\r\n while (loopDate <= endDate) {\r\n const rangeKey = `${loopDate.getFullYear().toString()}_${loopDate\r\n .getMonth()\r\n .toString()}`;\r\n if (this._rangeMap.has(rangeKey)) {\r\n this._rangeMap.set(rangeKey, true);\r\n }\r\n loopDate.setMonth(loopDate.getMonth() + 1);\r\n }\r\n });\r\n\r\n for (const [key, value] of this._rangeMap) {\r\n if (!value) return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private createDateRangeMap() {\r\n let loopDate = new Date(this._start);\r\n const endDate = new Date(this._end);\r\n\r\n while (loopDate <= endDate) {\r\n this._rangeMap.set(\r\n `${loopDate.getFullYear().toString()}_${loopDate\r\n .getMonth()\r\n .toString()}`,\r\n false,\r\n );\r\n loopDate.setMonth(loopDate.getMonth() + 1);\r\n }\r\n }\r\n}\r\n\r\nexport class DateRange {\r\n start: Date;\r\n end: Date;\r\n\r\n constructor(start: Date, end: Date) {\r\n this.start = start;\r\n this.end = end;\r\n }\r\n}\r\n","import { ModelValidator } from '../../../shared/validation/model-validator';\r\nimport { ClientJourneyValidationMetadata } from '../../../shared/validation/client-journey-validation-metadata';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport {\r\n DateRange,\r\n IncomeDateRangeValidationService,\r\n} from '../income-daterange-validation.service';\r\n\r\nexport enum BorrowerIncomeHistoryRules {\r\n IncomeHistoryPeriod = 'incomeHistoryPeriod',\r\n}\r\n\r\nexport class BorrowerIncomeHistoryValidator extends ModelValidator<\r\n Borrower,\r\n ClientJourneyValidationMetadata\r\n> {\r\n private readonly _validationPeriodInMonth = 36;\r\n\r\n constructor(borrower: Borrower) {\r\n super(borrower);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: false,\r\n showInMenu: true,\r\n };\r\n\r\n //Income history period\r\n this.ruleFor(\r\n borrower => borrower,\r\n BorrowerIncomeHistoryRules.IncomeHistoryPeriod,\r\n navigationMetadata,\r\n ).must(borrower => this.isIncomeHistoryPeriodValid(borrower));\r\n }\r\n\r\n private isIncomeHistoryPeriodValid(borrower: Borrower): boolean {\r\n let borrowerIncomeDateRanges =\r\n this.createBorrowerIncomeDateRanges(borrower);\r\n\r\n const currentDate = new Date();\r\n const endDate = new Date(currentDate);\r\n endDate.setMonth(currentDate.getMonth() - this._validationPeriodInMonth);\r\n const incomeDateRangeValidationService =\r\n new IncomeDateRangeValidationService(endDate, currentDate);\r\n\r\n let validationResult = incomeDateRangeValidationService.validate(\r\n borrowerIncomeDateRanges,\r\n );\r\n\r\n return validationResult;\r\n }\r\n\r\n private createBorrowerIncomeDateRanges(borrower: Borrower): DateRange[] {\r\n let incomeDateRanges: DateRange[] = [];\r\n const currentDate = new Date();\r\n\r\n borrower.employments?.forEach(employment => {\r\n if (employment.isCurrent && employment.start) {\r\n incomeDateRanges.push(new DateRange(employment.start, currentDate));\r\n } else if (employment.start && employment.end) {\r\n incomeDateRanges.push(new DateRange(employment.start, employment.end));\r\n }\r\n });\r\n\r\n borrower.otherIncomes?.forEach(otherIncomes => {\r\n if (otherIncomes.start) {\r\n incomeDateRanges.push(new DateRange(otherIncomes.start, currentDate));\r\n }\r\n });\r\n\r\n return incomeDateRanges;\r\n }\r\n}\r\n","import { BorrowerOtherIncome } from '../../../shared/models/borrower-other-income.model';\r\nimport { ModelValidator } from '../../../shared/validation/model-validator';\r\n\r\nimport { ClientJourneyValidationMetadata } from '../../../shared/validation/client-journey-validation-metadata';\r\n\r\nexport enum OtherIncomeValidationRules {\r\n IncomeAmount = 'amount',\r\n IncomeStartDate = 'start',\r\n}\r\n\r\nexport class BorrowerOtherIncomeValidator extends ModelValidator<\r\n BorrowerOtherIncome,\r\n ClientJourneyValidationMetadata\r\n> {\r\n constructor(borrowerOtherIncome: BorrowerOtherIncome) {\r\n super(borrowerOtherIncome);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: false,\r\n showInMenu: true,\r\n };\r\n\r\n // Income amount\r\n this.ruleFor(\r\n income => income.amount,\r\n OtherIncomeValidationRules.IncomeAmount,\r\n navigationMetadata,\r\n ).must(amount => !!amount);\r\n\r\n // Income amount\r\n this.ruleFor(\r\n income => income.start,\r\n OtherIncomeValidationRules.IncomeStartDate,\r\n navigationMetadata,\r\n ).must(startDate => startDate != null);\r\n }\r\n}\r\n","import { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ValidationGlobalStore } from '../../../../../utilities/validation/validation-global-store';\r\nimport { ClientJourneyValidatorStoreBase } from '../../../shared/validation/client-journey-validator-store-base';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { BorrowerOtherIncomeValidator } from './borrower-other-income.validator';\r\nimport { BorrowerOtherIncome } from '../../../shared/models/borrower-other-income.model';\r\nimport { BorrowerEmployment } from '../../../shared/models/deal-resources/borrower-employment.model';\r\nimport { BorrowerEmploymentValidator } from './borrower-employment.validator';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { BorrowerIncomeHistoryValidator } from './borrower-income-history.validator';\r\n\r\nexport class IncomeValidationStore extends ClientJourneyValidatorStoreBase {\r\n static readonly globalStoreKey = 'IncomeValidationStore';\r\n\r\n constructor(\r\n globalStore: ValidationGlobalStore,\r\n clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n super(globalStore, clientJourneyContext, SlidesStateNames.Income);\r\n\r\n // Create other income validator for each borrower\r\n clientJourneyContext.deal.borrowers.forEach(borrower =>\r\n borrower.otherIncomes.forEach(otherIncome => {\r\n this.getBorrowerOtherIncomeValidator(otherIncome);\r\n }),\r\n );\r\n\r\n // Create employment validator for each borrower\r\n clientJourneyContext.deal.borrowers.forEach(borrower =>\r\n borrower.employments.forEach(employment => {\r\n if (!employment.selfEmployed) {\r\n this.getBorrowerEmploymentValidator(employment);\r\n }\r\n }),\r\n );\r\n\r\n // Create income history validator for each borrower\r\n clientJourneyContext.deal.borrowers.forEach(borrower =>\r\n this.getBorrowerIncomeHistoryValidator(borrower),\r\n );\r\n }\r\n\r\n public getBorrowerOtherIncomeValidator(\r\n borrowerOtherIncome: BorrowerOtherIncome,\r\n ): BorrowerOtherIncomeValidator {\r\n let key = this.getBorrowerOtherIncomeKey(borrowerOtherIncome);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new BorrowerOtherIncomeValidator(borrowerOtherIncome);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as BorrowerOtherIncomeValidator;\r\n }\r\n\r\n public getBorrowerEmploymentValidator(\r\n borrowerEmployment: BorrowerEmployment,\r\n ): BorrowerEmploymentValidator {\r\n let key = this.getBorrowerEmploymentKey(borrowerEmployment);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new BorrowerEmploymentValidator(borrowerEmployment);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as BorrowerEmploymentValidator;\r\n }\r\n\r\n public getBorrowerIncomeHistoryValidator(\r\n borrower: Borrower,\r\n ): BorrowerIncomeHistoryValidator {\r\n let key = this.getBorrowerIncomeHistoryKey(borrower);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new BorrowerIncomeHistoryValidator(borrower);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as BorrowerIncomeHistoryValidator;\r\n }\r\n\r\n private getBorrowerOtherIncomeKey(\r\n borrowerOtherIncome: BorrowerOtherIncome,\r\n ): string {\r\n let key = `borrower_other_income_${borrowerOtherIncome.otherIncomeId}`;\r\n return key;\r\n }\r\n\r\n private getBorrowerEmploymentKey(\r\n borrowerEmployment: BorrowerEmployment,\r\n ): string {\r\n let key = `borrower_employment_${borrowerEmployment.employmentId}`;\r\n return key;\r\n }\r\n\r\n private getBorrowerIncomeHistoryKey(borrower: Borrower): string {\r\n let key = `borrower_income_history_${borrower.id}`;\r\n return key;\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UIRouter } from '@uirouter/angular';\r\nimport { SlidesStateNames } from '../../router/slides-states';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MenuService {\r\n constructor(private uiRouter: UIRouter) {}\r\n\r\n getSlideSates() {\r\n let slideStates = this.uiRouter.stateService.get()?.filter(x => {\r\n if (x.name == SlidesStateNames.SlidesParent) return false;\r\n if (!x.name.startsWith(SlidesStateNames.SlidesParent)) return false;\r\n\r\n let stateNameWithoutParent = x.name.substring(\r\n SlidesStateNames.SlidesParent.length,\r\n x.name.length,\r\n );\r\n\r\n let parts = stateNameWithoutParent.split('.').filter(x => x);\r\n let isValid = parts.length <= 1;\r\n\r\n return isValid;\r\n });\r\n\r\n return slideStates;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { contactFullName } from '../../../shared/models/deal-resources/contact.model';\r\nimport { PropertyOccupancyOptions } from '../../../shared/models/deal-resources/enumerators';\r\nimport { AddressFormatService } from '../../../shared/services/address-format.service';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { DwellingStatuses } from '../../../shared/models/deal-resources/address.model';\r\nimport { isStringNullOrEmpty } from 'src/shared-utilities/string-helpers/string-helpers';\r\n\r\n@Injectable()\r\nexport class PropertiesSummaryService {\r\n constructor(\r\n private clientJourneyContext: ClientJourneyContext,\r\n private addressFormatService: AddressFormatService,\r\n ) {}\r\n\r\n public get borrowersSummary(): BorrowerSummary[] {\r\n let borrowers = this.clientJourneyContext.deal.borrowers.map(borrower => {\r\n let properties = borrower.properties || [];\r\n\r\n let summary = {\r\n id: borrower.id,\r\n order: borrower.order,\r\n name: contactFullName(borrower.contact),\r\n friendlyName: borrower.contact.firstName,\r\n properties: properties.map(\r\n p =>\r\n {\r\n id: p.propertyId,\r\n isForSale: !!p.downPayment,\r\n streetAddress: this.addressFormatService.streetAddress(p.address),\r\n city: p.address?.city,\r\n province: this.addressFormatService.provinceName(p.address),\r\n postalCode: p.address?.postalCode,\r\n propertyAddressValidation: this.validatePropertyAddress(\r\n p.address,\r\n ),\r\n isOwnedWithoutMortgages:\r\n (p.occupancy == PropertyOccupancyOptions.OwnerOccupied ||\r\n p.address?.dwellingStatus == DwellingStatuses.own) &&\r\n !(p.mortgages?.length > 0),\r\n },\r\n ),\r\n };\r\n\r\n return summary;\r\n });\r\n\r\n return borrowers.sort((a, b) => a.order - b.order);\r\n }\r\n\r\n private validatePropertyAddress(\r\n summaryProperty: Address,\r\n ): PropertyAddressValidation {\r\n if (\r\n !summaryProperty &&\r\n isStringNullOrEmpty(summaryProperty.city, true) &&\r\n isStringNullOrEmpty(summaryProperty.streetNumber, true) &&\r\n isStringNullOrEmpty(summaryProperty.postalCode, true) &&\r\n isStringNullOrEmpty(summaryProperty.streetName, true) &&\r\n !this.addressFormatService.isCountryTypeOptionValid(\r\n summaryProperty.country,\r\n ) &&\r\n !this.addressFormatService.isProvinceTypeOptionValid(\r\n summaryProperty.province,\r\n summaryProperty.country,\r\n ) &&\r\n !this.addressFormatService.isStreetTypeOptionValid(\r\n summaryProperty.streetType,\r\n )\r\n ) {\r\n return PropertyAddressValidation.Invalid;\r\n } else if (\r\n isStringNullOrEmpty(summaryProperty.city, true) ||\r\n isStringNullOrEmpty(summaryProperty.streetNumber, true) ||\r\n isStringNullOrEmpty(summaryProperty.postalCode, true) ||\r\n isStringNullOrEmpty(summaryProperty.streetName, true) ||\r\n !this.addressFormatService.isCountryTypeOptionValid(\r\n summaryProperty.country,\r\n ) ||\r\n !this.addressFormatService.isProvinceTypeOptionValid(\r\n summaryProperty.province,\r\n summaryProperty.country,\r\n ) ||\r\n !this.addressFormatService.isStreetTypeOptionValid(\r\n summaryProperty.streetType,\r\n )\r\n ) {\r\n return PropertyAddressValidation.Incomplete;\r\n }\r\n\r\n return PropertyAddressValidation.Valid;\r\n }\r\n}\r\n\r\nexport interface BorrowerSummary {\r\n id: number;\r\n order: number;\r\n name: string;\r\n friendlyName: string;\r\n properties: SummaryProperty[];\r\n}\r\n\r\nexport interface SummaryProperty {\r\n id: number;\r\n isForSale: boolean;\r\n streetAddress: string;\r\n city?: string;\r\n province?: string;\r\n postalCode?: string;\r\n propertyAddressValidation: PropertyAddressValidation;\r\n isOwnedWithoutMortgages: boolean;\r\n}\r\n\r\nexport enum PropertyAddressValidation {\r\n Valid = 0,\r\n Incomplete = 1, //some of required fields are missing\r\n Invalid = 2, // all required fields are missing\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\n\r\n@Component({\r\n selector: 'app-properties-remove-confirm-modal',\r\n templateUrl: './properties-remove-confirm-modal.component.html',\r\n styleUrls: ['./properties-remove-confirm-modal.component.scss'],\r\n})\r\nexport class PropertiesRemoveConfirmModalComponent implements OnInit {\r\n constructor(public activeModal: NgbActiveModal) {}\r\n\r\n icon = Icons;\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Are you sure\r\n you want to remove this property?

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
","
\r\n

Properties

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{{borrower.name}}

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n It looks like you haven't added any properties for {{borrower.friendlyName}} yet

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

{{property.streetAddress}}

\r\n

{{property.city}},\r\n {{property.province}}\r\n {{property.postalCode}}\r\n

\r\n
\r\n
\r\n

For Sale

\r\n
\r\n
\r\n\r\n \r\n
\r\n
    \r\n
  • \r\n \r\n Property address is missing.\r\n
  • \r\n
  • \r\n \r\n Property address is incomplete.\r\n
  • \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

You stated you currently own this Property, does it\r\n have a mortgage?

\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { PropertiesService } from '../services/properties.service';\r\nimport {\r\n BorrowerSummary,\r\n PropertiesSummaryService,\r\n PropertyAddressValidation,\r\n} from './properties-summary.service';\r\nimport { PropertiesRemoveConfirmModalComponent } from '../modals/properties-remove-confirm-modal/properties-remove-confirm-modal.component';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { BorrowerProperty } from '../../../shared/models/deal-resources/borrower-property.model';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { PropertyMortgagesService } from '../services/property-mortgages.service';\r\n\r\n@Component({\r\n selector: 'properties-summary',\r\n templateUrl: './properties-summary.component.html',\r\n styleUrls: ['./properties-summary.component.scss'],\r\n animations: animations,\r\n viewProviders: [PropertiesService, PropertiesSummaryService],\r\n})\r\nexport class PropertiesSummaryComponent implements OnInit, OnChanges {\r\n //Icons\r\n icon = Icons;\r\n\r\n SlidesStateNames = SlidesStateNames;\r\n PropertyAddressValidation = PropertyAddressValidation;\r\n\r\n _borrowersSummary: BorrowerSummary[];\r\n public get borrowersSummary() {\r\n if (!this._borrowersSummary?.length)\r\n this._borrowersSummary = this.summaryService.borrowersSummary;\r\n\r\n return this._borrowersSummary;\r\n }\r\n\r\n @Input() showContinueLink: boolean = true;\r\n @Input() isCompleteView: boolean = true;\r\n @Input() deletedBorrowerId: number = null;\r\n\r\n constructor(\r\n public summaryService: PropertiesSummaryService,\r\n public propertiesService: PropertiesService,\r\n private modalService: NgbModal,\r\n private uiRouter: UIRouter,\r\n private mortgagesService: PropertyMortgagesService,\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n 'deletedBorrowerId' in changes &&\r\n changes['deletedBorrowerId'].currentValue !=\r\n changes['deletedBorrowerId'].previousValue\r\n ) {\r\n this._borrowersSummary = [];\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n private _propertyRemoveConfirmModalConfig = {\r\n size: 'sm',\r\n modalDialogClass: 'client-journey-modal remove-modal',\r\n };\r\n\r\n private showRemoveModal() {\r\n return this.modalService.open(\r\n PropertiesRemoveConfirmModalComponent,\r\n this._propertyRemoveConfirmModalConfig,\r\n );\r\n }\r\n\r\n async onDeleteClick(borrowerId: number, propertyId: number) {\r\n this.propertiesService.initialize(borrowerId);\r\n let removeConfirmationModal = this.showRemoveModal();\r\n let [accept, dismiss] = await handle(removeConfirmationModal.result);\r\n if (dismiss) return;\r\n\r\n let [_, err] = await handle(this.propertiesService.delete(propertyId));\r\n\r\n this.removePropertiesFromSummary(borrowerId, propertyId);\r\n }\r\n\r\n removePropertiesFromSummary(borrowerId: number, propertyId: number) {\r\n let borrowerSummary = this.borrowersSummary.find(x => x.id == borrowerId);\r\n let index = borrowerSummary.properties.findIndex(a => a.id == propertyId);\r\n\r\n borrowerSummary.properties.splice(index, 1);\r\n }\r\n\r\n public hasProperties(borrowerId: number): boolean {\r\n const borrower = this._borrowersSummary.find(b => b.id === borrowerId);\r\n return borrower.properties?.length > 0;\r\n }\r\n\r\n public isMortgageQuestionAnswered(property: BorrowerProperty) {\r\n return false;\r\n }\r\n\r\n async onMortgageQuestionReminderYes(borrowerId: number, propertyId: number) {\r\n //create new mortgage as the user clicked \"Yes\"\r\n this.mortgagesService.initialize(borrowerId, propertyId);\r\n await this.mortgagesService.createMortgage();\r\n\r\n const params = {\r\n borrowerId: borrowerId,\r\n propertyId: propertyId,\r\n scroll: true,\r\n };\r\n\r\n //route to the property and scroll to the new mortgage\r\n this.uiRouter.stateService.go(SlidesStateNames.PropertiesEdit, params);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { BorrowerProperty } from '../../../shared/models/deal-resources/borrower-property.model';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { AddressFormatService } from '../../../shared/services/address-format.service';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable()\r\nexport class PropertyAddressService {\r\n private addressContext: ResourceContext
;\r\n public address: Address;\r\n\r\n private borrowerId: number;\r\n private borrower: Borrower;\r\n private propertyId: number;\r\n private property: BorrowerProperty;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n public formatService: AddressFormatService,\r\n ) {\r\n this.resourceContextStore = resourceContextStore;\r\n }\r\n\r\n public initialize(borrowerId: number, propertyId: number) {\r\n if (borrowerId == this.borrowerId && propertyId == this.propertyId) return;\r\n\r\n this.borrower = this.clientJourneyContext.deal.borrowers.find(\r\n x => x.id == borrowerId,\r\n );\r\n this.property = this.borrower?.properties.find(\r\n x => x.propertyId == propertyId,\r\n );\r\n\r\n this.address = this.property?.address;\r\n this.addressContext = this.resourceContextStore.getByResource(this.address);\r\n }\r\n\r\n private _addressesBorrowerIdCache: number = -1;\r\n private _addressesCache: Address[] = [];\r\n public allAddresses(borrowerId: number): Address[] {\r\n if (this._addressesBorrowerIdCache != borrowerId) {\r\n const contactAddresses = this.clientJourneyContext.deal.borrowers.map(\r\n b => b.contact.addresses,\r\n );\r\n const propertyAddresses = this.clientJourneyContext.deal.borrowers.map(\r\n b => b.properties.map(p => p.address),\r\n );\r\n const otherAddresses = contactAddresses.concat(propertyAddresses);\r\n //flatten address[][] into address[]\r\n const addresses = otherAddresses.reduce(\r\n (accumulator, value) => accumulator.concat(value),\r\n [],\r\n );\r\n this._addressesCache = addresses\r\n .filter(a => this.formatService.asString(a) != '') //not empty\r\n .filter(\r\n (address, i, arr) =>\r\n arr.findIndex(\r\n a =>\r\n this.formatService.asString(a) ===\r\n this.formatService.asString(address),\r\n ) === i,\r\n ); //distinct\r\n this._addressesBorrowerIdCache = borrowerId;\r\n }\r\n\r\n return this._addressesCache;\r\n }\r\n\r\n public save() {\r\n this.addressContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n}\r\n","
\r\n

Properties

\r\n\r\n \r\n\r\n \r\n
\r\n

Do you own any properties?

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n

What is the property's address?

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\n\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { PropertiesService } from '../services/properties.service';\r\nimport { BorrowerProperty } from '../../../shared/models/deal-resources/borrower-property.model';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { BorrowersService } from '../../borrowers/services/borrowers.service';\r\nimport { PropertyAddressService } from '../services/property-address.service';\r\nimport { AddressFormatService } from '../../../shared/services/address-format.service';\r\nimport { DownPaymentService } from '../services/downpayment.service';\r\nimport { PropertyMortgagesService } from '../services/property-mortgages.service';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\n\r\n@Component({\r\n selector: 'cj-slide-property-edit',\r\n templateUrl: './property-edit.component.html',\r\n styleUrls: ['./property-edit.component.scss'],\r\n animations: animations,\r\n viewProviders: [\r\n BorrowersService,\r\n PropertiesService,\r\n PropertyAddressService,\r\n AddressFormatService,\r\n PropertyMortgagesService,\r\n DownPaymentService,\r\n ],\r\n})\r\nexport class PropertyEditComponent implements OnInit {\r\n SlidesStateNames = SlidesStateNames;\r\n\r\n //Icons\r\n icon = Icons;\r\n\r\n previousBorrowerId: number;\r\n borrowerId: number;\r\n propertyId: number;\r\n property: BorrowerProperty;\r\n address: Address;\r\n ownAnyProperties: boolean;\r\n visitReasons = visitReasons;\r\n visitReason: visitReasons;\r\n public isPropertyLoading = true;\r\n public isflushing: boolean = false;\r\n\r\n public get properties(): BorrowerProperty[] {\r\n return this.propertiesService.properties;\r\n }\r\n\r\n public get allAddresses(): Address[] {\r\n return this.addressService.allAddresses(this.borrowerId);\r\n }\r\n\r\n constructor(\r\n private uiRouter: UIRouter,\r\n private borrowersService: BorrowersService,\r\n private propertiesService: PropertiesService,\r\n private addressService: PropertyAddressService,\r\n public addressFormatService: AddressFormatService,\r\n ) {}\r\n\r\n async ngOnInit(): Promise {\r\n this.borrowerId = +this.uiRouter.globals.params?.borrowerId;\r\n this.propertyId = +this.uiRouter.globals.params?.propertyId;\r\n\r\n if (!!this.propertyId) {\r\n //editing an existing property\r\n this.visitReason = visitReasons.edit;\r\n } else if (this.borrowerId) {\r\n //adding new property\r\n this.visitReason = visitReasons.add;\r\n } else {\r\n this.visitReason = visitReasons.firstTime;\r\n }\r\n\r\n if (!this.borrowerId) {\r\n this.borrowerId = this.borrowersService.borrowers[0].id;\r\n }\r\n\r\n this.propertiesService.initialize(this.borrowerId);\r\n this.previousBorrowerId = this.borrowerId;\r\n\r\n switch (this.visitReason) {\r\n case visitReasons.add:\r\n this.property = await this.propertiesService.createProperty();\r\n this.propertyId = this.property.propertyId;\r\n await this.uiRouter.stateService.go(SlidesStateNames.PropertiesEdit, {\r\n borrowerId: this.borrowerId,\r\n propertyId: this.propertyId,\r\n });\r\n\r\n this.initializeServices();\r\n break;\r\n\r\n case visitReasons.edit:\r\n this.initializeServices();\r\n\r\n case visitReasons.firstTime:\r\n default:\r\n break;\r\n }\r\n this.isPropertyLoading = false;\r\n }\r\n\r\n initializeServices() {\r\n if (!!this.propertyId) {\r\n this.property = this.properties.find(\r\n p => p.propertyId == this.propertyId,\r\n );\r\n }\r\n\r\n if (!!this.property) {\r\n this.addressService.initialize(this.borrowerId, this.property.propertyId);\r\n this.address = this.addressService.address;\r\n }\r\n }\r\n\r\n async onBorrowerIdChange(toBorrowerId: number) {\r\n this.borrowerId = +toBorrowerId;\r\n if (!this.property) return;\r\n\r\n try {\r\n await this.propertiesService.swapBorrower(\r\n this.property?.propertyId,\r\n this.previousBorrowerId,\r\n this.borrowerId,\r\n );\r\n } catch (error) {\r\n //route back to \"add property\"\r\n await this.uiRouter.stateService.go(SlidesStateNames.PropertiesEdit, {\r\n borrowerId: this.borrowerId,\r\n });\r\n }\r\n\r\n //route to editing the property\r\n await this.uiRouter.stateService.go(SlidesStateNames.PropertiesEdit, {\r\n borrowerId: toBorrowerId,\r\n propertyId: this.propertyId,\r\n });\r\n }\r\n\r\n async onOwnPropertyClick() {\r\n this.isPropertyLoading = true;\r\n this.property = await this.propertiesService.createProperty();\r\n this.initializeServices();\r\n this.isPropertyLoading = false;\r\n }\r\n\r\n async onDontOwnPropertyClick() {\r\n if (!!this.property && !this.propertyId) {\r\n let [_, error] = await handle(\r\n this.propertiesService.delete(this.property.propertyId),\r\n );\r\n\r\n if (error) {\r\n window.location.reload();\r\n }\r\n\r\n this.property = null;\r\n this.propertyId = null;\r\n this.address = null;\r\n }\r\n }\r\n\r\n onPropertyChange() {\r\n this.propertiesService.save(this.property);\r\n }\r\n\r\n onAddressChange() {\r\n this.addressService.save();\r\n }\r\n\r\n public async onContinueButtonClick(): Promise {\r\n this.isflushing = true;\r\n try {\r\n await this.addressService.flush();\r\n this.uiRouter.stateService.go(SlidesStateNames.PropertiesSummary);\r\n } catch (error) {\r\n //TODO:Handle error\r\n }\r\n\r\n this.isflushing = false;\r\n }\r\n}\r\n\r\nexport enum visitReasons {\r\n firstTime = 1,\r\n edit,\r\n add,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { handle } from 'src/shared-utilities/async-helpers/promise-helpers';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { BorrowerProperty } from '../../../shared/models/deal-resources/borrower-property.model';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { DownPayment } from '../../../shared/models/deal-resources/downpayment.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable()\r\nexport class DownPaymentService {\r\n private downPaymentContext: ResourceContext;\r\n public downPayment: DownPayment;\r\n\r\n private borrower: Borrower;\r\n private property: BorrowerProperty;\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.resourceContextStore = resourceContextStore;\r\n }\r\n\r\n public initialize(borrowerId: number, propertyId: number) {\r\n if (\r\n borrowerId == this.borrower?.id &&\r\n propertyId == this.property?.propertyId\r\n )\r\n return;\r\n\r\n this.borrower = this.clientJourneyContext.deal.borrowers.find(\r\n x => x.id == borrowerId,\r\n );\r\n this.property = this.borrower?.properties.find(\r\n x => x.propertyId == propertyId,\r\n );\r\n\r\n this.downPayment = this.property?.downPayment;\r\n this.downPaymentContext = this.resourceContextStore.getByResource(\r\n this.downPayment,\r\n );\r\n }\r\n\r\n public save() {\r\n this.downPaymentContext.patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n\r\n public async createDownPayment(): Promise {\r\n if (!!this.downPayment) return this.downPayment;\r\n\r\n const propertyContext = this.resourceContextStore.getByResource(\r\n this.property,\r\n );\r\n this.downPayment = await propertyContext.post('create-downpayment').result;\r\n\r\n this.downPaymentContext = this.resourceContextStore.getByResource(\r\n this.downPayment,\r\n );\r\n\r\n return this.downPayment;\r\n }\r\n\r\n public async delete() {\r\n if (!this.downPayment) return;\r\n\r\n await this.downPaymentContext.delete().result;\r\n this.downPayment = null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { Address } from '../../../shared/models/deal-resources/address.model';\r\nimport { BorrowerProperty } from '../../../shared/models/deal-resources/borrower-property.model';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable()\r\nexport class PropertiesService {\r\n private borrower: Borrower;\r\n public properties: BorrowerProperty[];\r\n private contexts: ResourceContext[];\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.resourceContextStore = resourceContextStore;\r\n }\r\n\r\n private getBorrower(id: number): Borrower {\r\n let borrower = this.clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id == +id,\r\n );\r\n\r\n return borrower;\r\n }\r\n\r\n public initialize(borrowerId: number): BorrowerProperty {\r\n if (borrowerId == this.borrower?.id) return;\r\n\r\n this.borrower = this.getBorrower(borrowerId);\r\n\r\n this.contexts = [];\r\n this.properties = [];\r\n\r\n this.borrower.properties.forEach(property => {\r\n let context = this.resourceContextStore.getByResource(property, true);\r\n this.contexts.push(context);\r\n this.properties.push(property);\r\n });\r\n }\r\n\r\n public save(property: BorrowerProperty) {\r\n let propertyIndex = this.properties.findIndex(\r\n p => p.propertyId == property.propertyId,\r\n );\r\n if (propertyIndex == -1) return;\r\n this.properties[propertyIndex] = property;\r\n this.contexts[propertyIndex].patch();\r\n }\r\n\r\n public async createProperty(): Promise {\r\n const borrower = this.clientJourneyContext.deal.borrowers.find(\r\n b => b.id == this.borrower.id,\r\n );\r\n\r\n let borrowerContext = this.resourceContextStore.getByResource(\r\n this.borrower,\r\n );\r\n let newProperty: BorrowerProperty = await borrowerContext.post(\r\n 'create-property',\r\n ).result;\r\n\r\n //loading the associated address\r\n let newAddress = await lastValueFrom(\r\n newProperty.getRelation
('address'),\r\n );\r\n newProperty.address = newAddress;\r\n newProperty.addressId = newAddress.id;\r\n\r\n borrower.properties.push(newProperty);\r\n\r\n let newContext = this.resourceContextStore.getByResource(newProperty, true);\r\n this.contexts.push(newContext);\r\n this.properties.push(newProperty);\r\n\r\n return newProperty;\r\n }\r\n\r\n public async delete(propertyId: number) {\r\n let propertyToDelete = this.borrower.properties.find(\r\n x => x.propertyId == propertyId,\r\n );\r\n if (!propertyToDelete) return;\r\n\r\n let contextToDelete =\r\n this.resourceContextStore.getByResource(propertyToDelete);\r\n if (!contextToDelete) {\r\n return;\r\n }\r\n\r\n await contextToDelete.delete().result;\r\n\r\n let i = this.properties.findIndex(\r\n x => x.propertyId == propertyToDelete.propertyId,\r\n );\r\n if (i >= 0) {\r\n this.borrower.properties.splice(i, 1);\r\n this.properties.splice(i, 1);\r\n this.contexts.splice(i, 1);\r\n }\r\n }\r\n\r\n public async swapBorrower(\r\n propertyId: number,\r\n fromBorrowerId: number,\r\n toBorrowerId: number,\r\n ): Promise {\r\n const property = this.properties.find(a => a.propertyId == propertyId);\r\n const context = this.resourceContextStore.getByResource(property);\r\n\r\n let updatedProperty = await context.post('swap-borrower', { toBorrowerId })\r\n .result;\r\n\r\n //preserve the address for the new new property\r\n updatedProperty.address = property.address;\r\n\r\n //remove old property from context\r\n this.resourceContextStore.removeByResource(property);\r\n //remove old property from previous borrower\r\n const fromBorrowerResource = this.getBorrower(fromBorrowerId);\r\n fromBorrowerResource.properties = fromBorrowerResource.properties.filter(\r\n a => a.propertyId != propertyId,\r\n );\r\n\r\n //add new property to context\r\n this.resourceContextStore.add(updatedProperty);\r\n //add new property to the new borrower\r\n const toBorrowerResource = this.getBorrower(toBorrowerId);\r\n toBorrowerResource.properties.push(updatedProperty);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BorrowerProperty } from '../../../shared/models/deal-resources/borrower-property.model';\r\nimport { Borrower } from '../../../shared/models/deal-resources/borrower.model';\r\nimport { PropertyMortgage } from '../../../shared/models/deal-resources/property-mortgage.model';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\nimport { ResourceContextStore } from '../../../shared/services/resource-context-store';\r\nimport { ResourceContext } from '../../../shared/services/resource-context.service';\r\n\r\n@Injectable()\r\nexport class PropertyMortgagesService {\r\n private property: BorrowerProperty;\r\n public mortgages: PropertyMortgage[];\r\n private contexts: ResourceContext[];\r\n\r\n constructor(\r\n private resourceContextStore: ResourceContextStore,\r\n private clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n this.resourceContextStore = resourceContextStore;\r\n }\r\n\r\n public initialize(borrowerId: number, propertyId: number): BorrowerProperty {\r\n if (\r\n borrowerId == this.property?.borrowerId &&\r\n propertyId == this.property?.propertyId\r\n )\r\n return;\r\n\r\n let borrower = this.clientJourneyContext.deal.borrowers.find(\r\n borrower => borrower.id == borrowerId,\r\n );\r\n\r\n this.property = borrower.properties.find(x => x.propertyId == propertyId);\r\n this.contexts = [];\r\n this.mortgages = [];\r\n\r\n this.property.mortgages?.forEach(mortgage => {\r\n let context = this.resourceContextStore.getByResource(mortgage);\r\n this.contexts.push(context);\r\n this.mortgages.push(mortgage);\r\n });\r\n this.property.mortgages = this.property.mortgages || [];\r\n }\r\n\r\n public save(number: number) {\r\n let i = this.mortgages.findIndex(x => x.number == number);\r\n this.contexts[i].patch();\r\n }\r\n\r\n public async flush() {\r\n await this.resourceContextStore.flush();\r\n }\r\n\r\n public async createMortgage(): Promise {\r\n let propertyContext = this.resourceContextStore.getByResource(\r\n this.property,\r\n );\r\n let newMortgage: PropertyMortgage = await propertyContext.post(\r\n 'create-mortgage',\r\n ).result;\r\n\r\n this.property.mortgages.push(newMortgage);\r\n\r\n let newContext = this.resourceContextStore.getByResource(newMortgage);\r\n this.contexts.push(newContext);\r\n\r\n this.mortgages.push(newMortgage);\r\n\r\n return newMortgage;\r\n }\r\n\r\n public async delete(number: number) {\r\n let toDelete = this.property.mortgages.find(x => x.number == number);\r\n if (!toDelete) return;\r\n\r\n let contextToDelete = this.resourceContextStore.getByResource(toDelete);\r\n if (!contextToDelete) {\r\n return;\r\n }\r\n\r\n await contextToDelete.delete().result;\r\n\r\n let i = this.mortgages.findIndex(x => x.propertyId == toDelete.propertyId);\r\n if (i >= 0) {\r\n this.property.mortgages.splice(i, 1);\r\n this.mortgages.splice(i, 1);\r\n this.contexts.splice(i, 1);\r\n }\r\n }\r\n}\r\n","import { ClientJourneyValidationMetadata } from 'src/app/client/journey/shared/validation/client-journey-validation-metadata';\r\nimport { ModelValidator } from 'src/app/client/journey/shared/validation/model-validator';\r\nimport { PepDisclosureModel } from '../../submit/pepModel.model';\r\nimport { isStringNullOrEmpty } from 'src/shared-utilities/string-helpers/string-helpers';\r\nimport { PureDate } from 'src/shared-utilities/models/pureDate';\r\n\r\nexport enum PepValidationRules {\r\n IsPep = 'isPep',\r\n FirstName = 'firstName',\r\n LastName = 'lastName',\r\n PepStatus = 'pepStatus',\r\n PepPosition = 'pepPosition',\r\n PepRelationship = 'pepRelationship',\r\n PepOrganizationName = 'pepOrganizationName',\r\n PositionCountry = 'positionCountry',\r\n PositionTitle = 'positionTitle',\r\n IsActivePosition = 'isActivePosition',\r\n IsProvidingFunding = 'isProvidingFunding',\r\n SourceOfFunds = 'sourceOfFunds',\r\n DatePositionStart = 'datePositionStart',\r\n DatePositionEnd = 'datePositionEnd',\r\n}\r\n\r\nexport class PepValidator extends ModelValidator<\r\n PepDisclosureModel,\r\n ClientJourneyValidationMetadata\r\n> {\r\n constructor(model: PepDisclosureModel) {\r\n super(model);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: false,\r\n showInMenu: true,\r\n };\r\n\r\n const validateDateFn = function validateDate(date: PureDate): boolean {\r\n if (date) {\r\n return date.isValid();\r\n }\r\n return false;\r\n };\r\n\r\n this.ruleFor(m => m.isPep, PepValidationRules.IsPep, navigationMetadata)\r\n .when(m => m.isIinitialized == true)\r\n .must(isPep => isPep != null);\r\n\r\n this.ruleFor(\r\n m => m.firstName,\r\n PepValidationRules.FirstName,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(firstName => !isStringNullOrEmpty(firstName, true));\r\n\r\n this.ruleFor(\r\n m => m.lastName,\r\n PepValidationRules.LastName,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(lastName => !isStringNullOrEmpty(lastName, true));\r\n\r\n this.ruleFor(\r\n m => m.pepStatus,\r\n PepValidationRules.PepStatus,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(pepStatus => pepStatus != null);\r\n\r\n this.ruleFor(\r\n m => m.pepPosition,\r\n PepValidationRules.PepPosition,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(pepPosition => pepPosition != null);\r\n\r\n this.ruleFor(\r\n m => m.pepRelationship,\r\n PepValidationRules.PepRelationship,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(pepRelationship => pepRelationship != null);\r\n\r\n this.ruleFor(\r\n m => m.organizationName,\r\n PepValidationRules.PepOrganizationName,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(\r\n pepOrganizationName => !isStringNullOrEmpty(pepOrganizationName, true),\r\n );\r\n\r\n this.ruleFor(\r\n m => m.positionCountry,\r\n PepValidationRules.PositionCountry,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(positionCountry => !isStringNullOrEmpty(positionCountry, true));\r\n\r\n this.ruleFor(\r\n m => m.positionTitle,\r\n PepValidationRules.PositionTitle,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(positionTitle => !isStringNullOrEmpty(positionTitle, true));\r\n\r\n this.ruleFor(\r\n m => m.isActivePosition,\r\n PepValidationRules.IsActivePosition,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(isActivePosition => isActivePosition != null);\r\n\r\n this.ruleFor(\r\n m => m.isProvidingFunding,\r\n PepValidationRules.IsProvidingFunding,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(isProvidingFunding => isProvidingFunding != null);\r\n\r\n this.ruleFor(\r\n m => m.sourceOfFunds,\r\n PepValidationRules.SourceOfFunds,\r\n navigationMetadata,\r\n )\r\n .when(\r\n m =>\r\n m.isPep == true &&\r\n m.isProvidingFunding != null &&\r\n m.isProvidingFunding == true,\r\n )\r\n .must(sourceOfFunds => !isStringNullOrEmpty(sourceOfFunds, true));\r\n\r\n this.ruleFor(\r\n m => m.datePositionStart,\r\n PepValidationRules.DatePositionStart,\r\n navigationMetadata,\r\n )\r\n .when(m => m.isPep == true)\r\n .must(\r\n datePositionStart =>\r\n datePositionStart != null && validateDateFn(datePositionStart),\r\n );\r\n\r\n this.ruleFor(\r\n m => m.datePositionEnd,\r\n PepValidationRules.DatePositionEnd,\r\n navigationMetadata,\r\n )\r\n .when(\r\n m =>\r\n m.isPep == true &&\r\n m.isActivePosition != null &&\r\n m.isActivePosition == false,\r\n )\r\n .must(datePositionEnd => {\r\n console.log('is active position', this.model.isActivePosition);\r\n console.log('datePositionEnd', datePositionEnd);\r\n return datePositionEnd != null && validateDateFn(datePositionEnd);\r\n });\r\n }\r\n}\r\n","import { Contact } from 'src/app/client/journey/shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyValidationMetadata } from 'src/app/client/journey/shared/validation/client-journey-validation-metadata';\r\nimport { ModelValidator } from 'src/app/client/journey/shared/validation/model-validator';\r\nimport {\r\n isStringNullOrEmpty,\r\n isEmail,\r\n} from 'src/shared-utilities/string-helpers/string-helpers';\r\n\r\nexport enum ReferralContactValidationRules {\r\n EmailFormat = 'emailFormat',\r\n}\r\n\r\nexport class ReferralContactValidator extends ModelValidator<\r\n Contact,\r\n ClientJourneyValidationMetadata\r\n> {\r\n constructor(contact: Contact) {\r\n super(contact);\r\n\r\n let navigationMetadata = {\r\n blocksNavigation: false,\r\n showInMenu: false,\r\n };\r\n\r\n //email - format\r\n this.ruleFor(\r\n c => c.email,\r\n ReferralContactValidationRules.EmailFormat,\r\n navigationMetadata,\r\n )\r\n .when(\r\n c =>\r\n !isStringNullOrEmpty(c.firstName, true) ||\r\n !isStringNullOrEmpty(c.lastName, true) ||\r\n !isStringNullOrEmpty(c.email, true),\r\n )\r\n .must(email => {\r\n return isEmail(email);\r\n });\r\n }\r\n}\r\n","import { SlidesStateNames } from 'src/app/client/journey/router/slides-states';\r\nimport { Borrower } from 'src/app/client/journey/shared/models/deal-resources/borrower.model';\r\nimport { Contact } from 'src/app/client/journey/shared/models/deal-resources/contact.model';\r\nimport { ClientJourneyContext } from 'src/app/client/journey/shared/services/deal/client-journey-context';\r\nimport { ClientJourneyValidatorStoreBase } from 'src/app/client/journey/shared/validation/client-journey-validator-store-base';\r\nimport { ValidationGlobalStore } from 'src/app/utilities/validation/validation-global-store';\r\nimport { PepValidator } from './pep.validator';\r\nimport { ReferralContactValidator } from './referral-contact.validator';\r\n\r\nexport class SubmitValidationStore extends ClientJourneyValidatorStoreBase {\r\n static readonly globalStoreKey = 'ReferralValidationStore';\r\n\r\n constructor(\r\n globalStore: ValidationGlobalStore,\r\n clientJourneyContext: ClientJourneyContext,\r\n ) {\r\n super(globalStore, clientJourneyContext, SlidesStateNames.ReviewAndSubmit);\r\n\r\n this.getReferralContactValidator(\r\n clientJourneyContext.deal?.referral?.contact,\r\n );\r\n\r\n // Create pep disclosure validator for each borrower\r\n clientJourneyContext.deal.borrowers.forEach(borrower =>\r\n this.getPepValidator(borrower),\r\n );\r\n }\r\n\r\n public getReferralContactValidator(\r\n contact: Contact,\r\n ): ReferralContactValidator {\r\n let key = this.getReferralContactKey(contact);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new ReferralContactValidator(contact);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as ReferralContactValidator;\r\n }\r\n\r\n public getPepValidator(borrower: Borrower): PepValidator {\r\n const key = this.getBorrowerPepKey(borrower);\r\n let validator = this.getValidator(key);\r\n if (!validator) {\r\n validator = new PepValidator(borrower.pepDisclosureModel);\r\n this.addValidator(key, validator);\r\n }\r\n return validator as PepValidator;\r\n }\r\n\r\n private getReferralContactKey(contact: Contact): string {\r\n let key = `referral_contact_${contact.id}`;\r\n return key;\r\n }\r\n\r\n private getBorrowerPepKey(borrower: Borrower): string {\r\n let key = `borrower_pep_${borrower.id}`;\r\n return key;\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { faTimes } from '@fortawesome/pro-regular-svg-icons';\r\nimport { faBadgeCheck } from '@fortawesome/pro-solid-svg-icons';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { JourneyStates } from '../../router/journey-states';\r\n\r\n@Component({\r\n selector: 'app-heads-up',\r\n templateUrl: './heads-up.component.html',\r\n styleUrls: ['./../../../assets/design.scss', './heads-up.component.scss'],\r\n})\r\nexport class HeadsUpComponent implements OnInit {\r\n @Input() nextState = '';\r\n @Input() onLoginSuccessReturnUrl = '';\r\n\r\n faTimes = faTimes;\r\n badgeCheck = faBadgeCheck;\r\n constructor(public activeModal: NgbActiveModal, private uiRouter: UIRouter) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n public login() {\r\n this.activeModal.dismiss();\r\n JourneyStates.transitionToLogin(\r\n this.uiRouter,\r\n true,\r\n this.onLoginSuccessReturnUrl,\r\n );\r\n }\r\n\r\n public continueAsGuestClick() {\r\n this.activeModal.dismiss();\r\n this.uiRouter.stateService.go(this.nextState);\r\n }\r\n}\r\n","\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n

Unlock awesome features!

\r\n

Take a second to create an Account and you can take advantage of some\r\n pretty\r\n great\r\n features:

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n
    \r\n Save for Later: \r\n Short on time? No worries! Save your progress and come back\r\n later.\r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n Custom Dashboard: \r\n Your own personalized Dashboard to keep track of all your\r\n Applications!\r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n Progress Updates: \r\n Live updates on your Application and Document\r\n progress.\r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n To do List: \r\n Easily keep track of what Documents you need to send to\r\n compete your Application.\r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n
","
\r\n\r\n
\r\n

Review

\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
1
\r\n
\r\n
\r\n
\r\n

Getting Started

\r\n \r\n

You are looking to buy a property

\r\n

Purchase\r\n Price:\r\n\r\n \r\n ${{deal.purchasePrice | mask: 'separator':','}}\r\n \r\n N/A

\r\n
\r\n \r\n

You are looking to refinance a\r\n property

\r\n

Property Value:\r\n\r\n \r\n ${{deal.purchasePrice | mask: 'separator':','}}\r\n \r\n N/A

\r\n
\r\n \r\n

You are looking to renew a\r\n property

\r\n

Property\r\n Value:\r\n \r\n ${{deal.purchasePrice | mask: 'separator':','}}\r\n\r\n \r\n N/A\r\n\r\n

\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
2
\r\n
\r\n
\r\n
\r\n

Borrowers

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
3
\r\n
\r\n
\r\n
\r\n

Income

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
4
\r\n
\r\n
\r\n
\r\n

Banking

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
5
\r\n
\r\n
\r\n
\r\n

Assets

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
6
\r\n
\r\n
\r\n
\r\n

Properties

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
7
\r\n
\r\n
\r\n
\r\n

Referral

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UIRouter } from '@uirouter/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\nimport { Icons } from 'src/app/client/enums/icons';\r\nimport { HeadsUpComponent } from '../../../dialogs/heads-up/heads-up.component';\r\nimport { SlidesStateNames } from '../../../router/slides-states';\r\nimport { LoanType } from '../../../shared/models/deal-resources/enumerators';\r\nimport { ClientJourneyContext } from '../../../shared/services/deal/client-journey-context';\r\n\r\n@Component({\r\n selector: 'cj-slide-review',\r\n templateUrl: './review.component.html',\r\n styleUrls: ['./review.component.scss'],\r\n animations: animations,\r\n})\r\nexport class ReviewComponent implements OnInit {\r\n icon = Icons;\r\n LoanType = LoanType;\r\n SlidesStateNames = SlidesStateNames;\r\n public isAuthenticated = false;\r\n\r\n public deletedBorrowerId: number = null;\r\n\r\n constructor(\r\n private clientJourneyContext: ClientJourneyContext,\r\n private auth0Service: AuthService,\r\n private uiRouter: UIRouter,\r\n private modalService: NgbModal,\r\n ) {\r\n auth0Service.isAuthenticated$.subscribe(a => (this.isAuthenticated = a));\r\n }\r\n\r\n get deal() {\r\n return this.clientJourneyContext.deal;\r\n }\r\n\r\n get agent() {\r\n return this.clientJourneyContext.agent;\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log('Init');\r\n }\r\n public onDeleteBorrowerEvent(borrowerId: number) {\r\n this.deletedBorrowerId = borrowerId;\r\n }\r\n\r\n public async onContinueClick() {\r\n if (this.isAuthenticated) {\r\n this.uiRouter.stateService.go(SlidesStateNames.Submit);\r\n return;\r\n }\r\n\r\n const returnUrl = this.uiRouter.stateService.href(\r\n SlidesStateNames.Submit,\r\n {},\r\n { absolute: true },\r\n );\r\n\r\n const modalRef = this.modalService.open(HeadsUpComponent, {\r\n size: 'xl',\r\n modalDialogClass: 'client-journey-modal client-journey-heads-up',\r\n });\r\n\r\n modalRef.componentInstance.onLoginSuccessReturnUrl = returnUrl;\r\n modalRef.componentInstance.nextState = SlidesStateNames.Submit;\r\n }\r\n}\r\n","import { PureDate } from 'src/shared-utilities/models/pureDate';\r\n\r\nexport class PepDisclosureModel {\r\n isIinitialized: boolean = false;\r\n isPep?: boolean = undefined;\r\n firstName: string;\r\n lastName: string;\r\n pepStatus: PepStatusesEnum;\r\n pepPosition: PepPositionsEnum;\r\n pepRelationship: PepRelationshipsEnum;\r\n organizationName: string;\r\n positionCountry: string;\r\n datePositionStart: PureDate = new PureDate(undefined, undefined, undefined);\r\n datePositionEnd: PureDate = new PureDate(undefined, undefined, undefined);\r\n isActivePosition?: boolean = undefined;\r\n positionTitle: string;\r\n isProvidingFunding?: boolean = undefined;\r\n sourceOfFunds: string;\r\n}\r\n\r\nexport class PepValidationModel {\r\n firstNameValid: boolean = true;\r\n lastNameValid: boolean = true;\r\n pepStatusValid: boolean = true;\r\n organizationNameValid: boolean = true;\r\n positionCountryValid: boolean = true;\r\n datePositionStartValid: boolean = true;\r\n datePositionEndValid: boolean = true;\r\n stilInPositionValid: boolean = true;\r\n positionNameValid: boolean = true;\r\n positionTitleValid: boolean = true;\r\n relationshipValid: boolean = true;\r\n providingFundingValid: boolean = true;\r\n sourceOfFundsValid: boolean = true;\r\n\r\n public isValid(): boolean {\r\n return (\r\n this.firstNameValid &&\r\n this.lastNameValid &&\r\n this.pepStatusValid &&\r\n this.organizationNameValid &&\r\n this.positionCountryValid &&\r\n this.datePositionStartValid &&\r\n this.datePositionEndValid &&\r\n this.stilInPositionValid &&\r\n this.positionNameValid &&\r\n this.positionTitleValid &&\r\n this.relationshipValid &&\r\n this.providingFundingValid &&\r\n this.sourceOfFundsValid\r\n );\r\n }\r\n}\r\n\r\nexport abstract class PepStatuses {\r\n static get pepStatuses(): PepStatuses[] {\r\n /**return a copy of the instituions constants to prevent edititng the values*/\r\n return this._pepStatuses.map(element => ({ ...element }));\r\n }\r\n\r\n private static readonly _pepStatuses: PepStatuses[] = [\r\n {\r\n id: 1,\r\n text: $localize`:@@submit_pepDeclaration_ForeignPEP:Foreign PEP`,\r\n },\r\n {\r\n id: 2,\r\n text: $localize`:@@submit_pepDeclaration_DomesticPEP:Domestic PEP`,\r\n },\r\n ];\r\n}\r\n\r\nexport enum PepStatusesEnum {\r\n ForeignPEP = 1,\r\n DomesticPEP = 2,\r\n}\r\n\r\nexport class PepPosition {\r\n id: number;\r\n text: string;\r\n}\r\n\r\nexport abstract class PepPositions {\r\n static get pepPositions(): PepPosition[] {\r\n /**return a copy of the instituions constants to prevent edititng the values*/\r\n return this._pepPositions.map(element => ({ ...element }));\r\n }\r\n\r\n private static readonly _pepPositions: PepPosition[] = [\r\n {\r\n id: 1,\r\n text: $localize`:@@submit_pepDeclaration_HeadOfState:Head of State or Head of Government, including Governor General and Lieutenant Governor`,\r\n },\r\n {\r\n id: 2,\r\n text: $localize`:@@submit_pepDeclaration_ExecutiveCouncilMember:Member of Executive Council of Government or Member of a Legislature`,\r\n },\r\n {\r\n id: 3,\r\n text: $localize`:@@submit_pepDeclaration_InternationalOrgHead:Head of an International Organization`,\r\n },\r\n {\r\n id: 4,\r\n text: $localize`:@@submit_pepDeclaration_GovAgencyHead:Head of a Government Agency`,\r\n },\r\n {\r\n id: 5,\r\n text: $localize`:@@submit_pepDeclaration_MilitaryGeneral:Military General (or higher rank)`,\r\n },\r\n {\r\n id: 6,\r\n text: $localize`:@@submit_pepDeclaration_CrownCorpPresident:President of a Corporation wholly owned by Her Majesty in Right of Canada or a Province`,\r\n },\r\n {\r\n id: 7,\r\n text: $localize`:@@submit_pepDeclaration_OrgLeaderMultinationFunded:Leader of an Organization Funded by Multiple Nations or States`,\r\n },\r\n {\r\n id: 8,\r\n text: $localize`:@@submit_pepDeclaration_DeputyMinister:Deputy Minister (or equivalent)`,\r\n },\r\n {\r\n id: 9,\r\n text: $localize`:@@submit_pepDeclaration_AmbassadorAttache:Ambassador or Ambassador’s Attaché or Councilor`,\r\n },\r\n {\r\n id: 10,\r\n text: $localize`:@@submit_pepDeclaration_StateOwnedBankPresident:President of a State-Owned Bank or Company`,\r\n },\r\n {\r\n id: 11,\r\n text: $localize`:@@submit_pepDeclaration_PoliticalPartyLeader:Leader or President of a Political Party in a Legislature`,\r\n },\r\n {\r\n id: 12,\r\n text: $localize`:@@submit_pepDeclaration_LegislatureMember:Member of the Senate or House of Commons, or member of Legislature`,\r\n },\r\n {\r\n id: 13,\r\n text: $localize`:@@submit_pepDeclaration_Judge:Judge`,\r\n },\r\n {\r\n id: 14,\r\n text: $localize`:@@submit_pepDeclaration_CanadianMayor:Mayor in Canada`,\r\n },\r\n ];\r\n}\r\n\r\nexport enum PepPositionsEnum {\r\n HeadOfState = 1,\r\n ExecutiveCouncilMember = 2,\r\n InternationalOrgHead = 3,\r\n GovAgencyHead = 4,\r\n MilitaryGeneral = 5,\r\n CrownCorpPresident = 6,\r\n OrgLeaderMultinationFunded = 7,\r\n DeputyMinister = 8,\r\n AmbassadorAttaché = 9,\r\n StateOwnedBankPresident = 10,\r\n PoliticalPartyLeader = 11,\r\n LegislatureMember = 12,\r\n Judge = 13,\r\n CanadianMayor = 14,\r\n}\r\n\r\nexport abstract class PepRelationships {\r\n static get pepRelationships(): PepRelationships[] {\r\n /**return a copy of the instituions constants to prevent edititng the values*/\r\n return this._pepRelationships.map(element => ({ ...element }));\r\n }\r\n\r\n private static readonly _pepRelationships: PepRelationships[] = [\r\n {\r\n id: 1,\r\n text: $localize`:@@submit_pepDeclaration_Self:Self`,\r\n },\r\n {\r\n id: 2,\r\n text: $localize`:@@submit_pepDeclaration_FamilyMember:Family Member`,\r\n },\r\n {\r\n id: 3,\r\n text: $localize`:@@submit_pepDeclaration_Close:Close associate`,\r\n },\r\n ];\r\n}\r\n\r\nexport enum PepRelationshipsEnum {\r\n Self = 1,\r\n FamilyMember = 2,\r\n CloseAssociate = 3,\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { animations } from 'src/app/client/animations/animations';\r\n@Component({\r\n selector: 'cj-slides',\r\n templateUrl: './slides.component.html',\r\n styleUrls: ['./slides.component.scss'],\r\n animations: animations,\r\n})\r\nexport class SlidesComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { GlobalSettingsStore } from '../main';\r\nimport { Injectable } from '@angular/core';\r\nimport { ApiRouteDefinition } from '@auth0/auth0-angular';\r\n\r\ninterface Flinks {\r\n environmentName: string;\r\n customerId: string;\r\n demoMode: boolean;\r\n}\r\n\r\ninterface Auth0 {\r\n domain: string;\r\n clientId: string;\r\n authorizationParams: AuthorizationParams;\r\n redirectUriExpiryTimeSpan: number;\r\n httpInterceptor: { allowedList: ApiRouteDefinition[] };\r\n}\r\n\r\ninterface AuthorizationParams {\r\n audience: string;\r\n}\r\n\r\ninterface Settings {\r\n internalApiBaseUrl: string;\r\n publicApiBaseUrl: string;\r\n assetsUrl?: string;\r\n sharedAssetsUrl?: string;\r\n externalLoginUrl?: string;\r\n velocityPathParts: {\r\n oneTouchReport: string;\r\n userSettings: string;\r\n };\r\n defaultTemplateImageUrl: string;\r\n debugConsoleEnabled?: boolean;\r\n flinks: Flinks;\r\n auth0: Auth0;\r\n}\r\n\r\nclass SettingsFactory {\r\n private static _settings: Settings;\r\n static getSettings() {\r\n if (this._settings) return this._settings;\r\n\r\n // If we need to manipulate any settings from global to match the\r\n // structure of the Settings interface, this is the place to do it.\r\n\r\n this._settings = Object.assign({}, GlobalSettingsStore.value);\r\n return this._settings;\r\n }\r\n}\r\n\r\n// Should be the same as the SettingsService but can be\r\n// accessed prior to the injection system being initialized\r\nexport const AppSettings = SettingsFactory.getSettings();\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SettingsService implements Settings {\r\n constructor() {\r\n let settings = SettingsFactory.getSettings();\r\n Object.assign(this, settings);\r\n }\r\n\r\n readonly internalApiBaseUrl: string;\r\n readonly publicApiBaseUrl: string;\r\n readonly assetsUrl?: string;\r\n readonly sharedAssetsUrl?: string;\r\n readonly externalLoginUrl?: string;\r\n readonly velocityPathParts: { oneTouchReport: string; userSettings: string };\r\n readonly defaultTemplateImageUrl: string;\r\n readonly debugConsoleEnabled: boolean;\r\n readonly flinks: Flinks;\r\n readonly auth0: Auth0;\r\n\r\n initialize(): Settings {\r\n return this;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { StateDeclaration, Transition, UIRouter } from '@uirouter/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TransitionService {\r\n private isScrollToTopEnabled = true;\r\n private isScrollToTopSuspended = false;\r\n\r\n constructor(private uiRouter: UIRouter) {\r\n const transitionService = uiRouter.transitionService;\r\n transitionService.onSuccess({}, transition => this.onSuccess(transition));\r\n transitionService.onEnter({}, (transition, state) =>\r\n this.onEnter(transition, state),\r\n );\r\n }\r\n\r\n private onSuccess(transition: Transition) {\r\n if (this.isScrollToTopSuspended) {\r\n this.isScrollToTopSuspended = false;\r\n return;\r\n }\r\n\r\n if (!this.isScrollToTopEnabled) return;\r\n\r\n document.documentElement.scrollTop = 0;\r\n document.body.scrollTop = 0;\r\n }\r\n\r\n private onEnter(transition: Transition, state: StateDeclaration) {\r\n if (state.data?.documentTitle) document.title = state.data?.documentTitle;\r\n }\r\n\r\n disableScrollToTop() {\r\n this.isScrollToTopEnabled = false;\r\n }\r\n\r\n enableScrollToTop() {\r\n this.isScrollToTopEnabled = true;\r\n }\r\n\r\n // suspend for a single transition\r\n suspendScrollToTop() {\r\n this.isScrollToTopSuspended = true;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport {\r\n ClientLanguage,\r\n ClientLanguageService,\r\n} from 'src/shared-utilities/services/client-language.service';\r\nimport { SettingsService } from 'src/app/settings';\r\n\r\nimport {\r\n OptionGroupLoadTime,\r\n OptionsGroup,\r\n ResourceTypeLoadTime,\r\n} from './options.models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OptionsCache {\r\n constructor(\r\n private settings: SettingsService,\r\n private httpClient: HttpClient,\r\n private clientLanguageService: ClientLanguageService,\r\n ) {}\r\n\r\n // cached options groups\r\n private optionsGroups: OptionsGroup[] = [];\r\n\r\n private optionGroupLoadTimes: OptionGroupLoadTime[] = [];\r\n private resourceTypeLoadTimes: ResourceTypeLoadTime[] = [];\r\n\r\n // Options Groups are loaded into cache when the loadResourceOptions or\r\n // loadOptionGroup methods are called. The reloadCacheSeconds value is\r\n // used to determine when a reload is valid or should be skipped.\r\n private readonly reloadCacheMilliseconds: number = 30 * 60 * 1000; // 30 minutes\r\n\r\n // Adds resources to the cache\r\n async loadResourceOptions(\r\n resourceType: string,\r\n force: boolean = false,\r\n ): Promise {\r\n // Try-get the loadTime object for the given reousrce type\r\n let normalizedResourceType = resourceType.toLowerCase();\r\n let loadTime = this.resourceTypeLoadTimes.find(\r\n t => t.resourceType.toLocaleLowerCase() == normalizedResourceType,\r\n );\r\n\r\n // If the load is not being forced, check if enough\r\n // time has passed since the last load, and only\r\n // proceed if necessary. If it hasn't, bail.\r\n if (loadTime && !force) {\r\n let now = new Date();\r\n let millisecondsSinceLastLoad = now.getTime() - loadTime.time.getTime();\r\n if (millisecondsSinceLastLoad < this.reloadCacheMilliseconds) return;\r\n }\r\n\r\n let url = `${\r\n this.settings.publicApiBaseUrl\r\n }/v2/options/resource/${resourceType}/${\r\n this.clientLanguageService.clientLanguage ?? ClientLanguage.en\r\n }`;\r\n let optionsGroups = await lastValueFrom(\r\n this.httpClient.get(url),\r\n );\r\n\r\n optionsGroups.forEach(g => this.addGroupToCache(g));\r\n\r\n let loadTimeIndex = this.resourceTypeLoadTimes.findIndex(\r\n t => t.resourceType.toLocaleLowerCase() == normalizedResourceType,\r\n );\r\n if (loadTimeIndex != -1) {\r\n this.resourceTypeLoadTimes.splice(loadTimeIndex, 1);\r\n }\r\n this.resourceTypeLoadTimes.push({\r\n resourceType: resourceType,\r\n time: new Date(),\r\n });\r\n }\r\n\r\n // TODO: loadOptionGroup (get the option group from the DB) and add it to the cache\r\n\r\n private addGroupToCache(optionsGroup: OptionsGroup) {\r\n // Attempt to remove any group that might\r\n // overlap in name before adding the new group\r\n this.removeOptionsGroup(optionsGroup);\r\n this.optionsGroups.push(optionsGroup);\r\n\r\n let normalizedGroupName = optionsGroup.groupName.toLowerCase();\r\n let loadTimeIndex = this.optionGroupLoadTimes.findIndex(\r\n t => t.groupName.toLocaleLowerCase() == normalizedGroupName,\r\n );\r\n if (loadTimeIndex != -1) {\r\n this.optionGroupLoadTimes.splice(loadTimeIndex, 1);\r\n }\r\n this.optionGroupLoadTimes.push({\r\n groupName: optionsGroup.groupName,\r\n time: new Date(),\r\n });\r\n }\r\n\r\n removeOptionsGroup(group: string | OptionsGroup) {\r\n let groupName: string;\r\n if (typeof group == 'string') {\r\n groupName = group;\r\n } else {\r\n groupName = group.groupName;\r\n }\r\n\r\n let normalizedGroupName = groupName.toLowerCase();\r\n let groupIndex = this.optionsGroups.findIndex(\r\n g => g.groupName.toLowerCase() == normalizedGroupName,\r\n );\r\n if (groupIndex != -1) {\r\n this.optionsGroups.splice(groupIndex, 1);\r\n }\r\n\r\n let loadTimeIndex = this.optionGroupLoadTimes.findIndex(\r\n t => t.groupName.toLowerCase() == normalizedGroupName,\r\n );\r\n if (loadTimeIndex != -1) {\r\n this.optionGroupLoadTimes.splice(loadTimeIndex, 1);\r\n }\r\n }\r\n\r\n getOptionsGroup(groupName: string): OptionsGroup {\r\n let normalizedGroupName = groupName.toLowerCase();\r\n let group = this.optionsGroups.find(\r\n g => g.groupName.toLowerCase() == normalizedGroupName,\r\n );\r\n\r\n // TODO: loadOptionGroup (get the option group from the DB) if it wasn't found\r\n\r\n return group;\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[vlPatternInput]',\r\n})\r\nexport class PatternInputDirective {\r\n @Input('vlPatternInput') pattern: string = '^[a-zA-Z0-9]+$'; // Default pattern (alpha-numeric)\r\n\r\n private regex!: RegExp;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n ngOnInit() {\r\n this.regex = new RegExp(this.pattern);\r\n }\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event: KeyboardEvent) {\r\n if (!this.regex.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent) {\r\n const clipboardData = event.clipboardData?.getData('text') || '';\r\n\r\n if (![...clipboardData].every(char => this.regex.test(char))) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loading-bars',\r\n templateUrl: './loading-bars.component.html',\r\n styleUrls: ['./loading-bars.component.scss'],\r\n})\r\nexport class LoadingBarsComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
","\r\n \r\n \r\n

{{message}}

\r\n \r\n
\r\n \r\n \r\n
","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './loading-bars.modal.component.html',\r\n})\r\nexport class LoadingBarsModalComponent {\r\n @Input() message?: string;\r\n\r\n constructor() {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { LoadingBarsModalComponent } from './loading-bars.modal.component';\r\n\r\n@Injectable()\r\nexport class LoadingBarsModalService {\r\n constructor(private modalService: NgbModal) {}\r\n\r\n showLoading(message?: string) {\r\n let loadingModal = this.modalService.open(LoadingBarsModalComponent, {\r\n backdrop: 'static', // disable dismiss on backgroup click\r\n keyboard: false, // disable dismiss on esc key\r\n });\r\n loadingModal.componentInstance.message = message;\r\n return loadingModal;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoadingBarsComponent } from './loading-bars.component';\r\nimport { VelocityModalModule } from '../velocity-modal/velocity-modal.module';\r\nimport { LoadingBarsModalComponent } from './loading-bars.modal.component';\r\nimport { LoadingBarsModalService } from './loading-bars.modal.service';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@NgModule({\r\n declarations: [LoadingBarsComponent, LoadingBarsModalComponent],\r\n imports: [NgbModule, CommonModule, VelocityModalModule],\r\n providers: [LoadingBarsModalService],\r\n exports: [LoadingBarsComponent, LoadingBarsModalComponent],\r\n})\r\nexport class LoadingBarsModule {\r\n constructor() {}\r\n}\r\n","import { Injectable, TemplateRef } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToastService {\r\n toasts: any[] = [];\r\n\r\n show(textOrTpl: string | TemplateRef, options: any = {}) {\r\n this.toasts.push({ textOrTpl, ...options });\r\n }\r\n\r\n remove(toast) {\r\n this.toasts = this.toasts.filter(t => t !== toast);\r\n }\r\n\r\n showError(message?: string, options?: any) {\r\n options = options || {};\r\n options.classname = options.classname || 'bg-error';\r\n options.header = options.header || 'Oops!';\r\n\r\n let unexpectedErrorMessage = $localize`:@@cj2_generic__unexpectedErrorMessage:An unexpected error occurred.`;\r\n\r\n message = message || unexpectedErrorMessage;\r\n\r\n this.show(message, options);\r\n }\r\n\r\n showSuccess(message?: string, options?: any) {\r\n options = options || {};\r\n options.classname = options.classname || 'bg-success';\r\n options.header = options.header || 'Success!';\r\n\r\n message = message || '';\r\n\r\n this.show(message, options);\r\n }\r\n}\r\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'modal-body',\r\n templateUrl: './modal-body.component.html',\r\n})\r\nexport class ModalBodyComponent {}\r\n","
\r\n \r\n
","import { Component, TemplateRef, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'modal-footer',\r\n templateUrl: './modal-footer.component.html',\r\n})\r\nexport class ModalFooterComponent {}\r\n","
\r\n \r\n
","
\r\n \r\n \r\n \r\n
","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\r\nimport { faTimes } from '@fortawesome/pro-light-svg-icons';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'modal-header',\r\n templateUrl: './modal-header.component.html',\r\n})\r\nexport class ModalHeaderComponent {\r\n faTimes = faTimes;\r\n\r\n @Input() showClose: boolean;\r\n\r\n constructor(public activeModal: NgbActiveModal) {}\r\n}\r\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalHeaderComponent } from './modal-header.component';\r\nimport { ModalBodyComponent } from './modal-body.component';\r\nimport { ModalFooterComponent } from './modal-footer.component';\r\n\r\n@Component({\r\n selector: 'velocity-modal',\r\n templateUrl: './velocity-modal.component.html',\r\n styleUrls: ['./velocity-modal.component.scss'],\r\n})\r\nexport class VelocityModalComponent {\r\n @ContentChild(ModalHeaderComponent, { static: true })\r\n modalHeader?: ModalHeaderComponent;\r\n\r\n @ContentChild(ModalBodyComponent, { static: true })\r\n modalBody?: ModalBodyComponent;\r\n\r\n @ContentChild(ModalFooterComponent, { static: true })\r\n modalFooter?: ModalFooterComponent;\r\n\r\n constructor(public activeModal: NgbActiveModal) {}\r\n}\r\n","","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalBodyComponent } from './modal-body.component';\r\nimport { ModalFooterComponent } from './modal-footer.component';\r\nimport { ModalHeaderComponent } from './modal-header.component';\r\nimport { VelocityModalComponent } from './velocity-modal.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n VelocityModalComponent,\r\n ModalHeaderComponent,\r\n ModalBodyComponent,\r\n ModalFooterComponent,\r\n ],\r\n imports: [CommonModule, FontAwesomeModule, NgbModule],\r\n providers: [],\r\n exports: [\r\n VelocityModalComponent,\r\n ModalHeaderComponent,\r\n ModalBodyComponent,\r\n ModalFooterComponent,\r\n ],\r\n})\r\nexport class VelocityModalModule {}\r\n","// Snagged and modified slightly from https://dev.to/sobiodarlington/better-error-handling-with-async-await-2e5m\r\nexport function handle(promise: Promise, defaultReject: unknown = 'rejected'): Promise<[T | undefined, unknown]> {\r\n return promise\r\n .then<[T | undefined, unknown]>((resolvedValue: T) => [resolvedValue, undefined])\r\n .catch<[T | undefined, unknown]>(rejectedValue => [undefined, rejectedValue || defaultReject]);\r\n}\r\n\r\nexport interface ResolvedResult {\r\n resolvedValue: T;\r\n isRejected: false;\r\n}\r\n\r\nexport interface RejectedResult {\r\n rejectedValue: T;\r\n isRejected: true;\r\n}\r\n\r\nexport function handlePromise(\r\n promise: Promise,\r\n): Promise | RejectedResult>;\r\nexport function handlePromise(\r\n promise: Promise,\r\n): Promise | RejectedResult>;\r\nexport function handlePromise(\r\n promise: Promise,\r\n): Promise | RejectedResult> {\r\n return promise\r\n .then>(resoledValue => {\r\n return { resolvedValue: resoledValue, isRejected: false };\r\n })\r\n .catch>(rejectedValue => {\r\n return { rejectedValue: rejectedValue, isRejected: true };\r\n });\r\n}\r\n\r\nexport function createAbortError(reason: unknown): Error {\r\n const abortError = new Error('The operation was aborted.');\r\n\r\n // HACK: VelocityCRM is on an older version of typescript that doesn't have the `cause` property on Error\r\n const modernAbortError = abortError as ModernError;\r\n\r\n modernAbortError.cause = reason;\r\n modernAbortError.name = 'AbortError';\r\n return modernAbortError;\r\n}\r\n\r\nexport function isAbortError(error: unknown): error is Error {\r\n return error instanceof Error && error.name === 'AbortError';\r\n}\r\n\r\nexport function delayAsync(ms: number, abortSignal?: AbortSignal) {\r\n // HACK: VelocityCRM is on an old version of typescript that is unaware of newer properties on AbortSignal\r\n const modernAbortSignal = abortSignal as ModernAbortsignal | undefined;\r\n\r\n if (modernAbortSignal?.aborted) {\r\n // Immediately reject if the abortSignal is already aborted\r\n return Promise.reject(createAbortError(modernAbortSignal.reason));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const abortListener = () => {\r\n clearTimeout(timeoutId);\r\n reject(createAbortError(modernAbortSignal?.reason));\r\n };\r\n abortSignal?.addEventListener('abort', abortListener, { once: true });\r\n\r\n const timeoutId = setTimeout(() => {\r\n abortSignal?.removeEventListener('abort', abortListener);\r\n if (abortSignal?.aborted) {\r\n reject(createAbortError(modernAbortSignal?.reason));\r\n return;\r\n }\r\n resolve();\r\n }, ms);\r\n });\r\n}\r\n\r\nexport function setTimeoutAsync(callback: () => void, ms: number, signal?: AbortSignal) {\r\n const timeoutHandle = setTimeout(() => {\r\n abortTimeout();\r\n callback();\r\n }, ms);\r\n\r\n const abortTimeout = () => {\r\n signal?.removeEventListener('abort', abortTimeout);\r\n clearTimeout(timeoutHandle);\r\n };\r\n\r\n if (signal) {\r\n signal.addEventListener('abort', abortTimeout);\r\n }\r\n}\r\n\r\nexport class DeferredPromise {\r\n public promise: Promise;\r\n\r\n private _resolve!: (value: T | PromiseLike) => void;\r\n resolve(value: T | PromiseLike) {\r\n if (this._state !== 'pending') return;\r\n this._state = 'resolved';\r\n this._resolve(value);\r\n }\r\n\r\n private _reject!: (reason?: unknown) => void;\r\n reject(reason?: unknown) {\r\n if (this._state !== 'pending') return;\r\n this._state = 'rejected';\r\n this._reject(reason);\r\n }\r\n\r\n private _state: 'pending' | 'resolved' | 'rejected' = 'pending';\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n constructor() {\r\n const promise = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n this.promise = promise;\r\n }\r\n}\r\n\r\n// Type guard for a Promise\r\nexport function isPromise(maybePromise: unknown): maybePromise is Promise {\r\n return maybePromise instanceof Promise;\r\n}\r\n\r\ntype AsyncEventCallback = (item: T) => Promise | T | void | unknown;\r\n\r\nexport class AsyncEventEmitter {\r\n private _readonlyAsyncEventEmitter!: ReadonlyAsyncEventEmitter;\r\n private _callbacks: Array> = [];\r\n\r\n constructor() {\r\n this._readonlyAsyncEventEmitter = new ReadonlyAsyncEventEmitter(this._callbacks);\r\n }\r\n\r\n async emit(item: T): Promise> {\r\n return Promise.all(\r\n this._callbacks.map(callback => {\r\n const result = callback(item);\r\n return isPromise(result) ? result : Promise.resolve(result);\r\n }),\r\n );\r\n }\r\n\r\n asReadonly(): ReadonlyAsyncEventEmitter {\r\n return this._readonlyAsyncEventEmitter;\r\n }\r\n}\r\n\r\nexport class ReadonlyAsyncEventEmitter {\r\n constructor(private callbacks: Array> = []) {}\r\n\r\n subscribe(callback: AsyncEventCallback): AsyncEventSubscription {\r\n this.callbacks.push(callback);\r\n\r\n const unsubscribeCallback = () => {\r\n const callbackIndex = this.callbacks.indexOf(callback);\r\n if (callbackIndex !== -1) {\r\n this.callbacks.splice(callbackIndex, 1);\r\n }\r\n };\r\n\r\n return new AsyncEventSubscription(unsubscribeCallback);\r\n }\r\n}\r\n\r\nexport class AsyncEventSubscription {\r\n constructor(private unsubscribeCallback: () => void) {}\r\n\r\n public unsubscribe() {\r\n this.unsubscribeCallback();\r\n }\r\n}\r\n\r\nexport interface ModernAbortsignal extends AbortSignal {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reason: any;\r\n}\r\n\r\nexport interface ModernError extends Error {\r\n cause?: unknown;\r\n}\r\n","export class PureDate {\r\n day: number;\r\n month: number;\r\n year: number;\r\n\r\n constructor(day: number, month: number, year: number) {\r\n this.day = day;\r\n this.month = month;\r\n this.year = year;\r\n }\r\n\r\n public convertToDate(): Date {\r\n if (!this.day || !this.month || !this.year) {\r\n return undefined;\r\n }\r\n return new Date(this.year, this.month - 1, this.day);\r\n }\r\n\r\n public isValid(): boolean {\r\n const date = this.convertToDate();\r\n if (!date) {\r\n return false;\r\n }\r\n return (\r\n date.getDate() === this.day &&\r\n date.getMonth() + 1 === this.month &&\r\n date.getFullYear() === this.year\r\n );\r\n }\r\n}\r\n","// TODO: This has some overlap with the LocaleService (Angular Injectable). We may want\r\n// TODO: to consider merging this with the LocaleService. Auth0, Flinks, Strpo bits are\r\n// TODO: possibly out of scope for what this is trying to do. This needs some thought.\r\n\r\nexport class ClientLanguageService {\r\n private _clientLanguage?: ClientLanguage = undefined;\r\n\r\n get clientLanguage(): ClientLanguage | undefined {\r\n if (this._clientLanguage == null) this.initClientLanguage();\r\n return this._clientLanguage;\r\n }\r\n\r\n constructor() {\r\n this.initClientLanguage();\r\n }\r\n\r\n private initClientLanguage() {\r\n const url = window.location.toString().toLowerCase();\r\n\r\n if (url.toLowerCase().includes(UrlLanguageIdentifier.fr.toLowerCase())) {\r\n this._clientLanguage = ClientLanguage.fr;\r\n return;\r\n }\r\n\r\n //default\r\n this._clientLanguage = ClientLanguage.en;\r\n }\r\n\r\n /**Redirect to provided language app instance */\r\n public setClientLanguage(clientLanguage: ClientLanguage) {\r\n const oldUrl = window.location.toString();\r\n const newUrl =\r\n clientLanguage == ClientLanguage.en\r\n ? oldUrl.replace(UrlLanguageIdentifier.fr, UrlLanguageIdentifier.en)\r\n : oldUrl.replace(UrlLanguageIdentifier.en, UrlLanguageIdentifier.fr);\r\n\r\n if (newUrl != oldUrl) window.location.href = newUrl;\r\n }\r\n\r\n get auth0LanguageIdentifier(): string {\r\n if (this._clientLanguage == null) this.initClientLanguage();\r\n\r\n switch (this._clientLanguage) {\r\n case ClientLanguage.en:\r\n return Auth0languageIdentifier.English;\r\n\r\n case ClientLanguage.fr:\r\n return Auth0languageIdentifier.French_Canada;\r\n\r\n default:\r\n return Auth0languageIdentifier.English;\r\n }\r\n }\r\n\r\n get localeId(): string {\r\n if (this._clientLanguage == null) this.initClientLanguage();\r\n\r\n switch (this._clientLanguage) {\r\n case ClientLanguage.en:\r\n return 'en-CA';\r\n\r\n case ClientLanguage.fr:\r\n return 'fr-CA';\r\n\r\n default:\r\n return 'en-CA';\r\n }\r\n }\r\n\r\n get flinksLanguageIdentifier(): string {\r\n if (this._clientLanguage == null) this.initClientLanguage();\r\n\r\n switch (this._clientLanguage) {\r\n case ClientLanguage.en:\r\n return FlinksLanguageIdentifier.English;\r\n\r\n case ClientLanguage.fr:\r\n return FlinksLanguageIdentifier.French;\r\n\r\n default:\r\n return FlinksLanguageIdentifier.English;\r\n }\r\n }\r\n\r\n get stripoLanguageIdentifier(): string {\r\n if (this._clientLanguage == null) this.initClientLanguage();\r\n\r\n switch (this._clientLanguage) {\r\n case ClientLanguage.en:\r\n return StripoLanguageIdentifier.English;\r\n\r\n case ClientLanguage.fr:\r\n return StripoLanguageIdentifier.French;\r\n\r\n default:\r\n return StripoLanguageIdentifier.English;\r\n }\r\n }\r\n}\r\n\r\nexport enum UrlLanguageIdentifier {\r\n fr = '/fr/',\r\n en = '/en/',\r\n}\r\n\r\nexport enum Auth0languageIdentifier {\r\n English = 'en',\r\n French_Canada = 'fr-CA',\r\n}\r\n\r\nexport enum FlinksLanguageIdentifier {\r\n English = 'en',\r\n French = 'fr',\r\n}\r\n\r\nexport enum StripoLanguageIdentifier {\r\n English = 'en',\r\n French = 'fr',\r\n}\r\n\r\nexport enum ClientLanguage {\r\n en = 1,\r\n fr = 2,\r\n}\r\n","export function isStringNullOrEmpty(str: string | undefined | null, trimWhiteSpaces: boolean = false): boolean {\r\n if (typeof str == 'undefined' || !str) return true;\r\n if (trimWhiteSpaces && !str.trim()) return true;\r\n return false;\r\n}\r\n\r\nconst EMAIL_REGEXP =\r\n /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\nexport function isEmail(str: string): boolean {\r\n if (isStringNullOrEmpty(str, true)) return false;\r\n\r\n let regex = new RegExp(EMAIL_REGEXP);\r\n return regex.test(str);\r\n}\r\n","/**\n * Higher order functions\n *\n * These utility functions are exported, but are subject to change without notice.\n *\n * @packageDocumentation\n */\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * Returns a new function for [Partial Application](https://en.wikipedia.org/wiki/Partial_application) of the original function.\n *\n * Given a function with N parameters, returns a new function that supports partial application.\n * The new function accepts anywhere from 1 to N parameters. When that function is called with M parameters,\n * where M is less than N, it returns a new function that accepts the remaining parameters. It continues to\n * accept more parameters until all N parameters have been supplied.\n *\n *\n * This contrived example uses a partially applied function as an predicate, which returns true\n * if an object is found in both arrays.\n * @example\n * ```\n * // returns true if an object is in both of the two arrays\n * function inBoth(array1, array2, object) {\n * return array1.indexOf(object) !== -1 &&\n * array2.indexOf(object) !== 1;\n * }\n * let obj1, obj2, obj3, obj4, obj5, obj6, obj7\n * let foos = [obj1, obj3]\n * let bars = [obj3, obj4, obj5]\n *\n * // A curried \"copy\" of inBoth\n * let curriedInBoth = curry(inBoth);\n * // Partially apply both the array1 and array2\n * let inFoosAndBars = curriedInBoth(foos, bars);\n *\n * // Supply the final argument; since all arguments are\n * // supplied, the original inBoth function is then called.\n * let obj1InBoth = inFoosAndBars(obj1); // false\n *\n * // Use the inFoosAndBars as a predicate.\n * // Filter, on each iteration, supplies the final argument\n * let allObjs = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7 ];\n * let foundInBoth = allObjs.filter(inFoosAndBars); // [ obj3 ]\n *\n * ```\n *\n * @param fn\n * @returns {*|function(): (*|any)}\n */\nexport function curry(fn) {\n return function curried() {\n if (arguments.length >= fn.length) {\n return fn.apply(this, arguments);\n }\n var args = Array.prototype.slice.call(arguments);\n return curried.bind.apply(curried, __spreadArray([this], args, false));\n };\n}\n/**\n * Given a varargs list of functions, returns a function that composes the argument functions, right-to-left\n * given: f(x), g(x), h(x)\n * let composed = compose(f,g,h)\n * then, composed is: f(g(h(x)))\n */\nexport function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function () {\n var i = start, result = args[start].apply(this, arguments);\n while (i--)\n result = args[i].call(this, result);\n return result;\n };\n}\n/**\n * Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right\n * given: f(x), g(x), h(x)\n * let piped = pipe(f,g,h);\n * then, piped is: h(g(f(x)))\n */\nexport function pipe() {\n var funcs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n funcs[_i] = arguments[_i];\n }\n return compose.apply(null, [].slice.call(arguments).reverse());\n}\n/**\n * Given a property name, returns a function that returns that property from an object\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = prop(\"name\");\n * getName(obj) === \"blarg\"\n */\nexport var prop = function (name) { return function (obj) { return obj && obj[name]; }; };\n/**\n * Given a property name and a value, returns a function that returns a boolean based on whether\n * the passed object has a property that matches the value\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = propEq(\"name\", \"blarg\");\n * getName(obj) === true\n */\nexport var propEq = curry(function (name, _val, obj) { return obj && obj[name] === _val; });\n/**\n * Given a dotted property name, returns a function that returns a nested property from an object, or undefined\n * let obj = { id: 1, nestedObj: { foo: 1, name: \"blarg\" }, };\n * let getName = prop(\"nestedObj.name\");\n * getName(obj) === \"blarg\"\n * let propNotFound = prop(\"this.property.doesnt.exist\");\n * propNotFound(obj) === undefined\n */\nexport var parse = function (name) { return pipe.apply(null, name.split('.').map(prop)); };\n/**\n * Given a function that returns a truthy or falsey value, returns a\n * function that returns the opposite (falsey or truthy) value given the same inputs\n */\nexport var not = function (fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return !fn.apply(null, args);\n };\n};\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if both functions return truthy for the given arguments\n */\nexport function and(fn1, fn2) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fn1.apply(null, args) && fn2.apply(null, args);\n };\n}\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if at least one of the functions returns truthy for the given arguments\n */\nexport function or(fn1, fn2) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fn1.apply(null, args) || fn2.apply(null, args);\n };\n}\n/**\n * Check if all the elements of an array match a predicate function\n *\n * @param fn1 a predicate function `fn1`\n * @returns a function which takes an array and returns true if `fn1` is true for all elements of the array\n */\nexport var all = function (fn1) { return function (arr) { return arr.reduce(function (b, x) { return b && !!fn1(x); }, true); }; };\n// tslint:disable-next-line:variable-name\nexport var any = function (fn1) { return function (arr) { return arr.reduce(function (b, x) { return b || !!fn1(x); }, false); }; };\n/** Given a class, returns a Predicate function that returns true if the object is of that class */\nexport var is = function (ctor) {\n return function (obj) {\n return (obj != null && obj.constructor === ctor) || obj instanceof ctor;\n };\n};\n/** Given a value, returns a Predicate function that returns true if another value is === equal to the original value */\nexport var eq = function (value) { return function (other) { return value === other; }; };\n/** Given a value, returns a function which returns the value */\nexport var val = function (v) {\n return function () {\n return v;\n };\n};\nexport function invoke(fnName, args) {\n return function (obj) { return obj[fnName].apply(obj, args); };\n}\n/**\n * Sorta like Pattern Matching (a functional programming conditional construct)\n *\n * See http://c2.com/cgi/wiki?PatternMatching\n *\n * This is a conditional construct which allows a series of predicates and output functions\n * to be checked and then applied. Each predicate receives the input. If the predicate\n * returns truthy, then its matching output function (mapping function) is provided with\n * the input and, then the result is returned.\n *\n * Each combination (2-tuple) of predicate + output function should be placed in an array\n * of size 2: [ predicate, mapFn ]\n *\n * These 2-tuples should be put in an outer array.\n *\n * @example\n * ```\n *\n * // Here's a 2-tuple where the first element is the isString predicate\n * // and the second element is a function that returns a description of the input\n * let firstTuple = [ angular.isString, (input) => `Heres your string ${input}` ];\n *\n * // Second tuple: predicate \"isNumber\", mapfn returns a description\n * let secondTuple = [ angular.isNumber, (input) => `(${input}) That's a number!` ];\n *\n * let third = [ (input) => input === null, (input) => `Oh, null...` ];\n *\n * let fourth = [ (input) => input === undefined, (input) => `notdefined` ];\n *\n * let descriptionOf = pattern([ firstTuple, secondTuple, third, fourth ]);\n *\n * console.log(descriptionOf(undefined)); // 'notdefined'\n * console.log(descriptionOf(55)); // '(55) That's a number!'\n * console.log(descriptionOf(\"foo\")); // 'Here's your string foo'\n * ```\n *\n * @param struct A 2D array. Each element of the array should be an array, a 2-tuple,\n * with a Predicate and a mapping/output function\n * @returns {function(any): *}\n */\nexport function pattern(struct) {\n return function (x) {\n for (var i = 0; i < struct.length; i++) {\n if (struct[i][0](x))\n return struct[i][1](x);\n }\n };\n}\n","/**\n * Predicates\n *\n * These predicates return true/false based on the input.\n * Although these functions are exported, they are subject to change without notice.\n *\n * @packageDocumentation\n */\nimport { and, not, pipe, prop, or } from './hof';\nvar toStr = Object.prototype.toString;\nvar tis = function (t) { return function (x) { return typeof x === t; }; };\nexport var isUndefined = tis('undefined');\nexport var isDefined = not(isUndefined);\nexport var isNull = function (o) { return o === null; };\nexport var isNullOrUndefined = or(isNull, isUndefined);\nexport var isFunction = tis('function');\nexport var isNumber = tis('number');\nexport var isString = tis('string');\nexport var isObject = function (x) { return x !== null && typeof x === 'object'; };\nexport var isArray = Array.isArray;\nexport var isDate = (function (x) { return toStr.call(x) === '[object Date]'; });\nexport var isRegExp = (function (x) { return toStr.call(x) === '[object RegExp]'; });\n/**\n * Predicate which checks if a value is injectable\n *\n * A value is \"injectable\" if it is a function, or if it is an ng1 array-notation-style array\n * where all the elements in the array are Strings, except the last one, which is a Function\n */\nexport function isInjectable(val) {\n if (isArray(val) && val.length) {\n var head = val.slice(0, -1), tail = val.slice(-1);\n return !(head.filter(not(isString)).length || tail.filter(not(isFunction)).length);\n }\n return isFunction(val);\n}\n/**\n * Predicate which checks if a value looks like a Promise\n *\n * It is probably a Promise if it's an object, and it has a `then` property which is a Function\n */\nexport var isPromise = and(isObject, pipe(prop('then'), isFunction));\n","var noImpl = function (fnname) { return function () {\n throw new Error(\"No implementation for \".concat(fnname, \". The framework specific code did not implement this method.\"));\n}; };\nexport var makeStub = function (service, methods) {\n return methods.reduce(function (acc, key) { return ((acc[key] = noImpl(\"\".concat(service, \".\").concat(String(key), \"()\"))), acc); }, {});\n};\nvar services = {\n $q: undefined,\n $injector: undefined,\n};\nexport { services };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @packageDocumentation\n * @preferred\n */\nimport { isFunction, isString, isArray, isRegExp, isDate } from './predicates';\nimport { all, any, prop, curry, not } from './hof';\nimport { services } from './coreservices';\nexport var root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n this;\nvar angular = root.angular || {};\nexport var fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexport var toJson = angular.toJson || JSON.stringify.bind(JSON);\nexport var forEach = angular.forEach || _forEach;\nexport var extend = Object.assign || _extend;\nexport var equals = angular.equals || _equals;\nexport function identity(x) {\n return x;\n}\nexport function noop() { }\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n * constructor(data) {\n * // Binds all functions from Foo.prototype to 'this',\n * // then copies them to 'this'\n * bindFunctions(Foo.prototype, this, this);\n * this.data = data;\n * }\n *\n * log() {\n * console.log(this.data);\n * }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n * this.data = [3, 4, 5];\n * this.log = function() {\n * console.log(this.data);\n * }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n * // Binds all functions from SomeService to SomeService,\n * // then copies them to 'this'\n * bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nexport function createProxyFunctions(source, target, bind, fnNames, latebind) {\n if (latebind === void 0) { latebind = false; }\n var bindFunction = function (fnName) { return source()[fnName].bind(bind()); };\n var makeLateRebindFn = function (fnName) {\n return function lateRebindFunction() {\n target[fnName] = bindFunction(fnName);\n return target[fnName].apply(null, arguments);\n };\n };\n fnNames = fnNames || Object.keys(source());\n return fnNames.reduce(function (acc, name) {\n acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n return acc;\n }, target);\n}\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexport var inherit = function (parent, extra) { return extend(Object.create(parent), extra); };\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexport var inArray = curry(_inArray);\nexport function _inArray(array, obj) {\n return array.indexOf(obj) !== -1;\n}\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexport var removeFrom = curry(_removeFrom);\nexport function _removeFrom(array, obj) {\n var idx = array.indexOf(obj);\n if (idx >= 0)\n array.splice(idx, 1);\n return array;\n}\n/** pushes a values to an array and returns the value */\nexport var pushTo = curry(_pushTo);\nexport function _pushTo(arr, val) {\n return arr.push(val), val;\n}\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexport var deregAll = function (functions) {\n return functions.slice().forEach(function (fn) {\n typeof fn === 'function' && fn();\n removeFrom(functions, fn);\n });\n};\n/**\n * Applies a set of defaults to an options object. The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nexport function defaults(opts) {\n var defaultsList = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n defaultsList[_i - 1] = arguments[_i];\n }\n var defaultVals = extend.apply(void 0, __spreadArray([{}], defaultsList.reverse(), false));\n return extend(defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\n/** Reduce function that merges each element of the list into a single object, using extend */\nexport var mergeR = function (memo, item) { return extend(memo, item); };\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nexport function ancestors(first, second) {\n var path = [];\n // tslint:disable-next-line:forin\n for (var n in first.path) {\n if (first.path[n] !== second.path[n])\n break;\n path.push(first.path[n]);\n }\n return path;\n}\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nexport function pick(obj, propNames) {\n var objCopy = {};\n for (var _prop in obj) {\n if (propNames.indexOf(_prop) !== -1) {\n objCopy[_prop] = obj[_prop];\n }\n }\n return objCopy;\n}\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nexport function omit(obj, propNames) {\n return Object.keys(obj)\n .filter(not(inArray(propNames)))\n .reduce(function (acc, key) { return ((acc[key] = obj[key]), acc); }, {});\n}\n/**\n * Maps an array, or object to a property (by name)\n */\nexport function pluck(collection, propName) {\n return map(collection, prop(propName));\n}\n/** Filters an Array or an Object's properties based on a predicate */\nexport function filter(collection, callback) {\n var arr = isArray(collection), result = arr ? [] : {};\n var accept = arr ? function (x) { return result.push(x); } : function (x, key) { return (result[key] = x); };\n forEach(collection, function (item, i) {\n if (callback(item, i))\n accept(item, i);\n });\n return result;\n}\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nexport function find(collection, callback) {\n var result;\n forEach(collection, function (item, i) {\n if (result)\n return;\n if (callback(item, i))\n result = item;\n });\n return result;\n}\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexport var mapObj = map;\n/** Maps an array or object properties using a callback function */\nexport function map(collection, callback, target) {\n target = target || (isArray(collection) ? [] : {});\n forEach(collection, function (item, i) { return (target[i] = callback(item, i)); });\n return target;\n}\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexport var values = function (obj) { return Object.keys(obj).map(function (key) { return obj[key]; }); };\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexport var allTrueR = function (memo, elem) { return memo && elem; };\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n * * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexport var anyTrueR = function (memo, elem) { return memo || elem; };\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport var unnestR = function (memo, elem) { return memo.concat(elem); };\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport var flattenR = function (memo, elem) {\n return isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n};\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nexport function pushR(arr, obj) {\n arr.push(obj);\n return arr;\n}\n/** Reduce function that filters out duplicates */\nexport var uniqR = function (acc, token) { return (inArray(acc, token) ? acc : pushR(acc, token)); };\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport var unnest = function (arr) { return arr.reduce(unnestR, []); };\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport var flatten = function (arr) { return arr.reduce(flattenR, []); };\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexport var assertPredicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexport var assertMap = assertFn;\nexport function assertFn(predicateOrMap, errMsg) {\n if (errMsg === void 0) { errMsg = 'assert failure'; }\n return function (obj) {\n var result = predicateOrMap(obj);\n if (!result) {\n throw new Error(isFunction(errMsg) ? errMsg(obj) : errMsg);\n }\n return result;\n };\n}\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexport var pairs = function (obj) { return Object.keys(obj).map(function (key) { return [key, obj[key]]; }); };\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar); // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz); // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nexport function arrayTuples() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length === 0)\n return [];\n var maxArrayLen = args.reduce(function (min, arr) { return Math.min(arr.length, min); }, 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n var result = [];\n var _loop_1 = function (i) {\n // This is a hot function\n // Unroll when there are 1-4 arguments\n switch (args.length) {\n case 1:\n result.push([args[0][i]]);\n break;\n case 2:\n result.push([args[0][i], args[1][i]]);\n break;\n case 3:\n result.push([args[0][i], args[1][i], args[2][i]]);\n break;\n case 4:\n result.push([args[0][i], args[1][i], args[2][i], args[3][i]]);\n break;\n default:\n result.push(args.map(function (array) { return array[i]; }));\n break;\n }\n };\n for (var i = 0; i < maxArrayLen; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nexport function applyPairs(memo, keyValTuple) {\n var key, value;\n if (isArray(keyValTuple))\n key = keyValTuple[0], value = keyValTuple[1];\n if (!isString(key))\n throw new Error('invalid parameters to applyPairs');\n memo[key] = value;\n return memo;\n}\n/** Get the last element of an array */\nexport function tail(arr) {\n return (arr.length && arr[arr.length - 1]) || undefined;\n}\n/**\n * shallow copy from src to dest\n */\nexport function copy(src, dest) {\n if (dest)\n Object.keys(dest).forEach(function (key) { return delete dest[key]; });\n if (!dest)\n dest = {};\n return extend(dest, src);\n}\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj, cb, _this) {\n if (isArray(obj))\n return obj.forEach(cb, _this);\n Object.keys(obj).forEach(function (key) { return cb(obj[key], key); });\n}\nexport function _extend(toObj) {\n for (var i = 1; i < arguments.length; i++) {\n var obj = arguments[i];\n if (!obj)\n continue;\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; j++) {\n toObj[keys[j]] = obj[keys[j]];\n }\n }\n return toObj;\n}\nfunction _equals(o1, o2) {\n if (o1 === o2)\n return true;\n if (o1 === null || o2 === null)\n return false;\n if (o1 !== o1 && o2 !== o2)\n return true; // NaN === NaN\n var t1 = typeof o1, t2 = typeof o2;\n if (t1 !== t2 || t1 !== 'object')\n return false;\n var tup = [o1, o2];\n if (all(isArray)(tup))\n return _arraysEq(o1, o2);\n if (all(isDate)(tup))\n return o1.getTime() === o2.getTime();\n if (all(isRegExp)(tup))\n return o1.toString() === o2.toString();\n if (all(isFunction)(tup))\n return true; // meh\n var predicates = [isFunction, isArray, isDate, isRegExp];\n if (predicates.map(any).reduce(function (b, fn) { return b || !!fn(tup); }, false))\n return false;\n var keys = {};\n // tslint:disable-next-line:forin\n for (var key in o1) {\n if (!_equals(o1[key], o2[key]))\n return false;\n keys[key] = true;\n }\n for (var key in o2) {\n if (!keys[key])\n return false;\n }\n return true;\n}\nfunction _arraysEq(a1, a2) {\n if (a1.length !== a2.length)\n return false;\n return arrayTuples(a1, a2).reduce(function (b, t) { return b && _equals(t[0], t[1]); }, true);\n}\n// issue #2676\nexport var silenceUncaughtInPromise = function (promise) { return promise.catch(function (e) { return 0; }) && promise; };\nexport var silentRejection = function (error) { return silenceUncaughtInPromise(services.$q.reject(error)); };\n","/**\n * Matches state names using glob-like pattern strings.\n *\n * Globs can be used in specific APIs including:\n *\n * - [[StateService.is]]\n * - [[StateService.includes]]\n * - The first argument to Hook Registration functions like [[TransitionService.onStart]]\n * - [[HookMatchCriteria]] and [[HookMatchCriterion]]\n *\n * A `Glob` string is a pattern which matches state names.\n * Nested state names are split into segments (separated by a dot) when processing.\n * The state named `foo.bar.baz` is split into three segments ['foo', 'bar', 'baz']\n *\n * Globs work according to the following rules:\n *\n * ### Exact match:\n *\n * The glob `'A.B'` matches the state named exactly `'A.B'`.\n *\n * | Glob |Matches states named|Does not match state named|\n * |:------------|:--------------------|:---------------------|\n * | `'A'` | `'A'` | `'B'` , `'A.C'` |\n * | `'A.B'` | `'A.B'` | `'A'` , `'A.B.C'` |\n * | `'foo'` | `'foo'` | `'FOO'` , `'foo.bar'`|\n *\n * ### Single star (`*`)\n *\n * A single star (`*`) is a wildcard that matches exactly one segment.\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:---------------------|:--------------------------|\n * | `'*'` | `'A'` , `'Z'` | `'A.B'` , `'Z.Y.X'` |\n * | `'A.*'` | `'A.B'` , `'A.C'` | `'A'` , `'A.B.C'` |\n * | `'A.*.*'` | `'A.B.C'` , `'A.X.Y'`| `'A'`, `'A.B'` , `'Z.Y.X'`|\n *\n * ### Double star (`**`)\n *\n * A double star (`'**'`) is a wildcard that matches *zero or more segments*\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:----------------------------------------------|:----------------------------------|\n * | `'**'` | `'A'` , `'A.B'`, `'Z.Y.X'` | (matches all states) |\n * | `'A.**'` | `'A'` , `'A.B'` , `'A.C.X'` | `'Z.Y.X'` |\n * | `'**.X'` | `'X'` , `'A.X'` , `'Z.Y.X'` | `'A'` , `'A.login.Z'` |\n * | `'A.**.X'` | `'A.X'` , `'A.B.X'` , `'A.B.C.X'` | `'A'` , `'A.B.C'` |\n *\n * @packageDocumentation\n */\nvar Glob = /** @class */ (function () {\n function Glob(text) {\n this.text = text;\n this.glob = text.split('.');\n var regexpString = this.text\n .split('.')\n .map(function (seg) {\n if (seg === '**')\n return '(?:|(?:\\\\.[^.]*)*)';\n if (seg === '*')\n return '\\\\.[^.]*';\n return '\\\\.' + seg;\n })\n .join('');\n this.regexp = new RegExp('^' + regexpString + '$');\n }\n /** Returns true if the string has glob-like characters in it */\n Glob.is = function (text) {\n return !!/[!,*]+/.exec(text);\n };\n /** Returns a glob from the string, or null if the string isn't Glob-like */\n Glob.fromString = function (text) {\n return Glob.is(text) ? new Glob(text) : null;\n };\n Glob.prototype.matches = function (name) {\n return this.regexp.test('.' + name);\n };\n return Glob;\n}());\nexport { Glob };\n","import { pushTo } from './common';\nvar Queue = /** @class */ (function () {\n function Queue(_items, _limit) {\n if (_items === void 0) { _items = []; }\n if (_limit === void 0) { _limit = null; }\n this._items = _items;\n this._limit = _limit;\n this._evictListeners = [];\n this.onEvict = pushTo(this._evictListeners);\n }\n Queue.prototype.enqueue = function (item) {\n var items = this._items;\n items.push(item);\n if (this._limit && items.length > this._limit)\n this.evict();\n return item;\n };\n Queue.prototype.evict = function () {\n var item = this._items.shift();\n this._evictListeners.forEach(function (fn) { return fn(item); });\n return item;\n };\n Queue.prototype.dequeue = function () {\n if (this.size())\n return this._items.splice(0, 1)[0];\n };\n Queue.prototype.clear = function () {\n var current = this._items;\n this._items = [];\n return current;\n };\n Queue.prototype.size = function () {\n return this._items.length;\n };\n Queue.prototype.remove = function (item) {\n var idx = this._items.indexOf(item);\n return idx > -1 && this._items.splice(idx, 1)[0];\n };\n Queue.prototype.peekTail = function () {\n return this._items[this._items.length - 1];\n };\n Queue.prototype.peekHead = function () {\n if (this.size())\n return this._items[0];\n };\n return Queue;\n}());\nexport { Queue };\n","'use strict';\nimport { extend, silentRejection } from '../common/common';\nimport { stringify } from '../common/strings';\nimport { is } from '../common/hof';\n/** An enum for Transition Rejection reasons */\nvar RejectType;\n(function (RejectType) {\n /**\n * A new transition superseded this one.\n *\n * While this transition was running, a new transition started.\n * This transition is cancelled because it was superseded by new transition.\n */\n RejectType[RejectType[\"SUPERSEDED\"] = 2] = \"SUPERSEDED\";\n /**\n * The transition was aborted\n *\n * The transition was aborted by a hook which returned `false`\n */\n RejectType[RejectType[\"ABORTED\"] = 3] = \"ABORTED\";\n /**\n * The transition was invalid\n *\n * The transition was never started because it was invalid\n */\n RejectType[RejectType[\"INVALID\"] = 4] = \"INVALID\";\n /**\n * The transition was ignored\n *\n * The transition was ignored because it would have no effect.\n *\n * Either:\n *\n * - The transition is targeting the current state and parameter values\n * - The transition is targeting the same state and parameter values as the currently running transition.\n */\n RejectType[RejectType[\"IGNORED\"] = 5] = \"IGNORED\";\n /**\n * The transition errored.\n *\n * This generally means a hook threw an error or returned a rejected promise\n */\n RejectType[RejectType[\"ERROR\"] = 6] = \"ERROR\";\n})(RejectType || (RejectType = {}));\nexport { RejectType };\n/** @internal */\nvar id = 0;\nvar Rejection = /** @class */ (function () {\n function Rejection(type, message, detail) {\n /** @internal */\n this.$id = id++;\n this.type = type;\n this.message = message;\n this.detail = detail;\n }\n /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n Rejection.isRejectionPromise = function (obj) {\n return obj && typeof obj.then === 'function' && is(Rejection)(obj._transitionRejection);\n };\n /** Returns a Rejection due to transition superseded */\n Rejection.superseded = function (detail, options) {\n var message = 'The transition has been superseded by a different transition';\n var rejection = new Rejection(RejectType.SUPERSEDED, message, detail);\n if (options && options.redirected) {\n rejection.redirected = true;\n }\n return rejection;\n };\n /** Returns a Rejection due to redirected transition */\n Rejection.redirected = function (detail) {\n return Rejection.superseded(detail, { redirected: true });\n };\n /** Returns a Rejection due to invalid transition */\n Rejection.invalid = function (detail) {\n var message = 'This transition is invalid';\n return new Rejection(RejectType.INVALID, message, detail);\n };\n /** Returns a Rejection due to ignored transition */\n Rejection.ignored = function (detail) {\n var message = 'The transition was ignored';\n return new Rejection(RejectType.IGNORED, message, detail);\n };\n /** Returns a Rejection due to aborted transition */\n Rejection.aborted = function (detail) {\n var message = 'The transition has been aborted';\n return new Rejection(RejectType.ABORTED, message, detail);\n };\n /** Returns a Rejection due to aborted transition */\n Rejection.errored = function (detail) {\n var message = 'The transition errored';\n return new Rejection(RejectType.ERROR, message, detail);\n };\n /**\n * Returns a Rejection\n *\n * Normalizes a value as a Rejection.\n * If the value is already a Rejection, returns it.\n * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n *\n * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n */\n Rejection.normalize = function (detail) {\n return is(Rejection)(detail) ? detail : Rejection.errored(detail);\n };\n Rejection.prototype.toString = function () {\n var detailString = function (d) { return (d && d.toString !== Object.prototype.toString ? d.toString() : stringify(d)); };\n var detail = detailString(this.detail);\n var _a = this, $id = _a.$id, type = _a.type, message = _a.message;\n return \"Transition Rejection($id: \".concat($id, \" type: \").concat(type, \", message: \").concat(message, \", detail: \").concat(detail, \")\");\n };\n Rejection.prototype.toPromise = function () {\n return extend(silentRejection(this), { _transitionRejection: this });\n };\n return Rejection;\n}());\nexport { Rejection };\n","/**\n * Functions that manipulate strings\n *\n * Although these functions are exported, they are subject to change without notice.\n *\n * @packageDocumentation\n */\nimport { isArray, isFunction, isInjectable, isNull, isObject, isPromise, isString, isUndefined } from './predicates';\nimport { Rejection } from '../transition/rejectFactory';\nimport { identity, pushR, tail } from './common';\nimport { pattern, val } from './hof';\n/**\n * Returns a string shortened to a maximum length\n *\n * If the string is already less than the `max` length, return the string.\n * Else return the string, shortened to `max - 3` and append three dots (\"...\").\n *\n * @param max the maximum length of the string to return\n * @param str the input string\n */\nexport function maxLength(max, str) {\n if (str.length <= max)\n return str;\n return str.substr(0, max - 3) + '...';\n}\n/**\n * Returns a string, with spaces added to the end, up to a desired str length\n *\n * If the string is already longer than the desired length, return the string.\n * Else returns the string, with extra spaces on the end, such that it reaches `length` characters.\n *\n * @param length the desired length of the string to return\n * @param str the input string\n */\nexport function padString(length, str) {\n while (str.length < length)\n str += ' ';\n return str;\n}\nexport function kebobString(camelCase) {\n return camelCase\n .replace(/^([A-Z])/, function ($1) { return $1.toLowerCase(); }) // replace first char\n .replace(/([A-Z])/g, function ($1) { return '-' + $1.toLowerCase(); }); // replace rest\n}\nexport function functionToString(fn) {\n var fnStr = fnToString(fn);\n var namedFunctionMatch = fnStr.match(/^(function [^ ]+\\([^)]*\\))/);\n var toStr = namedFunctionMatch ? namedFunctionMatch[1] : fnStr;\n var fnName = fn['name'] || '';\n if (fnName && toStr.match(/function \\(/)) {\n return 'function ' + fnName + toStr.substr(9);\n }\n return toStr;\n}\nexport function fnToString(fn) {\n var _fn = isArray(fn) ? fn.slice(-1)[0] : fn;\n return (_fn && _fn.toString()) || 'undefined';\n}\nexport function stringify(o) {\n var seen = [];\n var isRejection = Rejection.isRejectionPromise;\n var hasToString = function (obj) {\n return isObject(obj) && !isArray(obj) && obj.constructor !== Object && isFunction(obj.toString);\n };\n var stringifyPattern = pattern([\n [isUndefined, val('undefined')],\n [isNull, val('null')],\n [isPromise, val('[Promise]')],\n [isRejection, function (x) { return x._transitionRejection.toString(); }],\n [hasToString, function (x) { return x.toString(); }],\n [isInjectable, functionToString],\n [val(true), identity],\n ]);\n function format(value) {\n if (isObject(value)) {\n if (seen.indexOf(value) !== -1)\n return '[circular ref]';\n seen.push(value);\n }\n return stringifyPattern(value);\n }\n if (isUndefined(o)) {\n // Workaround for IE & Edge Spec incompatibility where replacer function would not be called when JSON.stringify\n // is given `undefined` as value. To work around that, we simply detect `undefined` and bail out early by\n // manually stringifying it.\n return format(o);\n }\n return JSON.stringify(o, function (key, value) { return format(value); }).replace(/\\\\\"/g, '\"');\n}\n/** Returns a function that splits a string on a character or substring */\nexport var beforeAfterSubstr = function (char) {\n return function (str) {\n if (!str)\n return ['', ''];\n var idx = str.indexOf(char);\n if (idx === -1)\n return [str, ''];\n return [str.substr(0, idx), str.substr(idx + 1)];\n };\n};\nexport var hostRegex = new RegExp('^(?:[a-z]+:)?//[^/]+/');\nexport var stripLastPathElement = function (str) { return str.replace(/\\/[^/]*$/, ''); };\nexport var splitHash = beforeAfterSubstr('#');\nexport var splitQuery = beforeAfterSubstr('?');\nexport var splitEqual = beforeAfterSubstr('=');\nexport var trimHashVal = function (str) { return (str ? str.replace(/^#/, '') : ''); };\n/**\n * Splits on a delimiter, but returns the delimiters in the array\n *\n * #### Example:\n * ```js\n * var splitOnSlashes = splitOnDelim('/');\n * splitOnSlashes(\"/foo\"); // [\"/\", \"foo\"]\n * splitOnSlashes(\"/foo/\"); // [\"/\", \"foo\", \"/\"]\n * ```\n */\nexport function splitOnDelim(delim) {\n var re = new RegExp('(' + delim + ')', 'g');\n return function (str) { return str.split(re).filter(identity); };\n}\n/**\n * Reduce fn that joins neighboring strings\n *\n * Given an array of strings, returns a new array\n * where all neighboring strings have been joined.\n *\n * #### Example:\n * ```js\n * let arr = [\"foo\", \"bar\", 1, \"baz\", \"\", \"qux\" ];\n * arr.reduce(joinNeighborsR, []) // [\"foobar\", 1, \"bazqux\" ]\n * ```\n */\nexport function joinNeighborsR(acc, x) {\n if (isString(tail(acc)) && isString(x))\n return acc.slice(0, -1).concat(tail(acc) + x);\n return pushR(acc, x);\n}\n","/**\n * workaround for missing console object in IE9 when dev tools haven't been opened o_O\n * @packageDocumentation\n */\n/* tslint:disable:no-console */\nimport { noop } from './common';\nvar noopConsoleStub = { log: noop, error: noop, table: noop };\nfunction ie9Console(console) {\n var bound = function (fn) { return Function.prototype.bind.call(fn, console); };\n return {\n log: bound(console.log),\n error: bound(console.log),\n table: bound(console.log),\n };\n}\nfunction fallbackConsole(console) {\n var log = console.log.bind(console);\n var error = console.error ? console.error.bind(console) : log;\n var table = console.table ? console.table.bind(console) : log;\n return { log: log, error: error, table: table };\n}\nfunction getSafeConsole() {\n // @ts-ignore\n var isIE9 = typeof document !== 'undefined' && document.documentMode && document.documentMode === 9;\n if (isIE9) {\n return window && window.console ? ie9Console(window.console) : noopConsoleStub;\n }\n else if (!console.table || !console.error) {\n return fallbackConsole(console);\n }\n else {\n return console;\n }\n}\nexport var safeConsole = getSafeConsole();\n","/**\n * # Transition tracing (debug)\n *\n * Enable transition tracing to print transition information to the console,\n * in order to help debug your application.\n * Tracing logs detailed information about each Transition to your console.\n *\n * To enable tracing, import the [[Trace]] singleton and enable one or more categories.\n *\n * ### ES6\n * ```js\n * import {trace} from \"@uirouter/core\";\n * trace.enable(1, 5); // TRANSITION and VIEWCONFIG\n * ```\n *\n * ### CJS\n * ```js\n * let trace = require(\"@uirouter/core\").trace;\n * trace.enable(\"TRANSITION\", \"VIEWCONFIG\");\n * ```\n *\n * ### Globals\n * ```js\n * let trace = window[\"@uirouter/core\"].trace;\n * trace.enable(); // Trace everything (very verbose)\n * ```\n *\n * ### Angular 1:\n * ```js\n * app.run($trace => $trace.enable());\n * ```\n *\n * @packageDocumentation\n */\nimport { parse } from '../common/hof';\nimport { isNumber } from '../common/predicates';\nimport { stringify, functionToString, maxLength, padString } from './strings';\nimport { safeConsole } from './safeConsole';\nfunction uiViewString(uiview) {\n if (!uiview)\n return 'ui-view (defunct)';\n var state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)';\n return \"[ui-view#\".concat(uiview.id, \" \").concat(uiview.$type, \":\").concat(uiview.fqn, \" (\").concat(uiview.name, \"@\").concat(state, \")]\");\n}\nvar viewConfigString = function (viewConfig) {\n var view = viewConfig.viewDecl;\n var state = view.$context.name || '(root)';\n return \"[View#\".concat(viewConfig.$id, \" from '\").concat(state, \"' state]: target ui-view: '\").concat(view.$uiViewName, \"@\").concat(view.$uiViewContextAnchor, \"'\");\n};\nfunction normalizedCat(input) {\n return isNumber(input) ? Category[input] : Category[Category[input]];\n}\n/**\n * Trace categories Enum\n *\n * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]]\n *\n * `trace.enable(Category.TRANSITION)`\n *\n * These can also be provided using a matching string, or position ordinal\n *\n * `trace.enable(\"TRANSITION\")`\n *\n * `trace.enable(1)`\n */\nvar Category;\n(function (Category) {\n Category[Category[\"RESOLVE\"] = 0] = \"RESOLVE\";\n Category[Category[\"TRANSITION\"] = 1] = \"TRANSITION\";\n Category[Category[\"HOOK\"] = 2] = \"HOOK\";\n Category[Category[\"UIVIEW\"] = 3] = \"UIVIEW\";\n Category[Category[\"VIEWCONFIG\"] = 4] = \"VIEWCONFIG\";\n})(Category || (Category = {}));\nexport { Category };\nvar _tid = parse('$id');\nvar _rid = parse('router.$id');\nvar transLbl = function (trans) { return \"Transition #\".concat(_tid(trans), \"-\").concat(_rid(trans)); };\n/**\n * Prints UI-Router Transition trace information to the console.\n */\nvar Trace = /** @class */ (function () {\n /** @internal */\n function Trace() {\n /** @internal */\n this._enabled = {};\n this.approximateDigests = 0;\n }\n /** @internal */\n Trace.prototype._set = function (enabled, categories) {\n var _this = this;\n if (!categories.length) {\n categories = Object.keys(Category)\n .map(function (k) { return parseInt(k, 10); })\n .filter(function (k) { return !isNaN(k); })\n .map(function (key) { return Category[key]; });\n }\n categories.map(normalizedCat).forEach(function (category) { return (_this._enabled[category] = enabled); });\n };\n Trace.prototype.enable = function () {\n var categories = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n categories[_i] = arguments[_i];\n }\n this._set(true, categories);\n };\n Trace.prototype.disable = function () {\n var categories = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n categories[_i] = arguments[_i];\n }\n this._set(false, categories);\n };\n /**\n * Retrieves the enabled stateus of a [[Category]]\n *\n * ```js\n * trace.enabled(\"VIEWCONFIG\"); // true or false\n * ```\n *\n * @returns boolean true if the category is enabled\n */\n Trace.prototype.enabled = function (category) {\n return !!this._enabled[normalizedCat(category)];\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceTransitionStart = function (trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": Started -> \").concat(stringify(trans)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceTransitionIgnored = function (trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": Ignored <> \").concat(stringify(trans)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceHookInvocation = function (step, trans, options) {\n if (!this.enabled(Category.HOOK))\n return;\n var event = parse('traceData.hookType')(options) || 'internal', context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown', name = functionToString(step.registeredHook.callback);\n safeConsole.log(\"\".concat(transLbl(trans), \": Hook -> \").concat(event, \" context: \").concat(context, \", \").concat(maxLength(200, name)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceHookResult = function (hookResult, trans, transitionOptions) {\n if (!this.enabled(Category.HOOK))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": <- Hook returned: \").concat(maxLength(200, stringify(hookResult))));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceResolvePath = function (path, when, trans) {\n if (!this.enabled(Category.RESOLVE))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": Resolving \").concat(path, \" (\").concat(when, \")\"));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceResolvableResolved = function (resolvable, trans) {\n if (!this.enabled(Category.RESOLVE))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": <- Resolved \").concat(resolvable, \" to: \").concat(maxLength(200, stringify(resolvable.data))));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceError = function (reason, trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": <- Rejected \").concat(stringify(trans), \", reason: \").concat(reason));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceSuccess = function (finalState, trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(\"\".concat(transLbl(trans), \": <- Success \").concat(stringify(trans), \", final state: \").concat(finalState.name));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceUIViewEvent = function (event, viewData, extra) {\n if (extra === void 0) { extra = ''; }\n if (!this.enabled(Category.UIVIEW))\n return;\n safeConsole.log(\"ui-view: \".concat(padString(30, event), \" \").concat(uiViewString(viewData)).concat(extra));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceUIViewConfigUpdated = function (viewData, context) {\n if (!this.enabled(Category.UIVIEW))\n return;\n this.traceUIViewEvent('Updating', viewData, \" with ViewConfig from context='\".concat(context, \"'\"));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceUIViewFill = function (viewData, html) {\n if (!this.enabled(Category.UIVIEW))\n return;\n this.traceUIViewEvent('Fill', viewData, \" with: \".concat(maxLength(200, html)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceViewSync = function (pairs) {\n if (!this.enabled(Category.VIEWCONFIG))\n return;\n var uivheader = 'uiview component fqn';\n var cfgheader = 'view config state (view name)';\n var mapping = pairs\n .map(function (_a) {\n var _b;\n var uiView = _a.uiView, viewConfig = _a.viewConfig;\n var uiv = uiView && uiView.fqn;\n var cfg = viewConfig && \"\".concat(viewConfig.viewDecl.$context.name, \": (\").concat(viewConfig.viewDecl.$name, \")\");\n return _b = {}, _b[uivheader] = uiv, _b[cfgheader] = cfg, _b;\n })\n .sort(function (a, b) { return (a[uivheader] || '').localeCompare(b[uivheader] || ''); });\n safeConsole.table(mapping);\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceViewServiceEvent = function (event, viewConfig) {\n if (!this.enabled(Category.VIEWCONFIG))\n return;\n safeConsole.log(\"VIEWCONFIG: \".concat(event, \" \").concat(viewConfigString(viewConfig)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceViewServiceUIViewEvent = function (event, viewData) {\n if (!this.enabled(Category.VIEWCONFIG))\n return;\n safeConsole.log(\"VIEWCONFIG: \".concat(event, \" \").concat(uiViewString(viewData)));\n };\n return Trace;\n}());\nexport { Trace };\n/**\n * The [[Trace]] singleton\n *\n * #### Example:\n * ```js\n * import {trace} from \"@uirouter/core\";\n * trace.enable(1, 5);\n * ```\n */\nvar trace = new Trace();\nexport { trace };\n","import { extend, filter, map } from '../common/common';\nimport { isArray, isDefined } from '../common/predicates';\n/**\n * An internal class which implements [[ParamTypeDefinition]].\n *\n * A [[ParamTypeDefinition]] is a plain javascript object used to register custom parameter types.\n * When a param type definition is registered, an instance of this class is created internally.\n *\n * This class has naive implementations for all the [[ParamTypeDefinition]] methods.\n *\n * Used by [[UrlMatcher]] when matching or formatting URLs, or comparing and validating parameter values.\n *\n * #### Example:\n * ```js\n * var paramTypeDef = {\n * decode: function(val) { return parseInt(val, 10); },\n * encode: function(val) { return val && val.toString(); },\n * equals: function(a, b) { return this.is(a) && a === b; },\n * is: function(val) { return angular.isNumber(val) && isFinite(val) && val % 1 === 0; },\n * pattern: /\\d+/\n * }\n *\n * var paramType = new ParamType(paramTypeDef);\n * ```\n */\nvar ParamType = /** @class */ (function () {\n /**\n * @param def A configuration object which contains the custom type definition. The object's\n * properties will override the default methods and/or pattern in `ParamType`'s public interface.\n * @returns a new ParamType object\n */\n function ParamType(def) {\n /** @inheritdoc */\n this.pattern = /.*/;\n /** @inheritdoc */\n this.inherit = true;\n extend(this, def);\n }\n // consider these four methods to be \"abstract methods\" that should be overridden\n /** @inheritdoc */\n ParamType.prototype.is = function (val, key) {\n return true;\n };\n /** @inheritdoc */\n ParamType.prototype.encode = function (val, key) {\n return val;\n };\n /** @inheritdoc */\n ParamType.prototype.decode = function (val, key) {\n return val;\n };\n /** @inheritdoc */\n ParamType.prototype.equals = function (a, b) {\n // tslint:disable-next-line:triple-equals\n return a == b;\n };\n ParamType.prototype.$subPattern = function () {\n var sub = this.pattern.toString();\n return sub.substr(1, sub.length - 2);\n };\n ParamType.prototype.toString = function () {\n return \"{ParamType:\".concat(this.name, \"}\");\n };\n /** Given an encoded string, or a decoded object, returns a decoded object */\n ParamType.prototype.$normalize = function (val) {\n return this.is(val) ? val : this.decode(val);\n };\n /**\n * Wraps an existing custom ParamType as an array of ParamType, depending on 'mode'.\n * e.g.:\n * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n * - url: \"/path?queryParam=1&queryParam=2\n * - $stateParams.queryParam will be [1, 2]\n * if `mode` is \"auto\", then\n * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n */\n ParamType.prototype.$asArray = function (mode, isSearch) {\n if (!mode)\n return this;\n if (mode === 'auto' && !isSearch)\n throw new Error(\"'auto' array mode is for query parameters only\");\n return new ArrayType(this, mode);\n };\n return ParamType;\n}());\nexport { ParamType };\n/** Wraps up a `ParamType` object to handle array values. */\nfunction ArrayType(type, mode) {\n var _this = this;\n // Wrap non-array value as array\n function arrayWrap(val) {\n return isArray(val) ? val : isDefined(val) ? [val] : [];\n }\n // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n function arrayUnwrap(val) {\n switch (val.length) {\n case 0:\n return undefined;\n case 1:\n return mode === 'auto' ? val[0] : val;\n default:\n return val;\n }\n }\n // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n function arrayHandler(callback, allTruthyMode) {\n return function handleArray(val) {\n if (isArray(val) && val.length === 0)\n return val;\n var arr = arrayWrap(val);\n var result = map(arr, callback);\n return allTruthyMode === true ? filter(result, function (x) { return !x; }).length === 0 : arrayUnwrap(result);\n };\n }\n // Wraps type (.equals) functions to operate on each value of an array\n function arrayEqualsHandler(callback) {\n return function handleArray(val1, val2) {\n var left = arrayWrap(val1), right = arrayWrap(val2);\n if (left.length !== right.length)\n return false;\n for (var i = 0; i < left.length; i++) {\n if (!callback(left[i], right[i]))\n return false;\n }\n return true;\n };\n }\n ['encode', 'decode', 'equals', '$normalize'].forEach(function (name) {\n var paramTypeFn = type[name].bind(type);\n var wrapperFn = name === 'equals' ? arrayEqualsHandler : arrayHandler;\n _this[name] = wrapperFn(paramTypeFn);\n });\n extend(this, {\n dynamic: type.dynamic,\n name: type.name,\n pattern: type.pattern,\n inherit: type.inherit,\n raw: type.raw,\n is: arrayHandler(type.is.bind(type), true),\n $arrayMode: mode,\n });\n}\n","import { extend, filter, map, allTrueR, find } from '../common/common';\nimport { prop } from '../common/hof';\nimport { isInjectable, isDefined, isString, isArray, isUndefined } from '../common/predicates';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar isShorthand = function (cfg) {\n return ['value', 'type', 'squash', 'array', 'dynamic'].filter(hasOwn.bind(cfg || {})).length === 0;\n};\nvar DefType;\n(function (DefType) {\n DefType[DefType[\"PATH\"] = 0] = \"PATH\";\n DefType[DefType[\"SEARCH\"] = 1] = \"SEARCH\";\n DefType[DefType[\"CONFIG\"] = 2] = \"CONFIG\";\n})(DefType || (DefType = {}));\nexport { DefType };\nfunction getParamDeclaration(paramName, location, state) {\n var noReloadOnSearch = (state.reloadOnSearch === false && location === DefType.SEARCH) || undefined;\n var dynamic = find([state.dynamic, noReloadOnSearch], isDefined);\n var defaultConfig = isDefined(dynamic) ? { dynamic: dynamic } : {};\n var paramConfig = unwrapShorthand(state && state.params && state.params[paramName]);\n return extend(defaultConfig, paramConfig);\n}\nfunction unwrapShorthand(cfg) {\n cfg = isShorthand(cfg) ? { value: cfg } : cfg;\n getStaticDefaultValue['__cacheable'] = true;\n function getStaticDefaultValue() {\n return cfg.value;\n }\n var $$fn = isInjectable(cfg.value) ? cfg.value : getStaticDefaultValue;\n return extend(cfg, { $$fn: $$fn });\n}\nfunction getType(cfg, urlType, location, id, paramTypes) {\n if (cfg.type && urlType && urlType.name !== 'string')\n throw new Error(\"Param '\".concat(id, \"' has two type configurations.\"));\n if (cfg.type && urlType && urlType.name === 'string' && paramTypes.type(cfg.type))\n return paramTypes.type(cfg.type);\n if (urlType)\n return urlType;\n if (!cfg.type) {\n var type = location === DefType.CONFIG\n ? 'any'\n : location === DefType.PATH\n ? 'path'\n : location === DefType.SEARCH\n ? 'query'\n : 'string';\n return paramTypes.type(type);\n }\n return cfg.type instanceof ParamType ? cfg.type : paramTypes.type(cfg.type);\n}\n/** returns false, true, or the squash value to indicate the \"default parameter url squash policy\". */\nfunction getSquashPolicy(config, isOptional, defaultPolicy) {\n var squash = config.squash;\n if (!isOptional || squash === false)\n return false;\n if (!isDefined(squash) || squash == null)\n return defaultPolicy;\n if (squash === true || isString(squash))\n return squash;\n throw new Error(\"Invalid squash policy: '\".concat(squash, \"'. Valid policies: false, true, or arbitrary string\"));\n}\nfunction getReplace(config, arrayMode, isOptional, squash) {\n var defaultPolicy = [\n { from: '', to: isOptional || arrayMode ? undefined : '' },\n { from: null, to: isOptional || arrayMode ? undefined : '' },\n ];\n var replace = isArray(config.replace) ? config.replace : [];\n if (isString(squash))\n replace.push({ from: squash, to: undefined });\n var configuredKeys = map(replace, prop('from'));\n return filter(defaultPolicy, function (item) { return configuredKeys.indexOf(item.from) === -1; }).concat(replace);\n}\nvar Param = /** @class */ (function () {\n function Param(id, type, location, urlConfig, state) {\n var config = getParamDeclaration(id, location, state);\n type = getType(config, type, location, id, urlConfig.paramTypes);\n var arrayMode = getArrayMode();\n type = arrayMode ? type.$asArray(arrayMode, location === DefType.SEARCH) : type;\n var isOptional = config.value !== undefined || location === DefType.SEARCH;\n var dynamic = isDefined(config.dynamic) ? !!config.dynamic : !!type.dynamic;\n var raw = isDefined(config.raw) ? !!config.raw : !!type.raw;\n var squash = getSquashPolicy(config, isOptional, urlConfig.defaultSquashPolicy());\n var replace = getReplace(config, arrayMode, isOptional, squash);\n var inherit = isDefined(config.inherit) ? !!config.inherit : !!type.inherit;\n // array config: param name (param[]) overrides default settings. explicit config overrides param name.\n function getArrayMode() {\n var arrayDefaults = { array: location === DefType.SEARCH ? 'auto' : false };\n var arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n return extend(arrayDefaults, arrayParamNomenclature, config).array;\n }\n extend(this, { id: id, type: type, location: location, isOptional: isOptional, dynamic: dynamic, raw: raw, squash: squash, replace: replace, inherit: inherit, array: arrayMode, config: config });\n }\n Param.values = function (params, values) {\n if (values === void 0) { values = {}; }\n var paramValues = {};\n for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {\n var param = params_1[_i];\n paramValues[param.id] = param.value(values[param.id]);\n }\n return paramValues;\n };\n /**\n * Finds [[Param]] objects which have different param values\n *\n * Filters a list of [[Param]] objects to only those whose parameter values differ in two param value objects\n *\n * @param params: The list of Param objects to filter\n * @param values1: The first set of parameter values\n * @param values2: the second set of parameter values\n *\n * @returns any Param objects whose values were different between values1 and values2\n */\n Param.changed = function (params, values1, values2) {\n if (values1 === void 0) { values1 = {}; }\n if (values2 === void 0) { values2 = {}; }\n return params.filter(function (param) { return !param.type.equals(values1[param.id], values2[param.id]); });\n };\n /**\n * Checks if two param value objects are equal (for a set of [[Param]] objects)\n *\n * @param params The list of [[Param]] objects to check\n * @param values1 The first set of param values\n * @param values2 The second set of param values\n *\n * @returns true if the param values in values1 and values2 are equal\n */\n Param.equals = function (params, values1, values2) {\n if (values1 === void 0) { values1 = {}; }\n if (values2 === void 0) { values2 = {}; }\n return Param.changed(params, values1, values2).length === 0;\n };\n /** Returns true if a the parameter values are valid, according to the Param definitions */\n Param.validates = function (params, values) {\n if (values === void 0) { values = {}; }\n return params.map(function (param) { return param.validates(values[param.id]); }).reduce(allTrueR, true);\n };\n Param.prototype.isDefaultValue = function (value) {\n return this.isOptional && this.type.equals(this.value(), value);\n };\n /**\n * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n * default value, which may be the result of an injectable function.\n */\n Param.prototype.value = function (value) {\n var _this = this;\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n var getDefaultValue = function () {\n if (_this._defaultValueCache)\n return _this._defaultValueCache.defaultValue;\n if (!services.$injector)\n throw new Error('Injectable functions cannot be called at configuration time');\n var defaultValue = services.$injector.invoke(_this.config.$$fn);\n if (defaultValue !== null && defaultValue !== undefined && !_this.type.is(defaultValue))\n throw new Error(\"Default value (\".concat(defaultValue, \") for parameter '\").concat(_this.id, \"' is not an instance of ParamType (\").concat(_this.type.name, \")\"));\n if (_this.config.$$fn['__cacheable']) {\n _this._defaultValueCache = { defaultValue: defaultValue };\n }\n return defaultValue;\n };\n var replaceSpecialValues = function (val) {\n for (var _i = 0, _a = _this.replace; _i < _a.length; _i++) {\n var tuple = _a[_i];\n if (tuple.from === val)\n return tuple.to;\n }\n return val;\n };\n value = replaceSpecialValues(value);\n return isUndefined(value) ? getDefaultValue() : this.type.$normalize(value);\n };\n Param.prototype.isSearch = function () {\n return this.location === DefType.SEARCH;\n };\n Param.prototype.validates = function (value) {\n // There was no parameter value, but the param is optional\n if ((isUndefined(value) || value === null) && this.isOptional)\n return true;\n // The value was not of the correct ParamType, and could not be decoded to the correct ParamType\n var normalized = this.type.$normalize(value);\n if (!this.type.is(normalized))\n return false;\n // The value was of the correct type, but when encoded, did not match the ParamType's regexp\n var encoded = this.type.encode(normalized);\n return !(isString(encoded) && !this.type.pattern.exec(encoded));\n };\n Param.prototype.toString = function () {\n return \"{Param:\".concat(this.id, \" \").concat(this.type, \" squash: '\").concat(this.squash, \"' optional: \").concat(this.isOptional, \"}\");\n };\n return Param;\n}());\nexport { Param };\n","import { fromJson, toJson, identity, equals, inherit, map, extend, pick } from '../common/common';\nimport { isDefined, isNullOrUndefined } from '../common/predicates';\nimport { is } from '../common/hof';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\n/**\n * A registry for parameter types.\n *\n * This registry manages the built-in (and custom) parameter types.\n *\n * The built-in parameter types are:\n *\n * - [[string]]\n * - [[path]]\n * - [[query]]\n * - [[hash]]\n * - [[int]]\n * - [[bool]]\n * - [[date]]\n * - [[json]]\n * - [[any]]\n *\n * To register custom parameter types, use [[UrlConfig.type]], i.e.,\n *\n * ```js\n * router.urlService.config.type(customType)\n * ```\n */\nvar ParamTypes = /** @class */ (function () {\n function ParamTypes() {\n this.enqueue = true;\n this.typeQueue = [];\n this.defaultTypes = pick(ParamTypes.prototype, [\n 'hash',\n 'string',\n 'query',\n 'path',\n 'int',\n 'bool',\n 'date',\n 'json',\n 'any',\n ]);\n // Register default types. Store them in the prototype of this.types.\n var makeType = function (definition, name) { return new ParamType(extend({ name: name }, definition)); };\n this.types = inherit(map(this.defaultTypes, makeType), {});\n }\n ParamTypes.prototype.dispose = function () {\n this.types = {};\n };\n /**\n * Registers a parameter type\n *\n * End users should call [[UrlMatcherFactory.type]], which delegates to this method.\n */\n ParamTypes.prototype.type = function (name, definition, definitionFn) {\n if (!isDefined(definition))\n return this.types[name];\n if (this.types.hasOwnProperty(name))\n throw new Error(\"A type named '\".concat(name, \"' has already been defined.\"));\n this.types[name] = new ParamType(extend({ name: name }, definition));\n if (definitionFn) {\n this.typeQueue.push({ name: name, def: definitionFn });\n if (!this.enqueue)\n this._flushTypeQueue();\n }\n return this;\n };\n ParamTypes.prototype._flushTypeQueue = function () {\n while (this.typeQueue.length) {\n var type = this.typeQueue.shift();\n if (type.pattern)\n throw new Error(\"You cannot override a type's .pattern at runtime.\");\n extend(this.types[type.name], services.$injector.invoke(type.def));\n }\n };\n return ParamTypes;\n}());\nexport { ParamTypes };\nfunction initDefaultTypes() {\n var makeDefaultType = function (def) {\n var valToString = function (val) { return (val != null ? val.toString() : val); };\n var defaultTypeBase = {\n encode: valToString,\n decode: valToString,\n is: is(String),\n pattern: /.*/,\n // tslint:disable-next-line:triple-equals\n equals: function (a, b) { return a == b; }, // allow coersion for null/undefined/\"\"\n };\n return extend({}, defaultTypeBase, def);\n };\n // Default Parameter Type Definitions\n extend(ParamTypes.prototype, {\n string: makeDefaultType({}),\n path: makeDefaultType({\n pattern: /[^/]*/,\n }),\n query: makeDefaultType({}),\n hash: makeDefaultType({\n inherit: false,\n }),\n int: makeDefaultType({\n decode: function (val) { return parseInt(val, 10); },\n is: function (val) {\n return !isNullOrUndefined(val) && this.decode(val.toString()) === val;\n },\n pattern: /-?\\d+/,\n }),\n bool: makeDefaultType({\n encode: function (val) { return (val && 1) || 0; },\n decode: function (val) { return parseInt(val, 10) !== 0; },\n is: is(Boolean),\n pattern: /0|1/,\n }),\n date: makeDefaultType({\n encode: function (val) {\n return !this.is(val)\n ? undefined\n : [val.getFullYear(), ('0' + (val.getMonth() + 1)).slice(-2), ('0' + val.getDate()).slice(-2)].join('-');\n },\n decode: function (val) {\n if (this.is(val))\n return val;\n var match = this.capture.exec(val);\n return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n },\n is: function (val) { return val instanceof Date && !isNaN(val.valueOf()); },\n equals: function (l, r) {\n return ['getFullYear', 'getMonth', 'getDate'].reduce(function (acc, fn) { return acc && l[fn]() === r[fn](); }, true);\n },\n pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/,\n }),\n json: makeDefaultType({\n encode: toJson,\n decode: fromJson,\n is: is(Object),\n equals: equals,\n pattern: /[^/]*/,\n }),\n // does not encode/decode\n any: makeDefaultType({\n encode: identity,\n decode: identity,\n is: function () { return true; },\n equals: equals,\n }),\n });\n}\ninitDefaultTypes();\n","import { extend, ancestors } from '../common/common';\nvar StateParams = /** @class */ (function () {\n function StateParams(params) {\n if (params === void 0) { params = {}; }\n extend(this, params);\n }\n /**\n * Merges a set of parameters with all parameters inherited between the common parents of the\n * current state and a given destination state.\n *\n * @param {Object} newParams The set of parameters which will be composited with inherited params.\n * @param {Object} $current Internal definition of object representing the current state.\n * @param {Object} $to Internal definition of object representing state to transition to.\n */\n StateParams.prototype.$inherit = function (newParams, $current, $to) {\n var parents = ancestors($current, $to), inherited = {}, inheritList = [];\n for (var i in parents) {\n if (!parents[i] || !parents[i].params)\n continue;\n var parentParams = parents[i].params;\n var parentParamsKeys = Object.keys(parentParams);\n if (!parentParamsKeys.length)\n continue;\n for (var j in parentParamsKeys) {\n if (!parentParamsKeys.hasOwnProperty(j) ||\n parentParams[parentParamsKeys[j]].inherit == false ||\n inheritList.indexOf(parentParamsKeys[j]) >= 0)\n continue;\n inheritList.push(parentParamsKeys[j]);\n inherited[parentParamsKeys[j]] = this[parentParamsKeys[j]];\n }\n }\n return extend({}, inherited, newParams);\n };\n return StateParams;\n}());\nexport { StateParams };\n","import { extend, applyPairs, find } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Param } from '../params/param';\n/**\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nvar PathNode = /** @class */ (function () {\n function PathNode(stateOrNode) {\n if (stateOrNode instanceof PathNode) {\n var node = stateOrNode;\n this.state = node.state;\n this.paramSchema = node.paramSchema.slice();\n this.paramValues = extend({}, node.paramValues);\n this.resolvables = node.resolvables.slice();\n this.views = node.views && node.views.slice();\n }\n else {\n var state = stateOrNode;\n this.state = state;\n this.paramSchema = state.parameters({ inherit: false });\n this.paramValues = {};\n this.resolvables = state.resolvables.map(function (res) { return res.clone(); });\n }\n }\n PathNode.prototype.clone = function () {\n return new PathNode(this);\n };\n /** Sets [[paramValues]] for the node, from the values of an object hash */\n PathNode.prototype.applyRawParams = function (params) {\n var getParamVal = function (paramDef) { return [paramDef.id, paramDef.value(params[paramDef.id])]; };\n this.paramValues = this.paramSchema.reduce(function (memo, pDef) { return applyPairs(memo, getParamVal(pDef)); }, {});\n return this;\n };\n /** Gets a specific [[Param]] metadata that belongs to the node */\n PathNode.prototype.parameter = function (name) {\n return find(this.paramSchema, propEq('id', name));\n };\n /**\n * @returns true if the state and parameter values for another PathNode are\n * equal to the state and param values for this PathNode\n */\n PathNode.prototype.equals = function (node, paramsFn) {\n var diff = this.diff(node, paramsFn);\n return diff && diff.length === 0;\n };\n /**\n * Finds Params with different parameter values on another PathNode.\n *\n * Given another node (of the same state), finds the parameter values which differ.\n * Returns the [[Param]] (schema objects) whose parameter values differ.\n *\n * Given another node for a different state, returns `false`\n *\n * @param node The node to compare to\n * @param paramsFn A function that returns which parameters should be compared.\n * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n */\n PathNode.prototype.diff = function (node, paramsFn) {\n if (this.state !== node.state)\n return false;\n var params = paramsFn ? paramsFn(this) : this.paramSchema;\n return Param.changed(params, this.paramValues, node.paramValues);\n };\n /**\n * Returns a clone of the PathNode\n * @deprecated use instance method `node.clone()`\n */\n PathNode.clone = function (node) { return node.clone(); };\n return PathNode;\n}());\nexport { PathNode };\n","import { isObject, isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { extend } from '../common';\n/**\n * Encapsulate the target (destination) state/params/options of a [[Transition]].\n *\n * This class is frequently used to redirect a transition to a new destination.\n *\n * See:\n *\n * - [[HookResult]]\n * - [[TransitionHookFn]]\n * - [[TransitionService.onStart]]\n *\n * To create a `TargetState`, use [[StateService.target]].\n *\n * ---\n *\n * This class wraps:\n *\n * 1) an identifier for a state\n * 2) a set of parameters\n * 3) and transition options\n * 4) the registered state object (the [[StateDeclaration]])\n *\n * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n * The `TargetState` class normalizes those options.\n *\n * A `TargetState` may be valid (the state being targeted exists in the registry)\n * or invalid (the state being targeted is not registered).\n */\nvar TargetState = /** @class */ (function () {\n /**\n * The TargetState constructor\n *\n * Note: Do not construct a `TargetState` manually.\n * To create a `TargetState`, use the [[StateService.target]] factory method.\n *\n * @param _stateRegistry The StateRegistry to use to look up the _definition\n * @param _identifier An identifier for a state.\n * Either a fully-qualified state name, or the object used to define the state.\n * @param _params Parameters for the target state\n * @param _options Transition options.\n *\n * @internal\n */\n function TargetState(_stateRegistry, _identifier, _params, _options) {\n this._stateRegistry = _stateRegistry;\n this._identifier = _identifier;\n this._identifier = _identifier;\n this._params = extend({}, _params || {});\n this._options = extend({}, _options || {});\n this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n }\n /** The name of the state this object targets */\n TargetState.prototype.name = function () {\n return (this._definition && this._definition.name) || this._identifier;\n };\n /** The identifier used when creating this TargetState */\n TargetState.prototype.identifier = function () {\n return this._identifier;\n };\n /** The target parameter values */\n TargetState.prototype.params = function () {\n return this._params;\n };\n /** The internal state object (if it was found) */\n TargetState.prototype.$state = function () {\n return this._definition;\n };\n /** The internal state declaration (if it was found) */\n TargetState.prototype.state = function () {\n return this._definition && this._definition.self;\n };\n /** The target options */\n TargetState.prototype.options = function () {\n return this._options;\n };\n /** True if the target state was found */\n TargetState.prototype.exists = function () {\n return !!(this._definition && this._definition.self);\n };\n /** True if the object is valid */\n TargetState.prototype.valid = function () {\n return !this.error();\n };\n /** If the object is invalid, returns the reason why */\n TargetState.prototype.error = function () {\n var base = this.options().relative;\n if (!this._definition && !!base) {\n var stateName = base.name ? base.name : base;\n return \"Could not resolve '\".concat(this.name(), \"' from state '\").concat(stateName, \"'\");\n }\n if (!this._definition)\n return \"No such state '\".concat(this.name(), \"'\");\n if (!this._definition.self)\n return \"State '\".concat(this.name(), \"' has an invalid definition\");\n };\n TargetState.prototype.toString = function () {\n return \"'\".concat(this.name(), \"'\").concat(stringify(this.params()));\n };\n /**\n * Returns a copy of this TargetState which targets a different state.\n * The new TargetState has the same parameter values and transition options.\n *\n * @param state The new state that should be targeted\n */\n TargetState.prototype.withState = function (state) {\n return new TargetState(this._stateRegistry, state, this._params, this._options);\n };\n /**\n * Returns a copy of this TargetState, using the specified parameter values.\n *\n * @param params the new parameter values to use\n * @param replace When false (default) the new parameter values will be merged with the current values.\n * When true the parameter values will be used instead of the current values.\n */\n TargetState.prototype.withParams = function (params, replace) {\n if (replace === void 0) { replace = false; }\n var newParams = replace ? params : extend({}, this._params, params);\n return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n };\n /**\n * Returns a copy of this TargetState, using the specified Transition Options.\n *\n * @param options the new options to use\n * @param replace When false (default) the new options will be merged with the current options.\n * When true the options will be used instead of the current options.\n */\n TargetState.prototype.withOptions = function (options, replace) {\n if (replace === void 0) { replace = false; }\n var newOpts = replace ? options : extend({}, this._options, options);\n return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n };\n /** Returns true if the object has a state property that might be a state or state name */\n TargetState.isDef = function (obj) {\n return obj && obj.state && (isString(obj.state) || (isObject(obj.state) && isString(obj.state.name)));\n };\n return TargetState;\n}());\nexport { TargetState };\n","import { extend, find, pick, omit, tail, mergeR, values, unnestR, inArray, arrayTuples, } from '../common/common';\nimport { prop, propEq } from '../common/hof';\nimport { TargetState } from '../state/targetState';\nimport { PathNode } from './pathNode';\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nvar PathUtils = /** @class */ (function () {\n function PathUtils() {\n }\n /** Given a PathNode[], create an TargetState */\n PathUtils.makeTargetState = function (registry, path) {\n var state = tail(path).state;\n return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n };\n PathUtils.buildPath = function (targetState) {\n var toParams = targetState.params();\n return targetState.$state().path.map(function (state) { return new PathNode(state).applyRawParams(toParams); });\n };\n /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n PathUtils.buildToPath = function (fromPath, targetState) {\n var toPath = PathUtils.buildPath(targetState);\n if (targetState.options().inherit) {\n return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n }\n return toPath;\n };\n /**\n * Creates ViewConfig objects and adds to nodes.\n *\n * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n */\n PathUtils.applyViewConfigs = function ($view, path, states) {\n // Only apply the viewConfigs to the nodes for the given states\n path\n .filter(function (node) { return inArray(states, node.state); })\n .forEach(function (node) {\n var viewDecls = values(node.state.views || {});\n var subPath = PathUtils.subPath(path, function (n) { return n === node; });\n var viewConfigs = viewDecls.map(function (view) { return $view.createViewConfig(subPath, view); });\n node.views = viewConfigs.reduce(unnestR, []);\n });\n };\n /**\n * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n *\n * For a parameter in a node to be inherited from the from path:\n * - The toPath's node must have a matching node in the fromPath (by state).\n * - The parameter name must not be found in the toKeys parameter array.\n *\n * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n * caller, for instance, $state.transitionTo(..., toParams). If a key was found in toParams,\n * it is not inherited from the fromPath.\n */\n PathUtils.inheritParams = function (fromPath, toPath, toKeys) {\n if (toKeys === void 0) { toKeys = []; }\n function nodeParamVals(path, state) {\n var node = find(path, propEq('state', state));\n return extend({}, node && node.paramValues);\n }\n var noInherit = fromPath\n .map(function (node) { return node.paramSchema; })\n .reduce(unnestR, [])\n .filter(function (param) { return !param.inherit; })\n .map(prop('id'));\n /**\n * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n * matching node in fromPath. Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n */\n function makeInheritedParamsNode(toNode) {\n // All param values for the node (may include default key/vals, when key was not found in toParams)\n var toParamVals = extend({}, toNode && toNode.paramValues);\n // limited to only those keys found in toParams\n var incomingParamVals = pick(toParamVals, toKeys);\n toParamVals = omit(toParamVals, toKeys);\n var fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n var ownParamVals = extend(toParamVals, fromParamVals, incomingParamVals);\n return new PathNode(toNode.state).applyRawParams(ownParamVals);\n }\n // The param keys specified by the incoming toParams\n return toPath.map(makeInheritedParamsNode);\n };\n /**\n * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n */\n PathUtils.treeChanges = function (fromPath, toPath, reloadState) {\n var max = Math.min(fromPath.length, toPath.length);\n var keep = 0;\n var nodesMatch = function (node1, node2) { return node1.equals(node2, PathUtils.nonDynamicParams); };\n while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n keep++;\n }\n /** Given a retained node, return a new node which uses the to node's param values */\n function applyToParams(retainedNode, idx) {\n var cloned = retainedNode.clone();\n cloned.paramValues = toPath[idx].paramValues;\n return cloned;\n }\n var from, retained, exiting, entering, to;\n from = fromPath;\n retained = from.slice(0, keep);\n exiting = from.slice(keep);\n // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped\n var retainedWithToParams = retained.map(applyToParams);\n entering = toPath.slice(keep);\n to = retainedWithToParams.concat(entering);\n return { from: from, to: to, retained: retained, retainedWithToParams: retainedWithToParams, exiting: exiting, entering: entering };\n };\n /**\n * Returns a new path which is: the subpath of the first path which matches the second path.\n *\n * The new path starts from root and contains any nodes that match the nodes in the second path.\n * It stops before the first non-matching node.\n *\n * Nodes are compared using their state property and their parameter values.\n * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n *\n * @param pathA the first path\n * @param pathB the second path\n * @param paramsFn a function which returns the parameters to consider when comparing\n *\n * @returns an array of PathNodes from the first path which match the nodes in the second path\n */\n PathUtils.matching = function (pathA, pathB, paramsFn) {\n var done = false;\n var tuples = arrayTuples(pathA, pathB);\n return tuples.reduce(function (matching, _a) {\n var nodeA = _a[0], nodeB = _a[1];\n done = done || !nodeA.equals(nodeB, paramsFn);\n return done ? matching : matching.concat(nodeA);\n }, []);\n };\n /**\n * Returns true if two paths are identical.\n *\n * @param pathA\n * @param pathB\n * @param paramsFn a function which returns the parameters to consider when comparing\n * @returns true if the the states and parameter values for both paths are identical\n */\n PathUtils.equals = function (pathA, pathB, paramsFn) {\n return pathA.length === pathB.length && PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n };\n /**\n * Return a subpath of a path, which stops at the first matching node\n *\n * Given an array of nodes, returns a subset of the array starting from the first node,\n * stopping when the first node matches the predicate.\n *\n * @param path a path of [[PathNode]]s\n * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n * @returns a subpath up to the matching node, or undefined if no match is found\n */\n PathUtils.subPath = function (path, predicate) {\n var node = find(path, predicate);\n var elementIdx = path.indexOf(node);\n return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n };\n PathUtils.nonDynamicParams = function (node) {\n return node.state.parameters({ inherit: false }).filter(function (param) { return !param.dynamic; });\n };\n /** Gets the raw parameter values from a path */\n PathUtils.paramValues = function (path) { return path.reduce(function (acc, node) { return extend(acc, node.paramValues); }, {}); };\n return PathUtils;\n}());\nexport { PathUtils };\n","export var resolvePolicies = {\n when: {\n LAZY: 'LAZY',\n EAGER: 'EAGER',\n },\n async: {\n WAIT: 'WAIT',\n NOWAIT: 'NOWAIT',\n },\n};\n","import { extend, identity } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { trace } from '../common/trace';\nimport { stringify } from '../common/strings';\nimport { isFunction, isObject } from '../common/predicates';\nimport { isNullOrUndefined } from '../common/predicates';\n// TODO: explicitly make this user configurable\nexport var defaultResolvePolicy = {\n when: 'LAZY',\n async: 'WAIT',\n};\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nvar Resolvable = /** @class */ (function () {\n function Resolvable(arg1, resolveFn, deps, policy, data) {\n this.resolved = false;\n this.promise = undefined;\n if (arg1 instanceof Resolvable) {\n extend(this, arg1);\n }\n else if (isFunction(resolveFn)) {\n if (isNullOrUndefined(arg1))\n throw new Error('new Resolvable(): token argument is required');\n if (!isFunction(resolveFn))\n throw new Error('new Resolvable(): resolveFn argument must be a function');\n this.token = arg1;\n this.policy = policy;\n this.resolveFn = resolveFn;\n this.deps = deps || [];\n this.data = data;\n this.resolved = data !== undefined;\n this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n }\n else if (isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) {\n var literal = arg1;\n return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n }\n }\n Resolvable.prototype.getPolicy = function (state) {\n var thisPolicy = this.policy || {};\n var statePolicy = (state && state.resolvePolicy) || {};\n return {\n when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n };\n };\n /**\n * Asynchronously resolve this Resolvable's data\n *\n * Given a ResolveContext that this Resolvable is found in:\n * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n * and update the Resolvable's state\n */\n Resolvable.prototype.resolve = function (resolveContext, trans) {\n var _this = this;\n var $q = services.$q;\n // Gets all dependencies from ResolveContext and wait for them to be resolved\n var getResolvableDependencies = function () {\n return $q.all(resolveContext.getDependencies(_this).map(function (resolvable) { return resolvable.get(resolveContext, trans); }));\n };\n // Invokes the resolve function passing the resolved dependencies as arguments\n var invokeResolveFn = function (resolvedDeps) { return _this.resolveFn.apply(null, resolvedDeps); };\n var node = resolveContext.findNode(this);\n var state = node && node.state;\n var asyncPolicy = this.getPolicy(state).async;\n var customAsyncPolicy = isFunction(asyncPolicy) ? asyncPolicy : identity;\n // After the final value has been resolved, update the state of the Resolvable\n var applyResolvedValue = function (resolvedValue) {\n _this.data = resolvedValue;\n _this.resolved = true;\n _this.resolveFn = null;\n trace.traceResolvableResolved(_this, trans);\n return _this.data;\n };\n // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n return (this.promise = $q\n .when()\n .then(getResolvableDependencies)\n .then(invokeResolveFn)\n .then(customAsyncPolicy)\n .then(applyResolvedValue));\n };\n /**\n * Gets a promise for this Resolvable's data.\n *\n * Fetches the data and returns a promise.\n * Returns the existing promise if it has already been fetched once.\n */\n Resolvable.prototype.get = function (resolveContext, trans) {\n return this.promise || this.resolve(resolveContext, trans);\n };\n Resolvable.prototype.toString = function () {\n return \"Resolvable(token: \".concat(stringify(this.token), \", requires: [\").concat(this.deps.map(stringify), \"])\");\n };\n Resolvable.prototype.clone = function () {\n return new Resolvable(this);\n };\n Resolvable.fromData = function (token, data) { return new Resolvable(token, function () { return data; }, null, null, data); };\n return Resolvable;\n}());\nexport { Resolvable };\n","import { find, tail, uniqR, unnestR, inArray } from '../common/common';\nimport { propEq, not } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { resolvePolicies } from './interface';\nimport { Resolvable } from './resolvable';\nimport { PathUtils } from '../path/pathUtils';\nimport { stringify } from '../common/strings';\nimport { isUndefined } from '../common';\nvar whens = resolvePolicies.when;\nvar ALL_WHENS = [whens.EAGER, whens.LAZY];\nvar EAGER_WHENS = [whens.EAGER];\n// tslint:disable-next-line:no-inferrable-types\nexport var NATIVE_INJECTOR_TOKEN = 'Native Injector';\n/**\n * Encapsulates Dependency Injection for a path of nodes\n *\n * UI-Router states are organized as a tree.\n * A nested state has a path of ancestors to the root of the tree.\n * When a state is being activated, each element in the path is wrapped as a [[PathNode]].\n * A `PathNode` is a stateful object that holds things like parameters and resolvables for the state being activated.\n *\n * The ResolveContext closes over the [[PathNode]]s, and provides DI for the last node in the path.\n */\nvar ResolveContext = /** @class */ (function () {\n function ResolveContext(_path) {\n this._path = _path;\n }\n /** Gets all the tokens found in the resolve context, de-duplicated */\n ResolveContext.prototype.getTokens = function () {\n return this._path.reduce(function (acc, node) { return acc.concat(node.resolvables.map(function (r) { return r.token; })); }, []).reduce(uniqR, []);\n };\n /**\n * Gets the Resolvable that matches the token\n *\n * Gets the last Resolvable that matches the token in this context, or undefined.\n * Throws an error if it doesn't exist in the ResolveContext\n */\n ResolveContext.prototype.getResolvable = function (token) {\n var matching = this._path\n .map(function (node) { return node.resolvables; })\n .reduce(unnestR, [])\n .filter(function (r) { return r.token === token; });\n return tail(matching);\n };\n /** Returns the [[ResolvePolicy]] for the given [[Resolvable]] */\n ResolveContext.prototype.getPolicy = function (resolvable) {\n var node = this.findNode(resolvable);\n return resolvable.getPolicy(node.state);\n };\n /**\n * Returns a ResolveContext that includes a portion of this one\n *\n * Given a state, this method creates a new ResolveContext from this one.\n * The new context starts at the first node (root) and stops at the node for the `state` parameter.\n *\n * #### Why\n *\n * When a transition is created, the nodes in the \"To Path\" are injected from a ResolveContext.\n * A ResolveContext closes over a path of [[PathNode]]s and processes the resolvables.\n * The \"To State\" can inject values from its own resolvables, as well as those from all its ancestor state's (node's).\n * This method is used to create a narrower context when injecting ancestor nodes.\n *\n * @example\n * `let ABCD = new ResolveContext([A, B, C, D]);`\n *\n * Given a path `[A, B, C, D]`, where `A`, `B`, `C` and `D` are nodes for states `a`, `b`, `c`, `d`:\n * When injecting `D`, `D` should have access to all resolvables from `A`, `B`, `C`, `D`.\n * However, `B` should only be able to access resolvables from `A`, `B`.\n *\n * When resolving for the `B` node, first take the full \"To Path\" Context `[A,B,C,D]` and limit to the subpath `[A,B]`.\n * `let AB = ABCD.subcontext(a)`\n */\n ResolveContext.prototype.subContext = function (state) {\n return new ResolveContext(PathUtils.subPath(this._path, function (node) { return node.state === state; }));\n };\n /**\n * Adds Resolvables to the node that matches the state\n *\n * This adds a [[Resolvable]] (generally one created on the fly; not declared on a [[StateDeclaration.resolve]] block).\n * The resolvable is added to the node matching the `state` parameter.\n *\n * These new resolvables are not automatically fetched.\n * The calling code should either fetch them, fetch something that depends on them,\n * or rely on [[resolvePath]] being called when some state is being entered.\n *\n * Note: each resolvable's [[ResolvePolicy]] is merged with the state's policy, and the global default.\n *\n * @param newResolvables the new Resolvables\n * @param state Used to find the node to put the resolvable on\n */\n ResolveContext.prototype.addResolvables = function (newResolvables, state) {\n var node = find(this._path, propEq('state', state));\n var keys = newResolvables.map(function (r) { return r.token; });\n node.resolvables = node.resolvables.filter(function (r) { return keys.indexOf(r.token) === -1; }).concat(newResolvables);\n };\n /**\n * Returns a promise for an array of resolved path Element promises\n *\n * @param when\n * @param trans\n * @returns {Promise|any}\n */\n ResolveContext.prototype.resolvePath = function (when, trans) {\n var _this = this;\n if (when === void 0) { when = 'LAZY'; }\n // This option determines which 'when' policy Resolvables we are about to fetch.\n var whenOption = inArray(ALL_WHENS, when) ? when : 'LAZY';\n // If the caller specified EAGER, only the EAGER Resolvables are fetched.\n // if the caller specified LAZY, both EAGER and LAZY Resolvables are fetched.`\n var matchedWhens = whenOption === resolvePolicies.when.EAGER ? EAGER_WHENS : ALL_WHENS;\n // get the subpath to the state argument, if provided\n trace.traceResolvePath(this._path, when, trans);\n var matchesPolicy = function (acceptedVals, whenOrAsync) { return function (resolvable) {\n return inArray(acceptedVals, _this.getPolicy(resolvable)[whenOrAsync]);\n }; };\n // Trigger all the (matching) Resolvables in the path\n // Reduce all the \"WAIT\" Resolvables into an array\n var promises = this._path.reduce(function (acc, node) {\n var nodeResolvables = node.resolvables.filter(matchesPolicy(matchedWhens, 'when'));\n var nowait = nodeResolvables.filter(matchesPolicy(['NOWAIT'], 'async'));\n var wait = nodeResolvables.filter(not(matchesPolicy(['NOWAIT'], 'async')));\n // For the matching Resolvables, start their async fetch process.\n var subContext = _this.subContext(node.state);\n var getResult = function (r) {\n return r\n .get(subContext, trans)\n // Return a tuple that includes the Resolvable's token\n .then(function (value) { return ({ token: r.token, value: value }); });\n };\n nowait.forEach(getResult);\n return acc.concat(wait.map(getResult));\n }, []);\n // Wait for all the \"WAIT\" resolvables\n return services.$q.all(promises);\n };\n ResolveContext.prototype.injector = function () {\n return this._injector || (this._injector = new UIInjectorImpl(this));\n };\n ResolveContext.prototype.findNode = function (resolvable) {\n return find(this._path, function (node) { return inArray(node.resolvables, resolvable); });\n };\n /**\n * Gets the async dependencies of a Resolvable\n *\n * Given a Resolvable, returns its dependencies as a Resolvable[]\n */\n ResolveContext.prototype.getDependencies = function (resolvable) {\n var _this = this;\n var node = this.findNode(resolvable);\n // Find which other resolvables are \"visible\" to the `resolvable` argument\n // subpath stopping at resolvable's node, or the whole path (if the resolvable isn't in the path)\n var subPath = PathUtils.subPath(this._path, function (x) { return x === node; }) || this._path;\n var availableResolvables = subPath\n .reduce(function (acc, _node) { return acc.concat(_node.resolvables); }, []) // all of subpath's resolvables\n .filter(function (res) { return res !== resolvable; }); // filter out the `resolvable` argument\n var getDependency = function (token) {\n var matching = availableResolvables.filter(function (r) { return r.token === token; });\n if (matching.length)\n return tail(matching);\n var fromInjector = _this.injector().getNative(token);\n if (isUndefined(fromInjector)) {\n throw new Error('Could not find Dependency Injection token: ' + stringify(token));\n }\n return new Resolvable(token, function () { return fromInjector; }, [], fromInjector);\n };\n return resolvable.deps.map(getDependency);\n };\n return ResolveContext;\n}());\nexport { ResolveContext };\n/** @internal */\nvar UIInjectorImpl = /** @class */ (function () {\n function UIInjectorImpl(context) {\n this.context = context;\n this.native = this.get(NATIVE_INJECTOR_TOKEN) || services.$injector;\n }\n UIInjectorImpl.prototype.get = function (token) {\n var resolvable = this.context.getResolvable(token);\n if (resolvable) {\n if (this.context.getPolicy(resolvable).async === 'NOWAIT') {\n return resolvable.get(this.context);\n }\n if (!resolvable.resolved) {\n throw new Error('Resolvable async .get() not complete:' + stringify(resolvable.token));\n }\n return resolvable.data;\n }\n return this.getNative(token);\n };\n UIInjectorImpl.prototype.getAsync = function (token) {\n var resolvable = this.context.getResolvable(token);\n if (resolvable)\n return resolvable.get(this.context);\n return services.$q.when(this.native.get(token));\n };\n UIInjectorImpl.prototype.getNative = function (token) {\n return this.native && this.native.get(token);\n };\n return UIInjectorImpl;\n}());\n","import { applyPairs, extend, identity, inherit, mapObj, noop, omit, tail, values, copy } from '../common/common';\nimport { isArray, isDefined, isFunction, isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { is, pattern, pipe, prop, val } from '../common/hof';\nimport { Resolvable } from '../resolve/resolvable';\nimport { services } from '../common/coreservices';\nvar parseUrl = function (url) {\n if (!isString(url))\n return false;\n var root = url.charAt(0) === '^';\n return { val: root ? url.substring(1) : url, root: root };\n};\nfunction nameBuilder(state) {\n return state.name;\n}\nfunction selfBuilder(state) {\n state.self.$$state = function () { return state; };\n return state.self;\n}\nfunction dataBuilder(state) {\n if (state.parent && state.parent.data) {\n state.data = state.self.data = inherit(state.parent.data, state.data);\n }\n return state.data;\n}\nvar getUrlBuilder = function ($urlMatcherFactoryProvider, root) {\n return function urlBuilder(stateObject) {\n var stateDec = stateObject.self;\n // For future states, i.e., states whose name ends with `.**`,\n // match anything that starts with the url prefix\n if (stateDec && stateDec.url && stateDec.name && stateDec.name.match(/\\.\\*\\*$/)) {\n var newStateDec = {};\n copy(stateDec, newStateDec);\n newStateDec.url += '{remainder:any}'; // match any path (.*)\n stateDec = newStateDec;\n }\n var parent = stateObject.parent;\n var parsed = parseUrl(stateDec.url);\n var url = !parsed ? stateDec.url : $urlMatcherFactoryProvider.compile(parsed.val, { state: stateDec });\n if (!url)\n return null;\n if (!$urlMatcherFactoryProvider.isMatcher(url))\n throw new Error(\"Invalid url '\".concat(url, \"' in state '\").concat(stateObject, \"'\"));\n return parsed && parsed.root ? url : ((parent && parent.navigable) || root()).url.append(url);\n };\n};\nvar getNavigableBuilder = function (isRoot) {\n return function navigableBuilder(state) {\n return !isRoot(state) && state.url ? state : state.parent ? state.parent.navigable : null;\n };\n};\nvar getParamsBuilder = function (paramFactory) {\n return function paramsBuilder(state) {\n var makeConfigParam = function (config, id) { return paramFactory.fromConfig(id, null, state.self); };\n var urlParams = (state.url && state.url.parameters({ inherit: false })) || [];\n var nonUrlParams = values(mapObj(omit(state.params || {}, urlParams.map(prop('id'))), makeConfigParam));\n return urlParams\n .concat(nonUrlParams)\n .map(function (p) { return [p.id, p]; })\n .reduce(applyPairs, {});\n };\n};\nfunction pathBuilder(state) {\n return state.parent ? state.parent.path.concat(state) : /*root*/ [state];\n}\nfunction includesBuilder(state) {\n var includes = state.parent ? extend({}, state.parent.includes) : {};\n includes[state.name] = true;\n return includes;\n}\n/**\n * This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * validates the `resolve` property and converts it to a [[Resolvable]] array.\n *\n * resolve: input value can be:\n *\n * {\n * // analyzed but not injected\n * myFooResolve: function() { return \"myFooData\"; },\n *\n * // function.toString() parsed, \"DependencyName\" dep as string (not min-safe)\n * myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },\n *\n * // Array split; \"DependencyName\" dep as string\n * myBazResolve: [ \"DependencyName\", function(dep) { return dep.fetchSomethingAsPromise() },\n *\n * // Array split; DependencyType dep as token (compared using ===)\n * myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },\n *\n * // val.$inject used as deps\n * // where:\n * // corgeResolve.$inject = [\"DependencyName\"];\n * // function corgeResolve(dep) { dep.fetchSometingAsPromise() }\n * // then \"DependencyName\" dep as string\n * myCorgeResolve: corgeResolve,\n *\n * // inject service by name\n * // When a string is found, desugar creating a resolve that injects the named service\n * myGraultResolve: \"SomeService\"\n * }\n *\n * or:\n *\n * [\n * new Resolvable(\"myFooResolve\", function() { return \"myFooData\" }),\n * new Resolvable(\"myBarResolve\", function(dep) { return dep.fetchSomethingAsPromise() }, [ \"DependencyName\" ]),\n * { provide: \"myBazResolve\", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ \"DependencyName\" ] }\n * ]\n */\nexport function resolvablesBuilder(state) {\n /** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */\n var objects2Tuples = function (resolveObj, resolvePolicies) {\n return Object.keys(resolveObj || {}).map(function (token) { return ({\n token: token,\n val: resolveObj[token],\n deps: undefined,\n policy: resolvePolicies[token],\n }); });\n };\n /** fetch DI annotations from a function or ng1-style array */\n var annotate = function (fn) {\n var $injector = services.$injector;\n // ng1 doesn't have an $injector until runtime.\n // If the $injector doesn't exist, use \"deferred\" literal as a\n // marker indicating they should be annotated when runtime starts\n return fn['$inject'] || ($injector && $injector.annotate(fn, $injector.strictDi)) || 'deferred';\n };\n /** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */\n var isResolveLiteral = function (obj) { return !!(obj.token && obj.resolveFn); };\n /** true if the object looks like a provide literal, or a ng2 Provider */\n var isLikeNg2Provider = function (obj) {\n return !!((obj.provide || obj.token) && (obj.useValue || obj.useFactory || obj.useExisting || obj.useClass));\n };\n /** true if the object looks like a tuple from obj2Tuples */\n var isTupleFromObj = function (obj) {\n return !!(obj && obj.val && (isString(obj.val) || isArray(obj.val) || isFunction(obj.val)));\n };\n /** extracts the token from a Provider or provide literal */\n var getToken = function (p) { return p.provide || p.token; };\n // prettier-ignore: Given a literal resolve or provider object, returns a Resolvable\n var literal2Resolvable = pattern([\n [prop('resolveFn'), function (p) { return new Resolvable(getToken(p), p.resolveFn, p.deps, p.policy); }],\n [prop('useFactory'), function (p) { return new Resolvable(getToken(p), p.useFactory, p.deps || p.dependencies, p.policy); }],\n [prop('useClass'), function (p) { return new Resolvable(getToken(p), function () { return new p.useClass(); }, [], p.policy); }],\n [prop('useValue'), function (p) { return new Resolvable(getToken(p), function () { return p.useValue; }, [], p.policy, p.useValue); }],\n [prop('useExisting'), function (p) { return new Resolvable(getToken(p), identity, [p.useExisting], p.policy); }],\n ]);\n // prettier-ignore\n var tuple2Resolvable = pattern([\n [pipe(prop('val'), isString), function (tuple) { return new Resolvable(tuple.token, identity, [tuple.val], tuple.policy); }],\n [pipe(prop('val'), isArray), function (tuple) { return new Resolvable(tuple.token, tail(tuple.val), tuple.val.slice(0, -1), tuple.policy); }],\n [pipe(prop('val'), isFunction), function (tuple) { return new Resolvable(tuple.token, tuple.val, annotate(tuple.val), tuple.policy); }],\n ]);\n // prettier-ignore\n var item2Resolvable = pattern([\n [is(Resolvable), function (r) { return r; }],\n [isResolveLiteral, literal2Resolvable],\n [isLikeNg2Provider, literal2Resolvable],\n [isTupleFromObj, tuple2Resolvable],\n [val(true), function (obj) { throw new Error('Invalid resolve value: ' + stringify(obj)); },],\n ]);\n // If resolveBlock is already an array, use it as-is.\n // Otherwise, assume it's an object and convert to an Array of tuples\n var decl = state.resolve;\n var items = isArray(decl) ? decl : objects2Tuples(decl, state.resolvePolicy || {});\n return items.map(item2Resolvable);\n}\n/**\n * A internal global service\n *\n * StateBuilder is a factory for the internal [[StateObject]] objects.\n *\n * When you register a state with the [[StateRegistry]], you register a plain old javascript object which\n * conforms to the [[StateDeclaration]] interface. This factory takes that object and builds the corresponding\n * [[StateObject]] object, which has an API and is used internally.\n *\n * Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function\n * using the [[builder]] method.\n */\nvar StateBuilder = /** @class */ (function () {\n function StateBuilder(matcher, urlMatcherFactory) {\n this.matcher = matcher;\n var self = this;\n var root = function () { return matcher.find(''); };\n var isRoot = function (state) { return state.name === ''; };\n function parentBuilder(state) {\n if (isRoot(state))\n return null;\n return matcher.find(self.parentName(state)) || root();\n }\n this.builders = {\n name: [nameBuilder],\n self: [selfBuilder],\n parent: [parentBuilder],\n data: [dataBuilder],\n // Build a URLMatcher if necessary, either via a relative or absolute URL\n url: [getUrlBuilder(urlMatcherFactory, root)],\n // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n navigable: [getNavigableBuilder(isRoot)],\n params: [getParamsBuilder(urlMatcherFactory.paramFactory)],\n // Each framework-specific ui-router implementation should define its own `views` builder\n // e.g., src/ng1/statebuilders/views.ts\n views: [],\n // Keep a full path from the root down to this state as this is needed for state activation.\n path: [pathBuilder],\n // Speed up $state.includes() as it's used a lot\n includes: [includesBuilder],\n resolvables: [resolvablesBuilder],\n };\n }\n StateBuilder.prototype.builder = function (name, fn) {\n var builders = this.builders;\n var array = builders[name] || [];\n // Backwards compat: if only one builder exists, return it, else return whole arary.\n if (isString(name) && !isDefined(fn))\n return array.length > 1 ? array : array[0];\n if (!isString(name) || !isFunction(fn))\n return;\n builders[name] = array;\n builders[name].push(fn);\n return function () { return builders[name].splice(builders[name].indexOf(fn, 1)) && null; };\n };\n /**\n * Builds all of the properties on an essentially blank State object, returning a State object which has all its\n * properties and API built.\n *\n * @param state an uninitialized State object\n * @returns the built State object\n */\n StateBuilder.prototype.build = function (state) {\n var _a = this, matcher = _a.matcher, builders = _a.builders;\n var parent = this.parentName(state);\n if (parent && !matcher.find(parent, undefined, false)) {\n return null;\n }\n for (var key in builders) {\n if (!builders.hasOwnProperty(key))\n continue;\n var chain = builders[key].reduce(function (parentFn, step) { return function (_state) { return step(_state, parentFn); }; }, noop);\n state[key] = chain(state);\n }\n return state;\n };\n StateBuilder.prototype.parentName = function (state) {\n // name = 'foo.bar.baz.**'\n var name = state.name || '';\n // segments = ['foo', 'bar', 'baz', '.**']\n var segments = name.split('.');\n // segments = ['foo', 'bar', 'baz']\n var lastSegment = segments.pop();\n // segments = ['foo', 'bar'] (ignore .** segment for future states)\n if (lastSegment === '**')\n segments.pop();\n if (segments.length) {\n if (state.parent) {\n throw new Error(\"States that specify the 'parent:' property should not have a '.' in their name (\".concat(name, \")\"));\n }\n // 'foo.bar'\n return segments.join('.');\n }\n if (!state.parent)\n return '';\n return isString(state.parent) ? state.parent : state.parent.name;\n };\n StateBuilder.prototype.name = function (state) {\n var name = state.name;\n if (name.indexOf('.') !== -1 || !state.parent)\n return name;\n var parentName = isString(state.parent) ? state.parent : state.parent.name;\n return parentName ? parentName + '.' + name : name;\n };\n return StateBuilder;\n}());\nexport { StateBuilder };\n","import { defaults, values, find, inherit } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Glob } from '../common/glob';\nimport { isObject, isFunction } from '../common/predicates';\n/**\n * Internal representation of a UI-Router state.\n *\n * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n *\n * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n *\n * This class prototypally inherits from the corresponding [[StateDeclaration]].\n * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n */\nvar StateObject = /** @class */ (function () {\n /** @deprecated use State.create() */\n function StateObject(config) {\n return StateObject.create(config || {});\n }\n /**\n * Create a state object to put the private/internal implementation details onto.\n * The object's prototype chain looks like:\n * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n *\n * @param stateDecl the user-supplied State Declaration\n * @returns {StateObject} an internal State object\n */\n StateObject.create = function (stateDecl) {\n stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n var state = inherit(inherit(stateDecl, StateObject.prototype));\n stateDecl.$$state = function () { return state; };\n state.self = stateDecl;\n state.__stateObjectCache = {\n nameGlob: Glob.fromString(state.name), // might return null\n };\n return state;\n };\n /**\n * Returns true if the provided parameter is the same state.\n *\n * Compares the identity of the state against the passed value, which is either an object\n * reference to the actual `State` instance, the original definition object passed to\n * `$stateProvider.state()`, or the fully-qualified name.\n *\n * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n * into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n * @returns Returns `true` if `ref` matches the current `State` instance.\n */\n StateObject.prototype.is = function (ref) {\n return this === ref || this.self === ref || this.fqn() === ref;\n };\n /**\n * @deprecated this does not properly handle dot notation\n * @returns Returns a dot-separated name of the state.\n */\n StateObject.prototype.fqn = function () {\n if (!this.parent || !(this.parent instanceof this.constructor))\n return this.name;\n var name = this.parent.fqn();\n return name ? name + '.' + this.name : this.name;\n };\n /**\n * Returns the root node of this state's tree.\n *\n * @returns The root of this state's tree.\n */\n StateObject.prototype.root = function () {\n return (this.parent && this.parent.root()) || this;\n };\n /**\n * Gets the state's `Param` objects\n *\n * Gets the list of [[Param]] objects owned by the state.\n * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n *\n * @param opts options\n */\n StateObject.prototype.parameters = function (opts) {\n opts = defaults(opts, { inherit: true, matchingKeys: null });\n var inherited = (opts.inherit && this.parent && this.parent.parameters()) || [];\n return inherited\n .concat(values(this.params))\n .filter(function (param) { return !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id); });\n };\n /**\n * Returns a single [[Param]] that is owned by the state\n *\n * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n * @param id the name of the [[Param]] to return\n * @param opts options\n */\n StateObject.prototype.parameter = function (id, opts) {\n if (opts === void 0) { opts = {}; }\n return ((this.url && this.url.parameter(id, opts)) ||\n find(values(this.params), propEq('id', id)) ||\n (opts.inherit && this.parent && this.parent.parameter(id)));\n };\n StateObject.prototype.toString = function () {\n return this.fqn();\n };\n /** Predicate which returns true if the object is an class with @State() decorator */\n StateObject.isStateClass = function (stateDecl) {\n return isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n };\n /** Predicate which returns true if the object is a [[StateDeclaration]] object */\n StateObject.isStateDeclaration = function (obj) { return isFunction(obj['$$state']); };\n /** Predicate which returns true if the object is an internal [[StateObject]] object */\n StateObject.isState = function (obj) { return isObject(obj['__stateObjectCache']); };\n return StateObject;\n}());\nexport { StateObject };\n","import { isString } from '../common/predicates';\nimport { values } from '../common/common';\nimport { safeConsole } from '../common/safeConsole';\nvar StateMatcher = /** @class */ (function () {\n function StateMatcher(_states) {\n this._states = _states;\n }\n StateMatcher.prototype.isRelative = function (stateName) {\n stateName = stateName || '';\n return stateName.indexOf('.') === 0 || stateName.indexOf('^') === 0;\n };\n StateMatcher.prototype.find = function (stateOrName, base, matchGlob) {\n if (matchGlob === void 0) { matchGlob = true; }\n if (!stateOrName && stateOrName !== '')\n return undefined;\n var isStr = isString(stateOrName);\n var name = isStr ? stateOrName : stateOrName.name;\n if (this.isRelative(name))\n name = this.resolvePath(name, base);\n var state = this._states[name];\n if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n return state;\n }\n else if (isStr && matchGlob) {\n var _states = values(this._states);\n var matches = _states.filter(function (_state) { return _state.__stateObjectCache.nameGlob && _state.__stateObjectCache.nameGlob.matches(name); });\n if (matches.length > 1) {\n safeConsole.error(\"stateMatcher.find: Found multiple matches for \".concat(name, \" using glob: \"), matches.map(function (match) { return match.name; }));\n }\n return matches[0];\n }\n return undefined;\n };\n StateMatcher.prototype.resolvePath = function (name, base) {\n if (!base)\n throw new Error(\"No reference point given for path '\".concat(name, \"'\"));\n var baseState = this.find(base);\n var splitName = name.split('.');\n var pathLength = splitName.length;\n var i = 0, current = baseState;\n for (; i < pathLength; i++) {\n if (splitName[i] === '' && i === 0) {\n current = baseState;\n continue;\n }\n if (splitName[i] === '^') {\n if (!current.parent)\n throw new Error(\"Path '\".concat(name, \"' not valid for state '\").concat(baseState.name, \"'\"));\n current = current.parent;\n continue;\n }\n break;\n }\n var relName = splitName.slice(i).join('.');\n return current.name + (current.name && relName ? '.' : '') + relName;\n };\n return StateMatcher;\n}());\nexport { StateMatcher };\n","import { inArray, isString, prop } from '../common';\nimport { StateObject } from './stateObject';\nvar StateQueueManager = /** @class */ (function () {\n function StateQueueManager(router, states, builder, listeners) {\n this.router = router;\n this.states = states;\n this.builder = builder;\n this.listeners = listeners;\n this.queue = [];\n }\n StateQueueManager.prototype.dispose = function () {\n this.queue = [];\n };\n StateQueueManager.prototype.register = function (stateDecl) {\n var queue = this.queue;\n var state = StateObject.create(stateDecl);\n var name = state.name;\n if (!isString(name))\n throw new Error('State must have a valid name');\n if (this.states.hasOwnProperty(name) || inArray(queue.map(prop('name')), name))\n throw new Error(\"State '\".concat(name, \"' is already defined\"));\n queue.push(state);\n this.flush();\n return state;\n };\n StateQueueManager.prototype.flush = function () {\n var _this = this;\n var _a = this, queue = _a.queue, states = _a.states, builder = _a.builder;\n var registered = [], // states that got registered\n orphans = [], // states that don't yet have a parent registered\n previousQueueLength = {}; // keep track of how long the queue when an orphan was first encountered\n var getState = function (name) { return _this.states.hasOwnProperty(name) && _this.states[name]; };\n var notifyListeners = function () {\n if (registered.length) {\n _this.listeners.forEach(function (listener) {\n return listener('registered', registered.map(function (s) { return s.self; }));\n });\n }\n };\n while (queue.length > 0) {\n var state = queue.shift();\n var name_1 = state.name;\n var result = builder.build(state);\n var orphanIdx = orphans.indexOf(state);\n if (result) {\n var existingState = getState(name_1);\n if (existingState && existingState.name === name_1) {\n throw new Error(\"State '\".concat(name_1, \"' is already defined\"));\n }\n var existingFutureState = getState(name_1 + '.**');\n if (existingFutureState) {\n // Remove future state of the same name\n this.router.stateRegistry.deregister(existingFutureState);\n }\n states[name_1] = state;\n this.attachRoute(state);\n if (orphanIdx >= 0)\n orphans.splice(orphanIdx, 1);\n registered.push(state);\n continue;\n }\n var prev = previousQueueLength[name_1];\n previousQueueLength[name_1] = queue.length;\n if (orphanIdx >= 0 && prev === queue.length) {\n // Wait until two consecutive iterations where no additional states were dequeued successfully.\n // throw new Error(`Cannot register orphaned state '${name}'`);\n queue.push(state);\n notifyListeners();\n return states;\n }\n else if (orphanIdx < 0) {\n orphans.push(state);\n }\n queue.push(state);\n }\n notifyListeners();\n return states;\n };\n StateQueueManager.prototype.attachRoute = function (state) {\n if (state.abstract || !state.url)\n return;\n var rulesApi = this.router.urlService.rules;\n rulesApi.rule(rulesApi.urlRuleFactory.create(state));\n };\n return StateQueueManager;\n}());\nexport { StateQueueManager };\n","import { StateMatcher } from './stateMatcher';\nimport { StateBuilder } from './stateBuilder';\nimport { StateQueueManager } from './stateQueueManager';\nimport { removeFrom } from '../common/common';\nimport { propEq } from '../common/hof';\n/**\n * A registry for all of the application's [[StateDeclaration]]s\n *\n * This API is found at `router.stateRegistry` ([[UIRouter.stateRegistry]])\n */\nvar StateRegistry = /** @class */ (function () {\n /** @internal */\n function StateRegistry(router) {\n this.router = router;\n this.states = {};\n /** @internal */\n this.listeners = [];\n this.matcher = new StateMatcher(this.states);\n this.builder = new StateBuilder(this.matcher, router.urlMatcherFactory);\n this.stateQueue = new StateQueueManager(router, this.states, this.builder, this.listeners);\n this._registerRoot();\n }\n /** @internal */\n StateRegistry.prototype._registerRoot = function () {\n var rootStateDef = {\n name: '',\n url: '^',\n views: null,\n params: {\n '#': { value: null, type: 'hash', dynamic: true },\n },\n abstract: true,\n };\n var _root = (this._root = this.stateQueue.register(rootStateDef));\n _root.navigable = null;\n };\n /** @internal */\n StateRegistry.prototype.dispose = function () {\n var _this = this;\n this.stateQueue.dispose();\n this.listeners = [];\n this.get().forEach(function (state) { return _this.get(state) && _this.deregister(state); });\n };\n /**\n * Listen for a State Registry events\n *\n * Adds a callback that is invoked when states are registered or deregistered with the StateRegistry.\n *\n * #### Example:\n * ```js\n * let allStates = registry.get();\n *\n * // Later, invoke deregisterFn() to remove the listener\n * let deregisterFn = registry.onStatesChanged((event, states) => {\n * switch(event) {\n * case: 'registered':\n * states.forEach(state => allStates.push(state));\n * break;\n * case: 'deregistered':\n * states.forEach(state => {\n * let idx = allStates.indexOf(state);\n * if (idx !== -1) allStates.splice(idx, 1);\n * });\n * break;\n * }\n * });\n * ```\n *\n * @param listener a callback function invoked when the registered states changes.\n * The function receives two parameters, `event` and `state`.\n * See [[StateRegistryListener]]\n * @return a function that deregisters the listener\n */\n StateRegistry.prototype.onStatesChanged = function (listener) {\n this.listeners.push(listener);\n return function deregisterListener() {\n removeFrom(this.listeners)(listener);\n }.bind(this);\n };\n /**\n * Gets the implicit root state\n *\n * Gets the root of the state tree.\n * The root state is implicitly created by UI-Router.\n * Note: this returns the internal [[StateObject]] representation, not a [[StateDeclaration]]\n *\n * @return the root [[StateObject]]\n */\n StateRegistry.prototype.root = function () {\n return this._root;\n };\n /**\n * Adds a state to the registry\n *\n * Registers a [[StateDeclaration]] or queues it for registration.\n *\n * Note: a state will be queued if the state's parent isn't yet registered.\n *\n * @param stateDefinition the definition of the state to register.\n * @returns the internal [[StateObject]] object.\n * If the state was successfully registered, then the object is fully built (See: [[StateBuilder]]).\n * If the state was only queued, then the object is not fully built.\n */\n StateRegistry.prototype.register = function (stateDefinition) {\n return this.stateQueue.register(stateDefinition);\n };\n /** @internal */\n StateRegistry.prototype._deregisterTree = function (state) {\n var _this = this;\n var all = this.get().map(function (s) { return s.$$state(); });\n var getChildren = function (states) {\n var _children = all.filter(function (s) { return states.indexOf(s.parent) !== -1; });\n return _children.length === 0 ? _children : _children.concat(getChildren(_children));\n };\n var children = getChildren([state]);\n var deregistered = [state].concat(children).reverse();\n deregistered.forEach(function (_state) {\n var rulesApi = _this.router.urlService.rules;\n // Remove URL rule\n rulesApi\n .rules()\n .filter(propEq('state', _state))\n .forEach(function (rule) { return rulesApi.removeRule(rule); });\n // Remove state from registry\n delete _this.states[_state.name];\n });\n return deregistered;\n };\n /**\n * Removes a state from the registry\n *\n * This removes a state from the registry.\n * If the state has children, they are are also removed from the registry.\n *\n * @param stateOrName the state's name or object representation\n * @returns {StateObject[]} a list of removed states\n */\n StateRegistry.prototype.deregister = function (stateOrName) {\n var _state = this.get(stateOrName);\n if (!_state)\n throw new Error(\"Can't deregister state; not found: \" + stateOrName);\n var deregisteredStates = this._deregisterTree(_state.$$state());\n this.listeners.forEach(function (listener) {\n return listener('deregistered', deregisteredStates.map(function (s) { return s.self; }));\n });\n return deregisteredStates;\n };\n StateRegistry.prototype.get = function (stateOrName, base) {\n var _this = this;\n if (arguments.length === 0)\n return Object.keys(this.states).map(function (name) { return _this.states[name].self; });\n var found = this.matcher.find(stateOrName, base);\n return (found && found.self) || null;\n };\n /**\n * Registers a [[BuilderFunction]] for a specific [[StateObject]] property (e.g., `parent`, `url`, or `path`).\n * More than one BuilderFunction can be registered for a given property.\n *\n * The BuilderFunction(s) will be used to define the property on any subsequently built [[StateObject]] objects.\n *\n * @param property The name of the State property being registered for.\n * @param builderFunction The BuilderFunction which will be used to build the State property\n * @returns a function which deregisters the BuilderFunction\n */\n StateRegistry.prototype.decorator = function (property, builderFunction) {\n return this.builder.builder(property, builderFunction);\n };\n return StateRegistry;\n}());\nexport { StateRegistry };\n","var TransitionHookPhase;\n(function (TransitionHookPhase) {\n TransitionHookPhase[TransitionHookPhase[\"CREATE\"] = 0] = \"CREATE\";\n TransitionHookPhase[TransitionHookPhase[\"BEFORE\"] = 1] = \"BEFORE\";\n TransitionHookPhase[TransitionHookPhase[\"RUN\"] = 2] = \"RUN\";\n TransitionHookPhase[TransitionHookPhase[\"SUCCESS\"] = 3] = \"SUCCESS\";\n TransitionHookPhase[TransitionHookPhase[\"ERROR\"] = 4] = \"ERROR\";\n})(TransitionHookPhase || (TransitionHookPhase = {}));\nvar TransitionHookScope;\n(function (TransitionHookScope) {\n TransitionHookScope[TransitionHookScope[\"TRANSITION\"] = 0] = \"TRANSITION\";\n TransitionHookScope[TransitionHookScope[\"STATE\"] = 1] = \"STATE\";\n})(TransitionHookScope || (TransitionHookScope = {}));\nexport { TransitionHookPhase, TransitionHookScope };\n","import { TransitionHookPhase } from './interface';\nimport { defaults, noop, silentRejection } from '../common/common';\nimport { fnToString, maxLength } from '../common/strings';\nimport { isPromise } from '../common/predicates';\nimport { is, parse } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { Rejection } from './rejectFactory';\nimport { TargetState } from '../state/targetState';\nvar defaultOptions = {\n current: noop,\n transition: null,\n traceData: {},\n bind: null,\n};\nvar TransitionHook = /** @class */ (function () {\n function TransitionHook(transition, stateContext, registeredHook, options) {\n var _this = this;\n this.transition = transition;\n this.stateContext = stateContext;\n this.registeredHook = registeredHook;\n this.options = options;\n this.isSuperseded = function () { return _this.type.hookPhase === TransitionHookPhase.RUN && !_this.options.transition.isActive(); };\n this.options = defaults(options, defaultOptions);\n this.type = registeredHook.eventType;\n }\n /**\n * Chains together an array of TransitionHooks.\n *\n * Given a list of [[TransitionHook]] objects, chains them together.\n * Each hook is invoked after the previous one completes.\n *\n * #### Example:\n * ```js\n * var hooks: TransitionHook[] = getHooks();\n * let promise: Promise = TransitionHook.chain(hooks);\n *\n * promise.then(handleSuccess, handleError);\n * ```\n *\n * @param hooks the list of hooks to chain together\n * @param waitFor if provided, the chain is `.then()`'ed off this promise\n * @returns a `Promise` for sequentially invoking the hooks (in order)\n */\n TransitionHook.chain = function (hooks, waitFor) {\n // Chain the next hook off the previous\n var createHookChainR = function (prev, nextHook) { return prev.then(function () { return nextHook.invokeHook(); }); };\n return hooks.reduce(createHookChainR, waitFor || services.$q.when());\n };\n /**\n * Invokes all the provided TransitionHooks, in order.\n * Each hook's return value is checked.\n * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n * If no hook returns a promise, then all hooks are processed synchronously.\n *\n * @param hooks the list of TransitionHooks to invoke\n * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n *\n * @returns a promise for the async result, or the result of the callback\n */\n TransitionHook.invokeHooks = function (hooks, doneCallback) {\n for (var idx = 0; idx < hooks.length; idx++) {\n var hookResult = hooks[idx].invokeHook();\n if (isPromise(hookResult)) {\n var remainingHooks = hooks.slice(idx + 1);\n return TransitionHook.chain(remainingHooks, hookResult).then(doneCallback);\n }\n }\n return doneCallback();\n };\n /**\n * Run all TransitionHooks, ignoring their return value.\n */\n TransitionHook.runAllHooks = function (hooks) {\n hooks.forEach(function (hook) { return hook.invokeHook(); });\n };\n TransitionHook.prototype.logError = function (err) {\n this.transition.router.stateService.defaultErrorHandler()(err);\n };\n TransitionHook.prototype.invokeHook = function () {\n var _this = this;\n var hook = this.registeredHook;\n if (hook._deregistered)\n return;\n var notCurrent = this.getNotCurrentRejection();\n if (notCurrent)\n return notCurrent;\n var options = this.options;\n trace.traceHookInvocation(this, this.transition, options);\n var invokeCallback = function () { return hook.callback.call(options.bind, _this.transition, _this.stateContext); };\n var normalizeErr = function (err) { return Rejection.normalize(err).toPromise(); };\n var handleError = function (err) { return hook.eventType.getErrorHandler(_this)(err); };\n var handleResult = function (result) { return hook.eventType.getResultHandler(_this)(result); };\n try {\n var result = invokeCallback();\n if (!this.type.synchronous && isPromise(result)) {\n return result.catch(normalizeErr).then(handleResult, handleError);\n }\n else {\n return handleResult(result);\n }\n }\n catch (err) {\n // If callback throws (synchronously)\n return handleError(Rejection.normalize(err));\n }\n finally {\n if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n hook.deregister();\n }\n }\n };\n /**\n * This method handles the return value of a Transition Hook.\n *\n * A hook can return false (cancel), a TargetState (redirect),\n * or a promise (which may later resolve to false or a redirect)\n *\n * This also handles \"transition superseded\" -- when a new transition\n * was started while the hook was still running\n */\n TransitionHook.prototype.handleHookResult = function (result) {\n var _this = this;\n var notCurrent = this.getNotCurrentRejection();\n if (notCurrent)\n return notCurrent;\n // Hook returned a promise\n if (isPromise(result)) {\n // Wait for the promise, then reprocess with the resulting value\n return result.then(function (val) { return _this.handleHookResult(val); });\n }\n trace.traceHookResult(result, this.transition, this.options);\n // Hook returned false\n if (result === false) {\n // Abort this Transition\n return Rejection.aborted('Hook aborted transition').toPromise();\n }\n var isTargetState = is(TargetState);\n // hook returned a TargetState\n if (isTargetState(result)) {\n // Halt the current Transition and redirect (a new Transition) to the TargetState.\n return Rejection.redirected(result).toPromise();\n }\n };\n /**\n * Return a Rejection promise if the transition is no longer current due\n * to a stopped router (disposed), or a new transition has started and superseded this one.\n */\n TransitionHook.prototype.getNotCurrentRejection = function () {\n var router = this.transition.router;\n // The router is stopped\n if (router._disposed) {\n return Rejection.aborted(\"UIRouter instance #\".concat(router.$id, \" has been stopped (disposed)\")).toPromise();\n }\n if (this.transition._aborted) {\n return Rejection.aborted().toPromise();\n }\n // This transition is no longer current.\n // Another transition started while this hook was still running.\n if (this.isSuperseded()) {\n // Abort this transition\n return Rejection.superseded(this.options.current()).toPromise();\n }\n };\n TransitionHook.prototype.toString = function () {\n var _a = this, options = _a.options, registeredHook = _a.registeredHook;\n var event = parse('traceData.hookType')(options) || 'internal', context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown', name = fnToString(registeredHook.callback);\n return \"\".concat(event, \" context: \").concat(context, \", \").concat(maxLength(200, name));\n };\n /**\n * These GetResultHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n */\n TransitionHook.HANDLE_RESULT = function (hook) { return function (result) {\n return hook.handleHookResult(result);\n }; };\n /**\n * If the result is a promise rejection, log it.\n * Otherwise, ignore the result.\n */\n TransitionHook.LOG_REJECTED_RESULT = function (hook) { return function (result) {\n isPromise(result) && result.catch(function (err) { return hook.logError(Rejection.normalize(err)); });\n return undefined;\n }; };\n /**\n * These GetErrorHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n */\n TransitionHook.LOG_ERROR = function (hook) { return function (error) { return hook.logError(error); }; };\n TransitionHook.REJECT_ERROR = function (hook) { return function (error) { return silentRejection(error); }; };\n TransitionHook.THROW_ERROR = function (hook) { return function (error) {\n throw error;\n }; };\n return TransitionHook;\n}());\nexport { TransitionHook };\n","import { isString, isFunction, Glob, extend, removeFrom, tail, values, identity, mapObj } from '../common';\nimport { // has or is using\nTransitionHookScope, } from './interface';\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @internal\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n * and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nexport function matchState(state, criterion, transition) {\n var toMatch = isString(criterion) ? [criterion] : criterion;\n function matchGlobs(_state) {\n var globStrings = toMatch;\n for (var i = 0; i < globStrings.length; i++) {\n var glob = new Glob(globStrings[i]);\n if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n return true;\n }\n }\n return false;\n }\n var matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n return !!matchFn(state, transition);\n}\n/**\n * The registration data for a registered transition hook\n */\nvar RegisteredHook = /** @class */ (function () {\n function RegisteredHook(tranSvc, eventType, callback, matchCriteria, removeHookFromRegistry, options) {\n if (options === void 0) { options = {}; }\n this.tranSvc = tranSvc;\n this.eventType = eventType;\n this.callback = callback;\n this.matchCriteria = matchCriteria;\n this.removeHookFromRegistry = removeHookFromRegistry;\n this.invokeCount = 0;\n this._deregistered = false;\n this.priority = options.priority || 0;\n this.bind = options.bind || null;\n this.invokeLimit = options.invokeLimit;\n }\n /**\n * Gets the matching [[PathNode]]s\n *\n * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n *\n * Returning `null` is significant to distinguish between the default\n * \"match-all criterion value\" of `true` compared to a `() => true` function,\n * when the nodes is an empty array.\n *\n * This is useful to allow a transition match criteria of `entering: true`\n * to still match a transition, even when `entering === []`. Contrast that\n * with `entering: (state) => true` which only matches when a state is actually\n * being entered.\n */\n RegisteredHook.prototype._matchingNodes = function (nodes, criterion, transition) {\n if (criterion === true)\n return nodes;\n var matching = nodes.filter(function (node) { return matchState(node.state, criterion, transition); });\n return matching.length ? matching : null;\n };\n /**\n * Gets the default match criteria (all `true`)\n *\n * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n *\n * ```js\n * {\n * to: true,\n * from: true,\n * entering: true,\n * exiting: true,\n * retained: true,\n * }\n */\n RegisteredHook.prototype._getDefaultMatchCriteria = function () {\n return mapObj(this.tranSvc._pluginapi._getPathTypes(), function () { return true; });\n };\n /**\n * Gets matching nodes as [[IMatchingNodes]]\n *\n * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n *\n * ```js\n * let matches: IMatchingNodes = {\n * to: _matchingNodes([tail(treeChanges.to)], mc.to),\n * from: _matchingNodes([tail(treeChanges.from)], mc.from),\n * exiting: _matchingNodes(treeChanges.exiting, mc.exiting),\n * retained: _matchingNodes(treeChanges.retained, mc.retained),\n * entering: _matchingNodes(treeChanges.entering, mc.entering),\n * };\n * ```\n */\n RegisteredHook.prototype._getMatchingNodes = function (treeChanges, transition) {\n var _this = this;\n var criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n var paths = values(this.tranSvc._pluginapi._getPathTypes());\n return paths.reduce(function (mn, pathtype) {\n // STATE scope criteria matches against every node in the path.\n // TRANSITION scope criteria matches against only the last node in the path\n var isStateHook = pathtype.scope === TransitionHookScope.STATE;\n var path = treeChanges[pathtype.name] || [];\n var nodes = isStateHook ? path : [tail(path)];\n mn[pathtype.name] = _this._matchingNodes(nodes, criteria[pathtype.name], transition);\n return mn;\n }, {});\n };\n /**\n * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n *\n * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n */\n RegisteredHook.prototype.matches = function (treeChanges, transition) {\n var matches = this._getMatchingNodes(treeChanges, transition);\n // Check if all the criteria matched the TreeChanges object\n var allMatched = values(matches).every(identity);\n return allMatched ? matches : null;\n };\n RegisteredHook.prototype.deregister = function () {\n this.removeHookFromRegistry(this);\n this._deregistered = true;\n };\n return RegisteredHook;\n}());\nexport { RegisteredHook };\n/** Return a registration function of the requested type. */\nexport function makeEvent(registry, transitionService, eventType) {\n // Create the object which holds the registered transition hooks.\n var _registeredHooks = (registry._registeredHooks = registry._registeredHooks || {});\n var hooks = (_registeredHooks[eventType.name] = []);\n var removeHookFn = removeFrom(hooks);\n // Create hook registration function on the IHookRegistry for the event\n registry[eventType.name] = hookRegistrationFn;\n function hookRegistrationFn(matchObject, callback, options) {\n if (options === void 0) { options = {}; }\n var registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n hooks.push(registeredHook);\n return registeredHook.deregister.bind(registeredHook);\n }\n return hookRegistrationFn;\n}\n","import { extend, assertPredicate, unnestR, identity } from '../common/common';\nimport { isArray } from '../common/predicates';\nimport { TransitionHookPhase, TransitionHookScope, } from './interface';\nimport { TransitionHook } from './transitionHook';\n/**\n * This class returns applicable TransitionHooks for a specific Transition instance.\n *\n * Hooks ([[RegisteredHook]]) may be registered globally, e.g., $transitions.onEnter(...), or locally, e.g.\n * myTransition.onEnter(...). The HookBuilder finds matching RegisteredHooks (where the match criteria is\n * determined by the type of hook)\n *\n * The HookBuilder also converts RegisteredHooks objects to TransitionHook objects, which are used to run a Transition.\n *\n * The HookBuilder constructor is given the $transitions service and a Transition instance. Thus, a HookBuilder\n * instance may only be used for one specific Transition object. (side note: the _treeChanges accessor is private\n * in the Transition class, so we must also provide the Transition's _treeChanges)\n */\nvar HookBuilder = /** @class */ (function () {\n function HookBuilder(transition) {\n this.transition = transition;\n }\n HookBuilder.prototype.buildHooksForPhase = function (phase) {\n var _this = this;\n var $transitions = this.transition.router.transitionService;\n return $transitions._pluginapi\n ._getEvents(phase)\n .map(function (type) { return _this.buildHooks(type); })\n .reduce(unnestR, [])\n .filter(identity);\n };\n /**\n * Returns an array of newly built TransitionHook objects.\n *\n * - Finds all RegisteredHooks registered for the given `hookType` which matched the transition's [[TreeChanges]].\n * - Finds [[PathNode]] (or `PathNode[]`) to use as the TransitionHook context(s)\n * - For each of the [[PathNode]]s, creates a TransitionHook\n *\n * @param hookType the type of the hook registration function, e.g., 'onEnter', 'onFinish'.\n */\n HookBuilder.prototype.buildHooks = function (hookType) {\n var transition = this.transition;\n var treeChanges = transition.treeChanges();\n // Find all the matching registered hooks for a given hook type\n var matchingHooks = this.getMatchingHooks(hookType, treeChanges, transition);\n if (!matchingHooks)\n return [];\n var baseHookOptions = {\n transition: transition,\n current: transition.options().current,\n };\n var makeTransitionHooks = function (hook) {\n // Fetch the Nodes that caused this hook to match.\n var matches = hook.matches(treeChanges, transition);\n // Select the PathNode[] that will be used as TransitionHook context objects\n var matchingNodes = matches[hookType.criteriaMatchPath.name];\n // Return an array of HookTuples\n return matchingNodes.map(function (node) {\n var _options = extend({\n bind: hook.bind,\n traceData: { hookType: hookType.name, context: node },\n }, baseHookOptions);\n var state = hookType.criteriaMatchPath.scope === TransitionHookScope.STATE ? node.state.self : null;\n var transitionHook = new TransitionHook(transition, state, hook, _options);\n return { hook: hook, node: node, transitionHook: transitionHook };\n });\n };\n return matchingHooks\n .map(makeTransitionHooks)\n .reduce(unnestR, [])\n .sort(tupleSort(hookType.reverseSort))\n .map(function (tuple) { return tuple.transitionHook; });\n };\n /**\n * Finds all RegisteredHooks from:\n * - The Transition object instance hook registry\n * - The TransitionService ($transitions) global hook registry\n *\n * which matched:\n * - the eventType\n * - the matchCriteria (to, from, exiting, retained, entering)\n *\n * @returns an array of matched [[RegisteredHook]]s\n */\n HookBuilder.prototype.getMatchingHooks = function (hookType, treeChanges, transition) {\n var isCreate = hookType.hookPhase === TransitionHookPhase.CREATE;\n // Instance and Global hook registries\n var $transitions = this.transition.router.transitionService;\n var registries = isCreate ? [$transitions] : [this.transition, $transitions];\n return registries\n .map(function (reg) { return reg.getHooks(hookType.name); }) // Get named hooks from registries\n .filter(assertPredicate(isArray, \"broken event named: \".concat(hookType.name))) // Sanity check\n .reduce(unnestR, []) // Un-nest RegisteredHook[][] to RegisteredHook[] array\n .filter(function (hook) { return hook.matches(treeChanges, transition); }); // Only those satisfying matchCriteria\n };\n return HookBuilder;\n}());\nexport { HookBuilder };\n/**\n * A factory for a sort function for HookTuples.\n *\n * The sort function first compares the PathNode depth (how deep in the state tree a node is), then compares\n * the EventHook priority.\n *\n * @param reverseDepthSort a boolean, when true, reverses the sort order for the node depth\n * @returns a tuple sort function\n */\nfunction tupleSort(reverseDepthSort) {\n if (reverseDepthSort === void 0) { reverseDepthSort = false; }\n return function nodeDepthThenPriority(l, r) {\n var factor = reverseDepthSort ? -1 : 1;\n var depthDelta = (l.node.state.path.length - r.node.state.path.length) * factor;\n return depthDelta !== 0 ? depthDelta : r.hook.priority - l.hook.priority;\n };\n}\n","import { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { stringify } from '../common/strings';\nimport { map, find, extend, mergeR, tail, omit, arrayTuples, unnestR, identity, anyTrueR } from '../common/common';\nimport { isObject, isUndefined } from '../common/predicates';\nimport { prop, propEq, val, not, is } from '../common/hof';\nimport { TransitionHookPhase, } from './interface'; // has or is using\nimport { TransitionHook } from './transitionHook';\nimport { matchState, makeEvent } from './hookRegistry';\nimport { HookBuilder } from './hookBuilder';\nimport { PathUtils } from '../path/pathUtils';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { Rejection } from './rejectFactory';\nimport { flattenR, uniqR } from '../common';\n/** @internal */\nvar stateSelf = prop('self');\n/**\n * Represents a transition between two states.\n *\n * When navigating to a state, we are transitioning **from** the current state **to** the new state.\n *\n * This object contains all contextual information about the to/from states, parameters, resolves.\n * It has information about all states being entered and exited as a result of the transition.\n */\nvar Transition = /** @class */ (function () {\n /**\n * Creates a new Transition object.\n *\n * If the target state is not valid, an error is thrown.\n *\n * @internal\n *\n * @param fromPath The path of [[PathNode]]s from which the transition is leaving. The last node in the `fromPath`\n * encapsulates the \"from state\".\n * @param targetState The target state and parameters being transitioned to (also, the transition options)\n * @param router The [[UIRouter]] instance\n * @internal\n */\n function Transition(fromPath, targetState, router) {\n var _this = this;\n /** @internal */\n this._deferred = services.$q.defer();\n /**\n * This promise is resolved or rejected based on the outcome of the Transition.\n *\n * When the transition is successful, the promise is resolved\n * When the transition is unsuccessful, the promise is rejected with the [[Rejection]] or javascript error\n */\n this.promise = this._deferred.promise;\n /** @internal Holds the hook registration functions such as those passed to Transition.onStart() */\n this._registeredHooks = {};\n /** @internal */\n this._hookBuilder = new HookBuilder(this);\n /** Checks if this transition is currently active/running. */\n this.isActive = function () { return _this.router.globals.transition === _this; };\n this.router = router;\n this._targetState = targetState;\n if (!targetState.valid()) {\n throw new Error(targetState.error());\n }\n // current() is assumed to come from targetState.options, but provide a naive implementation otherwise.\n this._options = extend({ current: val(this) }, targetState.options());\n this.$id = router.transitionService._transitionCount++;\n var toPath = PathUtils.buildToPath(fromPath, targetState);\n this._treeChanges = PathUtils.treeChanges(fromPath, toPath, this._options.reloadState);\n this.createTransitionHookRegFns();\n var onCreateHooks = this._hookBuilder.buildHooksForPhase(TransitionHookPhase.CREATE);\n TransitionHook.invokeHooks(onCreateHooks, function () { return null; });\n this.applyViewConfigs(router);\n }\n /** @internal */\n Transition.prototype.onBefore = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onStart = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onExit = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onRetain = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onEnter = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onFinish = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onSuccess = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onError = function (criteria, callback, options) {\n return;\n };\n /** @internal\n * Creates the transition-level hook registration functions\n * (which can then be used to register hooks)\n */\n Transition.prototype.createTransitionHookRegFns = function () {\n var _this = this;\n this.router.transitionService._pluginapi\n ._getEvents()\n .filter(function (type) { return type.hookPhase !== TransitionHookPhase.CREATE; })\n .forEach(function (type) { return makeEvent(_this, _this.router.transitionService, type); });\n };\n /** @internal */\n Transition.prototype.getHooks = function (hookName) {\n return this._registeredHooks[hookName];\n };\n Transition.prototype.applyViewConfigs = function (router) {\n var enteringStates = this._treeChanges.entering.map(function (node) { return node.state; });\n PathUtils.applyViewConfigs(router.transitionService.$view, this._treeChanges.to, enteringStates);\n };\n /**\n * @internal\n * @returns the internal from [State] object\n */\n Transition.prototype.$from = function () {\n return tail(this._treeChanges.from).state;\n };\n /**\n * @internal\n * @returns the internal to [State] object\n */\n Transition.prototype.$to = function () {\n return tail(this._treeChanges.to).state;\n };\n /**\n * Returns the \"from state\"\n *\n * Returns the state that the transition is coming *from*.\n *\n * @returns The state declaration object for the Transition's (\"from state\").\n */\n Transition.prototype.from = function () {\n return this.$from().self;\n };\n /**\n * Returns the \"to state\"\n *\n * Returns the state that the transition is going *to*.\n *\n * @returns The state declaration object for the Transition's target state (\"to state\").\n */\n Transition.prototype.to = function () {\n return this.$to().self;\n };\n /**\n * Gets the Target State\n *\n * A transition's [[TargetState]] encapsulates the [[to]] state, the [[params]], and the [[options]] as a single object.\n *\n * @returns the [[TargetState]] of this Transition\n */\n Transition.prototype.targetState = function () {\n return this._targetState;\n };\n /**\n * Determines whether two transitions are equivalent.\n * @deprecated\n */\n Transition.prototype.is = function (compare) {\n if (compare instanceof Transition) {\n // TODO: Also compare parameters\n return this.is({ to: compare.$to().name, from: compare.$from().name });\n }\n return !((compare.to && !matchState(this.$to(), compare.to, this)) ||\n (compare.from && !matchState(this.$from(), compare.from, this)));\n };\n Transition.prototype.params = function (pathname) {\n if (pathname === void 0) { pathname = 'to'; }\n return Object.freeze(this._treeChanges[pathname].map(prop('paramValues')).reduce(mergeR, {}));\n };\n Transition.prototype.paramsChanged = function () {\n var fromParams = this.params('from');\n var toParams = this.params('to');\n // All the parameters declared on both the \"to\" and \"from\" paths\n var allParamDescriptors = []\n .concat(this._treeChanges.to)\n .concat(this._treeChanges.from)\n .map(function (pathNode) { return pathNode.paramSchema; })\n .reduce(flattenR, [])\n .reduce(uniqR, []);\n var changedParamDescriptors = Param.changed(allParamDescriptors, fromParams, toParams);\n return changedParamDescriptors.reduce(function (changedValues, descriptor) {\n changedValues[descriptor.id] = toParams[descriptor.id];\n return changedValues;\n }, {});\n };\n /**\n * Creates a [[UIInjector]] Dependency Injector\n *\n * Returns a Dependency Injector for the Transition's target state (to state).\n * The injector provides resolve values which the target state has access to.\n *\n * The `UIInjector` can also provide values from the native root/global injector (ng1/ng2).\n *\n * #### Example:\n * ```js\n * .onEnter({ entering: 'myState' }, trans => {\n * var myResolveValue = trans.injector().get('myResolve');\n * // Inject a global service from the global/native injector (if it exists)\n * var MyService = trans.injector().get('MyService');\n * })\n * ```\n *\n * In some cases (such as `onBefore`), you may need access to some resolve data but it has not yet been fetched.\n * You can use [[UIInjector.getAsync]] to get a promise for the data.\n * #### Example:\n * ```js\n * .onBefore({}, trans => {\n * return trans.injector().getAsync('myResolve').then(myResolveValue =>\n * return myResolveValue !== 'ABORT';\n * });\n * });\n * ```\n *\n * If a `state` is provided, the injector that is returned will be limited to resolve values that the provided state has access to.\n * This can be useful if both a parent state `foo` and a child state `foo.bar` have both defined a resolve such as `data`.\n * #### Example:\n * ```js\n * .onEnter({ to: 'foo.bar' }, trans => {\n * // returns result of `foo` state's `myResolve` resolve\n * // even though `foo.bar` also has a `myResolve` resolve\n * var fooData = trans.injector('foo').get('myResolve');\n * });\n * ```\n *\n * If you need resolve data from the exiting states, pass `'from'` as `pathName`.\n * The resolve data from the `from` path will be returned.\n * #### Example:\n * ```js\n * .onExit({ exiting: 'foo.bar' }, trans => {\n * // Gets the resolve value of `myResolve` from the state being exited\n * var fooData = trans.injector(null, 'from').get('myResolve');\n * });\n * ```\n *\n *\n * @param state Limits the resolves provided to only the resolves the provided state has access to.\n * @param pathName Default: `'to'`: Chooses the path for which to create the injector. Use this to access resolves for `exiting` states.\n *\n * @returns a [[UIInjector]]\n */\n Transition.prototype.injector = function (state, pathName) {\n if (pathName === void 0) { pathName = 'to'; }\n var path = this._treeChanges[pathName];\n if (state)\n path = PathUtils.subPath(path, function (node) { return node.state === state || node.state.name === state; });\n return new ResolveContext(path).injector();\n };\n /**\n * Gets all available resolve tokens (keys)\n *\n * This method can be used in conjunction with [[injector]] to inspect the resolve values\n * available to the Transition.\n *\n * This returns all the tokens defined on [[StateDeclaration.resolve]] blocks, for the states\n * in the Transition's [[TreeChanges.to]] path.\n *\n * #### Example:\n * This example logs all resolve values\n * ```js\n * let tokens = trans.getResolveTokens();\n * tokens.forEach(token => console.log(token + \" = \" + trans.injector().get(token)));\n * ```\n *\n * #### Example:\n * This example creates promises for each resolve value.\n * This triggers fetches of resolves (if any have not yet been fetched).\n * When all promises have all settled, it logs the resolve values.\n * ```js\n * let tokens = trans.getResolveTokens();\n * let promise = tokens.map(token => trans.injector().getAsync(token));\n * Promise.all(promises).then(values => console.log(\"Resolved values: \" + values));\n * ```\n *\n * Note: Angular 1 users whould use `$q.all()`\n *\n * @param pathname resolve context's path name (e.g., `to` or `from`)\n *\n * @returns an array of resolve tokens (keys)\n */\n Transition.prototype.getResolveTokens = function (pathname) {\n if (pathname === void 0) { pathname = 'to'; }\n return new ResolveContext(this._treeChanges[pathname]).getTokens();\n };\n /**\n * Dynamically adds a new [[Resolvable]] (i.e., [[StateDeclaration.resolve]]) to this transition.\n *\n * Allows a transition hook to dynamically add a Resolvable to this Transition.\n *\n * Use the [[Transition.injector]] to retrieve the resolved data in subsequent hooks ([[UIInjector.get]]).\n *\n * If a `state` argument is provided, the Resolvable is processed when that state is being entered.\n * If no `state` is provided then the root state is used.\n * If the given `state` has already been entered, the Resolvable is processed when any child state is entered.\n * If no child states will be entered, the Resolvable is processed during the `onFinish` phase of the Transition.\n *\n * The `state` argument also scopes the resolved data.\n * The resolved data is available from the injector for that `state` and any children states.\n *\n * #### Example:\n * ```js\n * transitionService.onBefore({}, transition => {\n * transition.addResolvable({\n * token: 'myResolve',\n * deps: ['MyService'],\n * resolveFn: myService => myService.getData()\n * });\n * });\n * ```\n *\n * @param resolvable a [[ResolvableLiteral]] object (or a [[Resolvable]])\n * @param state the state in the \"to path\" which should receive the new resolve (otherwise, the root state)\n */\n Transition.prototype.addResolvable = function (resolvable, state) {\n if (state === void 0) { state = ''; }\n resolvable = is(Resolvable)(resolvable) ? resolvable : new Resolvable(resolvable);\n var stateName = typeof state === 'string' ? state : state.name;\n var topath = this._treeChanges.to;\n var targetNode = find(topath, function (node) { return node.state.name === stateName; });\n var resolveContext = new ResolveContext(topath);\n resolveContext.addResolvables([resolvable], targetNode.state);\n };\n /**\n * Gets the transition from which this transition was redirected.\n *\n * If the current transition is a redirect, this method returns the transition that was redirected.\n *\n * #### Example:\n * ```js\n * let transitionA = $state.go('A').transition\n * transitionA.onStart({}, () => $state.target('B'));\n * $transitions.onSuccess({ to: 'B' }, (trans) => {\n * trans.to().name === 'B'; // true\n * trans.redirectedFrom() === transitionA; // true\n * });\n * ```\n *\n * @returns The previous Transition, or null if this Transition is not the result of a redirection\n */\n Transition.prototype.redirectedFrom = function () {\n return this._options.redirectedFrom || null;\n };\n /**\n * Gets the original transition in a redirect chain\n *\n * A transition might belong to a long chain of multiple redirects.\n * This method walks the [[redirectedFrom]] chain back to the original (first) transition in the chain.\n *\n * #### Example:\n * ```js\n * // states\n * registry.register({ name: 'A', redirectTo: 'B' });\n * registry.register({ name: 'B', redirectTo: 'C' });\n * registry.register({ name: 'C', redirectTo: 'D' });\n * registry.register({ name: 'D' });\n *\n * let transitionA = $state.go('A').transition\n *\n * $transitions.onSuccess({ to: 'D' }, (trans) => {\n * trans.to().name === 'D'; // true\n * trans.redirectedFrom().to().name === 'C'; // true\n * trans.originalTransition() === transitionA; // true\n * trans.originalTransition().to().name === 'A'; // true\n * });\n * ```\n *\n * @returns The original Transition that started a redirect chain\n */\n Transition.prototype.originalTransition = function () {\n var rf = this.redirectedFrom();\n return (rf && rf.originalTransition()) || this;\n };\n /**\n * Get the transition options\n *\n * @returns the options for this Transition.\n */\n Transition.prototype.options = function () {\n return this._options;\n };\n /**\n * Gets the states being entered.\n *\n * @returns an array of states that will be entered during this transition.\n */\n Transition.prototype.entering = function () {\n return map(this._treeChanges.entering, prop('state')).map(stateSelf);\n };\n /**\n * Gets the states being exited.\n *\n * @returns an array of states that will be exited during this transition.\n */\n Transition.prototype.exiting = function () {\n return map(this._treeChanges.exiting, prop('state')).map(stateSelf).reverse();\n };\n /**\n * Gets the states being retained.\n *\n * @returns an array of states that are already entered from a previous Transition, that will not be\n * exited during this Transition\n */\n Transition.prototype.retained = function () {\n return map(this._treeChanges.retained, prop('state')).map(stateSelf);\n };\n /**\n * Get the [[ViewConfig]]s associated with this Transition\n *\n * Each state can define one or more views (template/controller), which are encapsulated as `ViewConfig` objects.\n * This method fetches the `ViewConfigs` for a given path in the Transition (e.g., \"to\" or \"entering\").\n *\n * @param pathname the name of the path to fetch views for:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n * @param state If provided, only returns the `ViewConfig`s for a single state in the path\n *\n * @returns a list of ViewConfig objects for the given path.\n */\n Transition.prototype.views = function (pathname, state) {\n if (pathname === void 0) { pathname = 'entering'; }\n var path = this._treeChanges[pathname];\n path = !state ? path : path.filter(propEq('state', state));\n return path.map(prop('views')).filter(identity).reduce(unnestR, []);\n };\n Transition.prototype.treeChanges = function (pathname) {\n return pathname ? this._treeChanges[pathname] : this._treeChanges;\n };\n /**\n * Creates a new transition that is a redirection of the current one.\n *\n * This transition can be returned from a [[TransitionService]] hook to\n * redirect a transition to a new state and/or set of parameters.\n *\n * @internal\n *\n * @returns Returns a new [[Transition]] instance.\n */\n Transition.prototype.redirect = function (targetState) {\n var redirects = 1, trans = this;\n // tslint:disable-next-line:no-conditional-assignment\n while ((trans = trans.redirectedFrom()) != null) {\n if (++redirects > 20)\n throw new Error(\"Too many consecutive Transition redirects (20+)\");\n }\n var redirectOpts = { redirectedFrom: this, source: 'redirect' };\n // If the original transition was caused by URL sync, then use { location: 'replace' }\n // on the new transition (unless the target state explicitly specifies location: false).\n // This causes the original url to be replaced with the url for the redirect target\n // so the original url disappears from the browser history.\n if (this.options().source === 'url' && targetState.options().location !== false) {\n redirectOpts.location = 'replace';\n }\n var newOptions = extend({}, this.options(), targetState.options(), redirectOpts);\n targetState = targetState.withOptions(newOptions, true);\n var newTransition = this.router.transitionService.create(this._treeChanges.from, targetState);\n var originalEnteringNodes = this._treeChanges.entering;\n var redirectEnteringNodes = newTransition._treeChanges.entering;\n // --- Re-use resolve data from original transition ---\n // When redirecting from a parent state to a child state where the parent parameter values haven't changed\n // (because of the redirect), the resolves fetched by the original transition are still valid in the\n // redirected transition.\n //\n // This allows you to define a redirect on a parent state which depends on an async resolve value.\n // You can wait for the resolve, then redirect to a child state based on the result.\n // The redirected transition does not have to re-fetch the resolve.\n // ---------------------------------------------------------\n var nodeIsReloading = function (reloadState) { return function (node) {\n return reloadState && node.state.includes[reloadState.name];\n }; };\n // Find any \"entering\" nodes in the redirect path that match the original path and aren't being reloaded\n var matchingEnteringNodes = PathUtils.matching(redirectEnteringNodes, originalEnteringNodes, PathUtils.nonDynamicParams).filter(not(nodeIsReloading(targetState.options().reloadState)));\n // Use the existing (possibly pre-resolved) resolvables for the matching entering nodes.\n matchingEnteringNodes.forEach(function (node, idx) {\n node.resolvables = originalEnteringNodes[idx].resolvables;\n });\n return newTransition;\n };\n /** @internal If a transition doesn't exit/enter any states, returns any [[Param]] whose value changed */\n Transition.prototype._changedParams = function () {\n var tc = this._treeChanges;\n /** Return undefined if it's not a \"dynamic\" transition, for the following reasons */\n // If user explicitly wants a reload\n if (this._options.reload)\n return undefined;\n // If any states are exiting or entering\n if (tc.exiting.length || tc.entering.length)\n return undefined;\n // If to/from path lengths differ\n if (tc.to.length !== tc.from.length)\n return undefined;\n // If the to/from paths are different\n var pathsDiffer = arrayTuples(tc.to, tc.from)\n .map(function (tuple) { return tuple[0].state !== tuple[1].state; })\n .reduce(anyTrueR, false);\n if (pathsDiffer)\n return undefined;\n // Find any parameter values that differ\n var nodeSchemas = tc.to.map(function (node) { return node.paramSchema; });\n var _a = [tc.to, tc.from].map(function (path) { return path.map(function (x) { return x.paramValues; }); }), toValues = _a[0], fromValues = _a[1];\n var tuples = arrayTuples(nodeSchemas, toValues, fromValues);\n return tuples.map(function (_a) {\n var schema = _a[0], toVals = _a[1], fromVals = _a[2];\n return Param.changed(schema, toVals, fromVals);\n }).reduce(unnestR, []);\n };\n /**\n * Returns true if the transition is dynamic.\n *\n * A transition is dynamic if no states are entered nor exited, but at least one dynamic parameter has changed.\n *\n * @returns true if the Transition is dynamic\n */\n Transition.prototype.dynamic = function () {\n var changes = this._changedParams();\n return !changes ? false : changes.map(function (x) { return x.dynamic; }).reduce(anyTrueR, false);\n };\n /**\n * Returns true if the transition is ignored.\n *\n * A transition is ignored if no states are entered nor exited, and no parameter values have changed.\n *\n * @returns true if the Transition is ignored.\n */\n Transition.prototype.ignored = function () {\n return !!this._ignoredReason();\n };\n /** @internal */\n Transition.prototype._ignoredReason = function () {\n var pending = this.router.globals.transition;\n var reloadState = this._options.reloadState;\n var same = function (pathA, pathB) {\n if (pathA.length !== pathB.length)\n return false;\n var matching = PathUtils.matching(pathA, pathB);\n return pathA.length === matching.filter(function (node) { return !reloadState || !node.state.includes[reloadState.name]; }).length;\n };\n var newTC = this.treeChanges();\n var pendTC = pending && pending.treeChanges();\n if (pendTC && same(pendTC.to, newTC.to) && same(pendTC.exiting, newTC.exiting))\n return 'SameAsPending';\n if (newTC.exiting.length === 0 && newTC.entering.length === 0 && same(newTC.from, newTC.to))\n return 'SameAsCurrent';\n };\n /**\n * Runs the transition\n *\n * This method is generally called from the [[StateService.transitionTo]]\n *\n * @internal\n *\n * @returns a promise for a successful transition.\n */\n Transition.prototype.run = function () {\n var _this = this;\n var runAllHooks = TransitionHook.runAllHooks;\n // Gets transition hooks array for the given phase\n var getHooksFor = function (phase) { return _this._hookBuilder.buildHooksForPhase(phase); };\n // When the chain is complete, then resolve or reject the deferred\n var transitionSuccess = function () {\n trace.traceSuccess(_this.$to(), _this);\n _this.success = true;\n _this._deferred.resolve(_this.to());\n runAllHooks(getHooksFor(TransitionHookPhase.SUCCESS));\n };\n var transitionError = function (reason) {\n trace.traceError(reason, _this);\n _this.success = false;\n _this._deferred.reject(reason);\n _this._error = reason;\n runAllHooks(getHooksFor(TransitionHookPhase.ERROR));\n };\n var runTransition = function () {\n // Wait to build the RUN hook chain until the BEFORE hooks are done\n // This allows a BEFORE hook to dynamically add additional RUN hooks via the Transition object.\n var allRunHooks = getHooksFor(TransitionHookPhase.RUN);\n var done = function () { return services.$q.when(undefined); };\n return TransitionHook.invokeHooks(allRunHooks, done);\n };\n var startTransition = function () {\n var globals = _this.router.globals;\n globals.lastStartedTransitionId = _this.$id;\n globals.transition = _this;\n globals.transitionHistory.enqueue(_this);\n trace.traceTransitionStart(_this);\n return services.$q.when(undefined);\n };\n var allBeforeHooks = getHooksFor(TransitionHookPhase.BEFORE);\n TransitionHook.invokeHooks(allBeforeHooks, startTransition)\n .then(runTransition)\n .then(transitionSuccess, transitionError);\n return this.promise;\n };\n /**\n * Checks if the Transition is valid\n *\n * @returns true if the Transition is valid\n */\n Transition.prototype.valid = function () {\n return !this.error() || this.success !== undefined;\n };\n /**\n * Aborts this transition\n *\n * Imperative API to abort a Transition.\n * This only applies to Transitions that are not yet complete.\n */\n Transition.prototype.abort = function () {\n // Do not set flag if the transition is already complete\n if (isUndefined(this.success)) {\n this._aborted = true;\n }\n };\n /**\n * The Transition error reason.\n *\n * If the transition is invalid (and could not be run), returns the reason the transition is invalid.\n * If the transition was valid and ran, but was not successful, returns the reason the transition failed.\n *\n * @returns a transition rejection explaining why the transition is invalid, or the reason the transition failed.\n */\n Transition.prototype.error = function () {\n var state = this.$to();\n if (state.self.abstract) {\n return Rejection.invalid(\"Cannot transition to abstract state '\".concat(state.name, \"'\"));\n }\n var paramDefs = state.parameters();\n var values = this.params();\n var invalidParams = paramDefs.filter(function (param) { return !param.validates(values[param.id]); });\n if (invalidParams.length) {\n var invalidValues = invalidParams.map(function (param) { return \"[\".concat(param.id, \":\").concat(stringify(values[param.id]), \"]\"); }).join(', ');\n var detail = \"The following parameter values are not valid for state '\".concat(state.name, \"': \").concat(invalidValues);\n return Rejection.invalid(detail);\n }\n if (this.success === false)\n return this._error;\n };\n /**\n * A string representation of the Transition\n *\n * @returns A string representation of the Transition\n */\n Transition.prototype.toString = function () {\n var fromStateOrName = this.from();\n var toStateOrName = this.to();\n var avoidEmptyHash = function (params) {\n return params['#'] !== null && params['#'] !== undefined ? params : omit(params, ['#']);\n };\n // (X) means the to state is invalid.\n var id = this.$id, from = isObject(fromStateOrName) ? fromStateOrName.name : fromStateOrName, fromParams = stringify(avoidEmptyHash(this._treeChanges.from.map(prop('paramValues')).reduce(mergeR, {}))), toValid = this.valid() ? '' : '(X) ', to = isObject(toStateOrName) ? toStateOrName.name : toStateOrName, toParams = stringify(avoidEmptyHash(this.params()));\n return \"Transition#\".concat(id, \"( '\").concat(from, \"'\").concat(fromParams, \" -> \").concat(toValid, \"'\").concat(to, \"'\").concat(toParams, \" )\");\n };\n /** @internal */\n Transition.diToken = Transition;\n return Transition;\n}());\nexport { Transition };\n","import { map, inherit, identity, unnest, tail, find, allTrueR, unnestR, arrayTuples } from '../common/common';\nimport { prop, propEq } from '../common/hof';\nimport { isArray, isString, isDefined } from '../common/predicates';\nimport { Param, DefType } from '../params/param';\nimport { joinNeighborsR, splitOnDelim } from '../common/strings';\nimport { defaults } from '../common';\nfunction quoteRegExp(str, param) {\n var surroundPattern = ['', ''], result = str.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, '\\\\$&');\n if (!param)\n return result;\n switch (param.squash) {\n case false:\n surroundPattern = ['(', ')' + (param.isOptional ? '?' : '')];\n break;\n case true:\n result = result.replace(/\\/$/, '');\n surroundPattern = ['(?:/(', ')|/)?'];\n break;\n default:\n surroundPattern = [\"(\".concat(param.squash, \"|\"), ')?'];\n break;\n }\n return result + surroundPattern[0] + param.type.pattern.source + surroundPattern[1];\n}\nvar memoizeTo = function (obj, _prop, fn) { return (obj[_prop] = obj[_prop] || fn()); };\nvar splitOnSlash = splitOnDelim('/');\nvar defaultConfig = {\n state: { params: {} },\n strict: true,\n caseInsensitive: true,\n decodeParams: true,\n};\n/**\n * Matches URLs against patterns.\n *\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL.\n *\n * A URL pattern consists of a path pattern, optionally followed by '?' and a list of search (query)\n * parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by [[UrlMatcher.exec]].\n *\n * - *Path parameters* are defined using curly brace placeholders (`/somepath/{param}`)\n * or colon placeholders (`/somePath/:param`).\n *\n * - *A parameter RegExp* may be defined for a param after a colon\n * (`/somePath/{param:[a-zA-Z0-9]+}`) in a curly brace placeholder.\n * The regexp must match for the url to be matched.\n * Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Note: a RegExp parameter will encode its value using either [[ParamTypes.path]] or [[ParamTypes.query]].\n *\n * - *Custom parameter types* may also be specified after a colon (`/somePath/{param:int}`) in curly brace parameters.\n * See [[UrlMatcherFactory.type]] for more information.\n *\n * - *Catch-all parameters* are defined using an asterisk placeholder (`/somepath/*catchallparam`).\n * A catch-all * parameter value will contain the remainder of the URL.\n *\n * ---\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters).\n * A path parameter matches any number of characters other than '/'. For catch-all\n * placeholders the path parameter matches any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n * trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n * '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n * parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n * path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n * in the built-in `date` ParamType matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n */\nvar UrlMatcher = /** @class */ (function () {\n /**\n * @param pattern The pattern to compile into a matcher.\n * @param paramTypes The [[ParamTypes]] registry\n * @param paramFactory A [[ParamFactory]] object\n * @param config A [[UrlMatcherCompileConfig]] configuration object\n */\n function UrlMatcher(pattern, paramTypes, paramFactory, config) {\n var _this = this;\n /** @internal */\n this._cache = { path: [this] };\n /** @internal */\n this._children = [];\n /** @internal */\n this._params = [];\n /** @internal */\n this._segments = [];\n /** @internal */\n this._compiled = [];\n this.config = config = defaults(config, defaultConfig);\n this.pattern = pattern;\n // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n // '*' name\n // ':' name\n // '{' name '}'\n // '{' name ':' regexp '}'\n // The regular expression is somewhat complicated due to the need to allow curly braces\n // inside the regular expression. The placeholder regexp breaks down as follows:\n // ([:*])([\\w\\[\\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case)\n // \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either\n // [^{}\\\\]+ - anything other than curly braces or backslash\n // \\\\. - a backslash escape\n // \\{(?:[^{}\\\\]+|\\\\.)*\\} - a matched set of curly braces containing other atoms\n var placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n var searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n var patterns = [];\n var last = 0;\n var matchArray;\n var checkParamErrors = function (id) {\n if (!UrlMatcher.nameValidator.test(id))\n throw new Error(\"Invalid parameter name '\".concat(id, \"' in pattern '\").concat(pattern, \"'\"));\n if (find(_this._params, propEq('id', id)))\n throw new Error(\"Duplicate parameter name '\".concat(id, \"' in pattern '\").concat(pattern, \"'\"));\n };\n // Split into static segments separated by path parameter placeholders.\n // The number of segments is always 1 more than the number of parameters.\n var matchDetails = function (m, isSearch) {\n // IE[78] returns '' for unmatched groups instead of null\n var id = m[2] || m[3];\n var regexp = isSearch ? m[4] : m[4] || (m[1] === '*' ? '[\\\\s\\\\S]*' : null);\n var makeRegexpType = function (str) {\n return inherit(paramTypes.type(isSearch ? 'query' : 'path'), {\n pattern: new RegExp(str, _this.config.caseInsensitive ? 'i' : undefined),\n });\n };\n return {\n id: id,\n regexp: regexp,\n segment: pattern.substring(last, m.index),\n type: !regexp ? null : paramTypes.type(regexp) || makeRegexpType(regexp),\n };\n };\n var details;\n var segment;\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = placeholder.exec(pattern))) {\n details = matchDetails(matchArray, false);\n if (details.segment.indexOf('?') >= 0)\n break; // we're into the search part\n checkParamErrors(details.id);\n this._params.push(paramFactory.fromPath(details.id, details.type, config.state));\n this._segments.push(details.segment);\n patterns.push([details.segment, tail(this._params)]);\n last = placeholder.lastIndex;\n }\n segment = pattern.substring(last);\n // Find any search parameter names and remove them from the last segment\n var i = segment.indexOf('?');\n if (i >= 0) {\n var search = segment.substring(i);\n segment = segment.substring(0, i);\n if (search.length > 0) {\n last = 0;\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = searchPlaceholder.exec(search))) {\n details = matchDetails(matchArray, true);\n checkParamErrors(details.id);\n this._params.push(paramFactory.fromSearch(details.id, details.type, config.state));\n last = placeholder.lastIndex;\n // check if ?&\n }\n }\n }\n this._segments.push(segment);\n this._compiled = patterns.map(function (_pattern) { return quoteRegExp.apply(null, _pattern); }).concat(quoteRegExp(segment));\n }\n /** @internal */\n UrlMatcher.encodeDashes = function (str) {\n // Replace dashes with encoded \"\\-\"\n return encodeURIComponent(str).replace(/-/g, function (c) { return \"%5C%\".concat(c.charCodeAt(0).toString(16).toUpperCase()); });\n };\n /** @internal Given a matcher, return an array with the matcher's path segments and path params, in order */\n UrlMatcher.pathSegmentsAndParams = function (matcher) {\n var staticSegments = matcher._segments;\n var pathParams = matcher._params.filter(function (p) { return p.location === DefType.PATH; });\n return arrayTuples(staticSegments, pathParams.concat(undefined))\n .reduce(unnestR, [])\n .filter(function (x) { return x !== '' && isDefined(x); });\n };\n /** @internal Given a matcher, return an array with the matcher's query params */\n UrlMatcher.queryParams = function (matcher) {\n return matcher._params.filter(function (p) { return p.location === DefType.SEARCH; });\n };\n /**\n * Compare two UrlMatchers\n *\n * This comparison function converts a UrlMatcher into static and dynamic path segments.\n * Each static path segment is a static string between a path separator (slash character).\n * Each dynamic segment is a path parameter.\n *\n * The comparison function sorts static segments before dynamic ones.\n */\n UrlMatcher.compare = function (a, b) {\n /**\n * Turn a UrlMatcher and all its parent matchers into an array\n * of slash literals '/', string literals, and Param objects\n *\n * This example matcher matches strings like \"/foo/:param/tail\":\n * var matcher = $umf.compile(\"/foo\").append($umf.compile(\"/:param\")).append($umf.compile(\"/\")).append($umf.compile(\"tail\"));\n * var result = segments(matcher); // [ '/', 'foo', '/', Param, '/', 'tail' ]\n *\n * Caches the result as `matcher._cache.segments`\n */\n var segments = function (matcher) {\n return (matcher._cache.segments =\n matcher._cache.segments ||\n matcher._cache.path\n .map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .reduce(joinNeighborsR, [])\n .map(function (x) { return (isString(x) ? splitOnSlash(x) : x); })\n .reduce(unnestR, []));\n };\n /**\n * Gets the sort weight for each segment of a UrlMatcher\n *\n * Caches the result as `matcher._cache.weights`\n */\n var weights = function (matcher) {\n return (matcher._cache.weights =\n matcher._cache.weights ||\n segments(matcher).map(function (segment) {\n // Sort slashes first, then static strings, the Params\n if (segment === '/')\n return 1;\n if (isString(segment))\n return 2;\n if (segment instanceof Param)\n return 3;\n }));\n };\n /**\n * Pads shorter array in-place (mutates)\n */\n var padArrays = function (l, r, padVal) {\n var len = Math.max(l.length, r.length);\n while (l.length < len)\n l.push(padVal);\n while (r.length < len)\n r.push(padVal);\n };\n var weightsA = weights(a), weightsB = weights(b);\n padArrays(weightsA, weightsB, 0);\n var _pairs = arrayTuples(weightsA, weightsB);\n var cmp, i;\n for (i = 0; i < _pairs.length; i++) {\n cmp = _pairs[i][0] - _pairs[i][1];\n if (cmp !== 0)\n return cmp;\n }\n return 0;\n };\n /**\n * Creates a new concatenated UrlMatcher\n *\n * Builds a new UrlMatcher by appending another UrlMatcher to this one.\n *\n * @param url A `UrlMatcher` instance to append as a child of the current `UrlMatcher`.\n */\n UrlMatcher.prototype.append = function (url) {\n this._children.push(url);\n url._cache = {\n path: this._cache.path.concat(url),\n parent: this,\n pattern: null,\n };\n return url;\n };\n /** @internal */\n UrlMatcher.prototype.isRoot = function () {\n return this._cache.path[0] === this;\n };\n /** Returns the input pattern string */\n UrlMatcher.prototype.toString = function () {\n return this.pattern;\n };\n UrlMatcher.prototype._getDecodedParamValue = function (value, param) {\n if (isDefined(value)) {\n if (this.config.decodeParams && !param.type.raw) {\n if (isArray(value)) {\n value = value.map(function (paramValue) { return decodeURIComponent(paramValue); });\n }\n else {\n value = decodeURIComponent(value);\n }\n }\n value = param.type.decode(value);\n }\n return param.value(value);\n };\n /**\n * Tests the specified url/path against this matcher.\n *\n * Tests if the given url matches this matcher's pattern, and returns an object containing the captured\n * parameter values. Returns null if the path does not match.\n *\n * The returned object contains the values\n * of any search parameters that are mentioned in the pattern, but their value may be null if\n * they are not present in `search`. This means that search parameters are always treated\n * as optional.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n * x: '1', q: 'hello'\n * });\n * // returns { id: 'bob', q: 'hello', r: null }\n * ```\n *\n * @param path The URL path to match, e.g. `$location.path()`.\n * @param search URL search parameters, e.g. `$location.search()`.\n * @param hash URL hash e.g. `$location.hash()`.\n * @param options\n *\n * @returns The captured parameter values.\n */\n UrlMatcher.prototype.exec = function (path, search, hash, options) {\n var _this = this;\n if (search === void 0) { search = {}; }\n if (options === void 0) { options = {}; }\n var match = memoizeTo(this._cache, 'pattern', function () {\n return new RegExp([\n '^',\n unnest(_this._cache.path.map(prop('_compiled'))).join(''),\n _this.config.strict === false ? '/?' : '',\n '$',\n ].join(''), _this.config.caseInsensitive ? 'i' : undefined);\n }).exec(path);\n if (!match)\n return null;\n // options = defaults(options, { isolate: false });\n var allParams = this.parameters(), pathParams = allParams.filter(function (param) { return !param.isSearch(); }), searchParams = allParams.filter(function (param) { return param.isSearch(); }), nPathSegments = this._cache.path.map(function (urlm) { return urlm._segments.length - 1; }).reduce(function (a, x) { return a + x; }), values = {};\n if (nPathSegments !== match.length - 1)\n throw new Error(\"Unbalanced capture group in route '\".concat(this.pattern, \"'\"));\n function decodePathArray(paramVal) {\n var reverseString = function (str) { return str.split('').reverse().join(''); };\n var unquoteDashes = function (str) { return str.replace(/\\\\-/g, '-'); };\n var split = reverseString(paramVal).split(/-(?!\\\\)/);\n var allReversed = map(split, reverseString);\n return map(allReversed, unquoteDashes).reverse();\n }\n for (var i = 0; i < nPathSegments; i++) {\n var param = pathParams[i];\n var value = match[i + 1];\n // if the param value matches a pre-replace pair, replace the value before decoding.\n for (var j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value)\n value = param.replace[j].to;\n }\n if (value && param.array === true)\n value = decodePathArray(value);\n values[param.id] = this._getDecodedParamValue(value, param);\n }\n searchParams.forEach(function (param) {\n var value = search[param.id];\n for (var j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value)\n value = param.replace[j].to;\n }\n values[param.id] = _this._getDecodedParamValue(value, param);\n });\n if (hash)\n values['#'] = hash;\n return values;\n };\n /**\n * @internal\n * Returns all the [[Param]] objects of all path and search parameters of this pattern in order of appearance.\n *\n * @returns {Array.} An array of [[Param]] objects. Must be treated as read-only. If the\n * pattern has no parameters, an empty array is returned.\n */\n UrlMatcher.prototype.parameters = function (opts) {\n if (opts === void 0) { opts = {}; }\n if (opts.inherit === false)\n return this._params;\n return unnest(this._cache.path.map(function (matcher) { return matcher._params; }));\n };\n /**\n * @internal\n * Returns a single parameter from this UrlMatcher by id\n *\n * @param id\n * @param opts\n * @returns {T|Param|any|boolean|UrlMatcher|null}\n */\n UrlMatcher.prototype.parameter = function (id, opts) {\n var _this = this;\n if (opts === void 0) { opts = {}; }\n var findParam = function () {\n for (var _i = 0, _a = _this._params; _i < _a.length; _i++) {\n var param = _a[_i];\n if (param.id === id)\n return param;\n }\n };\n var parent = this._cache.parent;\n return findParam() || (opts.inherit !== false && parent && parent.parameter(id, opts)) || null;\n };\n /**\n * Validates the input parameter values against this UrlMatcher\n *\n * Checks an object hash of parameters to validate their correctness according to the parameter\n * types of this `UrlMatcher`.\n *\n * @param params The object hash of parameters to validate.\n * @returns Returns `true` if `params` validates, otherwise `false`.\n */\n UrlMatcher.prototype.validates = function (params) {\n var validParamVal = function (param, val) { return !param || param.validates(val); };\n params = params || {};\n // I'm not sure why this checks only the param keys passed in, and not all the params known to the matcher\n var paramSchema = this.parameters().filter(function (paramDef) { return params.hasOwnProperty(paramDef.id); });\n return paramSchema.map(function (paramDef) { return validParamVal(paramDef, params[paramDef.id]); }).reduce(allTrueR, true);\n };\n /**\n * Given a set of parameter values, creates a URL from this UrlMatcher.\n *\n * Creates a URL that matches this pattern by substituting the specified values\n * for the path and search parameters.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n * // returns '/user/bob?q=yes'\n * ```\n *\n * @param values the values to substitute for the parameters in this pattern.\n * @returns the formatted URL (path and optionally search part).\n */\n UrlMatcher.prototype.format = function (values) {\n if (values === void 0) { values = {}; }\n // Build the full path of UrlMatchers (including all parent UrlMatchers)\n var urlMatchers = this._cache.path;\n // Extract all the static segments and Params (processed as ParamDetails)\n // into an ordered array\n var pathSegmentsAndParams = urlMatchers\n .map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .map(function (x) { return (isString(x) ? x : getDetails(x)); });\n // Extract the query params into a separate array\n var queryParams = urlMatchers\n .map(UrlMatcher.queryParams)\n .reduce(unnestR, [])\n .map(getDetails);\n var isInvalid = function (param) { return param.isValid === false; };\n if (pathSegmentsAndParams.concat(queryParams).filter(isInvalid).length) {\n return null;\n }\n /**\n * Given a Param, applies the parameter value, then returns detailed information about it\n */\n function getDetails(param) {\n // Normalize to typed value\n var value = param.value(values[param.id]);\n var isValid = param.validates(value);\n var isDefaultValue = param.isDefaultValue(value);\n // Check if we're in squash mode for the parameter\n var squash = isDefaultValue ? param.squash : false;\n // Allow the Parameter's Type to encode the value\n var encoded = param.type.encode(value);\n return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };\n }\n // Build up the path-portion from the list of static segments and parameters\n var pathString = pathSegmentsAndParams.reduce(function (acc, x) {\n // The element is a static segment (a raw string); just append it\n if (isString(x))\n return acc + x;\n // Otherwise, it's a ParamDetails.\n var squash = x.squash, encoded = x.encoded, param = x.param;\n // If squash is === true, try to remove a slash from the path\n if (squash === true)\n return acc.match(/\\/$/) ? acc.slice(0, -1) : acc;\n // If squash is a string, use the string for the param value\n if (isString(squash))\n return acc + squash;\n if (squash !== false)\n return acc; // ?\n if (encoded == null)\n return acc;\n // If this parameter value is an array, encode the value using encodeDashes\n if (isArray(encoded))\n return acc + map(encoded, UrlMatcher.encodeDashes).join('-');\n // If the parameter type is \"raw\", then do not encodeURIComponent\n if (param.raw)\n return acc + encoded;\n // Encode the value\n return acc + encodeURIComponent(encoded);\n }, '');\n // Build the query string by applying parameter values (array or regular)\n // then mapping to key=value, then flattening and joining using \"&\"\n var queryString = queryParams\n .map(function (paramDetails) {\n var param = paramDetails.param, squash = paramDetails.squash, encoded = paramDetails.encoded, isDefaultValue = paramDetails.isDefaultValue;\n if (encoded == null || (isDefaultValue && squash !== false))\n return;\n if (!isArray(encoded))\n encoded = [encoded];\n if (encoded.length === 0)\n return;\n if (!param.raw)\n encoded = map(encoded, encodeURIComponent);\n return encoded.map(function (val) { return \"\".concat(param.id, \"=\").concat(val); });\n })\n .filter(identity)\n .reduce(unnestR, [])\n .join('&');\n // Concat the pathstring with the queryString (if exists) and the hashString (if exists)\n return pathString + (queryString ? \"?\".concat(queryString) : '') + (values['#'] ? '#' + values['#'] : '');\n };\n /** @internal */\n UrlMatcher.nameValidator = /^\\w+([-.]+\\w+)*(?:\\[\\])?$/;\n return UrlMatcher;\n}());\nexport { UrlMatcher };\n","import { TargetState } from '../state';\nimport { UrlMatcher } from './urlMatcher';\nimport { is, isDefined, isFunction, isString, removeFrom, val } from '../common';\nimport { UrlRuleFactory } from './urlRule';\nvar prioritySort = function (a, b) { return (b.priority || 0) - (a.priority || 0); };\nvar typeSort = function (a, b) {\n var weights = { STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1 };\n return (weights[a.type] || 0) - (weights[b.type] || 0);\n};\nvar urlMatcherSort = function (a, b) {\n return !a.urlMatcher || !b.urlMatcher ? 0 : UrlMatcher.compare(a.urlMatcher, b.urlMatcher);\n};\nvar idSort = function (a, b) {\n // Identically sorted STATE and URLMATCHER best rule will be chosen by `matchPriority` after each rule matches the URL\n var useMatchPriority = { STATE: true, URLMATCHER: true };\n var equal = useMatchPriority[a.type] && useMatchPriority[b.type];\n return equal ? 0 : (a.$id || 0) - (b.$id || 0);\n};\n/**\n * Default rule priority sorting function.\n *\n * Sorts rules by:\n *\n * - Explicit priority (set rule priority using [[UrlRules.when]])\n * - Rule type (STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1)\n * - `UrlMatcher` specificity ([[UrlMatcher.compare]]): works for STATE and URLMATCHER types to pick the most specific rule.\n * - Rule registration order (for rule types other than STATE and URLMATCHER)\n * - Equally sorted State and UrlMatcher rules will each match the URL.\n * Then, the *best* match is chosen based on how many parameter values were matched.\n */\nvar defaultRuleSortFn;\ndefaultRuleSortFn = function (a, b) {\n var cmp = prioritySort(a, b);\n if (cmp !== 0)\n return cmp;\n cmp = typeSort(a, b);\n if (cmp !== 0)\n return cmp;\n cmp = urlMatcherSort(a, b);\n if (cmp !== 0)\n return cmp;\n return idSort(a, b);\n};\nfunction getHandlerFn(handler) {\n if (!isFunction(handler) && !isString(handler) && !is(TargetState)(handler) && !TargetState.isDef(handler)) {\n throw new Error(\"'handler' must be a string, function, TargetState, or have a state: 'newtarget' property\");\n }\n return isFunction(handler) ? handler : val(handler);\n}\n/**\n * API for managing URL rules\n *\n * This API is used to create and manage URL rules.\n * URL rules are a mechanism to respond to specific URL patterns.\n *\n * The most commonly used methods are [[otherwise]] and [[when]].\n *\n * This API is found at `router.urlService.rules` (see: [[UIRouter.urlService]], [[URLService.rules]])\n */\nvar UrlRules = /** @class */ (function () {\n /** @internal */\n function UrlRules(/** @internal */ router) {\n this.router = router;\n /** @internal */ this._sortFn = defaultRuleSortFn;\n /** @internal */ this._rules = [];\n /** @internal */ this._id = 0;\n this.urlRuleFactory = new UrlRuleFactory(router);\n }\n /** @internal */\n UrlRules.prototype.dispose = function (router) {\n this._rules = [];\n delete this._otherwiseFn;\n };\n /**\n * Defines the initial state, path, or behavior to use when the app starts.\n *\n * This rule defines the initial/starting state for the application.\n *\n * This rule is triggered the first time the URL is checked (when the app initially loads).\n * The rule is triggered only when the url matches either `\"\"` or `\"/\"`.\n *\n * Note: The rule is intended to be used when the root of the application is directly linked to.\n * When the URL is *not* `\"\"` or `\"/\"` and doesn't match other rules, the [[otherwise]] rule is triggered.\n * This allows 404-like behavior when an unknown URL is deep-linked.\n *\n * #### Example:\n * Start app at `home` state.\n * ```js\n * .initial({ state: 'home' });\n * ```\n *\n * #### Example:\n * Start app at `/home` (by url)\n * ```js\n * .initial('/home');\n * ```\n *\n * #### Example:\n * When no other url rule matches, go to `home` state\n * ```js\n * .initial((matchValue, url, router) => {\n * console.log('initial state');\n * return { state: 'home' };\n * })\n * ```\n *\n * @param handler The initial state or url path, or a function which returns the state or url path (or performs custom logic).\n */\n UrlRules.prototype.initial = function (handler) {\n var handlerFn = getHandlerFn(handler);\n var matchFn = function (urlParts, router) {\n return router.globals.transitionHistory.size() === 0 && !!/^\\/?$/.exec(urlParts.path);\n };\n this.rule(this.urlRuleFactory.create(matchFn, handlerFn));\n };\n /**\n * Defines the state, url, or behavior to use when no other rule matches the URL.\n *\n * This rule is matched when *no other rule* matches.\n * It is generally used to handle unknown URLs (similar to \"404\" behavior, but on the client side).\n *\n * - If `handler` a string, it is treated as a url redirect\n *\n * #### Example:\n * When no other url rule matches, redirect to `/index`\n * ```js\n * .otherwise('/index');\n * ```\n *\n * - If `handler` is an object with a `state` property, the state is activated.\n *\n * #### Example:\n * When no other url rule matches, redirect to `home` and provide a `dashboard` parameter value.\n * ```js\n * .otherwise({ state: 'home', params: { dashboard: 'default' } });\n * ```\n *\n * - If `handler` is a function, the function receives the current url ([[UrlParts]]) and the [[UIRouter]] object.\n * The function can perform actions, and/or return a value.\n *\n * #### Example:\n * When no other url rule matches, manually trigger a transition to the `home` state\n * ```js\n * .otherwise((matchValue, urlParts, router) => {\n * router.stateService.go('home');\n * });\n * ```\n *\n * #### Example:\n * When no other url rule matches, go to `home` state\n * ```js\n * .otherwise((matchValue, urlParts, router) => {\n * return { state: 'home' };\n * });\n * ```\n *\n * @param handler The url path to redirect to, or a function which returns the url path (or performs custom logic).\n */\n UrlRules.prototype.otherwise = function (handler) {\n var handlerFn = getHandlerFn(handler);\n this._otherwiseFn = this.urlRuleFactory.create(val(true), handlerFn);\n this._sorted = false;\n };\n /**\n * Remove a rule previously registered\n *\n * @param rule the matcher rule that was previously registered using [[rule]]\n */\n UrlRules.prototype.removeRule = function (rule) {\n removeFrom(this._rules, rule);\n };\n /**\n * Manually adds a URL Rule.\n *\n * Usually, a url rule is added using [[StateDeclaration.url]] or [[when]].\n * This api can be used directly for more control (to register a [[BaseUrlRule]], for example).\n * Rules can be created using [[urlRuleFactory]], or created manually as simple objects.\n *\n * A rule should have a `match` function which returns truthy if the rule matched.\n * It should also have a `handler` function which is invoked if the rule is the best match.\n *\n * @return a function that deregisters the rule\n */\n UrlRules.prototype.rule = function (rule) {\n var _this = this;\n if (!UrlRuleFactory.isUrlRule(rule))\n throw new Error('invalid rule');\n rule.$id = this._id++;\n rule.priority = rule.priority || 0;\n this._rules.push(rule);\n this._sorted = false;\n return function () { return _this.removeRule(rule); };\n };\n /**\n * Gets all registered rules\n *\n * @returns an array of all the registered rules\n */\n UrlRules.prototype.rules = function () {\n this.ensureSorted();\n return this._rules.concat(this._otherwiseFn ? [this._otherwiseFn] : []);\n };\n /**\n * Defines URL Rule priorities\n *\n * More than one rule ([[UrlRule]]) might match a given URL.\n * This `compareFn` is used to sort the rules by priority.\n * Higher priority rules should sort earlier.\n *\n * The [[defaultRuleSortFn]] is used by default.\n *\n * You only need to call this function once.\n * The `compareFn` will be used to sort the rules as each is registered.\n *\n * If called without any parameter, it will re-sort the rules.\n *\n * ---\n *\n * Url rules may come from multiple sources: states's urls ([[StateDeclaration.url]]), [[when]], and [[rule]].\n * Each rule has a (user-provided) [[UrlRule.priority]], a [[UrlRule.type]], and a [[UrlRule.$id]]\n * The `$id` is is the order in which the rule was registered.\n *\n * The sort function should use these data, or data found on a specific type\n * of [[UrlRule]] (such as [[StateRule.state]]), to order the rules as desired.\n *\n * #### Example:\n * This compare function prioritizes rules by the order in which the rules were registered.\n * A rule registered earlier has higher priority.\n *\n * ```js\n * function compareFn(a, b) {\n * return a.$id - b.$id;\n * }\n * ```\n *\n * @param compareFn a function that compares to [[UrlRule]] objects.\n * The `compareFn` should abide by the `Array.sort` compare function rules.\n * Given two rules, `a` and `b`, return a negative number if `a` should be higher priority.\n * Return a positive number if `b` should be higher priority.\n * Return `0` if the rules are identical.\n *\n * See the [mozilla reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description)\n * for details.\n */\n UrlRules.prototype.sort = function (compareFn) {\n var sorted = this.stableSort(this._rules, (this._sortFn = compareFn || this._sortFn));\n // precompute _sortGroup values and apply to each rule\n var group = 0;\n for (var i = 0; i < sorted.length; i++) {\n sorted[i]._group = group;\n if (i < sorted.length - 1 && this._sortFn(sorted[i], sorted[i + 1]) !== 0) {\n group++;\n }\n }\n this._rules = sorted;\n this._sorted = true;\n };\n /** @internal */\n UrlRules.prototype.ensureSorted = function () {\n this._sorted || this.sort();\n };\n /** @internal */\n UrlRules.prototype.stableSort = function (arr, compareFn) {\n var arrOfWrapper = arr.map(function (elem, idx) { return ({ elem: elem, idx: idx }); });\n arrOfWrapper.sort(function (wrapperA, wrapperB) {\n var cmpDiff = compareFn(wrapperA.elem, wrapperB.elem);\n return cmpDiff === 0 ? wrapperA.idx - wrapperB.idx : cmpDiff;\n });\n return arrOfWrapper.map(function (wrapper) { return wrapper.elem; });\n };\n /**\n * Registers a `matcher` and `handler` for custom URLs handling.\n *\n * The `matcher` can be:\n *\n * - a [[UrlMatcher]]: See: [[UrlMatcherFactory.compile]]\n * - a `string`: The string is compiled to a [[UrlMatcher]]\n * - a `RegExp`: The regexp is used to match the url.\n *\n * The `handler` can be:\n *\n * - a string: The url is redirected to the value of the string.\n * - a function: The url is redirected to the return value of the function.\n *\n * ---\n *\n * When the `handler` is a `string` and the `matcher` is a `UrlMatcher` (or string), the redirect\n * string is interpolated with parameter values.\n *\n * #### Example:\n * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n * ```js\n * .when(\"/foo/:param1\", \"/bar/:param1\")\n * ```\n *\n * ---\n *\n * When the `handler` is a string and the `matcher` is a `RegExp`, the redirect string is\n * interpolated with capture groups from the RegExp.\n *\n * #### Example:\n * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n * ```js\n * .when(new RegExp(\"^/foo/(.*)$\"), \"/bar/$1\");\n * ```\n *\n * ---\n *\n * When the handler is a function, it receives the matched value, the current URL, and the `UIRouter` object (See [[UrlRuleHandlerFn]]).\n * The \"matched value\" differs based on the `matcher`.\n * For [[UrlMatcher]]s, it will be the matched state params.\n * For `RegExp`, it will be the match array from `regexp.exec()`.\n *\n * If the handler returns a string, the URL is redirected to the string.\n *\n * #### Example:\n * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n * ```js\n * .when(new RegExp(\"^/foo/(.*)$\"), match => \"/bar/\" + match[1]);\n * ```\n *\n * Note: the `handler` may also invoke arbitrary code, such as `$state.go()`\n *\n * @param matcher A pattern `string` to match, compiled as a [[UrlMatcher]], or a `RegExp`.\n * @param handler The path to redirect to, or a function that returns the path.\n * @param options `{ priority: number }`\n *\n * @return the registered [[UrlRule]]\n */\n UrlRules.prototype.when = function (matcher, handler, options) {\n var rule = this.urlRuleFactory.create(matcher, handler);\n if (isDefined(options && options.priority))\n rule.priority = options.priority;\n this.rule(rule);\n return rule;\n };\n return UrlRules;\n}());\nexport { UrlRules };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { extend, forEach, isDefined, isFunction, isObject } from '../common';\nimport { UrlMatcher } from './urlMatcher';\nimport { DefType, Param } from '../params';\nvar ParamFactory = /** @class */ (function () {\n function ParamFactory(router) {\n this.router = router;\n }\n ParamFactory.prototype.fromConfig = function (id, type, state) {\n return new Param(id, type, DefType.CONFIG, this.router.urlService.config, state);\n };\n ParamFactory.prototype.fromPath = function (id, type, state) {\n return new Param(id, type, DefType.PATH, this.router.urlService.config, state);\n };\n ParamFactory.prototype.fromSearch = function (id, type, state) {\n return new Param(id, type, DefType.SEARCH, this.router.urlService.config, state);\n };\n return ParamFactory;\n}());\nexport { ParamFactory };\n/**\n * Factory for [[UrlMatcher]] instances.\n *\n * The factory is available to ng1 services as\n * `$urlMatcherFactory` or ng1 providers as `$urlMatcherFactoryProvider`.\n */\nvar UrlMatcherFactory = /** @class */ (function () {\n // TODO: move implementations to UrlConfig (urlService.config)\n function UrlMatcherFactory(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** Creates a new [[Param]] for a given location (DefType) */\n this.paramFactory = new ParamFactory(this.router);\n // TODO: Check if removal of this will break anything, then remove these\n this.UrlMatcher = UrlMatcher;\n this.Param = Param;\n /** @deprecated use [[UrlConfig.caseInsensitive]] */\n this.caseInsensitive = function (value) { return _this.router.urlService.config.caseInsensitive(value); };\n /** @deprecated use [[UrlConfig.defaultSquashPolicy]] */\n this.defaultSquashPolicy = function (value) { return _this.router.urlService.config.defaultSquashPolicy(value); };\n /** @deprecated use [[UrlConfig.strictMode]] */\n this.strictMode = function (value) { return _this.router.urlService.config.strictMode(value); };\n /** @deprecated use [[UrlConfig.type]] */\n this.type = function (name, definition, definitionFn) {\n return _this.router.urlService.config.type(name, definition, definitionFn) || _this;\n };\n }\n /**\n * Creates a [[UrlMatcher]] for the specified pattern.\n *\n * @param pattern The URL pattern.\n * @param config The config object hash.\n * @returns The UrlMatcher.\n */\n UrlMatcherFactory.prototype.compile = function (pattern, config) {\n var urlConfig = this.router.urlService.config;\n // backward-compatible support for config.params -> config.state.params\n var params = config && !config.state && config.params;\n config = params ? __assign({ state: { params: params } }, config) : config;\n var globalConfig = {\n strict: urlConfig._isStrictMode,\n caseInsensitive: urlConfig._isCaseInsensitive,\n decodeParams: urlConfig._decodeParams,\n };\n return new UrlMatcher(pattern, urlConfig.paramTypes, this.paramFactory, extend(globalConfig, config));\n };\n /**\n * Returns true if the specified object is a [[UrlMatcher]], or false otherwise.\n *\n * @param object The object to perform the type check against.\n * @returns `true` if the object matches the `UrlMatcher` interface, by\n * implementing all the same methods.\n */\n UrlMatcherFactory.prototype.isMatcher = function (object) {\n // TODO: typeof?\n if (!isObject(object))\n return false;\n var result = true;\n forEach(UrlMatcher.prototype, function (val, name) {\n if (isFunction(val))\n result = result && isDefined(object[name]) && isFunction(object[name]);\n });\n return result;\n };\n /** @internal */\n UrlMatcherFactory.prototype.$get = function () {\n var urlConfig = this.router.urlService.config;\n urlConfig.paramTypes.enqueue = false;\n urlConfig.paramTypes._flushTypeQueue();\n return this;\n };\n return UrlMatcherFactory;\n}());\nexport { UrlMatcherFactory };\n","import { UrlMatcher } from './urlMatcher';\nimport { isString, isDefined, isFunction } from '../common/predicates';\nimport { identity, extend } from '../common/common';\nimport { is, or, pattern } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\n/**\n * Creates a [[UrlRule]]\n *\n * Creates a [[UrlRule]] from a:\n *\n * - `string`\n * - [[UrlMatcher]]\n * - `RegExp`\n * - [[StateObject]]\n */\nvar UrlRuleFactory = /** @class */ (function () {\n function UrlRuleFactory(router) {\n this.router = router;\n }\n UrlRuleFactory.prototype.compile = function (str) {\n return this.router.urlMatcherFactory.compile(str);\n };\n UrlRuleFactory.prototype.create = function (what, handler) {\n var _this = this;\n var isState = StateObject.isState, isStateDeclaration = StateObject.isStateDeclaration;\n var makeRule = pattern([\n [isString, function (_what) { return makeRule(_this.compile(_what)); }],\n [is(UrlMatcher), function (_what) { return _this.fromUrlMatcher(_what, handler); }],\n [or(isState, isStateDeclaration), function (_what) { return _this.fromState(_what, _this.router); }],\n [is(RegExp), function (_what) { return _this.fromRegExp(_what, handler); }],\n [isFunction, function (_what) { return new BaseUrlRule(_what, handler); }],\n ]);\n var rule = makeRule(what);\n if (!rule)\n throw new Error(\"invalid 'what' in when()\");\n return rule;\n };\n /**\n * A UrlRule which matches based on a UrlMatcher\n *\n * The `handler` may be either a `string`, a [[UrlRuleHandlerFn]] or another [[UrlMatcher]]\n *\n * ## Handler as a function\n *\n * If `handler` is a function, the function is invoked with:\n *\n * - matched parameter values ([[RawParams]] from [[UrlMatcher.exec]])\n * - url: the current Url ([[UrlParts]])\n * - router: the router object ([[UIRouter]])\n *\n * #### Example:\n * ```js\n * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n * var rule = factory.fromUrlMatcher(urlMatcher, match => \"/home/\" + match.fooId + \"/\" + match.barId);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match); // '/home/123/456'\n * ```\n *\n * ## Handler as UrlMatcher\n *\n * If `handler` is a UrlMatcher, the handler matcher is used to create the new url.\n * The `handler` UrlMatcher is formatted using the matched param from the first matcher.\n * The url is replaced with the result.\n *\n * #### Example:\n * ```js\n * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n * var handler = $umf.compile(\"/home/:fooId/:barId\");\n * var rule = factory.fromUrlMatcher(urlMatcher, handler);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match); // '/home/123/456'\n * ```\n */\n UrlRuleFactory.prototype.fromUrlMatcher = function (urlMatcher, handler) {\n var _handler = handler;\n if (isString(handler))\n handler = this.router.urlMatcherFactory.compile(handler);\n if (is(UrlMatcher)(handler))\n _handler = function (match) { return handler.format(match); };\n function matchUrlParamters(url) {\n var params = urlMatcher.exec(url.path, url.search, url.hash);\n return urlMatcher.validates(params) && params;\n }\n // Prioritize URLs, lowest to highest:\n // - Some optional URL parameters, but none matched\n // - No optional parameters in URL\n // - Some optional parameters, some matched\n // - Some optional parameters, all matched\n function matchPriority(params) {\n var optional = urlMatcher.parameters().filter(function (param) { return param.isOptional; });\n if (!optional.length)\n return 0.000001;\n var matched = optional.filter(function (param) { return params[param.id]; });\n return matched.length / optional.length;\n }\n var details = { urlMatcher: urlMatcher, matchPriority: matchPriority, type: 'URLMATCHER' };\n return extend(new BaseUrlRule(matchUrlParamters, _handler), details);\n };\n /**\n * A UrlRule which matches a state by its url\n *\n * #### Example:\n * ```js\n * var rule = factory.fromState($state.get('foo'), router);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match);\n * // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }\n * ```\n */\n UrlRuleFactory.prototype.fromState = function (stateOrDecl, router) {\n var state = StateObject.isStateDeclaration(stateOrDecl) ? stateOrDecl.$$state() : stateOrDecl;\n /**\n * Handles match by transitioning to matched state\n *\n * First checks if the router should start a new transition.\n * A new transition is not required if the current state's URL\n * and the new URL are already identical\n */\n var handler = function (match) {\n var $state = router.stateService;\n var globals = router.globals;\n if ($state.href(state, match) !== $state.href(globals.current, globals.params)) {\n $state.transitionTo(state, match, { inherit: true, source: 'url' });\n }\n };\n var details = { state: state, type: 'STATE' };\n return extend(this.fromUrlMatcher(state.url, handler), details);\n };\n /**\n * A UrlRule which matches based on a regular expression\n *\n * The `handler` may be either a [[UrlRuleHandlerFn]] or a string.\n *\n * ## Handler as a function\n *\n * If `handler` is a function, the function is invoked with:\n *\n * - regexp match array (from `regexp`)\n * - url: the current Url ([[UrlParts]])\n * - router: the router object ([[UIRouter]])\n *\n * #### Example:\n * ```js\n * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, match => \"/home/\" + match[1])\n * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n * var result = rule.handler(match); // '/home/bar'\n * ```\n *\n * ## Handler as string\n *\n * If `handler` is a string, the url is *replaced by the string* when the Rule is invoked.\n * The string is first interpolated using `string.replace()` style pattern.\n *\n * #### Example:\n * ```js\n * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, \"/home/$1\")\n * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n * var result = rule.handler(match); // '/home/bar'\n * ```\n */\n UrlRuleFactory.prototype.fromRegExp = function (regexp, handler) {\n if (regexp.global || regexp.sticky)\n throw new Error('Rule RegExp must not be global or sticky');\n /**\n * If handler is a string, the url will be replaced by the string.\n * If the string has any String.replace() style variables in it (like `$2`),\n * they will be replaced by the captures from [[match]]\n */\n var redirectUrlTo = function (match) {\n // Interpolates matched values into $1 $2, etc using a String.replace()-style pattern\n return handler.replace(/\\$(\\$|\\d{1,2})/, function (m, what) { return match[what === '$' ? 0 : Number(what)]; });\n };\n var _handler = isString(handler) ? redirectUrlTo : handler;\n var matchParamsFromRegexp = function (url) { return regexp.exec(url.path); };\n var details = { regexp: regexp, type: 'REGEXP' };\n return extend(new BaseUrlRule(matchParamsFromRegexp, _handler), details);\n };\n UrlRuleFactory.isUrlRule = function (obj) { return obj && ['type', 'match', 'handler'].every(function (key) { return isDefined(obj[key]); }); };\n return UrlRuleFactory;\n}());\nexport { UrlRuleFactory };\n/**\n * A base rule which calls `match`\n *\n * The value from the `match` function is passed through to the `handler`.\n * @internal\n */\nvar BaseUrlRule = /** @class */ (function () {\n function BaseUrlRule(match, handler) {\n var _this = this;\n this.match = match;\n this.type = 'RAW';\n this.matchPriority = function (match) { return 0 - _this.$id; };\n this.handler = handler || identity;\n }\n return BaseUrlRule;\n}());\nexport { BaseUrlRule };\n","import { stripLastPathElement } from '../common';\nimport { UrlRuleFactory } from './urlRule';\nfunction appendBasePath(url, isHtml5, absolute, baseHref) {\n if (baseHref === '/')\n return url;\n if (isHtml5)\n return stripLastPathElement(baseHref) + url;\n if (absolute)\n return baseHref.slice(1) + url;\n return url;\n}\n/**\n * Updates URL and responds to URL changes\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRules]] which can be found as [[UrlService.rules]].\n */\nvar UrlRouter = /** @class */ (function () {\n /** @internal */\n function UrlRouter(/** @internal */ router) {\n var _this = this;\n this.router = router;\n // Delegate these calls to [[UrlService]]\n /** @deprecated use [[UrlService.sync]]*/\n this.sync = function (evt) { return _this.router.urlService.sync(evt); };\n /** @deprecated use [[UrlService.listen]]*/\n this.listen = function (enabled) { return _this.router.urlService.listen(enabled); };\n /** @deprecated use [[UrlService.deferIntercept]]*/\n this.deferIntercept = function (defer) { return _this.router.urlService.deferIntercept(defer); };\n /** @deprecated use [[UrlService.match]]*/\n this.match = function (urlParts) { return _this.router.urlService.match(urlParts); };\n // Delegate these calls to [[UrlRules]]\n /** @deprecated use [[UrlRules.initial]]*/\n this.initial = function (handler) {\n return _this.router.urlService.rules.initial(handler);\n };\n /** @deprecated use [[UrlRules.otherwise]]*/\n this.otherwise = function (handler) {\n return _this.router.urlService.rules.otherwise(handler);\n };\n /** @deprecated use [[UrlRules.removeRule]]*/\n this.removeRule = function (rule) { return _this.router.urlService.rules.removeRule(rule); };\n /** @deprecated use [[UrlRules.rule]]*/\n this.rule = function (rule) { return _this.router.urlService.rules.rule(rule); };\n /** @deprecated use [[UrlRules.rules]]*/\n this.rules = function () { return _this.router.urlService.rules.rules(); };\n /** @deprecated use [[UrlRules.sort]]*/\n this.sort = function (compareFn) { return _this.router.urlService.rules.sort(compareFn); };\n /** @deprecated use [[UrlRules.when]]*/\n this.when = function (matcher, handler, options) { return _this.router.urlService.rules.when(matcher, handler, options); };\n this.urlRuleFactory = new UrlRuleFactory(router);\n }\n /** Internal API. */\n UrlRouter.prototype.update = function (read) {\n var $url = this.router.locationService;\n if (read) {\n this.location = $url.url();\n return;\n }\n if ($url.url() === this.location)\n return;\n $url.url(this.location, true);\n };\n /**\n * Internal API.\n *\n * Pushes a new location to the browser history.\n *\n * @internal\n * @param urlMatcher\n * @param params\n * @param options\n */\n UrlRouter.prototype.push = function (urlMatcher, params, options) {\n var replace = options && !!options.replace;\n this.router.urlService.url(urlMatcher.format(params || {}), replace);\n };\n /**\n * Builds and returns a URL with interpolated parameters\n *\n * #### Example:\n * ```js\n * matcher = $umf.compile(\"/about/:person\");\n * params = { person: \"bob\" };\n * $bob = $urlRouter.href(matcher, params);\n * // $bob == \"/about/bob\";\n * ```\n *\n * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate.\n * @param params An object of parameter values to fill the matcher's required parameters.\n * @param options Options object. The options are:\n *\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n *\n * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n */\n UrlRouter.prototype.href = function (urlMatcher, params, options) {\n var url = urlMatcher.format(params);\n if (url == null)\n return null;\n options = options || { absolute: false };\n var cfg = this.router.urlService.config;\n var isHtml5 = cfg.html5Mode();\n if (!isHtml5 && url !== null) {\n url = '#' + cfg.hashPrefix() + url;\n }\n url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref());\n if (!options.absolute || !url) {\n return url;\n }\n var slash = !isHtml5 && url ? '/' : '';\n var cfgPort = cfg.port();\n var port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort);\n return [cfg.protocol(), '://', cfg.host(), port, slash, url].join('');\n };\n Object.defineProperty(UrlRouter.prototype, \"interceptDeferred\", {\n /** @deprecated use [[UrlService.interceptDeferred]]*/\n get: function () {\n return this.router.urlService.interceptDeferred;\n },\n enumerable: false,\n configurable: true\n });\n return UrlRouter;\n}());\nexport { UrlRouter };\n","import { equals, applyPairs, removeFrom, inArray, find } from '../common/common';\nimport { curry, prop } from '../common/hof';\nimport { isString, isArray } from '../common/predicates';\nimport { trace } from '../common/trace';\n/**\n * The View service\n *\n * This service pairs existing `ui-view` components (which live in the DOM)\n * with view configs (from the state declaration objects: [[StateDeclaration.views]]).\n *\n * - After a successful Transition, the views from the newly entered states are activated via [[activateViewConfig]].\n * The views from exited states are deactivated via [[deactivateViewConfig]].\n * (See: the [[registerActivateViews]] Transition Hook)\n *\n * - As `ui-view` components pop in and out of existence, they register themselves using [[registerUIView]].\n *\n * - When the [[sync]] function is called, the registered `ui-view`(s) ([[ActiveUIView]])\n * are configured with the matching [[ViewConfig]](s)\n *\n */\nvar ViewService = /** @class */ (function () {\n /** @internal */\n function ViewService(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** @internal */ this._uiViews = [];\n /** @internal */ this._viewConfigs = [];\n /** @internal */ this._viewConfigFactories = {};\n /** @internal */ this._listeners = [];\n /** @internal */\n this._pluginapi = {\n _rootViewContext: this._rootViewContext.bind(this),\n _viewConfigFactory: this._viewConfigFactory.bind(this),\n _registeredUIView: function (id) { return find(_this._uiViews, function (view) { return \"\".concat(_this.router.$id, \".\").concat(view.id) === id; }); },\n _registeredUIViews: function () { return _this._uiViews; },\n _activeViewConfigs: function () { return _this._viewConfigs; },\n _onSync: function (listener) {\n _this._listeners.push(listener);\n return function () { return removeFrom(_this._listeners, listener); };\n },\n };\n }\n /**\n * Normalizes a view's name from a state.views configuration block.\n *\n * This should be used by a framework implementation to calculate the values for\n * [[_ViewDeclaration.$uiViewName]] and [[_ViewDeclaration.$uiViewContextAnchor]].\n *\n * @param context the context object (state declaration) that the view belongs to\n * @param rawViewName the name of the view, as declared in the [[StateDeclaration.views]]\n *\n * @returns the normalized uiViewName and uiViewContextAnchor that the view targets\n */\n ViewService.normalizeUIViewTarget = function (context, rawViewName) {\n if (rawViewName === void 0) { rawViewName = ''; }\n // TODO: Validate incoming view name with a regexp to allow:\n // ex: \"view.name@foo.bar\" , \"^.^.view.name\" , \"view.name@^.^\" , \"\" ,\n // \"@\" , \"$default@^\" , \"!$default.$default\" , \"!foo.bar\"\n var viewAtContext = rawViewName.split('@');\n var uiViewName = viewAtContext[0] || '$default'; // default to unnamed view\n var uiViewContextAnchor = isString(viewAtContext[1]) ? viewAtContext[1] : '^'; // default to parent context\n // Handle relative view-name sugar syntax.\n // Matches rawViewName \"^.^.^.foo.bar\" into array: [\"^.^.^.foo.bar\", \"^.^.^\", \"foo.bar\"],\n var relativeViewNameSugar = /^(\\^(?:\\.\\^)*)\\.(.*$)/.exec(uiViewName);\n if (relativeViewNameSugar) {\n // Clobbers existing contextAnchor (rawViewName validation will fix this)\n uiViewContextAnchor = relativeViewNameSugar[1]; // set anchor to \"^.^.^\"\n uiViewName = relativeViewNameSugar[2]; // set view-name to \"foo.bar\"\n }\n if (uiViewName.charAt(0) === '!') {\n uiViewName = uiViewName.substr(1);\n uiViewContextAnchor = ''; // target absolutely from root\n }\n // handle parent relative targeting \"^.^.^\"\n var relativeMatch = /^(\\^(?:\\.\\^)*)$/;\n if (relativeMatch.exec(uiViewContextAnchor)) {\n var anchorState = uiViewContextAnchor.split('.').reduce(function (anchor, x) { return anchor.parent; }, context);\n uiViewContextAnchor = anchorState.name;\n }\n else if (uiViewContextAnchor === '.') {\n uiViewContextAnchor = context.name;\n }\n return { uiViewName: uiViewName, uiViewContextAnchor: uiViewContextAnchor };\n };\n /** @internal */\n ViewService.prototype._rootViewContext = function (context) {\n return (this._rootContext = context || this._rootContext);\n };\n /** @internal */\n ViewService.prototype._viewConfigFactory = function (viewType, factory) {\n this._viewConfigFactories[viewType] = factory;\n };\n ViewService.prototype.createViewConfig = function (path, decl) {\n var cfgFactory = this._viewConfigFactories[decl.$type];\n if (!cfgFactory)\n throw new Error('ViewService: No view config factory registered for type ' + decl.$type);\n var cfgs = cfgFactory(path, decl);\n return isArray(cfgs) ? cfgs : [cfgs];\n };\n /**\n * Deactivates a ViewConfig.\n *\n * This function deactivates a `ViewConfig`.\n * After calling [[sync]], it will un-pair from any `ui-view` with which it is currently paired.\n *\n * @param viewConfig The ViewConfig view to deregister.\n */\n ViewService.prototype.deactivateViewConfig = function (viewConfig) {\n trace.traceViewServiceEvent('<- Removing', viewConfig);\n removeFrom(this._viewConfigs, viewConfig);\n };\n ViewService.prototype.activateViewConfig = function (viewConfig) {\n trace.traceViewServiceEvent('-> Registering', viewConfig);\n this._viewConfigs.push(viewConfig);\n };\n ViewService.prototype.sync = function () {\n var _this = this;\n var uiViewsByFqn = this._uiViews.map(function (uiv) { return [uiv.fqn, uiv]; }).reduce(applyPairs, {});\n // Return a weighted depth value for a uiView.\n // The depth is the nesting depth of ui-views (based on FQN; times 10,000)\n // plus the depth of the state that is populating the uiView\n function uiViewDepth(uiView) {\n var stateDepth = function (context) { return (context && context.parent ? stateDepth(context.parent) + 1 : 1); };\n return uiView.fqn.split('.').length * 10000 + stateDepth(uiView.creationContext);\n }\n // Return the ViewConfig's context's depth in the context tree.\n function viewConfigDepth(config) {\n var context = config.viewDecl.$context, count = 0;\n while (++count && context.parent)\n context = context.parent;\n return count;\n }\n // Given a depth function, returns a compare function which can return either ascending or descending order\n var depthCompare = curry(function (depthFn, posNeg, left, right) { return posNeg * (depthFn(left) - depthFn(right)); });\n var matchingConfigPair = function (uiView) {\n var matchingConfigs = _this._viewConfigs.filter(ViewService.matches(uiViewsByFqn, uiView));\n if (matchingConfigs.length > 1) {\n // This is OK. Child states can target a ui-view that the parent state also targets (the child wins)\n // Sort by depth and return the match from the deepest child\n // console.log(`Multiple matching view configs for ${uiView.fqn}`, matchingConfigs);\n matchingConfigs.sort(depthCompare(viewConfigDepth, -1)); // descending\n }\n return { uiView: uiView, viewConfig: matchingConfigs[0] };\n };\n var configureUIView = function (tuple) {\n // If a parent ui-view is reconfigured, it could destroy child ui-views.\n // Before configuring a child ui-view, make sure it's still in the active uiViews array.\n if (_this._uiViews.indexOf(tuple.uiView) !== -1)\n tuple.uiView.configUpdated(tuple.viewConfig);\n };\n // Sort views by FQN and state depth. Process uiviews nearest the root first.\n var uiViewTuples = this._uiViews.sort(depthCompare(uiViewDepth, 1)).map(matchingConfigPair);\n var matchedViewConfigs = uiViewTuples.map(function (tuple) { return tuple.viewConfig; });\n var unmatchedConfigTuples = this._viewConfigs\n .filter(function (config) { return !inArray(matchedViewConfigs, config); })\n .map(function (viewConfig) { return ({ uiView: undefined, viewConfig: viewConfig }); });\n uiViewTuples.forEach(configureUIView);\n var allTuples = uiViewTuples.concat(unmatchedConfigTuples);\n this._listeners.forEach(function (cb) { return cb(allTuples); });\n trace.traceViewSync(allTuples);\n };\n /**\n * Registers a `ui-view` component\n *\n * When a `ui-view` component is created, it uses this method to register itself.\n * After registration the [[sync]] method is used to ensure all `ui-view` are configured with the proper [[ViewConfig]].\n *\n * Note: the `ui-view` component uses the `ViewConfig` to determine what view should be loaded inside the `ui-view`,\n * and what the view's state context is.\n *\n * Note: There is no corresponding `deregisterUIView`.\n * A `ui-view` should hang on to the return value of `registerUIView` and invoke it to deregister itself.\n *\n * @param uiView The metadata for a UIView\n * @return a de-registration function used when the view is destroyed.\n */\n ViewService.prototype.registerUIView = function (uiView) {\n trace.traceViewServiceUIViewEvent('-> Registering', uiView);\n var uiViews = this._uiViews;\n var fqnAndTypeMatches = function (uiv) { return uiv.fqn === uiView.fqn && uiv.$type === uiView.$type; };\n if (uiViews.filter(fqnAndTypeMatches).length)\n trace.traceViewServiceUIViewEvent('!!!! duplicate uiView named:', uiView);\n uiViews.push(uiView);\n this.sync();\n return function () {\n var idx = uiViews.indexOf(uiView);\n if (idx === -1) {\n trace.traceViewServiceUIViewEvent('Tried removing non-registered uiView', uiView);\n return;\n }\n trace.traceViewServiceUIViewEvent('<- Deregistering', uiView);\n removeFrom(uiViews)(uiView);\n };\n };\n /**\n * Returns the list of views currently available on the page, by fully-qualified name.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n ViewService.prototype.available = function () {\n return this._uiViews.map(prop('fqn'));\n };\n /**\n * Returns the list of views on the page containing loaded content.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n ViewService.prototype.active = function () {\n return this._uiViews.filter(prop('$config')).map(prop('name'));\n };\n /**\n * Given a ui-view and a ViewConfig, determines if they \"match\".\n *\n * A ui-view has a fully qualified name (fqn) and a context object. The fqn is built from its overall location in\n * the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.\n *\n * A ViewConfig has a target ui-view name and a context anchor. The ui-view name can be a simple name, or\n * can be a segmented ui-view path, describing a portion of a ui-view fqn.\n *\n * In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type\n *\n * If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:\n * - the ui-view's name matches the ViewConfig's target name\n * - the ui-view's context matches the ViewConfig's anchor\n *\n * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:\n * - There exists a parent ui-view where:\n * - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name\n * - the parent ui-view's context matches the ViewConfig's anchor\n * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn\n *\n * Example:\n *\n * DOM:\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * uiViews: [\n * { fqn: \"$default\", creationContext: { name: \"\" } },\n * { fqn: \"$default.foo\", creationContext: { name: \"A\" } },\n * { fqn: \"$default.foo.$default\", creationContext: { name: \"A.B\" } }\n * { fqn: \"$default.foo.$default.bar\", creationContext: { name: \"A.B.C\" } }\n * ]\n *\n * These four view configs all match the ui-view with the fqn: \"$default.foo.$default.bar\":\n *\n * - ViewConfig1: { uiViewName: \"bar\", uiViewContextAnchor: \"A.B.C\" }\n * - ViewConfig2: { uiViewName: \"$default.bar\", uiViewContextAnchor: \"A.B\" }\n * - ViewConfig3: { uiViewName: \"foo.$default.bar\", uiViewContextAnchor: \"A\" }\n * - ViewConfig4: { uiViewName: \"$default.foo.$default.bar\", uiViewContextAnchor: \"\" }\n *\n * Using ViewConfig3 as an example, it matches the ui-view with fqn \"$default.foo.$default.bar\" because:\n * - The ViewConfig's segmented target name is: [ \"foo\", \"$default\", \"bar\" ]\n * - There exists a parent ui-view (which has fqn: \"$default.foo\") where:\n * - the parent ui-view's name \"foo\" matches the first segment \"foo\" of the ViewConfig's target name\n * - the parent ui-view's context \"A\" matches the ViewConfig's anchor context \"A\"\n * - And the remaining segments [ \"$default\", \"bar\" ].join(\".\"_ of the ViewConfig's target name match\n * the tail of the ui-view's fqn \"default.bar\"\n *\n * @internal\n */\n ViewService.matches = function (uiViewsByFqn, uiView) { return function (viewConfig) {\n // Don't supply an ng1 ui-view with an ng2 ViewConfig, etc\n if (uiView.$type !== viewConfig.viewDecl.$type)\n return false;\n // Split names apart from both viewConfig and uiView into segments\n var vc = viewConfig.viewDecl;\n var vcSegments = vc.$uiViewName.split('.');\n var uivSegments = uiView.fqn.split('.');\n // Check if the tails of the segment arrays match. ex, these arrays' tails match:\n // vc: [\"foo\", \"bar\"], uiv fqn: [\"$default\", \"foo\", \"bar\"]\n if (!equals(vcSegments, uivSegments.slice(0 - vcSegments.length)))\n return false;\n // Now check if the fqn ending at the first segment of the viewConfig matches the context:\n // [\"$default\", \"foo\"].join(\".\") == \"$default.foo\", does the ui-view $default.foo context match?\n var negOffset = 1 - vcSegments.length || undefined;\n var fqnToFirstSegment = uivSegments.slice(0, negOffset).join('.');\n var uiViewContext = uiViewsByFqn[fqnToFirstSegment].creationContext;\n return vc.$uiViewContextAnchor === (uiViewContext && uiViewContext.name);\n }; };\n return ViewService;\n}());\nexport { ViewService };\n","import { StateParams } from './params/stateParams';\nimport { Queue } from './common/queue';\n/**\n * Global router state\n *\n * This is where we hold the global mutable state such as current state, current\n * params, current transition, etc.\n */\nvar UIRouterGlobals = /** @class */ (function () {\n function UIRouterGlobals() {\n /**\n * Current parameter values\n *\n * The parameter values from the latest successful transition\n */\n this.params = new StateParams();\n /** @internal */\n this.lastStartedTransitionId = -1;\n /** @internal */\n this.transitionHistory = new Queue([], 1);\n /** @internal */\n this.successfulTransitions = new Queue([], 1);\n }\n UIRouterGlobals.prototype.dispose = function () {\n this.transitionHistory.clear();\n this.successfulTransitions.clear();\n this.transition = null;\n };\n return UIRouterGlobals;\n}());\nexport { UIRouterGlobals };\n","import { ParamTypes } from '../params';\nimport { isDefined, isString } from '../common';\n/**\n * An API to customize the URL behavior and retrieve URL configuration\n *\n * This API is used to customize the behavior of the URL.\n * This includes optional trailing slashes ([[strictMode]]), case sensitivity ([[caseInsensitive]]),\n * and custom parameter encoding (custom [[type]]).\n *\n * It also has information about the location (url) configuration such as [[port]] and [[baseHref]].\n * This information can be used to build absolute URLs, such as\n * `https://example.com:443/basepath/state/substate?param1=a#hashvalue`;\n *\n * This API is found at `router.urlService.config` (see: [[UIRouter.urlService]], [[URLService.config]])\n */\nvar UrlConfig = /** @class */ (function () {\n /** @internal */ function UrlConfig(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** @internal */ this.paramTypes = new ParamTypes();\n /** @internal */ this._decodeParams = true;\n /** @internal */ this._isCaseInsensitive = false;\n /** @internal */ this._isStrictMode = true;\n /** @internal */ this._defaultSquashPolicy = false;\n /** @internal */ this.dispose = function () { return _this.paramTypes.dispose(); };\n // Delegate these calls to the current LocationConfig implementation\n /**\n * Gets the base Href, e.g., `http://localhost/approot/`\n *\n * @return the application's base href\n */\n this.baseHref = function () { return _this.router.locationConfig.baseHref(); };\n /**\n * Gets or sets the hashPrefix\n *\n * This only applies when not running in [[html5Mode]] (pushstate mode)\n *\n * If the current url is `http://localhost/app#!/uirouter/path/#anchor`, it returns `!` which is the prefix for the \"hashbang\" portion.\n *\n * @return the hash prefix\n */\n this.hashPrefix = function (newprefix) { return _this.router.locationConfig.hashPrefix(newprefix); };\n /**\n * Gets the host, e.g., `localhost`\n *\n * @return the protocol\n */\n this.host = function () { return _this.router.locationConfig.host(); };\n /**\n * Returns true when running in pushstate mode\n *\n * @return true when running in html5 mode (pushstate mode).\n */\n this.html5Mode = function () { return _this.router.locationConfig.html5Mode(); };\n /**\n * Gets the port, e.g., `80`\n *\n * @return the port number\n */\n this.port = function () { return _this.router.locationConfig.port(); };\n /**\n * Gets the protocol, e.g., `http`\n *\n * @return the protocol\n */\n this.protocol = function () { return _this.router.locationConfig.protocol(); };\n }\n /**\n * Defines whether URL matching should be case sensitive (the default behavior), or not.\n *\n * #### Example:\n * ```js\n * // Allow case insensitive url matches\n * urlService.config.caseInsensitive(true);\n * ```\n *\n * @param value `false` to match URL in a case sensitive manner; otherwise `true`;\n * @returns the current value of caseInsensitive\n */\n UrlConfig.prototype.caseInsensitive = function (value) {\n return (this._isCaseInsensitive = isDefined(value) ? value : this._isCaseInsensitive);\n };\n /**\n * Sets the default behavior when generating or matching URLs with default parameter values.\n *\n * #### Example:\n * ```js\n * // Remove default parameter values from the url\n * urlService.config.defaultSquashPolicy(true);\n * ```\n *\n * @param value A string that defines the default parameter URL squashing behavior.\n * - `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL\n * - `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the\n * parameter is surrounded by slashes, squash (remove) one slash from the URL\n * - any other string, e.g. \"~\": When generating an href with a default parameter value, squash (remove)\n * the parameter value from the URL and replace it with this string.\n * @returns the current value of defaultSquashPolicy\n */\n UrlConfig.prototype.defaultSquashPolicy = function (value) {\n if (isDefined(value) && value !== true && value !== false && !isString(value))\n throw new Error(\"Invalid squash policy: \".concat(value, \". Valid policies: false, true, arbitrary-string\"));\n return (this._defaultSquashPolicy = isDefined(value) ? value : this._defaultSquashPolicy);\n };\n /**\n * Defines whether URLs should match trailing slashes, or not (the default behavior).\n *\n * #### Example:\n * ```js\n * // Allow optional trailing slashes\n * urlService.config.strictMode(false);\n * ```\n *\n * @param value `false` to match trailing slashes in URLs, otherwise `true`.\n * @returns the current value of strictMode\n */\n UrlConfig.prototype.strictMode = function (value) {\n return (this._isStrictMode = isDefined(value) ? value : this._isStrictMode);\n };\n /**\n * Creates and registers a custom [[ParamType]] object\n *\n * A custom parameter type can be used to generate URLs with typed parameters or custom encoding/decoding.\n *\n * #### Note: Register custom types *before using them* in a state definition.\n *\n * #### Example:\n * ```js\n * // Encode object parameter as JSON string\n * urlService.config.type('myjson', {\n * encode: (obj) => JSON.stringify(obj),\n * decode: (str) => JSON.parse(str),\n * is: (val) => typeof(val) === 'object',\n * pattern: /[^/]+/,\n * equals: (a, b) => _.isEqual(a, b),\n * });\n * ```\n *\n * See [[ParamTypeDefinition]] for more examples\n *\n * @param name The type name.\n * @param definition The type definition. See [[ParamTypeDefinition]] for information on the values accepted.\n * @param definitionFn A function that is injected before the app runtime starts.\n * The result of this function should be a [[ParamTypeDefinition]].\n * The result is merged into the existing `definition`.\n * See [[ParamType]] for information on the values accepted.\n *\n * @returns if only the `name` parameter was specified: the currently registered [[ParamType]] object, or undefined\n */\n UrlConfig.prototype.type = function (name, definition, definitionFn) {\n var type = this.paramTypes.type(name, definition, definitionFn);\n return !isDefined(definition) ? type : this;\n };\n return UrlConfig;\n}());\nexport { UrlConfig };\n","import { extend, is, isString, pattern } from '../common';\nimport { UrlRules } from './urlRules';\nimport { UrlConfig } from './urlConfig';\nimport { TargetState } from '../state';\n/**\n * API for URL management\n */\nvar UrlService = /** @class */ (function () {\n /** @internal */\n function UrlService(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** @internal */ this.interceptDeferred = false;\n /**\n * The nested [[UrlRules]] API for managing URL rules and rewrites\n *\n * See: [[UrlRules]] for details\n */\n this.rules = new UrlRules(this.router);\n /**\n * The nested [[UrlConfig]] API to configure the URL and retrieve URL information\n *\n * See: [[UrlConfig]] for details\n */\n this.config = new UrlConfig(this.router);\n // Delegate these calls to the current LocationServices implementation\n /**\n * Gets the current url, or updates the url\n *\n * ### Getting the current URL\n *\n * When no arguments are passed, returns the current URL.\n * The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.\n *\n * For example, the URL may be stored in the hash ([[HashLocationServices]]) or\n * have a base HREF prepended ([[PushStateLocationServices]]).\n *\n * The raw URL in the browser might be:\n *\n * ```\n * http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor\n * ```\n *\n * or\n *\n * ```\n * http://mysite.com/basepath/internal/path/123?param1=foo#anchor\n * ```\n *\n * then this method returns:\n *\n * ```\n * /internal/path/123?param1=foo#anchor\n * ```\n *\n *\n * #### Example:\n * ```js\n * locationServices.url(); // \"/some/path?query=value#anchor\"\n * ```\n *\n * ### Updating the URL\n *\n * When `newurl` arguments is provided, changes the URL to reflect `newurl`\n *\n * #### Example:\n * ```js\n * locationServices.url(\"/some/path?query=value#anchor\", true);\n * ```\n *\n * @param newurl The new value for the URL.\n * This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.\n * It should not include the protocol, site, port, or base path of an absolute HREF.\n * @param replace When true, replaces the current history entry (instead of appending it) with this new url\n * @param state The history's state object, i.e., pushState (if the LocationServices implementation supports it)\n *\n * @return the url (after potentially being processed)\n */\n this.url = function (newurl, replace, state) {\n return _this.router.locationService.url(newurl, replace, state);\n };\n /**\n * Gets the path part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`\n *\n * @return the path portion of the url\n */\n this.path = function () { return _this.router.locationService.path(); };\n /**\n * Gets the search part of the current url as an object\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`\n *\n * @return the search (query) portion of the url, as an object\n */\n this.search = function () { return _this.router.locationService.search(); };\n /**\n * Gets the hash part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `anchor`\n *\n * @return the hash (anchor) portion of the url\n */\n this.hash = function () { return _this.router.locationService.hash(); };\n /**\n * @internal\n *\n * Registers a low level url change handler\n *\n * Note: Because this is a low level handler, it's not recommended for general use.\n *\n * #### Example:\n * ```js\n * let deregisterFn = locationServices.onChange((evt) => console.log(\"url change\", evt));\n * ```\n *\n * @param callback a function that will be called when the url is changing\n * @return a function that de-registers the callback\n */\n this.onChange = function (callback) { return _this.router.locationService.onChange(callback); };\n }\n /** @internal */\n UrlService.prototype.dispose = function () {\n this.listen(false);\n this.rules.dispose();\n };\n /**\n * Gets the current URL parts\n *\n * This method returns the different parts of the current URL (the [[path]], [[search]], and [[hash]]) as a [[UrlParts]] object.\n */\n UrlService.prototype.parts = function () {\n return { path: this.path(), search: this.search(), hash: this.hash() };\n };\n /**\n * Activates the best rule for the current URL\n *\n * Checks the current URL for a matching [[UrlRule]], then invokes that rule's handler.\n * This method is called internally any time the URL has changed.\n *\n * This effectively activates the state (or redirect, etc) which matches the current URL.\n *\n * #### Example:\n * ```js\n * urlService.deferIntercept();\n *\n * fetch('/states.json').then(resp => resp.json()).then(data => {\n * data.forEach(state => $stateRegistry.register(state));\n * urlService.listen();\n * // Find the matching URL and invoke the handler.\n * urlService.sync();\n * });\n * ```\n */\n UrlService.prototype.sync = function (evt) {\n if (evt && evt.defaultPrevented)\n return;\n var _a = this.router, urlService = _a.urlService, stateService = _a.stateService;\n var url = { path: urlService.path(), search: urlService.search(), hash: urlService.hash() };\n var best = this.match(url);\n var applyResult = pattern([\n [isString, function (newurl) { return urlService.url(newurl, true); }],\n [TargetState.isDef, function (def) { return stateService.go(def.state, def.params, def.options); }],\n [is(TargetState), function (target) { return stateService.go(target.state(), target.params(), target.options()); }],\n ]);\n applyResult(best && best.rule.handler(best.match, url, this.router));\n };\n /**\n * Starts or stops listening for URL changes\n *\n * Call this sometime after calling [[deferIntercept]] to start monitoring the url.\n * This causes UI-Router to start listening for changes to the URL, if it wasn't already listening.\n *\n * If called with `false`, UI-Router will stop listening (call listen(true) to start listening again).\n *\n * #### Example:\n * ```js\n * urlService.deferIntercept();\n *\n * fetch('/states.json').then(resp => resp.json()).then(data => {\n * data.forEach(state => $stateRegistry.register(state));\n * // Start responding to URL changes\n * urlService.listen();\n * urlService.sync();\n * });\n * ```\n *\n * @param enabled `true` or `false` to start or stop listening to URL changes\n */\n UrlService.prototype.listen = function (enabled) {\n var _this = this;\n if (enabled === false) {\n this._stopListeningFn && this._stopListeningFn();\n delete this._stopListeningFn;\n }\n else {\n return (this._stopListeningFn =\n this._stopListeningFn || this.router.urlService.onChange(function (evt) { return _this.sync(evt); }));\n }\n };\n /**\n * Disables monitoring of the URL.\n *\n * Call this method before UI-Router has bootstrapped.\n * It will stop UI-Router from performing the initial url sync.\n *\n * This can be useful to perform some asynchronous initialization before the router starts.\n * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n *\n * #### Example:\n * ```js\n * // Prevent UI-Router from automatically intercepting URL changes when it starts;\n * urlService.deferIntercept();\n *\n * fetch('/states.json').then(resp => resp.json()).then(data => {\n * data.forEach(state => $stateRegistry.register(state));\n * urlService.listen();\n * urlService.sync();\n * });\n * ```\n *\n * @param defer Indicates whether to defer location change interception.\n * Passing no parameter is equivalent to `true`.\n */\n UrlService.prototype.deferIntercept = function (defer) {\n if (defer === undefined)\n defer = true;\n this.interceptDeferred = defer;\n };\n /**\n * Matches a URL\n *\n * Given a URL (as a [[UrlParts]] object), check all rules and determine the best matching rule.\n * Return the result as a [[MatchResult]].\n */\n UrlService.prototype.match = function (url) {\n var _this = this;\n url = extend({ path: '', search: {}, hash: '' }, url);\n var rules = this.rules.rules();\n // Checks a single rule. Returns { rule: rule, match: match, weight: weight } if it matched, or undefined\n var checkRule = function (rule) {\n var match = rule.match(url, _this.router);\n return match && { match: match, rule: rule, weight: rule.matchPriority(match) };\n };\n // The rules are pre-sorted.\n // - Find the first matching rule.\n // - Find any other matching rule that sorted *exactly the same*, according to `.sort()`.\n // - Choose the rule with the highest match weight.\n var best;\n for (var i = 0; i < rules.length; i++) {\n // Stop when there is a 'best' rule and the next rule sorts differently than it.\n if (best && best.rule._group !== rules[i]._group)\n break;\n var current = checkRule(rules[i]);\n // Pick the best MatchResult\n best = !best || (current && current.weight > best.weight) ? current : best;\n }\n return best;\n };\n return UrlService;\n}());\nexport { UrlService };\n","import { UrlMatcherFactory } from './url/urlMatcherFactory';\nimport { UrlRouter } from './url/urlRouter';\nimport { TransitionService } from './transition/transitionService';\nimport { ViewService } from './view/view';\nimport { StateRegistry } from './state/stateRegistry';\nimport { StateService } from './state/stateService';\nimport { UIRouterGlobals } from './globals';\nimport { values, removeFrom } from './common/common';\nimport { isFunction } from './common/predicates';\nimport { UrlService } from './url/urlService';\nimport { trace } from './common/trace';\nimport { makeStub } from './common';\n/** @internal */\nvar _routerInstance = 0;\n/** @internal */\nvar locSvcFns = ['url', 'path', 'search', 'hash', 'onChange'];\n/** @internal */\nvar locCfgFns = ['port', 'protocol', 'host', 'baseHref', 'html5Mode', 'hashPrefix'];\n/** @internal */\nvar locationServiceStub = makeStub('LocationServices', locSvcFns);\n/** @internal */\nvar locationConfigStub = makeStub('LocationConfig', locCfgFns);\n/**\n * An instance of UI-Router.\n *\n * This object contains references to service APIs which define your application's routing behavior.\n */\nvar UIRouter = /** @class */ (function () {\n /**\n * Creates a new `UIRouter` object\n *\n * @param locationService a [[LocationServices]] implementation\n * @param locationConfig a [[LocationConfig]] implementation\n * @internal\n */\n function UIRouter(locationService, locationConfig) {\n if (locationService === void 0) { locationService = locationServiceStub; }\n if (locationConfig === void 0) { locationConfig = locationConfigStub; }\n this.locationService = locationService;\n this.locationConfig = locationConfig;\n /** @internal */ this.$id = _routerInstance++;\n /** @internal */ this._disposed = false;\n /** @internal */ this._disposables = [];\n /** Enable/disable tracing to the javascript console */\n this.trace = trace;\n /** Provides services related to ui-view synchronization */\n this.viewService = new ViewService(this);\n /** An object that contains global router state, such as the current state and params */\n this.globals = new UIRouterGlobals();\n /** A service that exposes global Transition Hooks */\n this.transitionService = new TransitionService(this);\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n this.urlMatcherFactory = new UrlMatcherFactory(this);\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n this.urlRouter = new UrlRouter(this);\n /** Provides services related to the URL */\n this.urlService = new UrlService(this);\n /** Provides a registry for states, and related registration services */\n this.stateRegistry = new StateRegistry(this);\n /** Provides services related to states */\n this.stateService = new StateService(this);\n /** @internal plugin instances are registered here */\n this._plugins = {};\n this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n this.globals.$current = this.stateRegistry.root();\n this.globals.current = this.globals.$current.self;\n this.disposable(this.globals);\n this.disposable(this.stateService);\n this.disposable(this.stateRegistry);\n this.disposable(this.transitionService);\n this.disposable(this.urlService);\n this.disposable(locationService);\n this.disposable(locationConfig);\n }\n /** Registers an object to be notified when the router is disposed */\n UIRouter.prototype.disposable = function (disposable) {\n this._disposables.push(disposable);\n };\n /**\n * Disposes this router instance\n *\n * When called, clears resources retained by the router by calling `dispose(this)` on all\n * registered [[disposable]] objects.\n *\n * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n *\n * @internal\n * @param disposable (optional) the disposable to dispose\n */\n UIRouter.prototype.dispose = function (disposable) {\n var _this = this;\n if (disposable && isFunction(disposable.dispose)) {\n disposable.dispose(this);\n return undefined;\n }\n this._disposed = true;\n this._disposables.slice().forEach(function (d) {\n try {\n typeof d.dispose === 'function' && d.dispose(_this);\n removeFrom(_this._disposables, d);\n }\n catch (ignored) { }\n });\n };\n /**\n * Adds a plugin to UI-Router\n *\n * This method adds a UI-Router Plugin.\n * A plugin can enhance or change UI-Router behavior using any public API.\n *\n * #### Example:\n * ```js\n * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n *\n * var plugin = router.addPlugin(MyCoolPlugin);\n * ```\n *\n * ### Plugin authoring\n *\n * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n *\n * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n * For example, it may configure router options or add a Transition Hook.\n *\n * The plugin can then be published as a separate module.\n *\n * #### Example:\n * ```js\n * export class MyAuthPlugin implements UIRouterPlugin {\n * constructor(router: UIRouter, options: any) {\n * this.name = \"MyAuthPlugin\";\n * let $transitions = router.transitionService;\n * let $state = router.stateService;\n *\n * let authCriteria = {\n * to: (state) => state.data && state.data.requiresAuth\n * };\n *\n * function authHook(transition: Transition) {\n * let authService = transition.injector().get('AuthService');\n * if (!authService.isAuthenticated()) {\n * return $state.target('login');\n * }\n * }\n *\n * $transitions.onStart(authCriteria, authHook);\n * }\n * }\n * ```\n *\n * @param plugin one of:\n * - a plugin class which implements [[UIRouterPlugin]]\n * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n * @param options options to pass to the plugin class/factory\n * @returns the registered plugin instance\n */\n UIRouter.prototype.plugin = function (plugin, options) {\n if (options === void 0) { options = {}; }\n var pluginInstance = new plugin(this, options);\n if (!pluginInstance.name)\n throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n this._disposables.push(pluginInstance);\n return (this._plugins[pluginInstance.name] = pluginInstance);\n };\n UIRouter.prototype.getPlugin = function (pluginName) {\n return pluginName ? this._plugins[pluginName] : values(this._plugins);\n };\n return UIRouter;\n}());\nexport { UIRouter };\n","import { Transition } from '../transition/transition';\nimport { UIRouter } from '../router';\nimport { Resolvable } from '../resolve';\nimport { inArray, uniqR, unnestR, values } from '../common';\nfunction addCoreResolvables(trans) {\n trans.addResolvable(Resolvable.fromData(UIRouter, trans.router), '');\n trans.addResolvable(Resolvable.fromData(Transition, trans), '');\n trans.addResolvable(Resolvable.fromData('$transition$', trans), '');\n trans.addResolvable(Resolvable.fromData('$stateParams', trans.params()), '');\n trans.entering().forEach(function (state) {\n trans.addResolvable(Resolvable.fromData('$state$', state), state);\n });\n}\nexport var registerAddCoreResolvables = function (transitionService) {\n return transitionService.onCreate({}, addCoreResolvables);\n};\nvar TRANSITION_TOKENS = ['$transition$', Transition];\nvar isTransition = inArray(TRANSITION_TOKENS);\n// References to Transition in the treeChanges pathnodes makes all\n// previous Transitions reachable in memory, causing a memory leak\n// This function removes resolves for '$transition$' and `Transition` from the treeChanges.\n// Do not use this on current transitions, only on old ones.\nexport var treeChangesCleanup = function (trans) {\n var nodes = values(trans.treeChanges()).reduce(unnestR, []).reduce(uniqR, []);\n // If the resolvable is a Transition, return a new resolvable with null data\n var replaceTransitionWithNull = function (r) {\n return isTransition(r.token) ? Resolvable.fromData(r.token, null) : r;\n };\n nodes.forEach(function (node) {\n node.resolvables = node.resolvables.map(replaceTransitionWithNull);\n });\n};\n","import { isString, isFunction } from '../common/predicates';\nimport { services } from '../common/coreservices';\nimport { TargetState } from '../state/targetState';\n/**\n * A [[TransitionHookFn]] that redirects to a different state or params\n *\n * Registered using `transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectHook);`\n *\n * See [[StateDeclaration.redirectTo]]\n */\nvar redirectToHook = function (trans) {\n var redirect = trans.to().redirectTo;\n if (!redirect)\n return;\n var $state = trans.router.stateService;\n function handleResult(result) {\n if (!result)\n return;\n if (result instanceof TargetState)\n return result;\n if (isString(result))\n return $state.target(result, trans.params(), trans.options());\n if (result['state'] || result['params'])\n return $state.target(result['state'] || trans.to(), result['params'] || trans.params(), trans.options());\n }\n if (isFunction(redirect)) {\n return services.$q.when(redirect(trans)).then(handleResult);\n }\n return handleResult(redirect);\n};\nexport var registerRedirectToHook = function (transitionService) {\n return transitionService.onStart({ to: function (state) { return !!state.redirectTo; } }, redirectToHook);\n};\n","/**\n * A factory which creates an onEnter, onExit or onRetain transition hook function\n *\n * The returned function invokes the (for instance) state.onEnter hook when the\n * state is being entered.\n */\nfunction makeEnterExitRetainHook(hookName) {\n return function (transition, state) {\n var _state = state.$$state();\n var hookFn = _state[hookName];\n return hookFn(transition, state);\n };\n}\n/**\n * The [[TransitionStateHookFn]] for onExit\n *\n * When the state is being exited, the state's .onExit function is invoked.\n *\n * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n *\n * See: [[IHookRegistry.onExit]]\n */\nvar onExitHook = makeEnterExitRetainHook('onExit');\nexport var registerOnExitHook = function (transitionService) {\n return transitionService.onExit({ exiting: function (state) { return !!state.onExit; } }, onExitHook);\n};\n/**\n * The [[TransitionStateHookFn]] for onRetain\n *\n * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n *\n * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n *\n * See: [[IHookRegistry.onRetain]]\n */\nvar onRetainHook = makeEnterExitRetainHook('onRetain');\nexport var registerOnRetainHook = function (transitionService) {\n return transitionService.onRetain({ retained: function (state) { return !!state.onRetain; } }, onRetainHook);\n};\n/**\n * The [[TransitionStateHookFn]] for onEnter\n *\n * When the state is being entered, the state's .onEnter function is invoked.\n *\n * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n *\n * See: [[IHookRegistry.onEnter]]\n */\nvar onEnterHook = makeEnterExitRetainHook('onEnter');\nexport var registerOnEnterHook = function (transitionService) {\n return transitionService.onEnter({ entering: function (state) { return !!state.onEnter; } }, onEnterHook);\n};\n","import { noop } from '../common/common';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { val } from '../common/hof';\nexport var RESOLVE_HOOK_PRIORITY = 1000;\n/**\n * A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path\n *\n * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 });`\n *\n * When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nvar eagerResolvePath = function (trans) {\n return new ResolveContext(trans.treeChanges().to).resolvePath('EAGER', trans).then(noop);\n};\nexport var registerEagerResolvePath = function (transitionService) {\n return transitionService.onStart({}, eagerResolvePath, { priority: RESOLVE_HOOK_PRIORITY });\n};\n/**\n * A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path\n *\n * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 });`\n *\n * When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nvar lazyResolveState = function (trans, state) {\n return new ResolveContext(trans.treeChanges().to).subContext(state.$$state()).resolvePath('LAZY', trans).then(noop);\n};\nexport var registerLazyResolveState = function (transitionService) {\n return transitionService.onEnter({ entering: val(true) }, lazyResolveState, { priority: RESOLVE_HOOK_PRIORITY });\n};\n/**\n * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.\n *\n * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`\n *\n * After all entering states have been entered, this hook resolves any remaining Resolvables.\n * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].\n *\n * See [[StateDeclaration.resolve]]\n */\nvar resolveRemaining = function (trans) {\n return new ResolveContext(trans.treeChanges().to).resolvePath('LAZY', trans).then(noop);\n};\nexport var registerResolveRemaining = function (transitionService) {\n return transitionService.onFinish({}, resolveRemaining, { priority: RESOLVE_HOOK_PRIORITY });\n};\n","import { noop } from '../common/common';\nimport { services } from '../common/coreservices';\n/**\n * A [[TransitionHookFn]] which waits for the views to load\n *\n * Registered using `transitionService.onStart({}, loadEnteringViews);`\n *\n * Allows the views to do async work in [[ViewConfig.load]] before the transition continues.\n * In angular 1, this includes loading the templates.\n */\nvar loadEnteringViews = function (transition) {\n var $q = services.$q;\n var enteringViews = transition.views('entering');\n if (!enteringViews.length)\n return;\n return $q.all(enteringViews.map(function (view) { return $q.when(view.load()); })).then(noop);\n};\nexport var registerLoadEnteringViews = function (transitionService) {\n return transitionService.onFinish({}, loadEnteringViews);\n};\n/**\n * A [[TransitionHookFn]] which activates the new views when a transition is successful.\n *\n * Registered using `transitionService.onSuccess({}, activateViews);`\n *\n * After a transition is complete, this hook deactivates the old views from the previous state,\n * and activates the new views from the destination state.\n *\n * See [[ViewService]]\n */\nvar activateViews = function (transition) {\n var enteringViews = transition.views('entering');\n var exitingViews = transition.views('exiting');\n if (!enteringViews.length && !exitingViews.length)\n return;\n var $view = transition.router.viewService;\n exitingViews.forEach(function (vc) { return $view.deactivateViewConfig(vc); });\n enteringViews.forEach(function (vc) { return $view.activateViewConfig(vc); });\n $view.sync();\n};\nexport var registerActivateViews = function (transitionService) {\n return transitionService.onSuccess({}, activateViews);\n};\n","import { copy } from '../common/common';\n/**\n * A [[TransitionHookFn]] which updates global UI-Router state\n *\n * Registered using `transitionService.onBefore({}, updateGlobalState);`\n *\n * Before a [[Transition]] starts, updates the global value of \"the current transition\" ([[Globals.transition]]).\n * After a successful [[Transition]], updates the global values of \"the current state\"\n * ([[Globals.current]] and [[Globals.$current]]) and \"the current param values\" ([[Globals.params]]).\n *\n * See also the deprecated properties:\n * [[StateService.transition]], [[StateService.current]], [[StateService.params]]\n */\nvar updateGlobalState = function (trans) {\n var globals = trans.router.globals;\n var transitionSuccessful = function () {\n globals.successfulTransitions.enqueue(trans);\n globals.$current = trans.$to();\n globals.current = globals.$current.self;\n copy(trans.params(), globals.params);\n };\n var clearCurrentTransition = function () {\n // Do not clear globals.transition if a different transition has started in the meantime\n if (globals.transition === trans)\n globals.transition = null;\n };\n trans.onSuccess({}, transitionSuccessful, { priority: 10000 });\n trans.promise.then(clearCurrentTransition, clearCurrentTransition);\n};\nexport var registerUpdateGlobalState = function (transitionService) {\n return transitionService.onCreate({}, updateGlobalState);\n};\n","/**\n * A [[TransitionHookFn]] which updates the URL after a successful transition\n *\n * Registered using `transitionService.onSuccess({}, updateUrl);`\n */\nvar updateUrl = function (transition) {\n var options = transition.options();\n var $state = transition.router.stateService;\n var $urlRouter = transition.router.urlRouter;\n // Dont update the url in these situations:\n // The transition was triggered by a URL sync (options.source === 'url')\n // The user doesn't want the url to update (options.location === false)\n // The destination state, and all parents have no navigable url\n if (options.source !== 'url' && options.location && $state.$current.navigable) {\n var urlOptions = { replace: options.location === 'replace' };\n $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions);\n }\n $urlRouter.update(true);\n};\nexport var registerUpdateUrl = function (transitionService) {\n return transitionService.onSuccess({}, updateUrl, { priority: 9999 });\n};\n","import { services } from '../common/coreservices';\n/**\n * A [[TransitionHookFn]] that performs lazy loading\n *\n * When entering a state \"abc\" which has a `lazyLoad` function defined:\n * - Invoke the `lazyLoad` function (unless it is already in process)\n * - Flag the hook function as \"in process\"\n * - The function should return a promise (that resolves when lazy loading is complete)\n * - Wait for the promise to settle\n * - If the promise resolves to a [[LazyLoadResult]], then register those states\n * - Flag the hook function as \"not in process\"\n * - If the hook was successful\n * - Remove the `lazyLoad` function from the state declaration\n * - If all the hooks were successful\n * - Retry the transition (by returning a TargetState)\n *\n * ```\n * .state('abc', {\n * component: 'fooComponent',\n * lazyLoad: () => import('./fooComponent')\n * });\n * ```\n *\n * See [[StateDeclaration.lazyLoad]]\n */\nvar lazyLoadHook = function (transition) {\n var router = transition.router;\n function retryTransition() {\n if (transition.originalTransition().options().source !== 'url') {\n // The original transition was not triggered via url sync\n // The lazy state should be loaded now, so re-try the original transition\n var orig = transition.targetState();\n return router.stateService.target(orig.identifier(), orig.params(), orig.options());\n }\n // The original transition was triggered via url sync\n // Run the URL rules and find the best match\n var $url = router.urlService;\n var result = $url.match($url.parts());\n var rule = result && result.rule;\n // If the best match is a state, redirect the transition (instead\n // of calling sync() which supersedes the current transition)\n if (rule && rule.type === 'STATE') {\n var state = rule.state;\n var params = result.match;\n return router.stateService.target(state, params, transition.options());\n }\n // No matching state found, so let .sync() choose the best non-state match/otherwise\n router.urlService.sync();\n }\n var promises = transition\n .entering()\n .filter(function (state) { return !!state.$$state().lazyLoad; })\n .map(function (state) { return lazyLoadState(transition, state); });\n return services.$q.all(promises).then(retryTransition);\n};\nexport var registerLazyLoadHook = function (transitionService) {\n return transitionService.onBefore({ entering: function (state) { return !!state.lazyLoad; } }, lazyLoadHook);\n};\n/**\n * Invokes a state's lazy load function\n *\n * @param transition a Transition context\n * @param state the state to lazy load\n * @returns A promise for the lazy load result\n */\nexport function lazyLoadState(transition, state) {\n var lazyLoadFn = state.$$state().lazyLoad;\n // Store/get the lazy load promise on/from the hookfn so it doesn't get re-invoked\n var promise = lazyLoadFn['_promise'];\n if (!promise) {\n var success = function (result) {\n delete state.lazyLoad;\n delete state.$$state().lazyLoad;\n delete lazyLoadFn['_promise'];\n return result;\n };\n var error = function (err) {\n delete lazyLoadFn['_promise'];\n return services.$q.reject(err);\n };\n promise = lazyLoadFn['_promise'] = services.$q\n .when(lazyLoadFn(transition, state))\n .then(updateStateRegistry)\n .then(success, error);\n }\n /** Register any lazy loaded state definitions */\n function updateStateRegistry(result) {\n if (result && Array.isArray(result.states)) {\n result.states.forEach(function (_state) { return transition.router.stateRegistry.register(_state); });\n }\n return result;\n }\n return promise;\n}\n","import { TransitionHook } from './transitionHook';\n/**\n * This class defines a type of hook, such as `onBefore` or `onEnter`.\n * Plugins can define custom hook types, such as sticky states does for `onInactive`.\n */\nvar TransitionEventType = /** @class */ (function () {\n /* tslint:disable:no-inferrable-types */\n function TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n if (reverseSort === void 0) { reverseSort = false; }\n if (getResultHandler === void 0) { getResultHandler = TransitionHook.HANDLE_RESULT; }\n if (getErrorHandler === void 0) { getErrorHandler = TransitionHook.REJECT_ERROR; }\n if (synchronous === void 0) { synchronous = false; }\n this.name = name;\n this.hookPhase = hookPhase;\n this.hookOrder = hookOrder;\n this.criteriaMatchPath = criteriaMatchPath;\n this.reverseSort = reverseSort;\n this.getResultHandler = getResultHandler;\n this.getErrorHandler = getErrorHandler;\n this.synchronous = synchronous;\n }\n return TransitionEventType;\n}());\nexport { TransitionEventType };\n","import { trace } from '../common/trace';\nimport { Rejection } from '../transition/rejectFactory';\n/**\n * A [[TransitionHookFn]] that skips a transition if it should be ignored\n *\n * This hook is invoked at the end of the onBefore phase.\n *\n * If the transition should be ignored (because no parameter or states changed)\n * then the transition is ignored and not processed.\n */\nfunction ignoredHook(trans) {\n var ignoredReason = trans._ignoredReason();\n if (!ignoredReason)\n return;\n trace.traceTransitionIgnored(trans);\n var pending = trans.router.globals.transition;\n // The user clicked a link going back to the *current state* ('A')\n // However, there is also a pending transition in flight (to 'B')\n // Abort the transition to 'B' because the user now wants to be back at 'A'.\n if (ignoredReason === 'SameAsCurrent' && pending) {\n pending.abort();\n }\n return Rejection.ignored().toPromise();\n}\nexport var registerIgnoredTransitionHook = function (transitionService) {\n return transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n};\n","/**\n * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n *\n * This hook is invoked at the end of the onBefore phase.\n * If the transition is invalid (for example, param values do not validate)\n * then the transition is rejected.\n */\nfunction invalidTransitionHook(trans) {\n if (!trans.valid()) {\n throw new Error(trans.error().toString());\n }\n}\nexport var registerInvalidTransitionHook = function (transitionService) {\n return transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n};\n","import { TransitionHookScope, TransitionHookPhase, } from './interface';\nimport { Transition } from './transition';\nimport { makeEvent } from './hookRegistry';\nimport { registerAddCoreResolvables, treeChangesCleanup } from '../hooks/coreResolvables';\nimport { registerRedirectToHook } from '../hooks/redirectTo';\nimport { registerOnExitHook, registerOnRetainHook, registerOnEnterHook } from '../hooks/onEnterExitRetain';\nimport { registerEagerResolvePath, registerLazyResolveState, registerResolveRemaining } from '../hooks/resolve';\nimport { registerLoadEnteringViews, registerActivateViews } from '../hooks/views';\nimport { registerUpdateGlobalState } from '../hooks/updateGlobals';\nimport { registerUpdateUrl } from '../hooks/url';\nimport { registerLazyLoadHook } from '../hooks/lazyLoad';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionHook } from './transitionHook';\nimport { isDefined } from '../common/predicates';\nimport { removeFrom, values, createProxyFunctions } from '../common/common';\nimport { val } from '../common/hof';\nimport { registerIgnoredTransitionHook } from '../hooks/ignoredTransition';\nimport { registerInvalidTransitionHook } from '../hooks/invalidTransition';\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexport var defaultTransOpts = {\n location: true,\n relative: null,\n inherit: false,\n notify: true,\n reload: false,\n supercede: true,\n custom: {},\n current: function () { return null; },\n source: 'unknown',\n};\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n *\n * This API is located at `router.transitionService` ([[UIRouter.transitionService]])\n */\nvar TransitionService = /** @class */ (function () {\n /** @internal */\n function TransitionService(_router) {\n /** @internal */\n this._transitionCount = 0;\n /** The transition hook types, such as `onEnter`, `onStart`, etc */\n this._eventTypes = [];\n /** @internal The registered transition hooks */\n this._registeredHooks = {};\n /** The paths on a criteria object */\n this._criteriaPaths = {};\n this._router = _router;\n this.$view = _router.viewService;\n this._deregisterHookFns = {};\n this._pluginapi = (createProxyFunctions(val(this), {}, val(this), [\n '_definePathType',\n '_defineEvent',\n '_getPathTypes',\n '_getEvents',\n 'getHooks',\n ]));\n this._defineCorePaths();\n this._defineCoreEvents();\n this._registerCoreTransitionHooks();\n _router.globals.successfulTransitions.onEvict(treeChangesCleanup);\n }\n /**\n * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n *\n * Registers a transition lifecycle hook, which is invoked during transition construction.\n *\n * This low level hook should only be used by plugins.\n * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n * The Sticky States plugin uses this hook to modify the treechanges.\n *\n * ### Lifecycle\n *\n * `onCreate` hooks are invoked *while a transition is being constructed*.\n *\n * ### Return value\n *\n * The hook's return value is ignored\n *\n * @internal\n * @param criteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @param options the registration options\n * @returns a function which deregisters the hook.\n */\n TransitionService.prototype.onCreate = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onBefore = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onStart = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onExit = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onRetain = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onEnter = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onFinish = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onSuccess = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onError = function (criteria, callback, options) {\n return;\n };\n /**\n * dispose\n * @internal\n */\n TransitionService.prototype.dispose = function (router) {\n values(this._registeredHooks).forEach(function (hooksArray) {\n return hooksArray.forEach(function (hook) {\n hook._deregistered = true;\n removeFrom(hooksArray, hook);\n });\n });\n };\n /**\n * Creates a new [[Transition]] object\n *\n * This is a factory function for creating new Transition objects.\n * It is used internally by the [[StateService]] and should generally not be called by application code.\n *\n * @internal\n * @param fromPath the path to the current state (the from state)\n * @param targetState the target state (destination)\n * @returns a Transition\n */\n TransitionService.prototype.create = function (fromPath, targetState) {\n return new Transition(fromPath, targetState, this._router);\n };\n /** @internal */\n TransitionService.prototype._defineCoreEvents = function () {\n var Phase = TransitionHookPhase;\n var TH = TransitionHook;\n var paths = this._criteriaPaths;\n var NORMAL_SORT = false, REVERSE_SORT = true;\n var SYNCHRONOUS = true;\n this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n };\n /** @internal */\n TransitionService.prototype._defineCorePaths = function () {\n var STATE = TransitionHookScope.STATE, TRANSITION = TransitionHookScope.TRANSITION;\n this._definePathType('to', TRANSITION);\n this._definePathType('from', TRANSITION);\n this._definePathType('exiting', STATE);\n this._definePathType('retained', STATE);\n this._definePathType('entering', STATE);\n };\n /** @internal */\n TransitionService.prototype._defineEvent = function (name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n if (reverseSort === void 0) { reverseSort = false; }\n if (getResultHandler === void 0) { getResultHandler = TransitionHook.HANDLE_RESULT; }\n if (getErrorHandler === void 0) { getErrorHandler = TransitionHook.REJECT_ERROR; }\n if (synchronous === void 0) { synchronous = false; }\n var eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n this._eventTypes.push(eventType);\n makeEvent(this, this, eventType);\n };\n /** @internal */\n TransitionService.prototype._getEvents = function (phase) {\n var transitionHookTypes = isDefined(phase)\n ? this._eventTypes.filter(function (type) { return type.hookPhase === phase; })\n : this._eventTypes.slice();\n return transitionHookTypes.sort(function (l, r) {\n var cmpByPhase = l.hookPhase - r.hookPhase;\n return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n });\n };\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n *\n * @internal\n */\n TransitionService.prototype._definePathType = function (name, hookScope) {\n this._criteriaPaths[name] = { name: name, scope: hookScope };\n };\n /** @internal */\n // tslint:disable-next-line\n TransitionService.prototype._getPathTypes = function () {\n return this._criteriaPaths;\n };\n /** @internal */\n TransitionService.prototype.getHooks = function (hookName) {\n return this._registeredHooks[hookName];\n };\n /** @internal */\n TransitionService.prototype._registerCoreTransitionHooks = function () {\n var fns = this._deregisterHookFns;\n fns.addCoreResolves = registerAddCoreResolvables(this);\n fns.ignored = registerIgnoredTransitionHook(this);\n fns.invalid = registerInvalidTransitionHook(this);\n // Wire up redirectTo hook\n fns.redirectTo = registerRedirectToHook(this);\n // Wire up onExit/Retain/Enter state hooks\n fns.onExit = registerOnExitHook(this);\n fns.onRetain = registerOnRetainHook(this);\n fns.onEnter = registerOnEnterHook(this);\n // Wire up Resolve hooks\n fns.eagerResolve = registerEagerResolvePath(this);\n fns.lazyResolve = registerLazyResolveState(this);\n fns.resolveAll = registerResolveRemaining(this);\n // Wire up the View management hooks\n fns.loadViews = registerLoadEnteringViews(this);\n fns.activateViews = registerActivateViews(this);\n // Updates global state after a transition\n fns.updateGlobals = registerUpdateGlobalState(this);\n // After globals.current is updated at priority: 10000\n fns.updateUrl = registerUpdateUrl(this);\n // Lazy load state trees\n fns.lazyLoad = registerLazyLoadHook(this);\n };\n return TransitionService;\n}());\nexport { TransitionService };\n","import { createProxyFunctions, defaults, extend, inArray, noop, removeFrom, silenceUncaughtInPromise, silentRejection, } from '../common/common';\nimport { isDefined, isObject, isString } from '../common/predicates';\nimport { Queue } from '../common/queue';\nimport { services } from '../common/coreservices';\nimport { PathUtils } from '../path/pathUtils';\nimport { PathNode } from '../path/pathNode';\nimport { defaultTransOpts } from '../transition/transitionService';\nimport { Rejection, RejectType } from '../transition/rejectFactory';\nimport { TargetState } from './targetState';\nimport { Param } from '../params/param';\nimport { Glob } from '../common/glob';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { lazyLoadState } from '../hooks/lazyLoad';\nimport { not, val } from '../common/hof';\n/**\n * Provides services related to ui-router states.\n *\n * This API is located at `router.stateService` ([[UIRouter.stateService]])\n */\nvar StateService = /** @class */ (function () {\n /** @internal */\n function StateService(/** @internal */ router) {\n this.router = router;\n /** @internal */\n this.invalidCallbacks = [];\n /** @internal */\n this._defaultErrorHandler = function $defaultErrorHandler($error$) {\n if ($error$ instanceof Error && $error$.stack) {\n console.error($error$);\n console.error($error$.stack);\n }\n else if ($error$ instanceof Rejection) {\n console.error($error$.toString());\n if ($error$.detail && $error$.detail.stack)\n console.error($error$.detail.stack);\n }\n else {\n console.error($error$);\n }\n };\n var getters = ['current', '$current', 'params', 'transition'];\n var boundFns = Object.keys(StateService.prototype).filter(not(inArray(getters)));\n createProxyFunctions(val(StateService.prototype), this, val(this), boundFns);\n }\n Object.defineProperty(StateService.prototype, \"transition\", {\n /**\n * The [[Transition]] currently in progress (or null)\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.transition]]\n */\n get: function () {\n return this.router.globals.transition;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateService.prototype, \"params\", {\n /**\n * The latest successful state parameters\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.params]]\n */\n get: function () {\n return this.router.globals.params;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateService.prototype, \"current\", {\n /**\n * The current [[StateDeclaration]]\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.current]]\n */\n get: function () {\n return this.router.globals.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateService.prototype, \"$current\", {\n /**\n * The current [[StateObject]] (an internal API)\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.$current]]\n */\n get: function () {\n return this.router.globals.$current;\n },\n enumerable: false,\n configurable: true\n });\n /** @internal */\n StateService.prototype.dispose = function () {\n this.defaultErrorHandler(noop);\n this.invalidCallbacks = [];\n };\n /**\n * Handler for when [[transitionTo]] is called with an invalid state.\n *\n * Invokes the [[onInvalid]] callbacks, in natural order.\n * Each callback's return value is checked in sequence until one of them returns an instance of TargetState.\n * The results of the callbacks are wrapped in $q.when(), so the callbacks may return promises.\n *\n * If a callback returns an TargetState, then it is used as arguments to $state.transitionTo() and the result returned.\n *\n * @internal\n */\n StateService.prototype._handleInvalidTargetState = function (fromPath, toState) {\n var _this = this;\n var fromState = PathUtils.makeTargetState(this.router.stateRegistry, fromPath);\n var globals = this.router.globals;\n var latestThing = function () { return globals.transitionHistory.peekTail(); };\n var latest = latestThing();\n var callbackQueue = new Queue(this.invalidCallbacks.slice());\n var injector = new ResolveContext(fromPath).injector();\n var checkForRedirect = function (result) {\n if (!(result instanceof TargetState)) {\n return;\n }\n var target = result;\n // Recreate the TargetState, in case the state is now defined.\n target = _this.target(target.identifier(), target.params(), target.options());\n if (!target.valid()) {\n return Rejection.invalid(target.error()).toPromise();\n }\n if (latestThing() !== latest) {\n return Rejection.superseded().toPromise();\n }\n return _this.transitionTo(target.identifier(), target.params(), target.options());\n };\n function invokeNextCallback() {\n var nextCallback = callbackQueue.dequeue();\n if (nextCallback === undefined)\n return Rejection.invalid(toState.error()).toPromise();\n var callbackResult = services.$q.when(nextCallback(toState, fromState, injector));\n return callbackResult.then(checkForRedirect).then(function (result) { return result || invokeNextCallback(); });\n }\n return invokeNextCallback();\n };\n /**\n * Registers an Invalid State handler\n *\n * Registers a [[OnInvalidCallback]] function to be invoked when [[StateService.transitionTo]]\n * has been called with an invalid state reference parameter\n *\n * Example:\n * ```js\n * stateService.onInvalid(function(to, from, injector) {\n * if (to.name() === 'foo') {\n * let lazyLoader = injector.get('LazyLoadService');\n * return lazyLoader.load('foo')\n * .then(() => stateService.target('foo'));\n * }\n * });\n * ```\n *\n * @param {function} callback invoked when the toState is invalid\n * This function receives the (invalid) toState, the fromState, and an injector.\n * The function may optionally return a [[TargetState]] or a Promise for a TargetState.\n * If one is returned, it is treated as a redirect.\n *\n * @returns a function which deregisters the callback\n */\n StateService.prototype.onInvalid = function (callback) {\n this.invalidCallbacks.push(callback);\n return function deregisterListener() {\n removeFrom(this.invalidCallbacks)(callback);\n }.bind(this);\n };\n /**\n * Reloads the current state\n *\n * A method that force reloads the current state, or a partial state hierarchy.\n * All resolves are re-resolved, and components reinstantiated.\n *\n * #### Example:\n * ```js\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * $state.reload();\n * }\n * });\n * ```\n *\n * Note: `reload()` is just an alias for:\n *\n * ```js\n * $state.transitionTo($state.current, $state.params, {\n * reload: true, inherit: false\n * });\n * ```\n *\n * @param reloadState A state name or a state object.\n * If present, this state and all its children will be reloaded, but ancestors will not reload.\n *\n * #### Example:\n * ```js\n * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item'\n * //and current state is 'contacts.detail.item'\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * //will reload 'contact.detail' and nested 'contact.detail.item' states\n * $state.reload('contact.detail');\n * }\n * });\n * ```\n *\n * @returns A promise representing the state of the new transition. See [[StateService.go]]\n */\n StateService.prototype.reload = function (reloadState) {\n return this.transitionTo(this.current, this.params, {\n reload: isDefined(reloadState) ? reloadState : true,\n inherit: false,\n notify: false,\n });\n };\n /**\n * Transition to a different state and/or parameters\n *\n * Convenience method for transitioning to a new state.\n *\n * `$state.go` calls `$state.transitionTo` internally but automatically sets options to\n * `{ location: true, inherit: true, relative: router.globals.$current, notify: true }`.\n * This allows you to use either an absolute or relative `to` argument (because of `relative: router.globals.$current`).\n * It also allows you to specify * only the parameters you'd like to update, while letting unspecified parameters\n * inherit from the current parameter values (because of `inherit: true`).\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.go('contact.detail');\n * };\n * });\n * ```\n *\n * @param to Absolute state name, state object, or relative state path (relative to current state).\n *\n * Some examples:\n *\n * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n * - `$state.go('^')` - will go to the parent state\n * - `$state.go('^.sibling')` - if current state is `home.child`, will go to the `home.sibling` state\n * - `$state.go('.child.grandchild')` - if current state is home, will go to the `home.child.grandchild` state\n *\n * @param params A map of the parameters that will be sent to the state, will populate $stateParams.\n *\n * Any parameters that are not specified will be inherited from current parameter values (because of `inherit: true`).\n * This allows, for example, going to a sibling state that shares parameters defined by a parent state.\n *\n * @param options Transition options\n *\n * @returns {promise} A promise representing the state of the new transition.\n */\n StateService.prototype.go = function (to, params, options) {\n var defautGoOpts = { relative: this.$current, inherit: true };\n var transOpts = defaults(options, defautGoOpts, defaultTransOpts);\n return this.transitionTo(to, params, transOpts);\n };\n /**\n * Creates a [[TargetState]]\n *\n * This is a factory method for creating a TargetState\n *\n * This may be returned from a Transition Hook to redirect a transition, for example.\n */\n StateService.prototype.target = function (identifier, params, options) {\n if (options === void 0) { options = {}; }\n // If we're reloading, find the state object to reload from\n if (isObject(options.reload) && !options.reload.name)\n throw new Error('Invalid reload state object');\n var reg = this.router.stateRegistry;\n options.reloadState =\n options.reload === true ? reg.root() : reg.matcher.find(options.reload, options.relative);\n if (options.reload && !options.reloadState)\n throw new Error(\"No such reload state '\".concat(isString(options.reload) ? options.reload : options.reload.name, \"'\"));\n return new TargetState(this.router.stateRegistry, identifier, params, options);\n };\n /** @internal */\n StateService.prototype.getCurrentPath = function () {\n var _this = this;\n var globals = this.router.globals;\n var latestSuccess = globals.successfulTransitions.peekTail();\n var rootPath = function () { return [new PathNode(_this.router.stateRegistry.root())]; };\n return latestSuccess ? latestSuccess.treeChanges().to : rootPath();\n };\n /**\n * Low-level method for transitioning to a new state.\n *\n * The [[go]] method (which uses `transitionTo` internally) is recommended in most situations.\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.transitionTo('contact.detail');\n * };\n * });\n * ```\n *\n * @param to State name or state object.\n * @param toParams A map of the parameters that will be sent to the state,\n * will populate $stateParams.\n * @param options Transition options\n *\n * @returns A promise representing the state of the new transition. See [[go]]\n */\n StateService.prototype.transitionTo = function (to, toParams, options) {\n var _this = this;\n if (toParams === void 0) { toParams = {}; }\n if (options === void 0) { options = {}; }\n var router = this.router;\n var globals = router.globals;\n options = defaults(options, defaultTransOpts);\n var getCurrent = function () { return globals.transition; };\n options = extend(options, { current: getCurrent });\n var ref = this.target(to, toParams, options);\n var currentPath = this.getCurrentPath();\n if (!ref.exists())\n return this._handleInvalidTargetState(currentPath, ref);\n if (!ref.valid())\n return silentRejection(ref.error());\n if (options.supercede === false && getCurrent()) {\n return (Rejection.ignored('Another transition is in progress and supercede has been set to false in TransitionOptions for the transition. So the transition was ignored in favour of the existing one in progress.').toPromise());\n }\n /**\n * Special handling for Ignored, Aborted, and Redirected transitions\n *\n * The semantics for the transition.run() promise and the StateService.transitionTo()\n * promise differ. For instance, the run() promise may be rejected because it was\n * IGNORED, but the transitionTo() promise is resolved because from the user perspective\n * no error occurred. Likewise, the transition.run() promise may be rejected because of\n * a Redirect, but the transitionTo() promise is chained to the new Transition's promise.\n */\n var rejectedTransitionHandler = function (trans) { return function (error) {\n if (error instanceof Rejection) {\n var isLatest = router.globals.lastStartedTransitionId <= trans.$id;\n if (error.type === RejectType.IGNORED) {\n isLatest && router.urlRouter.update();\n // Consider ignored `Transition.run()` as a successful `transitionTo`\n return services.$q.when(globals.current);\n }\n var detail = error.detail;\n if (error.type === RejectType.SUPERSEDED && error.redirected && detail instanceof TargetState) {\n // If `Transition.run()` was redirected, allow the `transitionTo()` promise to resolve successfully\n // by returning the promise for the new (redirect) `Transition.run()`.\n var redirect = trans.redirect(detail);\n return redirect.run().catch(rejectedTransitionHandler(redirect));\n }\n if (error.type === RejectType.ABORTED) {\n isLatest && router.urlRouter.update();\n return services.$q.reject(error);\n }\n }\n var errorHandler = _this.defaultErrorHandler();\n errorHandler(error);\n return services.$q.reject(error);\n }; };\n var transition = this.router.transitionService.create(currentPath, ref);\n var transitionToPromise = transition.run().catch(rejectedTransitionHandler(transition));\n silenceUncaughtInPromise(transitionToPromise); // issue #2676\n // Return a promise for the transition, which also has the transition object on it.\n return extend(transitionToPromise, { transition: transition });\n };\n /**\n * Checks if the current state *is* the provided state\n *\n * Similar to [[includes]] but only checks for the full state name.\n * If params is supplied then it will be tested for strict equality against the current\n * active params object, so all params must match with none missing and no extras.\n *\n * #### Example:\n * ```js\n * $state.$current.name = 'contacts.details.item';\n *\n * // absolute name\n * $state.is('contact.details.item'); // returns true\n * $state.is(contactDetailItemStateObject); // returns true\n * ```\n *\n * // relative name (. and ^), typically from a template\n * // E.g. from the 'contacts.details' template\n * ```html\n *
Item
\n * ```\n *\n * @param stateOrName The state name (absolute or relative) or state object you'd like to check.\n * @param params A param object, e.g. `{sectionId: section.id}`, that you'd like\n * to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns Returns true if it is the state.\n */\n StateService.prototype.is = function (stateOrName, params, options) {\n options = defaults(options, { relative: this.$current });\n var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n if (!isDefined(state))\n return undefined;\n if (this.$current !== state)\n return false;\n if (!params)\n return true;\n var schema = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n };\n /**\n * Checks if the current state *includes* the provided state\n *\n * A method to determine if the current active state is equal to or is the child of the\n * state stateName. If any params are passed then they will be tested for a match as well.\n * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n *\n * #### Example when `$state.$current.name === 'contacts.details.item'`\n * ```js\n * // Using partial names\n * $state.includes(\"contacts\"); // returns true\n * $state.includes(\"contacts.details\"); // returns true\n * $state.includes(\"contacts.details.item\"); // returns true\n * $state.includes(\"contacts.list\"); // returns false\n * $state.includes(\"about\"); // returns false\n * ```\n *\n * #### Glob Examples when `* $state.$current.name === 'contacts.details.item.url'`:\n * ```js\n * $state.includes(\"*.details.*.*\"); // returns true\n * $state.includes(\"*.details.**\"); // returns true\n * $state.includes(\"**.item.**\"); // returns true\n * $state.includes(\"*.details.item.url\"); // returns true\n * $state.includes(\"*.details.*.url\"); // returns true\n * $state.includes(\"*.details.*\"); // returns false\n * $state.includes(\"item.**\"); // returns false\n * ```\n *\n * @param stateOrName A partial name, relative name, glob pattern,\n * or state object to be searched for within the current state name.\n * @param params A param object, e.g. `{sectionId: section.id}`,\n * that you'd like to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it does include the state\n */\n StateService.prototype.includes = function (stateOrName, params, options) {\n options = defaults(options, { relative: this.$current });\n var glob = isString(stateOrName) && Glob.fromString(stateOrName);\n if (glob) {\n if (!glob.matches(this.$current.name))\n return false;\n stateOrName = this.$current.name;\n }\n var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative), include = this.$current.includes;\n if (!isDefined(state))\n return undefined;\n if (!isDefined(include[state.name]))\n return false;\n if (!params)\n return true;\n var schema = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n };\n /**\n * Generates a URL for a state and parameters\n *\n * Returns the url for the given state populated with the given params.\n *\n * #### Example:\n * ```js\n * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n * ```\n *\n * @param stateOrName The state name or state object you'd like to generate a url from.\n * @param params An object of parameter values to fill the state's required parameters.\n * @param options Options object. The options are:\n *\n * @returns {string} compiled state url\n */\n StateService.prototype.href = function (stateOrName, params, options) {\n var defaultHrefOpts = {\n lossy: true,\n inherit: true,\n absolute: false,\n relative: this.$current,\n };\n options = defaults(options, defaultHrefOpts);\n params = params || {};\n var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n if (!isDefined(state))\n return null;\n if (options.inherit)\n params = this.params.$inherit(params, this.$current, state);\n var nav = state && options.lossy ? state.navigable : state;\n if (!nav || nav.url === undefined || nav.url === null) {\n return null;\n }\n return this.router.urlRouter.href(nav.url, params, { absolute: options.absolute });\n };\n /**\n * Sets or gets the default [[transitionTo]] error handler.\n *\n * The error handler is called when a [[Transition]] is rejected or when any error occurred during the Transition.\n * This includes errors caused by resolves and transition hooks.\n *\n * Note:\n * This handler does not receive certain Transition rejections.\n * Redirected and Ignored Transitions are not considered to be errors by [[StateService.transitionTo]].\n *\n * The built-in default error handler logs the error to the console.\n *\n * You can provide your own custom handler.\n *\n * #### Example:\n * ```js\n * stateService.defaultErrorHandler(function() {\n * // Do not log transitionTo errors\n * });\n * ```\n *\n * @param handler a global error handler function\n * @returns the current global error handler\n */\n StateService.prototype.defaultErrorHandler = function (handler) {\n return (this._defaultErrorHandler = handler || this._defaultErrorHandler);\n };\n StateService.prototype.get = function (stateOrName, base) {\n var reg = this.router.stateRegistry;\n if (arguments.length === 0)\n return reg.get();\n return reg.get(stateOrName, base || this.$current);\n };\n /**\n * Lazy loads a state\n *\n * Explicitly runs a state's [[StateDeclaration.lazyLoad]] function.\n *\n * @param stateOrName the state that should be lazy loaded\n * @param transition the optional Transition context to use (if the lazyLoad function requires an injector, etc)\n * Note: If no transition is provided, a noop transition is created using the from the current state to the current state.\n * This noop transition is not actually run.\n *\n * @returns a promise to lazy load\n */\n StateService.prototype.lazyLoad = function (stateOrName, transition) {\n var state = this.get(stateOrName);\n if (!state || !state.lazyLoad)\n throw new Error('Can not lazy load ' + stateOrName);\n var currentPath = this.getCurrentPath();\n var target = PathUtils.makeTargetState(this.router.stateRegistry, currentPath);\n transition = transition || this.router.transitionService.create(currentPath, target);\n return lazyLoadState(transition, state);\n };\n return StateService;\n}());\nexport { StateService };\n","import { isArray, isObject } from '../common/index';\n/**\n * An angular1-like promise api\n *\n * This object implements four methods similar to the\n * [angular 1 promise api](https://docs.angularjs.org/api/ng/service/$q)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This API provides native ES6 promise support wrapped as a $q-like API.\n * Internally, UI-Router uses this $q object to perform promise operations.\n * The `angular-ui-router` (ui-router for angular 1) uses the $q API provided by angular.\n *\n * $q-like promise api\n */\nexport var $q = {\n /** Normalizes a value as a promise */\n when: function (val) { return new Promise(function (resolve, reject) { return resolve(val); }); },\n /** Normalizes a value as a promise rejection */\n reject: function (val) {\n return new Promise(function (resolve, reject) {\n reject(val);\n });\n },\n /** @returns a deferred object, which has `resolve` and `reject` functions */\n defer: function () {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n },\n /** Like Promise.all(), but also supports object key/promise notation like $q */\n all: function (promises) {\n if (isArray(promises)) {\n return Promise.all(promises);\n }\n if (isObject(promises)) {\n // Convert promises map to promises array.\n // When each promise resolves, map it to a tuple { key: key, val: val }\n var chain = Object.keys(promises).map(function (key) { return promises[key].then(function (val) { return ({ key: key, val: val }); }); });\n // Then wait for all promises to resolve, and convert them back to an object\n return $q.all(chain).then(function (values) {\n return values.reduce(function (acc, tuple) {\n acc[tuple.key] = tuple.val;\n return acc;\n }, {});\n });\n }\n },\n};\n","import { extend, assertPredicate, isFunction, isArray, isInjectable, } from '../common/index';\n// globally available injectables\nvar globals = {};\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\nvar ARGUMENT_NAMES = /([^\\s,]+)/g;\n/**\n * A basic angular1-like injector api\n *\n * This object implements four methods similar to the\n * [angular 1 dependency injector](https://docs.angularjs.org/api/auto/service/$injector)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This object provides a naive implementation of a globally scoped dependency injection system.\n * It supports the following DI approaches:\n *\n * ### Function parameter names\n *\n * A function's `.toString()` is called, and the parameter names are parsed.\n * This only works when the parameter names aren't \"mangled\" by a minifier such as UglifyJS.\n *\n * ```js\n * function injectedFunction(FooService, BarService) {\n * // FooService and BarService are injected\n * }\n * ```\n *\n * ### Function annotation\n *\n * A function may be annotated with an array of dependency names as the `$inject` property.\n *\n * ```js\n * injectedFunction.$inject = [ 'FooService', 'BarService' ];\n * function injectedFunction(fs, bs) {\n * // FooService and BarService are injected as fs and bs parameters\n * }\n * ```\n *\n * ### Array notation\n *\n * An array provides the names of the dependencies to inject (as strings).\n * The function is the last element of the array.\n *\n * ```js\n * [ 'FooService', 'BarService', function (fs, bs) {\n * // FooService and BarService are injected as fs and bs parameters\n * }]\n * ```\n *\n * @type {$InjectorLike}\n */\nexport var $injector = {\n /** Gets an object from DI based on a string token */\n get: function (name) { return globals[name]; },\n /** Returns true if an object named `name` exists in global DI */\n has: function (name) { return $injector.get(name) != null; },\n /**\n * Injects a function\n *\n * @param fn the function to inject\n * @param context the function's `this` binding\n * @param locals An object with additional DI tokens and values, such as `{ someToken: { foo: 1 } }`\n */\n invoke: function (fn, context, locals) {\n var all = extend({}, globals, locals || {});\n var params = $injector.annotate(fn);\n var ensureExist = assertPredicate(function (key) { return all.hasOwnProperty(key); }, function (key) { return \"DI can't find injectable: '\".concat(key, \"'\"); });\n var args = params.filter(ensureExist).map(function (x) { return all[x]; });\n if (isFunction(fn))\n return fn.apply(context, args);\n else\n return fn.slice(-1)[0].apply(context, args);\n },\n /**\n * Returns a function's dependencies\n *\n * Analyzes a function (or array) and returns an array of DI tokens that the function requires.\n * @return an array of `string`s\n */\n annotate: function (fn) {\n if (!isInjectable(fn))\n throw new Error(\"Not an injectable function: \".concat(fn));\n if (fn && fn.$inject)\n return fn.$inject;\n if (isArray(fn))\n return fn.slice(0, -1);\n var fnStr = fn.toString().replace(STRIP_COMMENTS, '');\n var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);\n return result || [];\n },\n};\n","import { identity, unnestR, isArray, splitEqual, splitHash, splitQuery, } from '../common';\nexport var keyValsToObjectR = function (accum, _a) {\n var key = _a[0], val = _a[1];\n if (!accum.hasOwnProperty(key)) {\n accum[key] = val;\n }\n else if (isArray(accum[key])) {\n accum[key].push(val);\n }\n else {\n accum[key] = [accum[key], val];\n }\n return accum;\n};\nexport var getParams = function (queryString) {\n return queryString.split('&').filter(identity).map(splitEqual).reduce(keyValsToObjectR, {});\n};\nexport function parseUrl(url) {\n var orEmptyString = function (x) { return x || ''; };\n var _a = splitHash(url).map(orEmptyString), beforehash = _a[0], hash = _a[1];\n var _b = splitQuery(beforehash).map(orEmptyString), path = _b[0], search = _b[1];\n return { path: path, search: search, hash: hash, url: url };\n}\nexport var buildUrl = function (loc) {\n var path = loc.path();\n var searchObject = loc.search();\n var hash = loc.hash();\n var search = Object.keys(searchObject)\n .map(function (key) {\n var param = searchObject[key];\n var vals = isArray(param) ? param : [param];\n return vals.map(function (val) { return key + '=' + val; });\n })\n .reduce(unnestR, [])\n .join('&');\n return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n};\nexport function locationPluginFactory(name, isHtml5, serviceClass, configurationClass) {\n return function (uiRouter) {\n var service = (uiRouter.locationService = new serviceClass(uiRouter));\n var configuration = (uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5));\n function dispose(router) {\n router.dispose(service);\n router.dispose(configuration);\n }\n return { name: name, service: service, configuration: configuration, dispose: dispose };\n };\n}\n","import { deregAll, isDefined, removeFrom, root } from '../common';\nimport { buildUrl, getParams, parseUrl } from './utils';\n/** A base `LocationServices` */\nvar BaseLocationServices = /** @class */ (function () {\n function BaseLocationServices(router, fireAfterUpdate) {\n var _this = this;\n this.fireAfterUpdate = fireAfterUpdate;\n this._listeners = [];\n this._listener = function (evt) { return _this._listeners.forEach(function (cb) { return cb(evt); }); };\n this.hash = function () { return parseUrl(_this._get()).hash; };\n this.path = function () { return parseUrl(_this._get()).path; };\n this.search = function () { return getParams(parseUrl(_this._get()).search); };\n this._location = root.location;\n this._history = root.history;\n }\n BaseLocationServices.prototype.url = function (url, replace) {\n if (replace === void 0) { replace = true; }\n if (isDefined(url) && url !== this._get()) {\n this._set(null, null, url, replace);\n if (this.fireAfterUpdate) {\n this._listeners.forEach(function (cb) { return cb({ url: url }); });\n }\n }\n return buildUrl(this);\n };\n BaseLocationServices.prototype.onChange = function (cb) {\n var _this = this;\n this._listeners.push(cb);\n return function () { return removeFrom(_this._listeners, cb); };\n };\n BaseLocationServices.prototype.dispose = function (router) {\n deregAll(this._listeners);\n };\n return BaseLocationServices;\n}());\nexport { BaseLocationServices };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { root, trimHashVal } from '../common';\nimport { BaseLocationServices } from './baseLocationService';\n/** A `LocationServices` that uses the browser hash \"#\" to get/set the current location */\nvar HashLocationService = /** @class */ (function (_super) {\n __extends(HashLocationService, _super);\n function HashLocationService(router) {\n var _this = _super.call(this, router, false) || this;\n root.addEventListener('hashchange', _this._listener, false);\n return _this;\n }\n HashLocationService.prototype._get = function () {\n return trimHashVal(this._location.hash);\n };\n HashLocationService.prototype._set = function (state, title, url, replace) {\n this._location.hash = url;\n };\n HashLocationService.prototype.dispose = function (router) {\n _super.prototype.dispose.call(this, router);\n root.removeEventListener('hashchange', this._listener);\n };\n return HashLocationService;\n}(BaseLocationServices));\nexport { HashLocationService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseLocationServices } from './baseLocationService';\n/** A `LocationServices` that gets/sets the current location from an in-memory object */\nvar MemoryLocationService = /** @class */ (function (_super) {\n __extends(MemoryLocationService, _super);\n function MemoryLocationService(router) {\n return _super.call(this, router, true) || this;\n }\n MemoryLocationService.prototype._get = function () {\n return this._url;\n };\n MemoryLocationService.prototype._set = function (state, title, url, replace) {\n this._url = url;\n };\n return MemoryLocationService;\n}(BaseLocationServices));\nexport { MemoryLocationService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseLocationServices } from './baseLocationService';\nimport { root, splitHash, splitQuery, stripLastPathElement } from '../common';\n/**\n * A `LocationServices` that gets/sets the current location using the browser's `location` and `history` apis\n *\n * Uses `history.pushState` and `history.replaceState`\n */\nvar PushStateLocationService = /** @class */ (function (_super) {\n __extends(PushStateLocationService, _super);\n function PushStateLocationService(router) {\n var _this = _super.call(this, router, true) || this;\n _this._config = router.urlService.config;\n root.addEventListener('popstate', _this._listener, false);\n return _this;\n }\n /**\n * Gets the base prefix without:\n * - trailing slash\n * - trailing filename\n * - protocol and hostname\n *\n * If , this returns '/base'.\n * If , this returns '/foo/base'.\n * If , this returns '/base'.\n * If , this returns '/base'.\n * If , this returns ''.\n * If , this returns ''.\n * If , this returns ''.\n *\n * See: https://html.spec.whatwg.org/dev/semantics.html#the-base-element\n */\n PushStateLocationService.prototype._getBasePrefix = function () {\n return stripLastPathElement(this._config.baseHref());\n };\n PushStateLocationService.prototype._get = function () {\n var _a = this._location, pathname = _a.pathname, hash = _a.hash, search = _a.search;\n search = splitQuery(search)[1]; // strip ? if found\n hash = splitHash(hash)[1]; // strip # if found\n var basePrefix = this._getBasePrefix();\n var exactBaseHrefMatch = pathname === this._config.baseHref();\n var startsWithBase = pathname.substr(0, basePrefix.length) === basePrefix;\n pathname = exactBaseHrefMatch ? '/' : startsWithBase ? pathname.substring(basePrefix.length) : pathname;\n return pathname + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n };\n PushStateLocationService.prototype._set = function (state, title, url, replace) {\n var basePrefix = this._getBasePrefix();\n var slash = url && url[0] !== '/' ? '/' : '';\n var fullUrl = url === '' || url === '/' ? this._config.baseHref() : basePrefix + slash + url;\n if (replace) {\n this._history.replaceState(state, title, fullUrl);\n }\n else {\n this._history.pushState(state, title, fullUrl);\n }\n };\n PushStateLocationService.prototype.dispose = function (router) {\n _super.prototype.dispose.call(this, router);\n root.removeEventListener('popstate', this._listener);\n };\n return PushStateLocationService;\n}(BaseLocationServices));\nexport { PushStateLocationService };\n","import { isDefined, isUndefined } from '../common/predicates';\n/** A `LocationConfig` that delegates to the browser's `location` object */\nvar BrowserLocationConfig = /** @class */ (function () {\n function BrowserLocationConfig(router, _isHtml5) {\n if (_isHtml5 === void 0) { _isHtml5 = false; }\n this._isHtml5 = _isHtml5;\n this._baseHref = undefined;\n this._hashPrefix = '';\n }\n BrowserLocationConfig.prototype.port = function () {\n if (location.port) {\n return Number(location.port);\n }\n return this.protocol() === 'https' ? 443 : 80;\n };\n BrowserLocationConfig.prototype.protocol = function () {\n return location.protocol.replace(/:/g, '');\n };\n BrowserLocationConfig.prototype.host = function () {\n return location.hostname;\n };\n BrowserLocationConfig.prototype.html5Mode = function () {\n return this._isHtml5;\n };\n BrowserLocationConfig.prototype.hashPrefix = function (newprefix) {\n return isDefined(newprefix) ? (this._hashPrefix = newprefix) : this._hashPrefix;\n };\n BrowserLocationConfig.prototype.baseHref = function (href) {\n if (isDefined(href))\n this._baseHref = href;\n if (isUndefined(this._baseHref))\n this._baseHref = this.getBaseHref();\n return this._baseHref;\n };\n BrowserLocationConfig.prototype.getBaseHref = function () {\n var baseTag = document.getElementsByTagName('base')[0];\n if (baseTag && baseTag.href) {\n return baseTag.href.replace(/^([^/:]*:)?\\/\\/[^/]*/, '');\n }\n return this._isHtml5 ? '/' : location.pathname || '/';\n };\n BrowserLocationConfig.prototype.dispose = function () { };\n return BrowserLocationConfig;\n}());\nexport { BrowserLocationConfig };\n","import { BrowserLocationConfig } from './browserLocationConfig';\nimport { HashLocationService } from './hashLocationService';\nimport { locationPluginFactory } from './utils';\nimport { PushStateLocationService } from './pushStateLocationService';\nimport { MemoryLocationService } from './memoryLocationService';\nimport { MemoryLocationConfig } from './memoryLocationConfig';\nimport { $injector } from './injector';\nimport { $q } from './q';\nimport { services } from '../common/coreservices';\nexport function servicesPlugin(router) {\n services.$injector = $injector;\n services.$q = $q;\n return { name: 'vanilla.services', $q: $q, $injector: $injector, dispose: function () { return null; } };\n}\n/** A `UIRouterPlugin` uses the browser hash to get/set the current location */\nexport var hashLocationPlugin = locationPluginFactory('vanilla.hashBangLocation', false, HashLocationService, BrowserLocationConfig);\n/** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */\nexport var pushStateLocationPlugin = locationPluginFactory('vanilla.pushStateLocation', true, PushStateLocationService, BrowserLocationConfig);\n/** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */\nexport var memoryLocationPlugin = locationPluginFactory('vanilla.memoryLocation', false, MemoryLocationService, MemoryLocationConfig);\n","import { isDefined } from '../common/predicates';\nimport { noop } from '../common/common';\n/** A `LocationConfig` mock that gets/sets all config from an in-memory object */\nvar MemoryLocationConfig = /** @class */ (function () {\n function MemoryLocationConfig() {\n var _this = this;\n this.dispose = noop;\n this._baseHref = '';\n this._port = 80;\n this._protocol = 'http';\n this._host = 'localhost';\n this._hashPrefix = '';\n this.port = function () { return _this._port; };\n this.protocol = function () { return _this._protocol; };\n this.host = function () { return _this._host; };\n this.baseHref = function () { return _this._baseHref; };\n this.html5Mode = function () { return false; };\n this.hashPrefix = function (newval) { return (isDefined(newval) ? (_this._hashPrefix = newval) : _this._hashPrefix); };\n }\n return MemoryLocationConfig;\n}());\nexport { MemoryLocationConfig };\n","var UIRouterPluginBase = /** @class */ (function () {\n function UIRouterPluginBase() {\n }\n UIRouterPluginBase.prototype.dispose = function (router) { };\n return UIRouterPluginBase;\n}());\nexport { UIRouterPluginBase };\n","(function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self,e.JSBI=t())})(this,function(){\"use strict\";var e=Math.imul,t=Math.clz32;function i(e){\"@babel/helpers - typeof\";return i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},i(e)}function _(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function n(e,t){for(var _,n=0;ne.length)&&(t=e.length);for(var _=0,n=Array(t);_=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:l}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var g,a=!0,u=!1;return{s:function(){_=_.call(e)},n:function(){var e=_.next();return a=e.done,e},e:function(t){u=!0,g=t},f:function(){try{a||null==_.return||_.return()}finally{if(u)throw g}}}}var S=function(e){var t=Math.abs,n=Math.max,o=Math.floor;function a(e,t){var i;if(_(this,a),i=u.call(this,e),i.sign=t,Object.setPrototypeOf(b(i),a.prototype),e>a.__kMaxLength)throw new RangeError(\"Maximum BigInt size exceeded\");return i}g(a,e);var u=c(a);return l(a,[{key:\"toDebugString\",value:function(){var e,t=[\"BigInt[\"],i=B(this);try{for(i.s();!(e=i.n()).done;){var _=e.value;t.push((_?(_>>>0).toString(16):_)+\", \")}}catch(e){i.e(e)}finally{i.f()}return t.push(\"]\"),t.join(\"\")}},{key:\"toString\",value:function(){var e=0e||36this.length&&(_=this.length);for(var n=32767&e,l=e>>>15,g=0,o=t,u=0;u<_;u++){var s=this.__digit(u),r=32767&s,d=s>>>15,h=a.__imul(r,n),b=a.__imul(r,l),m=a.__imul(d,n),c=a.__imul(d,l),v=o+h+g;g=v>>>30,v&=1073741823,v+=((32767&b)<<15)+((32767&m)<<15),g+=v>>>30,o=c+(b>>>15)+(m>>>15),this.__setDigit(u,1073741823&v)}if(0!==g||0!==o)throw new Error(\"implementation bug\")}},{key:\"__inplaceAdd\",value:function(e,t,_){for(var n,l=0,g=0;g<_;g++)n=this.__halfDigit(t+g)+e.__halfDigit(g)+l,l=n>>>15,this.__setHalfDigit(t+g,32767&n);return l}},{key:\"__inplaceSub\",value:function(e,t,_){var n=0;if(1&t){t>>=1;for(var l=this.__digit(t),g=32767&l,o=0;o<_-1>>>1;o++){var a=e.__digit(o),u=(l>>>15)-(32767&a)-n;n=1&u>>>15,this.__setDigit(t+o,(32767&u)<<15|32767&g),l=this.__digit(t+o+1),g=(32767&l)-(a>>>15)-n,n=1&g>>>15}var s=e.__digit(o),r=(l>>>15)-(32767&s)-n;n=1&r>>>15,this.__setDigit(t+o,(32767&r)<<15|32767&g);if(t+o+1>=this.length)throw new RangeError(\"out of bounds\");0==(1&_)&&(l=this.__digit(t+o+1),g=(32767&l)-(s>>>15)-n,n=1&g>>>15,this.__setDigit(t+e.length,1073709056&l|32767&g))}else{t>>=1;for(var d=0;d>>15;var c=(h>>>15)-(b>>>15)-n;n=1&c>>>15,this.__setDigit(t+d,(32767&c)<<15|32767&m)}var v=this.__digit(t+d),y=e.__digit(d),f=(32767&v)-(32767&y)-n;n=1&f>>>15;var D=0;0==(1&_)&&(D=(v>>>15)-(y>>>15)-n,n=1&D>>>15),this.__setDigit(t+d,(32767&D)<<15|32767&f)}return n}},{key:\"__inplaceRightShift\",value:function(e){if(0!==e){for(var t,_=this.__digit(0)>>>e,n=this.length-1,l=0;l>>e;this.__setDigit(n,_)}}},{key:\"__digit\",value:function(e){return this[e]}},{key:\"__unsignedDigit\",value:function(e){return this[e]>>>0}},{key:\"__setDigit\",value:function(e,t){this[e]=0|t}},{key:\"__setDigitGrow\",value:function(e,t){this[e]=0|t}},{key:\"__halfDigitLength\",value:function(){var e=this.length;return 32767>=this.__unsignedDigit(e-1)?2*e-1:2*e}},{key:\"__halfDigit\",value:function(e){return 32767&this[e>>>1]>>>15*(1&e)}},{key:\"__setHalfDigit\",value:function(e,t){var i=e>>>1,_=this.__digit(i),n=1&e?32767&_|t<<15:1073709056&_|32767&t;this.__setDigit(i,n)}}],[{key:\"BigInt\",value:function(e){var t=Number.isFinite;if(\"number\"==typeof e){if(0===e)return a.__zero();if(a.__isOneDigitInt(e))return 0>e?a.__oneDigit(-e,!0):a.__oneDigit(e,!1);if(!t(e)||o(e)!==e)throw new RangeError(\"The number \"+e+\" cannot be converted to BigInt because it is not an integer\");return a.__fromDouble(e)}if(\"string\"==typeof e){var _=a.__fromString(e);if(null===_)throw new SyntaxError(\"Cannot convert \"+e+\" to a BigInt\");return _}if(\"boolean\"==typeof e)return!0===e?a.__oneDigit(1,!1):a.__zero();if(\"object\"===i(e)){if(e.constructor===a)return e;var n=a.__toPrimitive(e);return a.BigInt(n)}throw new TypeError(\"Cannot convert \"+e+\" to a BigInt\")}},{key:\"toNumber\",value:function(e){var t=e.length;if(0===t)return 0;if(1===t){var i=e.__unsignedDigit(0);return e.sign?-i:i}var _=e.__digit(t-1),n=a.__clz30(_),l=30*t-n;if(1024>>=12;var d=s-12,h=12<=s?0:o<<20+s,b=20+s;for(0>>30-d,h=o<>>30-b,b-=30;var m=a.__decideRounding(e,b,u,o);if((1===m||0===m&&1==(1&h))&&(h=h+1>>>0,0===h&&(r++,0!=r>>>20&&(r=0,g++,1023=a.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");if(1===e.length&&2===e.__digit(0)){var _=1+(0|i/30),n=e.sign&&0!=(1&i),l=new a(_,n);l.__initializeDigits();var g=1<>=1;0!==i;i>>=1)u=a.multiply(u,u),0!=(1&i)&&(null===o?o=u:o=a.multiply(o,u));return o}},{key:\"multiply\",value:function(e,t){if(0===e.length)return e;if(0===t.length)return t;var _=e.length+t.length;30<=e.__clzmsd()+t.__clzmsd()&&_--;var n=new a(_,e.sign!==t.sign);n.__initializeDigits();for(var l=0;la.__absoluteCompare(e,t))return a.__zero();var i,_=e.sign!==t.sign,n=t.__unsignedDigit(0);if(1===t.length&&32767>=n){if(1===n)return _===e.sign?e:a.unaryMinus(e);i=a.__absoluteDivSmall(e,n,null)}else i=a.__absoluteDivLarge(e,t,!0,!1);return i.sign=_,i.__trim()}},{key:\"remainder\",value:function i(e,t){if(0===t.length)throw new RangeError(\"Division by zero\");if(0>a.__absoluteCompare(e,t))return e;var _=t.__unsignedDigit(0);if(1===t.length&&32767>=_){if(1===_)return a.__zero();var n=a.__absoluteModSmall(e,_);return 0===n?a.__zero():a.__oneDigit(n,e.sign)}var i=a.__absoluteDivLarge(e,t,!1,!0);return i.sign=e.sign,i.__trim()}},{key:\"add\",value:function(e,t){var i=e.sign;return i===t.sign?a.__absoluteAdd(e,t,i):0<=a.__absoluteCompare(e,t)?a.__absoluteSub(e,t,i):a.__absoluteSub(t,e,!i)}},{key:\"subtract\",value:function(e,t){var i=e.sign;return i===t.sign?0<=a.__absoluteCompare(e,t)?a.__absoluteSub(e,t,i):a.__absoluteSub(t,e,!i):a.__absoluteAdd(e,t,i)}},{key:\"leftShift\",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?a.__rightShiftByAbsolute(e,t):a.__leftShiftByAbsolute(e,t)}},{key:\"signedRightShift\",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?a.__leftShiftByAbsolute(e,t):a.__rightShiftByAbsolute(e,t)}},{key:\"unsignedRightShift\",value:function(){throw new TypeError(\"BigInts have no unsigned right shift; use >> instead\")}},{key:\"lessThan\",value:function(e,t){return 0>a.__compareToBigInt(e,t)}},{key:\"lessThanOrEqual\",value:function(e,t){return 0>=a.__compareToBigInt(e,t)}},{key:\"greaterThan\",value:function(e,t){return 0e)throw new RangeError(\"Invalid value: not (convertible to) a safe integer\");if(0===e)return a.__zero();if(e>=a.__kMaxLengthBits)return t;var _=0|(e+29)/30;if(t.length<_)return t;var l=t.__unsignedDigit(_-1),g=1<<(e-1)%30;if(t.length===_&&le)throw new RangeError(\"Invalid value: not (convertible to) a safe integer\");if(0===e)return a.__zero();if(t.sign){if(e>a.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");return a.__truncateAndSubFromPowerOfTwo(e,t,!1)}if(e>=a.__kMaxLengthBits)return t;var i=0|(e+29)/30;if(t.length>>_)return t}return a.__truncateToNBits(e,t)}},{key:\"ADD\",value:function(e,t){if(e=a.__toPrimitive(e),t=a.__toPrimitive(t),\"string\"==typeof e)return\"string\"!=typeof t&&(t=t.toString()),e+t;if(\"string\"==typeof t)return e.toString()+t;if(e=a.__toNumeric(e),t=a.__toNumeric(t),a.__isBigInt(e)&&a.__isBigInt(t))return a.add(e,t);if(\"number\"==typeof e&&\"number\"==typeof t)return e+t;throw new TypeError(\"Cannot mix BigInt and other types, use explicit conversions\")}},{key:\"LT\",value:function(e,t){return a.__compare(e,t,0)}},{key:\"LE\",value:function(e,t){return a.__compare(e,t,1)}},{key:\"GT\",value:function(e,t){return a.__compare(e,t,2)}},{key:\"GE\",value:function(e,t){return a.__compare(e,t,3)}},{key:\"EQ\",value:function(e,t){for(;;){if(a.__isBigInt(e))return a.__isBigInt(t)?a.equal(e,t):a.EQ(t,e);if(\"number\"==typeof e){if(a.__isBigInt(t))return a.__equalToNumber(t,e);if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"string\"==typeof e){if(a.__isBigInt(t))return e=a.__fromString(e),null!==e&&a.equal(e,t);if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"boolean\"==typeof e){if(a.__isBigInt(t))return a.__equalToNumber(t,+e);if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"symbol\"===i(e)){if(a.__isBigInt(t))return!1;if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"object\"===i(e)){if(\"object\"===i(t)&&t.constructor!==a)return e==t;e=a.__toPrimitive(e)}else return e==t}}},{key:\"NE\",value:function(e,t){return!a.EQ(e,t)}},{key:\"DataViewGetBigInt64\",value:function(e,t){var i=!!(2>>30),s.__setDigit(2,l>>>28),s.__trim()}},{key:\"DataViewSetBigInt64\",value:function(e,t,i){var _=!!(3>>2,2t)n=-t-1;else{if(0===i)return-1;i--,_=e.__digit(i),n=29}var l=1<>>20,_=i-1023,n=(0|_/30)+1,l=new a(n,0>e),g=1048575&a.__kBitConversionInts[1]|1048576,o=a.__kBitConversionInts[0],u=20,s=_%30,r=0;if(s>>d,g=g<<32-d|o>>>d,o<<=32-d}else if(s===u)r=32,t=g,g=o,o=0;else{var h=s-u;r=32-h,t=g<>>32-h,g=o<>>2,g=g<<30|o>>>2,o<<=30):t=0,l.__setDigit(b,t);return l.__trim()}},{key:\"__isWhitespace\",value:function(e){return!!(13>=e&&9<=e)||(159>=e?32==e:131071>=e?160==e||5760==e:196607>=e?(e&=131071,10>=e||40==e||41==e||47==e||95==e||4096==e):65279==e)}},{key:\"__fromString\",value:function(e){var t=11073741824/o)return null;var s=o*g+u>>>a.__kBitsPerCharTableShift,r=new a(0|(s+29)/30,!1),h=10>t?t:10,b=10>=a.__kBitsPerCharTableShift;var c=[],v=[],y=!1;do{for(var f,D=0,p=0;;){if(f=void 0,l-48>>>0>>0>>0>>0>>a.__kBitsPerCharTableShift)/30;r.__inplaceMultiplyAdd(I,C,m)}while(!k)}if(n!==_){if(!a.__isWhitespace(l))return null;for(n++;n<_;n++)if(l=e.charCodeAt(n),!a.__isWhitespace(l))return null}return r.sign=-1===i,r.__trim()}},{key:\"__fillFromParts\",value:function(e,t,_){for(var n=0,l=0,g=0,o=t.length-1;0<=o;o--){var a=t[o],u=_[o];l|=a<>>u-g)}if(0!==l){if(n>=e.length)throw new Error(\"implementation bug\");e.__setDigit(n++,l)}for(;n>>1)+(85&n),n=(51&n>>>2)+(51&n),n=(15&n>>>4)+(15&n);var l=n,g=t-1,o=e.__digit(_-1),u=a.__clz30(o),s=0|(30*_-u+l-1)/l;if(e.sign&&s++,268435456>>y,b=30-y;b>=l;)r[d--]=a.__kConversionChars[h&g],h>>>=l,b-=l}var f=(h|o<>>l-b;0!==h;)r[d--]=a.__kConversionChars[h&g],h>>>=l;if(e.sign&&(r[d--]=\"-\"),-1!==d)throw new Error(\"implementation bug\");return r.join(\"\")}},{key:\"__toStringGeneric\",value:function(e,t,_){var n=e.length;if(0===n)return\"\";if(1===n){var l=e.__unsignedDigit(0).toString(t);return!1===_&&e.sign&&(l=\"-\"+l),l}var g=30*n-a.__clz30(e.__digit(n-1)),o=a.__kMaxBitsPerChar[t],u=o-1,s=g*a.__kBitsPerCharTableMultiplier;s+=u-1,s=0|s/u;var r,d,h=s+1>>1,b=a.exponentiate(a.__oneDigit(t,!1),a.__oneDigit(h,!1)),m=b.__unsignedDigit(0);if(1===b.length&&32767>=m){r=new a(e.length,!1),r.__initializeDigits();for(var c,v=0,y=2*e.length-1;0<=y;y--)c=v<<15|e.__halfDigit(y),r.__setHalfDigit(y,0|c/m),v=0|c%m;d=v.toString(t)}else{var f=a.__absoluteDivLarge(e,b,!0,!0);r=f.quotient;var D=f.remainder.__trim();d=a.__toStringGeneric(D,t,!0)}r.__trim();for(var p=a.__toStringGeneric(r,t,!0);d.length_?a.__absoluteLess(i):0}},{key:\"__compareToNumber\",value:function(e,i){if(a.__isOneDigitInt(i)){var _=e.sign,n=0>i;if(_!==n)return a.__unequalSign(_);if(0===e.length){if(n)throw new Error(\"implementation bug\");return 0===i?0:-1}if(1l?a.__absoluteGreater(_):gt)return a.__unequalSign(i);if(0===t)throw new Error(\"implementation bug: should be handled elsewhere\");if(0===e.length)return-1;a.__kBitConversionDouble[0]=t;var _=2047&a.__kBitConversionInts[1]>>>20;if(2047==_)throw new Error(\"implementation bug: handled elsewhere\");var n=_-1023;if(0>n)return a.__absoluteGreater(i);var l=e.length,g=e.__digit(l-1),o=a.__clz30(g),u=30*l-o,s=n+1;if(us)return a.__absoluteGreater(i);var r=1048576|1048575&a.__kBitConversionInts[1],d=a.__kBitConversionInts[0],h=20,b=29-o;if(b!==(0|(u-1)%30))throw new Error(\"implementation bug\");var m,c=0;if(b>>v,r=r<<32-v|d>>>v,d<<=32-v}else if(b===h)c=32,m=r,r=d,d=0;else{var y=b-h;c=32-y,m=r<>>32-y,r=d<>>=0,m>>>=0,g>m)return a.__absoluteGreater(i);if(g>>2,r=r<<30|d>>>2,d<<=30):m=0;var D=e.__unsignedDigit(f);if(D>m)return a.__absoluteGreater(i);if(Di&&e.__unsignedDigit(0)===t(i):0===a.__compareToDouble(e,i)}},{key:\"__comparisonResultToBool\",value:function(e,t){return 0===t?0>e:1===t?0>=e:2===t?0t;case 3:return e>=t;}if(a.__isBigInt(e)&&\"string\"==typeof t)return t=a.__fromString(t),null!==t&&a.__comparisonResultToBool(a.__compareToBigInt(e,t),i);if(\"string\"==typeof e&&a.__isBigInt(t))return e=a.__fromString(e),null!==e&&a.__comparisonResultToBool(a.__compareToBigInt(e,t),i);if(e=a.__toNumeric(e),t=a.__toNumeric(t),a.__isBigInt(e)){if(a.__isBigInt(t))return a.__comparisonResultToBool(a.__compareToBigInt(e,t),i);if(\"number\"!=typeof t)throw new Error(\"implementation bug\");return a.__comparisonResultToBool(a.__compareToNumber(e,t),i)}if(\"number\"!=typeof e)throw new Error(\"implementation bug\");if(a.__isBigInt(t))return a.__comparisonResultToBool(a.__compareToNumber(t,e),2^i);if(\"number\"!=typeof t)throw new Error(\"implementation bug\");return 0===i?et:3===i?e>=t:void 0}},{key:\"__absoluteAdd\",value:function(e,t,_){if(e.length>>30,g.__setDigit(u,1073741823&l);for(;u>>30,g.__setDigit(u,1073741823&s)}return u>>30,l.__setDigit(o,1073741823&n);for(;o>>30,l.__setDigit(o,1073741823&u)}return l.__trim()}},{key:\"__absoluteAddOne\",value:function(e,t){var _=2>>30,_.__setDigit(o,1073741823&l);return 0!==g&&_.__setDigitGrow(n,1),_}},{key:\"__absoluteSubOne\",value:function(e,t){var _=e.length;t=t||_;for(var n,l=new a(t,!1),g=1,o=0;o<_;o++)n=e.__digit(o)-g,g=1&n>>>30,l.__setDigit(o,1073741823&n);if(0!==g)throw new Error(\"implementation bug\");for(var u=_;un?0:e.__unsignedDigit(n)>t.__unsignedDigit(n)?1:-1}},{key:\"__multiplyAccumulate\",value:function(e,t,_,n){if(0!==t){for(var l=32767&t,g=t>>>15,o=0,u=0,s=0;s>>15,m=a.__imul(h,l),c=a.__imul(h,g),v=a.__imul(b,l),y=a.__imul(b,g);r+=u+m+o,o=r>>>30,r&=1073741823,r+=((32767&c)<<15)+((32767&v)<<15),o+=r>>>30,u=y+(c>>>15)+(v>>>15),_.__setDigit(n,1073741823&r)}for(;0!==o||0!==u;n++){var f=_.__digit(n);f+=o+u,u=0,o=f>>>30,_.__setDigit(n,1073741823&f)}}}},{key:\"__internalMultiplyAdd\",value:function(e,t,_,l,g){for(var o=_,u=0,s=0;s>>15,t),m=h+((32767&b)<<15)+u+o;o=m>>>30,u=b>>>15,g.__setDigit(s,1073741823&m)}if(g.length>l)for(g.__setDigit(l++,o+u);l>>0,o=0|g/t;n=0|g%t,g=(n<<15|e.__halfDigit(l-1))>>>0;var u=0|g/t;n=0|g%t,_.__setDigit(l>>>1,o<<15|u)}return _}},{key:\"__absoluteModSmall\",value:function(e,t){for(var _,n=0,l=2*e.length-1;0<=l;l--)_=(n<<15|e.__halfDigit(l))>>>0,n=0|_%t;return n}},{key:\"__absoluteDivLarge\",value:function(e,t,i,_){var l=t.__halfDigitLength(),n=t.length,g=e.__halfDigitLength()-l,o=null;i&&(o=new a(g+2>>>1,!1),o.__initializeDigits());var s=new a(l+2>>>1,!1);s.__initializeDigits();var r=a.__clz15(t.__halfDigit(l-1));0>>0;m=0|y/u;for(var f=0|y%u,D=t.__halfDigit(l-2),p=d.__halfDigit(b+l-2);a.__imul(m,D)>>>0>(f<<16|p)>>>0&&(m--,f+=u,!(32767>>1,h|m))}if(_)return d.__inplaceRightShift(r),i?{quotient:o,remainder:d}:d;if(i)return o;throw new Error(\"unreachable\")}},{key:\"__clz15\",value:function(e){return a.__clz30(e)-15}},{key:\"__specialLeftShift\",value:function(e,t,_){var l=e.length,n=new a(l+_,!1);if(0===t){for(var g=0;g>>30-t;return 0<_&&n.__setDigit(l,u),n}},{key:\"__leftShiftByAbsolute\",value:function(e,t){var _=a.__toShiftAmount(t);if(0>_)throw new RangeError(\"BigInt too big\");var n=0|_/30,l=_%30,g=e.length,o=0!==l&&0!=e.__digit(g-1)>>>30-l,u=g+n+(o?1:0),s=new a(u,e.sign);if(0===l){for(var r=0;r>>30-l;if(o)s.__setDigit(g+n,h);else if(0!==h)throw new Error(\"implementation bug\")}return s.__trim()}},{key:\"__rightShiftByAbsolute\",value:function(e,t){var _=e.length,n=e.sign,l=a.__toShiftAmount(t);if(0>l)return a.__rightShiftByMaximum(n);var g=0|l/30,o=l%30,u=_-g;if(0>=u)return a.__rightShiftByMaximum(n);var s=!1;if(n){if(0!=(e.__digit(g)&(1<>>o,y=_-g-1,f=0;f>>o;b.__setDigit(y,v)}return s&&(b=a.__absoluteAddOne(b,!0,b)),b.__trim()}},{key:\"__rightShiftByMaximum\",value:function(e){return e?a.__oneDigit(1,!0):a.__zero()}},{key:\"__toShiftAmount\",value:function(e){if(1a.__kMaxLengthBits?-1:t}},{key:\"__toPrimitive\",value:function(e){var t=1>>u}return n.__setDigit(l,o),n.__trim()}},{key:\"__truncateAndSubFromPowerOfTwo\",value:function(e,t,_){for(var n=Math.min,l,g=0|(e+29)/30,o=new a(g,_),u=0,s=g-1,d=0,h=n(s,t.length);u>>30,o.__setDigit(u,1073741823&l);for(;u>>v;var y=1<<32-v;b=y-m-d,b&=y-1}return o.__setDigit(s,b),o.__trim()}},{key:\"__digitPow\",value:function(e,t){for(var i=1;0>>=1,e*=e;return i}},{key:\"__isOneDigitInt\",value:function(e){return(1073741823&e)===e}}]),a}(h(Array));return S.__kMaxLength=33554432,S.__kMaxLengthBits=S.__kMaxLength<<5,S.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],S.__kBitsPerCharTableShift=5,S.__kBitsPerCharTableMultiplier=1<>>0)/t)},S.__imul=e||function(e,t){return 0|e*t},S});\n","import { Subject } from './Subject';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nexport class Observable {\n constructor(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => (value = x), (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class ReplaySubject extends Subject {\n constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {\n super();\n this._bufferSize = _bufferSize;\n this._windowTime = _windowTime;\n this._timestampProvider = _timestampProvider;\n this._buffer = [];\n this._infiniteTimeWindow = true;\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n next(value) {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n const subscription = this._innerSubscribe(subscriber);\n const { _infiniteTimeWindow, _buffer } = this;\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n }\n _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined,\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n","import { EmptyError } from './util/EmptyError';\nexport function lastValueFrom(source, config) {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n let _hasValue = false;\n let _value;\n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest(...args) {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n const { args: observables, keys } = argsArgArrayOrObject(args);\n if (observables.length === 0) {\n return from([], scheduler);\n }\n const result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n (values) => createObject(keys, values)\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform = identity) {\n return (subscriber) => {\n maybeSchedule(scheduler, () => {\n const { length } = observables;\n const values = new Array(length);\n let active = length;\n let remainingFirstValues = length;\n for (let i = 0; i < length; i++) {\n maybeSchedule(scheduler, () => {\n const source = from(observables[i], scheduler);\n let hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, () => {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n","import { from } from '../observable/from';\nimport { take } from '../operators/take';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options = {}) {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n return (wrapperSource) => {\n let connection = null;\n let resetConnection = null;\n let subject = null;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = null;\n };\n const reset = () => {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection) {\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on, ...args) {\n if (on === true) {\n reset();\n return null;\n }\n if (on === false) {\n return null;\n }\n return on(...args)\n .pipe(take(1))\n .subscribe(() => reset());\n}\n","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom(...inputs) {\n const project = popResultSelector(inputs);\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n let hasValue = inputs.map(() => false);\n let ready = false;\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (ready) {\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n }));\n });\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(_scheduler, id, delay = 0) {\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, _delay) {\n let errored = false;\n let errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\n this._scheduled = undefined;\n }\n flush(action) {\n const { actions } = this;\n if (this._active) {\n actions.push(action);\n return;\n }\n let error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys, values) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {});\n}\n","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n","export function identity(x) {\n return x;\n}\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n","export function noop() { }\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
...
\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
\n *
\n *
\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
\n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
\n * ...\n *
\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
\n * ...\n *
\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
\n *\n *
\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
\n *

Title

\n *
\n * Blah blah blah\n *
\n *
\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
\n *
\n *
\n * {{ item }}\n *
\n *
\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings, animation };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, NgModuleRef, ComponentFactoryResolver, ɵRuntimeError, inject, ɵformatRuntimeError, InjectFlags, NgZone, Renderer2, ElementRef, Injector, PLATFORM_ID, NgModule, Host, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, Version, ɵɵdefineInjectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }] });\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformStrategy).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }, { token: PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc ? `(activated on an element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? (new URL(url)).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n * @publicApi\n */\nconst IMAGE_LOADER = new InjectionToken('ImageLoader', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, Object.assign(Object.assign({}, config), { src: normalizeSrc(config.src) }));\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Name and URL tester for Cloudinary.\n */\nconst cloudinaryLoaderInfo = {\n name: 'Cloudinary',\n testUrl: isCloudinaryUrl\n};\nconst CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/;\n/**\n * Tests whether a URL is from Cloudinary CDN.\n */\nfunction isCloudinaryUrl(url) {\n return CLOUDINARY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ?\n [\n 'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com'\n ] :\n undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n let params = `f_auto,q_auto`; // sets image format and quality to \"auto\"\n if (config.width) {\n params += `,w_${config.width}`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Name and URL tester for ImageKit.\n */\nconst imageKitLoaderInfo = {\n name: 'ImageKit',\n testUrl: isImageKitUrl\n};\nconst IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/;\n/**\n * Tests whether a URL is from ImageKit CDN.\n */\nfunction isImageKitUrl(url) {\n return IMAGE_KIT_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n let params = `tr:q-auto`; // applies the \"auto quality\" transformation\n if (config.width) {\n params += `,w-${config.width}`;\n }\n return `${path}/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Name and URL tester for Imgix.\n */\nconst imgixLoaderInfo = {\n name: 'Imgix',\n testUrl: isImgixUrl\n};\nconst IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/;\n/**\n * Tests whether a URL is from Imgix CDN.\n */\nfunction isImgixUrl(url) {\n return IMGIX_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n return url.href;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n constructor() {\n // Map of full image URLs -> original `ngSrc` values.\n this.images = new Map();\n // Keep track of images for which `console.warn` was produced.\n this.alreadyWarned = new Set();\n this.window = null;\n this.observer = null;\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n var _a, _b;\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = (_b = (_a = lcpElement.element) === null || _a === void 0 ? void 0 : _a.src) !== null && _b !== void 0 ? _b : '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const imgNgSrc = this.images.get(imgSrc);\n if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {\n this.alreadyWarned.add(imgSrc);\n logMissingPriorityWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc) {\n if (!this.observer)\n return;\n this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n this.alreadyWarned.clear();\n }\n}\nLCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction logMissingPriorityWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2955 /* LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIST');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n constructor() {\n /**\n * Set of tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n this.preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n this.alreadySeen = new Set();\n this.window = null;\n this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n this.document = inject(DOCUMENT);\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, InjectFlags.Optional);\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, origin => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n this.blocklist.add(extractHostname(origins));\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head for the\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (!this.window)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n if (!this.preconnectLinks) {\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks = this.queryPreconnectLinks();\n }\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the of the document:\\n` +\n ` `));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n var _a;\n (_a = this.preconnectLinks) === null || _a === void 0 ? void 0 : _a.clear();\n this.alreadySeen.clear();\n }\n}\nPreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * In SSR scenarios, a preload `` element is generated for priority images.\n * Having a large number of preload tags may negatively affect the performance,\n * so we warn developers (by throwing an error) if the number of preloaded images\n * is above a certain threshold. This const specifies this threshold.\n */\nconst DEFAULT_PRELOADED_IMAGES_LIMIT = 5;\n/**\n * Helps to keep track of priority images that already have a corresponding\n * preload tag (to avoid generating multiple preload tags with the same URL).\n *\n * This Set tracks the original src passed into the `ngSrc` input not the src after it has been\n * run through the specified `IMAGE_LOADER`.\n */\nconst PRELOADED_IMAGES = new InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', { providedIn: 'root', factory: () => new Set() });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description Contains the logic needed to track and add preload link tags to the `` tag. It\n * will also track what images have already had preload link tags added so as to not duplicate link\n * tags.\n *\n * In dev mode this service will validate that the number of preloaded images does not exceed the\n * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.\n */\nclass PreloadLinkCreator {\n constructor() {\n this.preloadedImages = inject(PRELOADED_IMAGES);\n this.document = inject(DOCUMENT);\n }\n /**\n * @description Add a preload `` to the `` of the `index.html` that is served from the\n * server while using Angular Universal and SSR to kick off image loads for high priority images.\n *\n * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)\n * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`\n * respectively, on the preload `` tag so that the correctly sized image is preloaded from\n * the CDN.\n *\n * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}\n *\n * @param renderer The `Renderer2` passed in from the directive\n * @param src The original src of the image that is set on the `ngSrc` input.\n * @param srcset The parsed and formatted srcset created from the `ngSrcset` input\n * @param sizes The value of the `sizes` attribute passed in to the `` tag\n */\n createPreloadLinkTag(renderer, src, srcset, sizes) {\n if (ngDevMode) {\n if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {\n throw new ɵRuntimeError(2961 /* TOO_MANY_PRELOADED_IMAGES */, ngDevMode &&\n `The \\`NgOptimizedImage\\` directive has detected that more than ` +\n `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +\n `This might negatively affect an overall performance of the page. ` +\n `To fix this, remove the \"priority\" attribute from images with less priority.`);\n }\n }\n if (this.preloadedImages.has(src)) {\n return;\n }\n this.preloadedImages.add(src);\n const preload = renderer.createElement('link');\n renderer.setAttribute(preload, 'as', 'image');\n renderer.setAttribute(preload, 'href', src);\n renderer.setAttribute(preload, 'rel', 'preload');\n renderer.setAttribute(preload, 'fetchpriority', 'high');\n if (sizes) {\n renderer.setAttribute(preload, 'imageSizes', sizes);\n }\n if (srcset) {\n renderer.setAttribute(preload, 'imageSrcset', srcset);\n }\n renderer.appendChild(this.document.head, preload);\n }\n}\nPreloadLinkCreator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreloadLinkCreator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used in generating automatic density-based srcsets\n */\nconst DENSITY_SRCSET_MULTIPLIERS = [1, 2];\n/**\n * Used to determine which breakpoints to use on full-width images\n */\nconst VIEWPORT_BREAKPOINT_CUTOFF = 640;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = .1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Used to limit automatic srcset generation of very large sources for\n * fixed-size images. In pixels.\n */\nconst FIXED_SRCSET_WIDTH_LIMIT = 1920;\nconst FIXED_SRCSET_HEIGHT_LIMIT = 1080;\n/** Info about built-in loaders we can test for. */\nconst BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];\nconst defaultConfig = {\n breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n};\n/**\n * Injection token that configures the image optimized image functionality.\n *\n * @see `NgOptimizedImage`\n * @publicApi\n */\nconst IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => defaultConfig });\n/**\n * @ngModule NgOptimizedImageModule\n *\n * @description\n *\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `` tag\n * - Lazy loading non-priority images by default\n * - Asserting that there is a corresponding preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Automatically generates a srcset\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```typescript\n * import { NgOptimizedImageModule } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImageModule],\n * })\n * class AppModule {}\n *\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```typescript\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```typescript\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg}`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```\n * \n * ```\n *\n * @publicApi\n */\nclass NgOptimizedImage {\n constructor(imageLoader, config, renderer, elementRef, injector, platformId, preloadLinkChecker) {\n this.imageLoader = imageLoader;\n this.config = config;\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.injector = injector;\n this.platformId = platformId;\n this.preloadLinkChecker = preloadLinkChecker;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n this._renderedSrc = null;\n this._priority = false;\n this._disableOptimizedSrcset = false;\n this._fill = false;\n this.config = processConfig(this.config);\n this.imgElement = this.elementRef.nativeElement;\n this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n }\n /**\n * For responsive images: the intrinsic width of the image in pixels.\n * For fixed size images: the desired rendered width of the image in pixels.\n */\n set width(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'width');\n this._width = inputToInteger(value);\n }\n get width() {\n return this._width;\n }\n /**\n * For responsive images: the intrinsic height of the image in pixels.\n * For fixed size images: the desired rendered height of the image in pixels.* The intrinsic\n * height of the image in pixels.\n */\n set height(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'height');\n this._height = inputToInteger(value);\n }\n get height() {\n return this._height;\n }\n /**\n * Indicates whether this image should have a high priority.\n */\n set priority(value) {\n this._priority = inputToBoolean(value);\n }\n get priority() {\n return this._priority;\n }\n /**\n * Disables automatic srcset generation for this image.\n */\n set disableOptimizedSrcset(value) {\n this._disableOptimizedSrcset = inputToBoolean(value);\n }\n get disableOptimizedSrcset() {\n return this._disableOptimizedSrcset;\n }\n /**\n * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds\n * styles such that the image fills its containing element.\n */\n set fill(value) {\n this._fill = inputToBoolean(value);\n }\n get fill() {\n return this._fill;\n }\n /** @nodoc */\n ngOnInit() {\n if (ngDevMode) {\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n if (this.ngSrcset) {\n assertNoConflictingSrcset(this);\n }\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n if (this.fill) {\n assertEmptyWidthAndHeight(this);\n assertNonZeroRenderedHeight(this, this.imgElement, this.renderer);\n }\n else {\n assertNonEmptyWidthAndHeight(this);\n // Only check for distorted images when not in fill mode, where\n // images may be intentionally stretched, cropped or letterboxed.\n assertNoImageDistortion(this, this.imgElement, this.renderer);\n }\n assertValidLoadingInput(this);\n if (!this.ngSrcset) {\n assertNoComplexSizes(this);\n }\n assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);\n assertNoNgSrcsetWithoutLoader(this, this.imageLoader);\n assertNoLoaderParamsWithoutLoader(this, this.imageLoader);\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n else {\n // Monitor whether an image is an LCP element only in case\n // the `priority` attribute is missing. Otherwise, an image\n // has the necessary settings and no extra checks are required.\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc);\n });\n }\n }\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n if (this.fill) {\n if (!this.sizes) {\n this.sizes = '100vw';\n }\n this.renderer.setStyle(this.imgElement, 'position', 'absolute');\n this.renderer.setStyle(this.imgElement, 'width', '100%');\n this.renderer.setStyle(this.imgElement, 'height', '100%');\n this.renderer.setStyle(this.imgElement, 'inset', '0px');\n }\n else {\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n }\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `data-ng-img` attribute flags an image as using the directive, to allow\n // for analysis of the directive's performance.\n this.setHostAttribute('ng-img', 'true');\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n const rewrittenSrc = this.getRewrittenSrc();\n this.setHostAttribute('src', rewrittenSrc);\n let rewrittenSrcset = undefined;\n if (this.sizes) {\n this.setHostAttribute('sizes', this.sizes);\n }\n if (this.ngSrcset) {\n rewrittenSrcset = this.getRewrittenSrcset();\n }\n else if (this.shouldGenerateAutomaticSrcset()) {\n rewrittenSrcset = this.getAutomaticSrcset();\n }\n if (rewrittenSrcset) {\n this.setHostAttribute('srcset', rewrittenSrcset);\n }\n if (isPlatformServer(this.platformId) && this.priority) {\n this.preloadLinkChecker.createPreloadLinkTag(this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, [\n 'ngSrc',\n 'ngSrcset',\n 'width',\n 'height',\n 'priority',\n 'fill',\n 'loading',\n 'sizes',\n 'loaderParams',\n 'disableOptimizedSrcset',\n ]);\n }\n }\n callImageLoader(configWithoutCustomParams) {\n let augmentedConfig = configWithoutCustomParams;\n if (this.loaderParams) {\n augmentedConfig.loaderParams = this.loaderParams;\n }\n return this.imageLoader(augmentedConfig);\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.callImageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.callImageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n getAutomaticSrcset() {\n if (this.sizes) {\n return this.getResponsiveSrcset();\n }\n else {\n return this.getFixedSrcset();\n }\n }\n getResponsiveSrcset() {\n var _a;\n const { breakpoints } = this.config;\n let filteredBreakpoints = breakpoints;\n if (((_a = this.sizes) === null || _a === void 0 ? void 0 : _a.trim()) === '100vw') {\n // Since this is a full-screen-width image, our srcset only needs to include\n // breakpoints with full viewport widths.\n filteredBreakpoints = breakpoints.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);\n }\n const finalSrcs = filteredBreakpoints.map(bp => `${this.callImageLoader({ src: this.ngSrc, width: bp })} ${bp}w`);\n return finalSrcs.join(', ');\n }\n getFixedSrcset() {\n const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => {\n const imgUrl = this.callImageLoader({ src: this.ngSrc, width: this.width * multiplier });\n return `${imgUrl} ${multiplier}x`;\n });\n return finalSrcs.join(', ');\n }\n shouldGenerateAutomaticSrcset() {\n return !this._disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&\n !(this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n}\nNgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImage, deps: [{ token: IMAGE_LOADER }, { token: IMAGE_CONFIG }, { token: Renderer2 }, { token: ElementRef }, { token: Injector }, { token: PLATFORM_ID }, { token: PreloadLinkCreator }], target: i0.ɵɵFactoryTarget.Directive });\nNgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgOptimizedImage, selector: \"img[ngSrc]\", inputs: { ngSrc: \"ngSrc\", ngSrcset: \"ngSrcset\", sizes: \"sizes\", width: \"width\", height: \"height\", loading: \"loading\", priority: \"priority\", loaderParams: \"loaderParams\", disableOptimizedSrcset: \"disableOptimizedSrcset\", fill: \"fill\", src: \"src\", srcset: \"srcset\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{ selector: 'img[ngSrc]' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [IMAGE_LOADER]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [IMAGE_CONFIG]\n }] }, { type: i0.Renderer2, decorators: [{\n type: Inject,\n args: [Renderer2]\n }] }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [ElementRef]\n }] }, { type: i0.Injector, decorators: [{\n type: Inject,\n args: [Injector]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: PreloadLinkCreator, decorators: [{\n type: Inject,\n args: [PreloadLinkCreator]\n }] }];\n }, propDecorators: { ngSrc: [{\n type: Input\n }], ngSrcset: [{\n type: Input\n }], sizes: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input\n }], loaderParams: [{\n type: Input\n }], disableOptimizedSrcset: [{\n type: Input\n }], fill: [{\n type: Input\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Convert input value to integer.\n */\nfunction inputToInteger(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n/**\n * Convert input value to boolean.\n */\nfunction inputToBoolean(value) {\n return value != null && `${value}` !== 'false';\n}\n/**\n * Sorts provided config breakpoints and uses defaults.\n */\nfunction processConfig(config) {\n let sortedBreakpoints = {};\n if (config.breakpoints) {\n sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);\n }\n return Object.assign({}, defaultConfig, config, sortedBreakpoints);\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the 'sizes' only includes responsive values.\n */\nfunction assertNoComplexSizes(dir) {\n let sizes = dir.sizes;\n if (sizes === null || sizes === void 0 ? void 0 : sizes.match(/((\\)|,)\\s|^)\\d+px/)) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +\n `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +\n `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +\n `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n let reason;\n if (inputName === 'width' || inputName === 'height') {\n reason = `Changing \\`${inputName}\\` may result in different attribute value ` +\n `applied to the underlying image element and cause layout shifts on a page.`;\n }\n else {\n reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +\n `image element, because the resource loading has already occurred.`;\n }\n return new ɵRuntimeError(2953 /* UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ${reason} ` +\n `To fix this, either switch \\`${inputName}\\` to a static value ` +\n `or wrap the image element in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach(input => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value ` +\n `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +\n `as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedWidth = img.clientWidth;\n const renderedHeight = img.clientHeight;\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = img.naturalWidth;\n const intrinsicHeight = img.naturalHeight;\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${renderedAspectRatio}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n });\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +\n `\"fill\" mode with the \\`fill\\` attribute.`);\n }\n}\n/**\n * Verifies that width and height are not set. Used in fill mode, where those attributes don't make\n * sense.\n */\nfunction assertEmptyWidthAndHeight(dir) {\n if (dir.width || dir.height) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +\n `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +\n `element, the size attributes have no effect and should be removed.`);\n }\n}\n/**\n * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides\n * guidance that this can be caused by the containing element's CSS position property.\n */\nfunction assertNonZeroRenderedHeight(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedHeight = img.clientHeight;\n if (dir.fill && renderedHeight === 0) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +\n `This is likely because the containing element does not have the CSS 'position' ` +\n `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +\n `To fix this problem, make sure the container element has the CSS 'position' ` +\n `property defined and the height of the element is not zero.`));\n }\n });\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n/**\n * Warns if NOT using a loader (falling back to the generic loader) and\n * the image appears to be hosted on one of the image CDNs for which\n * we do have a built-in image loader. Suggests switching to the\n * built-in loader.\n *\n * @param ngSrc Value of the ngSrc attribute\n * @param imageLoader ImageLoader provided\n */\nfunction assertNotMissingBuiltInLoader(ngSrc, imageLoader) {\n if (imageLoader === noopImageLoader) {\n let builtInLoaderName = '';\n for (const loader of BUILT_IN_LOADERS) {\n if (loader.testUrl(ngSrc)) {\n builtInLoaderName = loader.name;\n break;\n }\n }\n if (builtInLoaderName) {\n console.warn(ɵformatRuntimeError(2962 /* MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` +\n `${builtInLoaderName} CDN, but your app is not using Angular's ` +\n `built-in loader for that CDN. We recommend switching to use ` +\n `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +\n `in your \\`providers\\` and passing it your instance's base URL. ` +\n `If you don't want to use the built-in loader, define a custom ` +\n `loader function using IMAGE_LOADER to silence this warning.`));\n }\n }\n}\n/**\n * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).\n */\nfunction assertNoNgSrcsetWithoutLoader(dir, imageLoader) {\n if (dir.ngSrcset && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for all configured sizes. ` +\n `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));\n }\n}\n/**\n * Warns if loaderParams is present and no loader is configured (i.e. the default one is being\n * used).\n */\nfunction assertNoLoaderParamsWithoutLoader(dir, imageLoader) {\n if (dir.loaderParams && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which means that the loaderParams data will not be consumed and will not affect the URL. ` +\n `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));\n }\n}\n/**\n * This NgModule exports the `NgOptimizedImage` directive.\n * Import this module to enable the optimized image directive in your application.\n *\n * @publicApi\n * @deprecated In Angular v15, this NgModule is removed in favor of the NgOptimizedImage directive,\n * which is annotated as standalone.\n */\nclass NgOptimizedImageModule {\n}\nNgOptimizedImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgOptimizedImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, declarations: [NgOptimizedImage], exports: [NgOptimizedImage] });\nNgOptimizedImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgOptimizedImage],\n exports: [NgOptimizedImage],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'` :\n '';\n return new ɵRuntimeError(2100 /* INVALID_PIPE_ARGUMENT */, errorMessage);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n var _a;\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, (_a = timezone !== null && timezone !== void 0 ? timezone : this.defaultTimezone) !== null && _a !== void 0 ? _a : undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }];\n } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('13.4.0');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch (_a) {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch (_a) {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_CONFIG, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgOptimizedImageModule, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : s; });\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n var _a;\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = (_a = update.context) !== null && _a !== void 0 ? _a : this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending