{"version":3,"mappings":"qyGAMO,MAAMA,EAA6D,CACxEC,SAGUD,EAA6BE,UAAYC,aAAaF,MAEhEC,cAAUE,kBCkEN,WAA0BC,GAC9B,OAAOA,EAAoBC,EAAuBD,GAAqBE,EAOzE,WAAgCF,GAC9B,MAAQG,YAAaC,IACrB,OAAO,IAAIC,IAAmDC,IAC5D,MAAMC,EAAe,IAAIC,KAInBC,EAAWT,GAAqBL,EAKhCe,EAAQD,EAASb,MACjBe,GAAOC,KAQX,MAAMhB,GAAMa,EAASb,MACrBU,EAAWO,KAAK,CACdD,UAAWZ,EAAoBJ,GAAMgB,GACrCE,QAASlB,GAAMc,IAEZJ,EAAWS,QACdR,EAAaS,IAAIb,EAASQ,MAG9BJ,SAAaS,IAAIb,EAASQ,KACnBJ,IAQX,MAAML,EAA2BD,yCCpH3B,gBAA+BgB,IAArCC,kCACUC,YAAmB,KACnBA,gBAAY,EACZA,kBAAc,EAGZC,wBAAwBd,GAChC,MAAQe,WAAUC,YAAWC,SAAQC,cAAaC,aAAWC,gBAAgBP,KACzEE,EACFf,EAAWqB,MAAMH,IACRC,IAAaC,MACtBJ,GAAahB,EAAWO,KAAKU,GAC7BjB,EAAWsB,YAIff,KAAKgB,GACEV,KAAKM,YACRN,KAAKI,OAASM,EACdV,KAAKG,WAAY,GAIrBM,WACE,MAAQN,YAAWC,SAAQG,eAAgBP,KACtCO,IACHP,KAAKO,aAAc,EACnBJ,GAAaQ,MAAMjB,KAAKU,GACxBO,MAAMF,6DC6BL,MAAMG,EAAiB,IChExB,gBAA8BC,MCG9B,gBAA8BC,IAElCf,YAAsBgB,EACAC,GACpBL,MAAMI,EAAWC,GAFGhB,iBACAA,YAIfhB,SAASiC,EAAWC,EAAgB,GACzC,OAAIA,EAAQ,EACHP,MAAM3B,SAASiC,EAAOC,IAE/BlB,KAAKkB,MAAQA,EACblB,KAAKiB,MAAQA,EACbjB,KAAKe,UAAUI,MAAMnB,MACdA,MAGFoB,QAAQH,EAAUC,GACvB,OAAQA,EAAQ,GAAKlB,KAAKJ,OACxBe,MAAMS,QAAQH,EAAOC,GACrBlB,KAAKqB,SAASJ,EAAOC,GAGfI,eAAeP,EAA2BQ,EAAUL,EAAgB,GAK5E,OAAc,MAATA,GAAiBA,EAAQ,GAAgB,MAATA,GAAiBlB,KAAKkB,MAAQ,EAC1DP,MAAMW,eAAeP,EAAWQ,EAAIL,GAGtCH,EAAUI,MAAMnB,SFkCdwB,EAAQZ,iBGlEd,IAAMa,EAAb,MAAM,gBAAoCZ,IAyBxCd,YAAY2B,EAA0CC,EAA6BC,EAAoBC,KACrGlB,MAAMe,EAAqB,IAAM1B,KAAK8B,OAD2C9B,iBAf5EA,WAAgB,EAMhBA,YAAgB,EAkBhBmB,QACL,MAAQY,UAASH,aAAc5B,KAC/B,IAAIQ,EACAwB,EAEJ,MAAQA,EAASD,EAAQ,KAAOC,EAAOd,OAASU,IAC9CG,EAAQE,QACRjC,KAAK8B,MAAQE,EAAOd,QAEfV,EAAQwB,EAAOZ,QAAQY,EAAOf,MAAOe,EAAOd,WAKnD,GAAIV,EAAO,CACT,KAAQwB,EAASD,EAAQE,SACvBD,EAAOE,cAET,MAAM1B,IAlDHiB,yBAAkB,GAFdA,GAAb,GAyDM,gBAAgCX,IAGpCf,YACYgB,EACAC,EACAmB,GAAiBpB,EAAUoB,OAAS,IAE9CxB,MAAMI,EAAWC,GAJPhB,iBACAA,YACAA,aALFA,aAAkB,EAQ1BA,KAAKmC,MAAQpB,EAAUoB,MAAQA,EAG1BnD,SAASiC,EAAWC,EAAgB,GACzC,GAAIkB,OAAOC,SAASnB,GAAQ,CAC1B,IAAKlB,KAAKuB,GACR,OAAOZ,MAAM3B,SAASiC,EAAOC,GAE/BlB,KAAKsC,QAAS,EAKd,MAAMN,EAAS,IAAIL,EAAc3B,KAAKe,UAAWf,KAAKgB,MACtD,YAAKnB,IAAImC,GACFA,EAAOhD,SAASiC,EAAOC,GAI9B,OAAO7B,WAIDiC,eAAeP,EAAiCQ,EAAUL,EAAgB,GAClFlB,KAAKkB,MAAQH,EAAUe,MAAQZ,EAC/B,MAAQa,WAAYhB,EACpBgB,SAAQQ,KAAKvC,MACZ+B,EAAoCS,KAAKb,EAAcc,cACjD,EAGCC,eAAe3B,EAAiCQ,EAAUL,EAAgB,IAI1EG,SAASJ,EAAUC,GAC3B,IAAoB,IAAhBlB,KAAKsC,OACP,OAAO3B,MAAMU,SAASJ,EAAOC,sBAIHyB,EAAqBC,GACjD,OAAID,EAAEzB,QAAU0B,EAAE1B,MACZyB,EAAER,QAAUS,EAAET,MACT,EACEQ,EAAER,MAAQS,EAAET,MACd,GAEA,EAEAQ,EAAEzB,MAAQ0B,EAAE1B,MACd,GAEA,wEChHD2B,EAIX,MAJD,OAAYA,QAAgB,KAC1BA,SACAA,YACAA,eAHUA,EAAZ,IAAYA,GAIX,GAkBK,QA6BJ9C,YAA4B+C,EAAuCpC,EAA2BF,GAAlER,YAAuCA,aAA2BA,aAC5FA,KAAK+C,SAAoB,MAATD,EASlBE,QAAQC,GACN,OAAOC,EAAoBlD,KAAmCiD,GA6BhEE,GAAGC,EAAiCC,EAAmCC,GACrE,MAAQR,OAAMpC,QAAOF,UAAUR,KAC/B,MAAgB,MAAT8C,EAA0B,MAAXM,OAAW,EAAXG,EAAc7C,GAAmB,MAAToC,EAA2B,MAAZO,OAAY,EAAZG,EAAehD,IAAwB,MAAf8C,OAAe,EAAfG,IAsCvFC,OAAOC,EAA2DnD,EAA4BC,SAC5F,OAAOmD,OAAkC,QAAvBC,EAACF,SAAsBG,eAAEpE,MACvCM,KAAKgD,QAAQW,GACb3D,KAAKmD,GAAGQ,EAAsCnD,EAAcC,GAUlEsD,eACE,MAAQjB,OAAMpC,QAAOF,SAAUR,KAEzBgE,EACK,MAATlB,GAEImB,QAAGvD,GAEI,MAAToC,GAEEoB,OAAW,IAAM1D,GAEV,MAATsC,EAEEqB,IAEA,EACN,IAAKH,EAIH,MAAM,IAAII,UAAU,gCAAgCtB,KAEtD,OAAOkB,oBAgBYtD,GACnB,OAAO,IAAI2D,EAAa,IAAK3D,sBAeZ4D,GACjB,OAAO,IAAID,EAAa,SAAKzF,EAAW0F,2BAaxC,OAAOD,EAAaE,sBAWlB,WAAiCC,EAAyCvB,aAC9E,MAAQH,OAAMpC,SAAOF,UAAUgE,EAC/B,GAAoB,iBAAT1B,EACT,MAAM,IAAIsB,UAAU,wCAEb,MAATtB,EAA4B,QAAbU,IAAS9D,YAAIoE,cAAbb,EAAgBvC,IAAmB,MAAToC,EAA6B,QAAdW,IAASjD,aAAKiE,cAAdxB,EAAiBzC,IAA0B,QAAjBqD,IAASpD,gBAAQiE,cAAjBzB,GA3DnEoB,uBAAuB,IAAIA,EAAa,oEChInD,YAA8BM,EAAuBC,GACzD,MAAMC,EAA8B,iBAAXD,EACzB,OAAO,IAAIE,QAAe,CAACC,EAASC,KAClC,IACI5E,GADAD,GAAY,EAEhBwE,EAAOM,UAAU,CACfvF,KAAOgB,KACLN,GAASM,GACTP,GAAY,GAEdK,MAAOwE,EACPvE,SAAU,KACJN,EACF4E,EAAQ3E,IACHoD,EACLuB,EAAQH,EAAQM,cAEhBF,EAAO,IAAIG,WChBf,YAA+BR,EAAuBC,GAC1D,MAAMC,EAA8B,iBAAXD,EACzB,OAAO,IAAIE,QAAe,CAACC,EAASC,KAClC,MAAM7F,EAAa,IAAIiG,KAAkB,CACvC1F,KAAOgB,KACLqE,EAAQrE,IACRvB,EAAW+C,eAEb1B,MAAOwE,EACPvE,SAAU,KACJoE,EACFE,EAAQH,EAAQM,cAEhBF,EAAO,IAAIG,SAIjBR,EAAOM,UAAU9F,qBClDd,MAAMkG,IAAuDC,QACjEC,GACC,WACEA,EAAOvF,MACPA,KAAKwF,KAAO,0BACZxF,KAAKyF,QAAU,0BCPRC,IAAmCJ,QAC7CC,GACC,SAAsCE,GACpCF,EAAOvF,MACPA,KAAKwF,KAAO,gBACZxF,KAAKyF,QAAUA,oBCLd,MAAME,IAAmCL,QAC7CC,GACC,SAAsCE,GACpCF,EAAOvF,MACPA,KAAKwF,KAAO,gBACZxF,KAAKyF,QAAUA,mEC8Dd,MAAMG,IAAiCN,QAC3CC,GACC,SAAqCM,EAAgC,MACnEN,EAAOvF,MACPA,KAAKyF,QAAU,uBACfzF,KAAKwF,KAAO,eACZxF,KAAK6F,KAAOA,IAoNZ,YACJjB,EACAkB,GASA,MAAQC,QAAOC,OAAMC,KAAMC,EAAQC,GAAqBpF,aAAwB,MAAZ+E,IAAgBM,KAAgBC,QAAO,OAAWC,QAAY1B,GAC9H,CAAEmB,MAAOnB,GACS,iBAAXA,EACP,CAAEoB,KAAMpB,GACRA,EAEJ,GAAa,MAATmB,GAAyB,MAARC,EAEnB,MAAM,IAAI5B,UAAU,wBAGtB,OAAOmC,QAAQ,CAAC5B,GAAQxF,MAMtB,IAAIqH,GAGAC,GAGAC,GAAsB,KAGtBC,GAAO,EACX,MAAMC,GAAc1F,KAClBuF,IAAoBI,QAClB1H,GACA4B,EACA,KACE,IACEyF,GAA2BtE,eAC3B4E,SACEZ,EAAO,CACLG,QACAK,aACAC,WAEF1B,UAAU9F,UACLmF,IACPnF,GAAWqB,MAAM8D,MAGrBpD,KAIJsF,GAA6B7B,GAAOM,UAClC,IAAI8B,KACF5H,GACCuB,KAEkB,MAAjB+F,OAAmBvE,cACnByE,KAEAxH,GAAWO,KAAMgH,GAAYhG,IAE7BsF,EAAQ,GAAKY,GAAWZ,SAE1BpH,OACAA,EACA,MACwB,MAAjB6H,QAAiB,EAAjBO,GAAmBpH,SACL,MAAjB6G,OAAmBvE,cAIrBwE,GAAY,QASlBE,GAAoB,MAATb,EAAkC,iBAAVA,EAAqBA,GAASA,EAAQhF,EAAWtC,MAASuH,KASjG,YAA6BH,GAC3B,MAAM,IAAID,GAAaC,kEC5YnB,YACJoB,EACAC,EACAC,EACApG,GAEA,GAAIoG,EACF,QAAIC,MAAYD,GAId,OAAO,YAAwBE,GAC7B,OAAQC,GAAsBL,EAAaC,EAAcnG,GACtDwG,MAAMvH,KAAMqH,GACZG,QAAKC,MAAiBN,KAN3BpG,EAAYoG,EAahB,OAAIpG,EACK,YAAwBsG,GAC7B,OAAQC,GAAsBL,EAAaC,GACxCK,MAAMvH,KAAMqH,GACZG,QAAKE,MAAY3G,MAAa4G,MAAU5G,KAIxC,YAAwBsG,GAG7B,MAAMO,EAAU,IAAIC,EAGpB,IAAIC,IAAgB,EACpB,OAAO,IAAI5I,IAAYC,KAErB,MAAM4I,GAAOH,EAAQ3C,UAAU9F,IAE/B,GAAI2I,GAAe,CACjBA,IAAgB,EAMhB,IAAIE,IAAU,EAGVC,IAAa,EAKjBf,EAAaK,MAEXvH,KACA,IAEKqH,EAEH,IAAIa,MACF,GAAIjB,EAAa,CAIf,MAAM3C,GAAM4D,GAAQjG,QACpB,GAAW,MAAPqC,GAIF,YAHAsD,EAAQpH,MAAM8D,IAUlBsD,EAAQlI,KAAK,EAAIwI,GAAQC,OAASD,GAAUA,GAAQ,IAGpDD,IAAa,EAMTD,IACFJ,EAAQnH,cAQZwH,IACFL,EAAQnH,WAKVuH,IAAU,EAIZ,OAAOD,MCuBP,YACJb,EACAC,EACApG,GAEA,OAAOuG,IAAsB,EAAOJ,EAAcC,EAAgBpG,GCtB9D,YACJmG,EACAC,EACApG,GAEA,OAAOuG,IAAsB,EAAMJ,EAAcC,EAAgBpG,2CCpGnE,MAAMqH,GAA6C,CACjDC,UAAW,IAAM,IAAIvI,IACrBwI,mBAAmB,GAWf,YAAyB3D,EAA4BC,EAA+BwD,IAExF,IAAIG,EAAkC,KACtC,MAAQF,YAAWC,qBAAoB,GAAS1D,EAChD,IAAIgD,EAAUS,IAEd,MAAMrE,GAAc,IAAI9E,IAAeC,IAC9ByI,EAAQ3C,UAAU9F,KAM3B6E,UAAOwE,QAAU,OACVD,GAAcA,EAAW3I,UAC5B2I,GAAaE,QAAM,IAAM9D,GAAQM,UAAU2C,GACvCU,GACFC,EAAW1I,IAAI,IAAO+H,EAAUS,MAG7BE,GAGFvE,2CC+EH,YACJ0E,EACAC,EACAxB,GAEA,OAAIA,EACKyB,GAAoBF,EAAYC,GAAenB,QAAKC,MAAiBN,IAGvE,IAAIjI,IAAqBC,IAC9B,MAAM0J,EAAU,IAAIC,KAAW3J,EAAWO,KAAkB,IAAboJ,GAAEX,OAAeW,GAAE,GAAKA,IACjEC,EAAWL,EAAWG,GAC5B,SAAOjF,KAAW+E,GAAiB,IAAMA,EAAcE,EAASE,QAAYnK,oBCoL1E,YACJoK,EACAC,EACAC,EACAC,EACApI,GAEA,IAAIoG,EACAiC,GA2BJ,cACE,QAASnI,GAAQmI,IAAeH,GAAaA,EAAUhI,IAAQA,GAAQiI,EAASjI,UACxEkG,EAAelG,IAKzB,OA9ByB,IAArBoI,UAAUlB,SAIViB,gBACAH,YACAC,UACA/B,iBAAiBmC,KACjBvI,aACEiI,IAIJI,GAAeJ,GACVG,MAA6B/B,MAAY+B,IAC5ChC,EAAiBmC,KACjBvI,EAAYoI,GAEZhC,EAAiBgC,MAYdV,MACJ1H,EAGG,KAAMwI,QAAiBC,KAAOzI,GAG9ByI,gECvTF,cACDC,GAEH,OCQI,cACDA,GAMH,MAAMC,KAAeC,KAAeF,GAEpC,OAAOlD,QAAQ,CAAC5B,EAAQxF,KACtB,MAAMyK,EAAY,CAACjF,KAAW+E,GACxBG,EAAgB,KACpB,IAAK1K,EAAWS,OACd,GAAIgK,EAAUzB,OAAS,EAAG,CACxB,IAAI2B,GACJ,IACEA,IAAahD,SAAyB8C,EAAU3H,eACzCqC,IAEP,YADAuF,IAQF,MAAME,GAAW,IAAIhD,KAAmB5H,OAAYP,EAAWoL,KAAMA,MACrE7K,EAAWU,IAAIiK,GAAW7E,UAAU8E,KACpCA,GAASlK,IAAIgK,QAEb1K,EAAWsB,YAKjBoJ,MD3CKI,EAAsBN,OAAeF,GAArCQ,CAA+C9F,KEGlD,WAAgB+F,EAAUnJ,GAC9B,OAAOoJ,QAAKC,OAAOC,QAAQH,GAAMnJ,GC9E7B,YAAiBuJ,EAA4CC,GACjE,MAAO,CAAC7J,EAAUyB,KAAmBmI,EAAKE,KAAKD,EAAS7J,EAAOyB,mBC2E3D,YACJwC,EACA8F,EACAF,GAEA,MAAO,IAACG,MAAOD,EAAWF,IAASzD,SAAUnC,OAAU+F,MAAOC,GAAIF,EAAWF,KAAUzD,SAAUnC,qBC1B7F,YAAgBpF,EAAeqL,EAAgB7J,GAOnD,GANa,MAAT6J,IAEFA,EAAQrL,EACRA,EAAQ,GAGNqL,GAAS,EAEX,OAAOzG,IAIT,MAAM0G,EAAMD,EAAQrL,EAEpB,OAAO,IAAIL,IACT6B,EAEK5B,IACC,IAAI2L,EAAIvL,EACR,OAAOwB,EAAU/B,SAAS,WACpB8L,EAAID,GACN1L,EAAWO,KAAKoL,KAChB9K,KAAKhB,YAELG,EAAWsB,cAKhBtB,IACC,IAAI2L,EAAIvL,EACR,KAAOuL,EAAID,IAAQ1L,EAAWS,QAC5BT,EAAWO,KAAKoL,KAElB3L,EAAWsB,6BCzDf,YACJsK,EACAC,GAEA,OAAO,IAAI9L,IAAgCC,IACzC,MAAM8L,EAAWF,IACX/G,EAASgH,EAAkBC,GAEjCtG,OADeX,KAAS8C,OAAU9C,GAAUG,KACrCc,UAAU9F,GACV,KAGD8L,GACFA,EAAS/I,iFCFX,YAAoBgJ,GACxB,OAAO3E,QAAQ,CAAC5B,EAAQxF,KAEtB,IAAIgM,EAAqB,GAGzBxG,SAAOM,UACL,IAAI8B,KACF5H,EACCuB,GAAUyK,EAAc5I,KAAK7B,GAC9B,KACEvB,EAAWO,KAAKyL,GAChBhM,EAAWsB,cAMjByK,EAAgBjG,UACd,IAAI8B,KACF5H,EACA,KAEE,MAAMyD,EAAIuI,EACVA,EAAgB,GAChBhM,EAAWO,KAAKkD,IAElBoH,OAIG,KAELmB,EAAgB,wBCnBhB,YAAyBC,EAAoBC,EAAkC,MAGnFA,SAAmC,MAAhBA,IAAoBD,GAEhC7E,QAAQ,CAAC5B,EAAQxF,KACtB,IAAImM,EAAiB,GACjBV,EAAQ,EAEZjG,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,KACC,IAAI6K,GAAuB,KAKvBX,IAAUS,GAAsB,GAClCC,EAAQ/I,KAAK,IAIf,UAAWiJ,MAAUF,EACnBE,GAAOjJ,KAAK7B,IAMR0K,GAAcI,GAAOrD,SACvBoD,GAAe,MAANA,MAAU,GACnBA,GAAOhJ,KAAKiJ,KAIhB,GAAID,GAIF,UAAWC,MAAUD,IACnBE,QAAUH,EAASE,IACnBrM,EAAWO,KAAK8L,KAItB,KAGE,UAAWA,MAAUF,EACnBnM,EAAWO,KAAK8L,IAElBrM,EAAWsB,iBAGb7B,EACA,KAEE0M,EAAU,0BCrCd,YAAwBI,KAA2BC,WACvD,MAAM5K,EAAmC,QAAvByC,YAAamI,UAAU7H,QAAIsC,IACvCwF,EAAiD,QAAxBnI,EAACkI,EAAU,UAAalH,QAAI,KACrDoH,GAAiBF,EAAU,IAAiB9J,IAElD,OAAO0E,QAAQ,CAAC5B,GAAQxF,MAEtB,IAAI2M,GAA8D,GAG9DC,IAAgB,EAQpB,MAAMC,GAAQC,KACZ,MAAQT,UAAQzD,SAASkE,GACzBlE,GAAK7F,iBACLuJ,MAAUK,GAAeG,IACzB9M,GAAWO,KAAK8L,IAChBO,IAAiBG,MAQbA,GAAc,KAClB,GAAIJ,GAAe,CACjB,MAAM/D,GAAO,IAAI1I,KACjBF,GAAWU,IAAIkI,IAEf,MAAMkE,GAAS,CACbT,OAFkB,GAGlBzD,SAEF+D,GAAcvJ,KAAK0J,OACnBpF,MAAgBkB,GAAMhH,EAAW,IAAMiL,GAAKC,IAASP,KAI1B,OAA3BE,GAAmCA,GAA0B,KAI/D/E,MAAgB1H,GAAY4B,EAAWmL,GAAaN,GAAwB,GAE5EG,IAAgB,EAGlBG,KAEA,MAAMC,GAAuB,IAAIpF,KAC/B5H,GACCuB,KAKC,MAAM0L,GAAcN,GAAeO,QACnC,UAAWJ,MAAUG,GAAa,CAEhC,MAAQZ,WAAWS,GACnBT,GAAOjJ,KAAK7B,IAEZmL,IAAiBL,GAAOrD,QAAU6D,GAAKC,MAG3C,KAGE,KAAoB,MAAbH,QAAa,EAAbQ,GAAenE,QACpBhJ,GAAWO,KAAKoM,GAAc7J,QAASuJ,QAErB,MAApBW,OAAsBjK,cACtB/C,GAAWsB,WACXtB,GAAW+C,oBAGbtD,EAEA,IAAOkN,GAAgB,MAGzBnH,GAAOM,UAAUkH,MClHf,WACJI,EACAC,GAEA,OAAOjG,QAAQ,CAAC5B,EAAQxF,KACtB,MAAMmM,EAAiB,MAGvBxE,OAAUyF,GAAUtH,UAClB,IAAI8B,KACF5H,EACCsN,IACC,MAAMjB,GAAc,GACpBF,EAAQ/I,KAAKiJ,IAGb,MAAMkB,GAAsB,IAAIrN,KAShCqN,GAAoB7M,KAAIiH,SAAU0F,EAAgBC,IAAYxH,UAAU,IAAI8B,KAAmB5H,EAP5E,QACjBsM,MAAUH,EAASE,IACnBrM,EAAWO,KAAK8L,IAChBkB,GAAoBxK,eAIiG8H,SAEzHA,OAIJrF,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,IAEC,UAAW8K,MAAUF,EACnBE,GAAOjJ,KAAK7B,IAGhB,KAEE,KAAO4K,EAAQnD,OAAS,GACtBhJ,EAAWO,KAAK4L,EAAQrJ,SAE1B9C,EAAWsB,gBCnDf,YAAwB+L,GAC5B,OAAOjG,QAAQ,CAAC5B,EAAQxF,KAEtB,IAAIqM,EAAqB,KAIrBmB,EAA0C,KAM9C,MAAMC,EAAa,KAGA,MAAjBD,KAAmBzK,cAEnB,MAAMU,GAAI4I,EACVA,EAAS,GACT5I,IAAKzD,EAAWO,KAAKkD,KAGrBkE,SAAU0F,KAAmBvH,UAAW0H,EAAoB,IAAI5F,KAAmB5H,EAAYyN,EAAY5C,QAI7G4C,IAGAjI,EAAOM,UACL,IAAI8B,KACF5H,EAECuB,IAAgB,MAAN8K,OAAM,EAAN/H,EAAQlB,KAAK7B,IAGxB,KACE8K,GAAUrM,EAAWO,KAAK8L,GAC1BrM,EAAWsB,iBAGb7B,EAEA,IAAO4M,EAASmB,EAAoB,mCC9EtC,YACJE,EACAC,EACAC,EACAC,EACAC,GAEA,MAAO,CAACtI,EAAuBxF,MAI7B,IAAI+N,GAAWH,EAIX9L,GAAa6L,EAEb3K,GAAQ,EAGZwC,EAAOM,UACL,IAAI8B,KACF5H,GACCuB,KAEC,MAAMyM,GAAIhL,KAEVlB,GAAQiM,GAEJL,EAAY5L,GAAOP,GAAOyM,KAIxBD,IAAW,EAAOxM,IAGxBsM,GAAc7N,GAAWO,KAAKuB,KAIhCgM,GACG,MACCC,IAAY/N,GAAWO,KAAKuB,IAC5B9B,GAAWsB,gBCCjB,YAAuBoM,EAAyDC,GACpF,SAAOvG,MAAQ6G,GAAcP,EAAaC,EAAMzD,UAAUlB,QAAU,GAAG,GAAO,ICtDhF,MAAMkF,GAAa,CAACC,EAAY5M,KAAgB4M,EAAI/K,KAAK7B,GAAQ4M,GAgC3D,cAIJ,OAAO/G,QAAQ,CAAC5B,EAAQxF,KACtBoO,GAAOF,GAAY,GAAnBE,CAA8B5I,GAAQM,UAAU9F,KCvB9C,YAAiCqO,EAA0DC,GAC/F,OAAOjG,OAGLkG,MAEAC,OAAUlE,GAAY+D,EAAO/D,IAE7BgE,GAAUhG,QAAiBgG,GAAYnE,MC8BrC,YAA8BmE,GAClC,OAAOG,GAAiBC,KAAeJ,GCpDlC,MAAMK,GAAaC,GCqBpB,eAAiC1G,GACrC,MAAMF,KAAiB6G,OAAkB3G,GACzC,OAAOF,GACHK,OAAKqG,MAAkBxG,MAAuCI,MAAiBN,KAC/EZ,QAAQ,CAAC5B,EAAQxF,QACf8O,MAAkB,CAACtJ,QAAWgF,KAAetC,KAAQlI,KCavD,eACD+O,GAEH,OAAOL,MAAiBK,8BCyBpB,WACJC,EACAhH,GAEA,OAAOvD,OAAWuD,MAAkBiH,KAAU,IAAMD,EAAiBhH,IAAkBiH,OAAU,IAAMD,GChCnG,eACDD,GAEH,OC/BI,eAA0B7G,GAC9B,MAAMtG,KAAYsN,OAAahH,GAC/B,OAAOd,QAAQ,CAAC5B,EAAQxF,MACtBmP,aAAYnE,MAAK,CAACxF,KAAW0C,GAAOtG,IAAYkE,UAAU9F,KD4BrDoP,IAAUL,kBEWb,YAAmBzD,GACvB,OAAO8C,GAAO,CAACiB,EAAO9N,EAAOyM,KAAQ1C,GAAaA,EAAU/J,EAAOyM,GAAKqB,EAAQ,EAAIA,EAAQ,GCKxF,YAAsBC,GAC1B,OAAOlI,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI4D,GAAW,EACX2D,EAAsB,KAEtBgI,EAA6C,KAEjD,MAAM1C,GAAO,KAMX,GAFkB,MAAlB0C,KAAoBxM,cACpBwM,EAAqB,KACjB3L,EAAU,CAEZA,GAAW,EACX,MAAMrC,GAAQgG,EACdA,EAAY,KACZvH,EAAWO,KAAKgB,MAIpBiE,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,KAImB,MAAlBgO,KAAoBxM,cACpBa,GAAW,EACX2D,EAAYhG,GAGZgO,EAAqB,IAAI3H,KAAmB5H,EAAY6M,GAAMhC,OAE9DlD,SAAU2H,EAAiB/N,KAAQuE,UAAUyJ,IAE/C,KAGE1C,KACA7M,EAAWsB,iBAGb7B,EACA,KAEE8H,EAAYgI,EAAqB,6DC3DrC,cACJ,OAAOnI,QAAQ,CAAC5B,EAAQxF,KACtBwF,EAAOM,UAAU,IAAI8B,KAAmB5H,EAAaqF,GAAiBtB,EAAoBsB,EAAcrF,uECAtG,YAA8BgD,EAAe+C,GACjD,GAAI/C,EAAQ,EACV,MAAM,IAAIkD,GAEZ,MAAMsJ,EAAkBtF,UAAUlB,QAAU,EAC5C,OAAQxD,GACNA,EAAO6C,QACLkD,MAAO,CAACkE,EAAGzB,IAAMA,IAAMhL,IACvB0M,QAAK,GACLF,KAAkBG,MAAe5J,IAAiB6J,QAAa,IAAM,IAAI1J,KCEzE,eAAwB2J,GAC5B,OAAQrK,MAA0B4J,MAAO5J,GAAQV,WAAM+K,ICxBnD,YACJvE,EACAF,GAEA,OAAOhE,QAAQ,CAAC5B,EAAQxF,KACtB,IAAIgD,EAAQ,EACZwC,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,IACM+J,EAAUD,KAAKD,EAAS7J,EAAOyB,IAASwC,KAC3CxF,EAAWO,MAAK,GAChBP,EAAWsB,aAGf,KACEtB,EAAWO,MAAK,GAChBP,EAAWsB,gBCXf,cACJ,OAAO8F,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI8I,GAAa,EACb8B,EAAgC,KACpCpF,EAAOM,UACL,IAAI8B,KACF5H,EACC8P,IACMlF,IACHA,KAAWjD,OAAUmI,GAAOhK,UAC1B,IAAI8B,KAAmB5H,OAAYP,EAAW,KAC5CmL,EAAW,KACX9B,GAAc9I,EAAWsB,gBAKjC,KACEwH,GAAa,GACZ8B,GAAY5K,EAAWsB,gBC/D3B,MAAMyO,GAAUC,mBC8DjB,YACJ1B,EACAtG,GAEA,OAAIA,EAEMxC,GACNA,EAAO6C,KAAK4H,GAAW,CAACzM,EAAGwK,OAAMrG,OAAU2G,EAAQ9K,EAAGwK,IAAI3F,MAAK6H,QAAI,CAACzM,EAAQ0M,KAAYnI,EAAexE,EAAGC,EAAGuK,EAAGmC,SAE7G/I,QAAQ,CAAC5B,EAAQxF,KACtB,IAAIgD,EAAQ,EACR4H,EAAiC,KACjC9B,IAAa,EACjBtD,EAAOM,UACL,IAAI8B,KACF5H,EACCoQ,KACMxF,IACHA,EAAW,IAAIhD,KAAmB5H,OAAYP,EAAW,KACvDmL,EAAW,KACX9B,IAAc9I,EAAWsB,cAE3BqG,SAAU2G,EAAQ8B,GAAYpN,MAAU8C,UAAU8E,KAGtD,KACE9B,IAAa,GACZ8B,GAAY5K,EAAWsB,4CC/B5B,YACJgK,EACAF,GAEA,OAAOhE,QAAQiJ,GAAW/E,EAAWF,EAAS,UAG1C,YACJE,EACAF,EACAyB,GAEA,MAAMyD,EAAqB,UAATzD,EAClB,MAAO,CAACrH,EAAuBxF,KAC7B,IAAIgD,GAAQ,EACZwC,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,KACC,MAAMyM,GAAIhL,KACNsI,EAAUD,KAAKD,EAAS7J,GAAOyM,GAAGxI,KACpCxF,EAAWO,KAAK+P,EAAYtC,GAAIzM,IAChCvB,EAAWsB,aAGf,KACEtB,EAAWO,KAAK+P,GAAY,OAAK7Q,GACjCO,EAAWsB,eCjCf,YACJgK,EACAF,GAEA,OAAOhE,QAAQiJ,GAAW/E,EAAWF,EAAS,0BCwF1C,YACJmF,EACAC,EACAC,EACAvH,GAEA,OAAO9B,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI0Q,GACCF,GAAgD,mBAArBA,IAG3BC,WAAUC,WAASxH,aAAcsH,GAFpCE,GAAUF,EAMZ,MAAMG,GAAS,IAAIC,IAGbC,GAAUC,KACdH,GAAOI,QAAQD,IACfA,GAAG9Q,IAKCgR,GAAe7L,IAAa0L,GAAQI,IAAaA,GAAS5P,MAAM8D,KAShE+L,GAA0B,IAAIC,GAClCnR,EACCuB,KAIC,IACE,MAAM6P,GAAMb,EAAYhP,IAExB,IAAI8P,GAAQV,GAAOW,IAAIF,IACvB,IAAKC,GAAO,CAEVV,GAAOY,IAAIH,GAAMC,GAAQnI,EAAYA,IAAc,IAAIvI,KAKvD,MAAM6Q,GAwDd,YAAiCJ,GAAQK,IACvC,MAAM5M,GAAc,IAAI9E,IAAe2R,KACrCR,GAAwBS,eACxB,MAAM/G,GAAW6G,GAAa3L,UAAU4L,IACxC,MAAO,KACL9G,GAAS7H,cAIkC,KAAzCmO,GAAwBS,cACxBT,GAAwBU,mBACxBV,GAAwBnO,iBAG9B8B,UAAOuM,IAAMA,GACNvM,GAvEegN,CAAwBT,GAAKC,IAG7C,GAFArR,EAAWO,KAAKiR,IAEZf,EAAU,CACZ,MAAMlB,GAAqB,IAAI3H,KAM7ByJ,GACA,KAGEA,GAAO/P,WACW,MAAlBiO,OAAoBxM,oBAGtBtD,OAGAA,EAEA,IAAMkR,GAAOmB,OAAOV,KAItBF,GAAwBxQ,KAAIiH,SAAU8I,EAASe,KAAU1L,UAAUyJ,MAKvE8B,GAAM9Q,KAAKmQ,GAAUA,GAAQnP,IAASA,UAC/B4D,IACP6L,GAAY7L,MAIhB,IAAM0L,GAAQI,IAAaA,GAAS3P,YAEpC0P,GAKA,IAAML,GAAOoB,SAIfvM,EAAOM,UAAUoL,MAgCrB,iBAAmCtJ,KAAnChH,kCAIEC,kBAAe,EAIfA,wBAAoB,EAEpBkC,cACElC,KAAK+Q,mBAAoB,EAIH,IAAtB/Q,KAAK8Q,cAAsBnQ,MAAMuB,+BCrO/B,cACJ,OAAOqE,QAAQ,CAAC5B,EAAQxF,KACtBwF,EAAOM,UACL,IAAI8B,KACF5H,EACA,KACEA,EAAWO,MAAK,GAChBP,EAAWsB,YAEb,KACEtB,EAAWO,MAAK,GAChBP,EAAWsB,yCCvBf,cACJ,OAAO8F,QAAQ,CAAC5B,EAAQxF,KACtBwF,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,IACCvB,EAAWO,KAAK2E,aAAwB3D,KAE1C,KACEvB,EAAWO,KAAK2E,oBAChBlF,EAAWsB,YAEZ6D,IACCnF,EAAWO,KAAK2E,cAAyBC,IACzCnF,EAAWsB,gBCrBf,YAAiB0Q,GACrB,OAAO5D,IAAO3J,OAAWuN,GAAY,CAACC,EAAGC,IAAOF,EAASC,EAAGC,GAAK,EAAID,EAAIC,EAAK,CAACD,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,kBC5ChG,MAAMC,GAAU3D,ICkDjB,YACJQ,EACAhH,EACAoK,EAAqB1P,KAErB,SAAI+B,KAAWuD,IACNwG,OAAS,IAAMQ,EAAiBhH,EAAgBoK,IAE3B,iBAAnBpK,IACToK,EAAapK,IAERwG,OAAS,IAAMQ,EAAiBoD,oBCEnC,YACJ1E,EACAC,EACAyE,EAAa1P,KAEb,OAAO0E,QAAQ,CAAC5B,EAAQxF,KAEtB,IAAI8B,EAAQ6L,EAEZ,OAAO0E,QACL7M,EACAxF,EACA,CAACuB,GAAOyB,KAAU0K,EAAY5L,EAAOP,GAAOyB,IAC5CoP,EACC7Q,KACCO,EAAQP,KAEV,OACA9B,EACA,IAAOqC,EAAQ,QC3Cf,eACDiN,GAEH,OCzBI,eAAsB7G,GAC1B,MAAMtG,KAAYsN,OAAahH,GACzBkK,GAAaE,SAAUpK,EAAMxF,KACnCwF,YAAOsC,KAAetC,IAEfd,QAAQ,CAAC5B,EAAQxF,MACtBuS,QAASH,MAAYpH,MAAK,CAACxF,KAAY0C,GAAgCtG,IAAYkE,UAAU9F,KDmBxFwS,IAASzD,GEAZ,YAAiBiD,GACrB,OAAO5D,IAAO3J,OAAWuN,GAAY,CAACC,EAAGC,IAAOF,EAASC,EAAGC,GAAK,EAAID,EAAIC,EAAK,CAACD,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,+BC8BjG,eAAyBO,GAC7B,MAAMzJ,EAASyJ,EAAWzJ,OAC1B,GAAe,IAAXA,EACF,MAAM,IAAI0J,MAAM,uCAElB,OAAOxC,QAAK+B,IACV,IAAIU,EAAmBV,EACvB,QAASjE,EAAI,EAAGA,EAAIhF,EAAQgF,IAAK,CAC/B,MAAM4E,EAAe,MAAXD,OAAW,EAAXrO,EAAcmO,EAAWzE,IACnC,QAAiB,IAAN4E,EAGT,OAFAD,EAAcC,EAKlB,OAAOD,oBC1EL,YAA6BE,GAEjC,OAAQrN,IACN,MAAMiD,EAAU,IAAIqK,IAAmBD,GACvC,OAAO,IAAIE,IAAsBvN,EAAQ,IAAMiD,IC6C7C,cAEJ,OAAQjD,IACN,MAAMiD,EAAU,IAAIC,EACpB,OAAO,IAAIqK,IAAsBvN,EAAQ,IAAMiD,ICU7C,YACJwD,EACA+G,EACAC,EACAvT,GAEIuT,KAAwBxO,OAAWwO,KACrCvT,EAAoBuT,GAEtB,MAAMC,GAAWzO,OAAWwO,GAAuBA,OAAsBxT,EAGzE,OAAQ+F,MAA0B2N,MAAU,IAAIC,IAAiBnH,EAAY+G,EAAYtT,GAAoBwT,EAA3EC,CAAsF3N,GC3DpH,eACDuJ,GAEH,OAAQA,EAAa/F,QAEjB5B,QAAQ,CAAC5B,EAAQxF,MACfqT,QAAwB,CAAC7N,KAAWuJ,GAApCsE,CAAmDrT,KAFrDmK,qBCFA,YAAwBmJ,GAC5B,OAAOlM,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI4K,EAEA2I,EADAC,GAAY,EAEZC,IAAqB,EACrBC,IAAiB,EAKrB,MAAMC,GAAgB,IAAMD,IAAkBD,KAAuBzT,EAAWsB,YAAY,GAmCtFsS,GAAyB,KAC7BF,IAAiB,EAEjB9I,EAAWpF,EAAOM,UAChB,IAAI8B,KAAmB5H,OAAYP,EAAW,KAC5CiU,IAAiB,GAMhBC,OAxCAJ,IACHA,EAAe,IAAI5S,IAInB2S,EAASC,GAAczN,UACrB,IAAI8B,KACF5H,EACA,KACM4K,EACFgJ,KAMAJ,GAAY,GAGhB,KACEC,IAAqB,EACrBE,SAKDJ,GAcwChT,UAI3CiT,IAKF5I,EAAS7H,cAIT6H,EAAW,KAEX4I,GAAY,EAEZI,OAKJA,OC/BE,YAAmBC,EAAsCnR,KAC7D,IAAI+C,EAEFA,EADEoO,GAA0C,iBAAlBA,EACjBA,EAEA,CACPpI,MAAOoI,GAGX,MAAQpI,QAAQ/I,IAAUX,QAAuB+R,kBAAiB,GAAUrO,EAE5E,OAAOgG,GAAS,EACZtB,MACA/C,QAAQ,CAAC5B,EAAQxF,MACf,IACI4K,GADAmJ,GAAQ,EAEZ,MAAMC,GAAoB,KACxB,IAAIC,IAAY,EAChBrJ,GAAWpF,EAAOM,UAChB,IAAI8B,KACF5H,GACCuB,KAEKuS,IACFC,GAAQ,GAEV/T,GAAWO,KAAKgB,UAGlB9B,EACC0F,KACC,GAAI4O,KAAUtI,EAAO,CAEnB,MAAMyI,GAAQ,KACRtJ,IACFA,GAAS7H,cACT6H,GAAW,KACXoJ,MAEAC,IAAY,GAIhB,GAAa,MAATlS,EAAe,CAIjB,MAAMuR,GAA4B,iBAAVvR,GAAqBoS,QAAMpS,IAAS4F,SAAU5F,EAAMoD,GAAK4O,KAC3EK,GAAqB,IAAIxM,KAC7B5H,GACA,KAIEoU,GAAmBrR,cACnBmR,MAEF,KAGElU,GAAWsB,aAGfgS,GAASxN,UAAUsO,SAGnBF,UAKFlU,GAAWqB,MAAM8D,OAKrB8O,KACFrJ,GAAS7H,cACT6H,GAAW,KACXoJ,OAGJA,OC3GF,YAAuBV,GAC3B,OAAOlM,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI4K,EAEAyJ,EADAb,GAAY,EAGhB,MAAMc,GAAwB,KAC5B1J,EAAWpF,EAAOM,UAChB,IAAI8B,KAAmB5H,OAAYP,OAAWA,EAAY0F,KACnDkP,IACHA,EAAU,IAAI1T,IACd2S,EAASe,GAASvO,UAChB,IAAI8B,KAAmB5H,EAAY,IAMjC4K,EAAW0J,KAA2Bd,GAAY,KAIpDa,GAEFA,EAAQ9T,KAAK4E,OAKfqO,IAKF5I,EAAS7H,cACT6H,EAAW,KAEX4I,GAAY,EAEZc,OAKJA,uBC5DE,YAAoBhB,GACxB,OAAOlM,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI4D,GAAW,EACX2D,EAAsB,KAC1B/B,EAAOM,UACL,IAAI8B,KAAmB5H,EAAauB,KAClCqC,GAAW,EACX2D,EAAYhG,MAWhB+R,EAASxN,UAAU,IAAI8B,KAAmB5H,EAR7B,KACX,GAAI4D,EAAU,CACZA,GAAW,EACX,MAAMrC,GAAQgG,EACdA,EAAY,KACZvH,EAAWO,KAAKgB,MAGwCsJ,SChB1D,YAAwB0J,EAAgB3S,EAA2BqF,KACvE,OAAOuN,IAAOC,QAASF,EAAQ3S,IC6C3B,YAAwB8L,EAA6DC,GAMzF,SAAOvG,MAAQ6G,GAAcP,EAAaC,EAAWzD,UAAUlB,QAAU,GAAG,ICpCxE,YACJ0L,EACAC,EAAsC,EAACnR,EAAGC,IAAMD,IAAMC,IAEtD,OAAO2D,QAAQ,CAAC5B,EAAQxF,KAEtB,MAAM4U,EAyED,CACLvI,OAAQ,GACR/K,UAAU,GAzEJuT,EAuED,CACLxI,OAAQ,GACR/K,UAAU,GAtEJuL,GAAQiI,KACZ9U,EAAWO,KAAKuU,IAChB9U,EAAWsB,YAQPyT,GAAmB,CAACC,GAA6BC,MACrD,MAAMC,GAA0B,IAAItN,KAClC5H,EACCwD,KACC,MAAQ6I,UAAQ/K,aAAa2T,GACP,IAAlB5I,GAAOrD,OAOT1H,GAAWuL,IAAK,GAASmI,GAAU3I,OAAOjJ,KAAKI,KAK9CmR,EAAWnR,GAAG6I,GAAOvJ,UAAa+J,IAAK,IAG5C,KAEEmI,GAAU1T,UAAW,EACrB,MAAQA,YAAU+K,WAAW4I,GAK7B3T,IAAYuL,GAAuB,IAAlBR,GAAOrD,QAED,MAAvBkM,OAAyBnS,gBAI7B,OAAOmS,IAIT1P,EAAOM,UAAUiP,GAAiBH,EAAQC,IAC1CH,EAAU5O,UAAUiP,GAAiBF,EAAQD,kCC9B3C,YAAoBtJ,GACxB,OAAOlE,QAAQ,CAAC5B,EAAQxF,KACtB,IACImV,EADAvR,GAAW,EAEXwR,GAAY,EACZpS,GAAQ,EACZwC,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,KACC6T,GAAY,IACP9J,GAAaA,EAAU/J,GAAOyB,KAASwC,MAC1C5B,GAAY5D,EAAWqB,MAAM,IAAImF,GAAc,6BAC/C5C,GAAW,EACXuR,EAAc5T,KAGlB,KACMqC,GACF5D,EAAWO,KAAK4U,GAChBnV,EAAWsB,YAEXtB,EAAWqB,MAAM+T,EAAY,IAAI7O,GAAc,sBAAwB,IAAIP,2BClEjF,YAAsBqP,GAC1B,OAAOA,GAAa,EAEhBlL,MACA/C,QAAQ,CAAC5B,EAAQxF,KAIf,IAAIsV,EAAY,IAAIC,MAAMF,GAGtB7N,EAAO,EACXhC,SAAOM,UACL,IAAI8B,KAAmB5H,EAAauB,IAKlC,MAAMiU,GAAahO,IACnB,GAAIgO,GAAaH,EAIfC,EAAKE,IAAcjU,MACd,CAIL,MAAMyB,GAAQwS,GAAaH,EAGrBI,GAAWH,EAAKtS,IACtBsS,EAAKtS,IAASzB,EAKdvB,EAAWO,KAAKkV,QAKf,KAELH,EAAO,QC/CX,YAAuBhC,GAC3B,OAAOlM,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI0V,GAAS,EAEb,MAAMC,EAAiB,IAAI/N,KACzB5H,EACA,KACgB,MAAd2V,KAAgB5S,cAChB2S,GAAS,GAEX7K,OAGFlD,SAAU2L,GAAUxN,UAAU6P,GAE9BnQ,EAAOM,UAAU,IAAI8B,KAAmB5H,EAAauB,GAAUmU,GAAU1V,EAAWO,KAAKgB,+CCGvF,cACJ,OAAOqU,QAAUzL,sBCzCb,YACJuD,EACAC,GAEA,OAAOvG,QAAQ,CAAC5B,EAAQxF,KAGtB,IAAI8B,EAAQ6L,EAKZiI,eAGE,CAACrU,EAAUyB,KAAU0K,EAAY5L,EAAOP,EAAOyB,IAG/C,CAAC6S,EAAGC,MAAiBhU,EAAQgU,GAAaA,IAN5CF,CAOEpQ,GAAQM,UAAU9F,GAEb,KAEL8B,EAAQ,mFCSR,YAA0BF,EAA2BmU,KACzD,OAAQvQ,MACN8D,MAAM,IACG9D,EAAO6C,KAEZ2N,GAAK,EAAGC,WAAW1U,KAAW,CAAEA,QAAO0U,QAASrU,EAAUtC,MAAO4W,KAAMD,IAAY,CACjFA,QAASrU,EAAUtC,MACnBiC,WAAO9B,EACPyW,UAAMzW,KAERyQ,QAA0B,EAAG+F,UAASC,OAAM3U,WAAY,IAAI4U,GAAa5U,EAAO0U,EAAUC,MAQ5F,SAIJtV,YAAmBW,EAAiBkT,GAAjB5T,aAAiBA,iBCQhC,YACJuV,EACAC,EACAzU,GAEA,IAAIgF,EACAC,EACAE,EASJ,GARAnF,EAAqB,MAATA,IAAamU,OAErB5O,MAAYiP,GACdxP,EAAQwP,EACgB,iBAARA,IAChBvP,EAAOuP,IAGLC,EAGF,MAAM,IAAIpR,UAAU,uCAGtB,GALE8B,EAAQ,IAAMsP,EAKH,MAATzP,GAAyB,MAARC,EAEnB,MAAM,IAAI5B,UAAU,wBAGtB,OAAOqR,GAA+B,CACpC1P,QACAC,OACAjF,YACAkF,KAAMC,oBC/EJ,YAAuBrH,EAAuC6W,MAClE,OAAOrG,QAAK3O,IAAc,CAAEA,QAAOjB,UAAWZ,EAAkBJ,SCU5D,YAAoBkX,GACxB,OAAOpP,QAAQ,CAAC5B,EAAQxF,KACtB,IAAIyW,EAA4B,IAAI9V,IAEpCX,EAAWO,KAAKkW,EAAcC,gBAE9B,MAAMxS,EAAgBiB,IACpBsR,EAAcpV,MAAM8D,GACpBnF,EAAWqB,MAAM8D,IAInBK,SAAOM,UACL,IAAI8B,KACF5H,EACCuB,GAAuB,MAAbkV,OAAa,EAAbnS,EAAe/D,KAAKgB,GAC/B,KACEkV,EAAcnV,WACdtB,EAAWsB,YAEb4C,IAKJsS,EAAiB1Q,UACf,IAAI8B,KACF5H,EACA,KACEyW,EAAcnV,WACdtB,EAAWO,KAAMkW,EAAgB,IAAI9V,MAEvCkK,KACA3G,IAIG,KAIQ,MAAbuS,KAAe1T,cACf0T,EAAgB,QCvBhB,YAAyBE,EAAoBC,EAA2B,GAC5E,MAAMC,EAAaD,EAAmB,EAAIA,EAAmBD,EAE7D,OAAOvP,QAAQ,CAAC5B,EAAQxF,KACtB,IAAI8W,EAAU,CAAC,IAAInW,KACfoW,GAAmB,GACnBtL,GAAQ,EAGZzL,EAAWO,KAAKuW,EAAQ,GAAGJ,gBAE3BlR,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,KAIC,UAAWyV,MAAUF,EACnBE,GAAOzW,KAAKgB,IAOd,MAAM0V,GAAIxL,GAAQkL,EAAa,EAU/B,GATIM,IAAK,GAAKA,GAAIJ,GAAe,GAC/BC,EAAQhU,QAASxB,aAQbmK,GAAQoL,GAAe,EAAG,CAC9B,MAAMG,GAAS,IAAIrW,IACnBmW,EAAQ1T,KAAK4T,IACbhX,EAAWO,KAAKyW,GAAON,kBAG3B,KACE,KAAOI,EAAQ9N,OAAS,GACtB8N,EAAQhU,QAASxB,WAEnBtB,EAAWsB,YAEZ6D,KACC,KAAO2R,EAAQ9N,OAAS,GACtB8N,EAAQhU,QAASzB,MAAM8D,IAEzBnF,EAAWqB,MAAM8D,KAEnB,KACE4R,GAAS,KACTD,EAAU,UCpBd,YAAwBI,KAA2B1K,WACvD,MAAM5K,EAAmC,QAAvByC,YAAamI,UAAU7H,QAAIsC,IACvCkQ,EAAiD,QAAxB7S,EAACkI,EAAU,UAAalH,QAAI,KACrD8R,GAAiB5K,EAAU,IAAiB9J,IAElD,OAAO0E,QAAQ,CAAC5B,GAAQxF,MAEtB,IAAIqX,GAA0C,GAG1CC,IAAiB,EAErB,MAAMC,GAAezK,KACnB,MAAQkK,UAAQpO,SAASkE,GACzBkK,GAAO1V,WACPsH,GAAK7F,eACLuJ,QAAU+K,GAAevK,IACzBwK,IAAkBE,MAOdA,GAAc,KAClB,GAAIH,GAAe,CACjB,MAAMzO,GAAO,IAAI1I,KACjBF,GAAWU,IAAIkI,IACf,MAAMoO,GAAS,IAAIrW,IACbmM,GAAS,CACbkK,UACApO,QACApB,KAAM,GAER6P,GAAcjU,KAAK0J,IACnB9M,GAAWO,KAAKyW,GAAON,mBACvBhP,MAAgBkB,GAAMhH,EAAW,IAAM2V,GAAYzK,IAASoK,KAIjC,OAA3BC,GAAmCA,GAA0B,KAI/DzP,MAAgB1H,GAAY4B,EAAW4V,GAAaL,GAAwB,GAE5EG,IAAiB,EAGnBE,KAQA,MAAMC,GAAQ3G,IAA0CuG,GAAenK,QAAQ6D,QAAQD,IAMjF4G,GAAa5G,KACjB2G,GAAK,EAAGT,aAAalG,GAAGkG,KACxBlG,GAAG9Q,IACHA,GAAW+C,eAGbyC,UAAOM,UACL,IAAI8B,KACF5H,GACCuB,KAECkW,GAAM3K,KACJA,GAAOkK,OAAOzW,KAAKgB,IAEnB6V,MAAmBtK,GAAOtF,MAAQ+P,GAAYzK,OAIlD,IAAM4K,GAAWzG,IAAaA,GAAS3P,YAEtC6D,IAAQuS,GAAWzG,IAAaA,GAAS5P,MAAM8D,OAO7C,KAELkS,GAAgB,QC3IhB,YACJjK,EACAC,GAEA,OAAOjG,QAAQ,CAAC5B,EAAQxF,KACtB,MAAM8W,EAAwB,GAExB9F,EAAe7L,KACnB,KAAO,EAAI2R,EAAQ9N,QACjB8N,EAAQhU,QAASzB,MAAM8D,IAEzBnF,EAAWqB,MAAM8D,QAGnBwC,OAAUyF,GAAUtH,UAClB,IAAI8B,KACF5H,EACCsN,KACC,MAAM0J,GAAS,IAAIrW,IACnBmW,EAAQ1T,KAAK4T,IACb,MAAMzJ,GAAsB,IAAIrN,KAOhC,IAAI6L,GACJ,IACEA,IAAkBpE,SAAU0F,EAAgBC,WACrCnI,IAEP,YADA6L,EAAY7L,IAIdnF,EAAWO,KAAKyW,GAAON,gBAEvBnJ,GAAoB7M,IAAIqL,GAAgBjG,UAAU,IAAI8B,KAAmB5H,EAhBrD,QAClBsM,MAAUwK,EAASE,IACnBA,GAAO1V,WACPiM,GAAoBxK,eAa4E8H,KAAMmG,MAE1GnG,OAKJrF,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,KAGC,MAAMoW,GAAcb,EAAQ5J,QAC5B,UAAW8J,MAAUW,GACnBX,GAAOzW,KAAKgB,KAGhB,KAEE,KAAO,EAAIuV,EAAQ9N,QACjB8N,EAAQhU,QAASxB,WAEnBtB,EAAWsB,YAEb0P,EACA,KAME,KAAO,EAAI8F,EAAQ9N,QACjB8N,EAAQhU,QAASC,mBC3EvB,YAAwBsK,GAC5B,OAAOjG,QAAQ,CAAC5B,EAAQxF,KACtB,IAAIgX,EACAxJ,EAMJ,MAAMwD,EAAe7L,KACnB6R,EAAQ3V,MAAM8D,IACdnF,EAAWqB,MAAM8D,KASbyS,GAAa,KAajB,IAAI7L,GAVa,MAAjByB,KAAmBzK,cAGb,MAANiU,KAAQ1V,WAGR0V,EAAS,IAAIrW,IACbX,EAAWO,KAAKyW,EAAON,gBAIvB,IACE3K,MAAkBpE,OAAU0F,WACrBlI,IAEP,YADA6L,EAAY7L,IAQd4G,GAAgBjG,UAAW0H,EAAoB,IAAI5F,KAAmB5H,EAAY4X,GAAYA,GAAY5G,KAI5G4G,KAGApS,EAAOM,UACL,IAAI8B,KACF5H,EACCuB,IAAUyV,EAAQzW,KAAKgB,IACxB,KAEEyV,EAAQ1V,WACRtB,EAAWsB,YAEb0P,EACA,KAGmB,MAAjBxD,KAAmBzK,cACnBiU,EAAS,0BCpGb,YAAuB1I,GAC3B,OAAOG,GAAiBoJ,KAAKvJ,GCQzB,eAAsDwJ,GAC1D,OCNI,eAAuBxN,GAC3B,OAAOlD,QAAQ,CAAC5B,EAAQxF,MAEtB+X,QAAUvS,KAAY8E,GAAmBxE,UAAU9F,KDG9C6X,IAAOC,kEEjBV,gBAAkCnX,IACtCC,YAAoBK,GAClBO,QADkBX,cAIhBU,YACF,OAAOV,KAAKmX,WAIJC,WAAWjY,GACnB,MAAMC,EAAeuB,MAAMyW,WAAWjY,GACtC,OAACC,EAAaQ,QAAUT,EAAWO,KAAKM,KAAKI,QACtChB,EAGT+X,WACE,MAAQjX,WAAUG,cAAaD,UAAWJ,KAC1C,GAAIE,EACF,MAAMG,EAER,YAAKgX,iBACEjX,EAGTV,KAAKgB,GACHC,MAAMjB,KAAMM,KAAKI,OAASM,oICjBvB,IAAMxB,EAAb,MAAM,QAkBJa,YAAYkF,GACNA,IACFjF,KAAKoX,WAAanS,GA8BtBqS,KAAQC,GACN,MAAMC,EAAa,IAAItY,EACvBsY,SAAW7S,OAAS3E,KACpBwX,EAAWD,SAAWA,EACfC,EA2ITvS,UACEwS,EACAjX,EACAC,GAEA,MAAMtB,EAwRV,WAAyBuB,GACvB,OAAQA,GAASA,aAAiBgX,MALpC,WAAuBhX,GACrB,OAAOA,IAASkD,OAAWlD,EAAMhB,UAASkE,KAAWlD,EAAMF,SAAUoD,OAAWlD,EAAMD,UAIpCkX,CAAWjX,OAAUkX,MAAelX,GAzRjEmX,CAAaJ,GAAkBA,EAAiB,IAAIrS,KAAeqS,EAAgBjX,EAAOC,GAE7GqX,cAAa,KACX,MAAQP,WAAU5S,UAAW3E,KAC7Bb,EAAWU,IACT0X,EAGIA,EAAS/M,KAAKrL,EAAYwF,GAC1BA,EAIA3E,KAAKoX,WAAWjY,GAGhBa,KAAK+X,cAAc5Y,MAIpBA,EAIC4Y,cAAcC,GACtB,IACE,OAAOhY,KAAKoX,WAAWY,SAChB1T,GAIP0T,EAAKxX,MAAM8D,IA+Df4L,QAAQxQ,EAA0BuY,GAChCA,OAEO,IAFPA,EAAcC,EAAeD,IAEA,CAAClT,EAASC,KAGrC,IAAI5F,EACJA,EAAeY,KAAKiF,UACjBvE,IACC,IACEhB,EAAKgB,SACE4D,GACPU,EAAOV,GACK,MAAZlF,KAAc8C,gBAGlB8C,EACAD,KAMIqS,WAAWjY,SACnB,OAAkB,QAAX4S,OAAKpN,cAAMb,eAAEmB,UAAU9F,IAQ/BgZ,OACC,OAAOnY,KA6FTwH,QAAQ4Q,GACN,OAAOC,OAAcD,GAAYpY,MA8BnCsY,UAAUL,GACRA,OAEO,IAFPA,EAAcC,EAAeD,IAEN,CAAClT,EAASC,KAC/B,IAAItE,EACJV,KAAKiF,UACFmM,GAAU1Q,EAAQ0Q,EAClB9M,GAAaU,EAAOV,GACrB,IAAMS,EAAQrE,OAtabxB,gBAAsC+F,GACpC,IAAI/F,EAAc+F,GApChB/F,GAAb,GAsdA,WAAwB+Y,SACtB,OAAoC,QAA7BM,EAAW,MAAXlH,IAAezM,mBAAcd,QAAIgB,kFCtcpC,gBAAgChF,IAUpCC,YACUyY,EAAc3W,IACd4W,EAAc5W,IACd6W,EAAwChD,KAEhD/U,QAJQX,mBACAA,mBACAA,0BAZFA,aAA0B,GAC1BA,0BAAsB,EAc5BA,KAAK2Y,oBAAsBF,IAAgB5W,IAC3C7B,KAAKwY,YAAcI,KAAKC,IAAI,EAAGL,GAC/BxY,KAAKyY,YAAcG,KAAKC,IAAI,EAAGJ,GAGjC/Y,KAAKgB,GACH,MAAQJ,YAAWwY,UAASH,sBAAqBD,qBAAoBD,eAAgBzY,KAChFM,IACHwY,EAAQvW,KAAK7B,IACZiY,GAAuBG,EAAQvW,KAAKmW,EAAmBja,MAAQga,IAElEzY,KAAK+Y,cACLpY,MAAMjB,KAAKgB,GAIH0W,WAAWjY,GACnBa,KAAKqX,iBACLrX,KAAK+Y,cAEL,MAAM3Z,EAAeY,KAAKgZ,gBAAgB7Z,IAElCwZ,sBAAqBG,WAAY9Y,KAGnCiZ,EAAOH,EAAQzM,QACrB,QAASc,EAAI,EAAGA,EAAI8L,EAAK9Q,SAAWhJ,EAAWS,OAAQuN,GAAKwL,EAAsB,EAAI,EACpFxZ,EAAWO,KAAKuZ,EAAK9L,IAGvB,YAAKlN,wBAAwBd,GAEtBC,EAGD2Z,cACN,MAAQP,cAAaE,qBAAoBI,UAASH,uBAAwB3Y,KAKpEkZ,GAAsBP,EAAsB,EAAI,GAAKH,EAK3D,GAJAA,EAAc3W,KAAYqX,EAAqBJ,EAAQ3Q,QAAU2Q,EAAQK,OAAO,EAAGL,EAAQ3Q,OAAS+Q,IAI/FP,EAAqB,CACxB,MAAMla,EAAMia,EAAmBja,MAC/B,IAAI4W,EAAO,EAGX,QAASlI,EAAI,EAAGA,EAAI2L,EAAQ3Q,QAAW2Q,EAAQ3L,IAAiB1O,EAAK0O,GAAK,EACxEkI,EAAOlI,EAETkI,GAAQyD,EAAQK,OAAO,EAAG9D,EAAO,oEClFjC,QAGJtV,YAAoB2B,EAAoCjD,EAAoB2a,EAAU3a,KAAlEuB,2BAClBA,KAAKvB,IAAMA,EA8BNO,SAAYgC,EAAqDE,EAAgB,EAAGD,GACzF,OAAO,IAAIjB,KAAK0B,oBAAuB1B,KAAMgB,GAAMhC,SAASiC,EAAOC,IAlCvDkY,MAAoB1D,kHCT7B,IAAM5V,EAAb,MAAM,gBAA0BZ,IAqB9Ba,cAEEY,QAtBFX,aAAS,EAETA,eAA2B,GAE3BA,gBAAY,EAEZA,eAAW,EAEXA,iBAAmB,KAkBnBsX,KAAQC,GACN,MAAM3P,EAAU,IAAIyR,EAAiBrZ,KAAMA,MAC3C4H,SAAQ2P,SAAWA,EACZ3P,EAICyP,iBACR,GAAIrX,KAAKJ,OACP,MAAM,IAAI0Z,IAId5Z,KAAKgB,IACHoX,OAAa,KAEX,GADA9X,KAAKqX,kBACArX,KAAKM,UAAW,CACnB,MAAM2Y,EAAOjZ,KAAKuZ,UAAUlN,QAC5B,UAAWpJ,KAAYgW,EACrBhW,EAASvD,KAAKgB,MAMtBF,MAAM8D,IACJwT,OAAa,KAEX,GADA9X,KAAKqX,kBACArX,KAAKM,UAAW,CACnBN,KAAKE,SAAWF,KAAKM,WAAY,EACjCN,KAAKK,YAAciE,EACnB,MAAQiV,aAAcvZ,KACtB,KAAOuZ,EAAUpR,QACfoR,EAAUtX,QAASzB,MAAM8D,MAMjC7D,YACEqX,OAAa,KAEX,GADA9X,KAAKqX,kBACArX,KAAKM,UAAW,CACnBN,KAAKM,WAAY,EACjB,MAAQiZ,aAAcvZ,KACtB,KAAOuZ,EAAUpR,QACfoR,EAAUtX,QAASxB,cAM3ByB,cACElC,KAAKM,UAAYN,KAAKJ,QAAS,EAC/BI,KAAKuZ,UAAY,KAGfC,qBACF,OAAqB,QAAd5K,OAAK2K,iBAASzV,eAAEqE,QAAS,EAIxB4P,cAAc5Y,GACtB,YAAKkY,iBACE1W,MAAMoX,cAAc5Y,GAInBiY,WAAWjY,GACnB,YAAKkY,iBACLrX,KAAKC,wBAAwBd,GACtBa,KAAKgZ,gBAAgB7Z,GAIpB6Z,gBAAgB7Z,GACxB,MAAQe,WAAUI,YAAWiZ,aAAcvZ,KAC3C,OAAOE,GAAYI,EACfmZ,MACCF,EAAUhX,KAAKpD,GAAa,IAAIE,KAAa,KAAMoM,OAAU8N,EAAWpa,KAIrEc,wBAAwBd,GAChC,MAAQe,WAAUG,cAAaC,aAAcN,KACzCE,EACFf,EAAWqB,MAAMH,GACRC,GACTnB,EAAWsB,WAUfoV,eACE,MAAM2B,EAAkB,IAAItY,IAC5BsY,SAAW7S,OAAS3E,KACbwX,GA/GF1X,gBAAkC,CAAI4Z,EAA0B/U,IAC9D,IAAI0U,EAAoBK,EAAa/U,GAlBnC7E,GAAb,GAuIM,gBAAmCA,EACvCC,YAES2Z,EACP/U,GAEAhE,QAHOX,mBAIPA,KAAK2E,OAASA,EAGhBjF,KAAKgB,WACmB,QAAtBiZ,EAAgB,QAAhB/K,OAAK8K,mBAAW5V,eAAEpE,YAAI+E,gBAAG/D,GAG3BF,MAAM8D,WACmB,QAAvBqV,EAAgB,QAAhB/K,OAAK8K,mBAAW5V,eAAEtD,aAAKiE,gBAAGH,GAG5B7D,mBAC4B,QAA1BmO,EAAgB,QAAhBgL,OAAKF,mBAAW5V,eAAErD,gBAAQgE,iBAIlB2S,WAAWjY,WACnB,OAAyC,QAAlCwa,EAAW,QAAX/K,OAAKjK,cAAMb,eAAEmB,UAAU9F,UAAWsF,QAAIgV,0HCxK1C,MAAMI,EAA+BC,EAAmB,SAAKlb,OAAWA,GA0BzE,WAA6BkE,EAAuBpC,EAAYF,GACpE,MAAO,CACLsC,OACApC,QACAF,mCCjBE,gBAA6BnB,KA6BjCU,YAAY2Z,GACV/Y,QATQX,gBAAqB,EAU7BoR,GACEpR,KAAK0Z,YAAcA,KAGf9B,MAAe8B,IACjBA,EAAY7Z,IAAIG,OAGlBA,KAAK0Z,YAAcK,gBAvBNra,EAAwBc,EAA2BC,GAClE,OAAO,IAAI2E,EAAe1F,EAAMc,EAAOC,GAiCzCf,KAAKgB,GACCV,KAAKM,UACP0Z,EDjDA,WAA8BtZ,GAClC,OAAOoZ,EAAmB,IAAKpZ,OAAO9B,GCgDRqb,CAAiBvZ,GAAQV,MAEnDA,KAAKka,MAAMxZ,GAWfF,MAAM8D,GACAtE,KAAKM,UACP0Z,EDzEA,WAA4BxZ,GAChC,OAAOsZ,EAAmB,SAAKlb,EAAW4B,GCwEZ2Z,CAAkB7V,GAAMtE,OAElDA,KAAKM,WAAY,EACjBN,KAAKoa,OAAO9V,IAUhB7D,WACMT,KAAKM,UACP0Z,EAA0BH,EAAuB7Z,OAEjDA,KAAKM,WAAY,EACjBN,KAAKqa,aAITnY,cACOlC,KAAKJ,SACRI,KAAKM,WAAY,EACjBK,MAAMuB,cACNlC,KAAK0Z,YAAc,MAIbQ,MAAMxZ,GACdV,KAAK0Z,YAAYha,KAAKgB,GAGd0Z,OAAO9V,GACf,IACEtE,KAAK0Z,YAAYlZ,MAAM8D,WAEvBtE,KAAKkC,eAICmY,YACR,IACEra,KAAK0Z,YAAYjZ,mBAEjBT,KAAKkC,gBAKL,gBAAiCwV,EACrC3X,YACE0X,EACAjX,EACAC,GAIA,IAAIf,EACJ,GAHAiB,WAGIiD,KAAW6T,GAGb/X,EAAO+X,UACEA,EAAgB,CAOzB,IAAI6C,IADD5a,OAAMc,QAAOC,YAAagX,GAEzBzX,MAAQ4E,8BAIV0V,EAAUlQ,OAAOmQ,OAAO9C,GACxB6C,EAAQpY,YAAc,IAAMlC,KAAKkC,eAEjCoY,EAAU7C,EAEZ/X,EAAW,MAAJA,OAAI,EAAJ8a,EAAMC,KAAKH,GAClB9Z,EAAa,MAALA,OAAK,EAALka,EAAOD,KAAKH,GACpB7Z,EAAmB,MAARA,OAAQ,EAARka,EAAUF,KAAKH,GAK5Bta,KAAK0Z,YAAc,CACjBha,KAAMA,EAAOkb,EAAqBlb,GAAcsK,IAChDxJ,MAAOoa,EAA0B,MAALpa,IAASqa,GACrCpa,SAAUA,EAAWma,EAAqBna,GAAkBuJ,MAYlE,WAA8BnB,EAA8BiS,GAC1D,MAAO,IAAIzT,KACT,IACEwB,KAAWxB,SACJ/C,GACHM,6CACFmW,KAAazW,MAIb0W,KAAqB1W,KAW7B,WAA6BA,GAC3B,MAAMA,EAQR,WAAmCE,EAA2CrF,GAC5E,MAAQ8b,yBAA0BrW,IAClCqW,GAAyBC,eAA2B,IAAMD,EAAsBzW,EAAcrF,IAQzF,MAAM4a,EAA6D,CACxEna,QAAQ,EACRF,KAAMsK,IACNxJ,MAAOqa,EACPpa,SAAUuJ,4GCzNN,QAyBJjK,YAAoBob,0BAdbnb,aAAS,EAERA,gBAAmD,KAMnDA,gBAAoD,KAc5DkC,cACE,IAAIkZ,EAEJ,IAAKpb,KAAKJ,OAAQ,CAChBI,KAAKJ,QAAS,EAGd,MAAQyb,cAAerb,KACvB,GAAIqb,EAEF,GADArb,KAAKqb,WAAa,KACd3G,MAAM4G,QAAQD,GAChB,UAAWE,KAAUF,EACnBE,EAAOC,OAAOxb,WAGhBqb,EAAWG,OAAOxb,MAItB,MAAQmb,mBAAoBnb,KAC5B,MAAI4D,KAAWuX,GACb,IACEA,UACOrS,GACPsS,EAAStS,aAAa2S,IAAsB3S,EAAEsS,OAAS,CAACtS,GAI5D,MAAQ4S,cAAe1b,KACvB,GAAI0b,EAAY,CACd1b,KAAK0b,WAAa,KAClB,UAAWC,KAAYD,EACrB,IACEE,EAAaD,SACNrX,GACP8W,EAAe,MAANA,IAAU,GACnBS,aAAmBJ,IACjBL,EAAS,IAAIA,KAAW9W,EAAI8W,QAE5BA,EAAO7Y,KAAK+B,IAMpB,GAAI8W,EACF,MAAM,IAAIK,IAAoBL,IAuBpCvb,IAAI8b,SAGF,GAAIA,GAAYA,IAAa3b,KAC3B,GAAIA,KAAKJ,OAGPgc,EAAaD,OACR,CACL,GAAIA,aAAoBtc,EAAc,CAGpC,GAAIsc,EAAS/b,QAAU+b,EAASG,WAAW9b,MACzC,OAEF2b,EAASI,WAAW/b,OAErBA,KAAK0b,WAA4B,QAAf9M,OAAK8M,kBAAU5X,QAAI,IAAIvB,KAAKoZ,IAU7CG,WAAWP,GACjB,MAAQF,cAAerb,KACvB,OAAOqb,IAAeE,GAAW7G,MAAM4G,QAAQD,IAAeA,EAAWW,SAAST,GAU5EQ,WAAWR,GACjB,MAAQF,cAAerb,KACvBA,KAAKqb,WAAa3G,MAAM4G,QAAQD,IAAeA,EAAW9Y,KAAKgZ,GAASF,GAAcA,EAAa,CAACA,EAAYE,GAAUA,EAOpHU,cAAcV,GACpB,MAAQF,cAAerb,KACnBqb,IAAeE,EACjBvb,KAAKqb,WAAa,KACT3G,MAAM4G,QAAQD,KACvB5P,OAAU4P,EAAYE,GAkB1BC,OAAOG,GACL,MAAQD,cAAe1b,KACvB0b,MAAcjQ,KAAUiQ,EAAYC,GAEhCA,aAAoBtc,GACtBsc,EAASM,cAAcjc,OAhLbX,QAAS,MACrB,MAAM6c,EAAQ,IAAI7c,EAClB6c,SAAMtc,QAAS,EACRsc,GAHc,GAqLlB,MAAMzC,EAAqBpa,EAAa8E,MAEzC,WAAyBzD,GAC7B,OACEA,aAAiBrB,GAChBqB,GAAS,WAAYA,IAASkD,OAAWlD,EAAM8a,YAAW5X,KAAWlD,EAAMb,OAAQ+D,OAAWlD,EAAMwB,aAIzG,WAAsByZ,IAChB/X,OAAW+X,GACbA,IAEAA,EAASzZ,8DC9MN,MAAM0C,EAAuB,CAClCuX,iBAAkB,KAClBlB,sBAAuB,KACvBnW,aAASlG,EACTwd,uCAAuC,EACvCC,0BAA0B,6GCGtB,gBAAwCnd,IAgB5Ca,YAAmB4E,EAAiC2X,GAClD3b,QADiBX,cAAiCA,sBAf1CA,cAA8B,KAC9BA,eAAoB,EACpBA,iBAAmC,MAkBvCuc,OAAQ5X,KACV3E,KAAKsX,KAAO3S,EAAO2S,MAKbF,WAAWjY,GACnB,OAAOa,KAAKwc,aAAavX,UAAU9F,GAG3Bqd,aACR,MAAM5U,EAAU5H,KAAKyc,SACrB,QAAK7U,GAAWA,EAAQtH,aACtBN,KAAKyc,SAAWzc,KAAKsc,kBAEhBtc,KAAKyc,SAGJC,YACR1c,KAAK2c,UAAY,EACjB,MAAQC,eAAgB5c,KACxBA,KAAKyc,SAAWzc,KAAK4c,YAAc,KACxB,MAAXA,KAAa1a,cAOfsG,UACE,IAAID,EAAavI,KAAK4c,YACtB,IAAKrU,EAAY,CACfA,EAAavI,KAAK4c,YAAc,IAAIvd,KACpC,MAAMuI,EAAU5H,KAAKwc,aACrBjU,EAAW1I,IACTG,KAAK2E,OAAOM,UACV,IAAI8B,IACFa,OACAhJ,EACA,KACEoB,KAAK0c,YACL9U,EAAQnH,YAET6D,IACCtE,KAAK0c,YACL9U,EAAQpH,MAAM8D,IAEhB,IAAMtE,KAAK0c,eAKbnU,EAAW3I,SACbI,KAAK4c,YAAc,KACnBrU,EAAalJ,YAGjB,OAAOkJ,EAOTsU,WACE,SAAOC,OAAsB9c,qKCgG3B,cAA8DqH,GAClE,MAAMtG,KAAYsN,MAAahH,GACzBF,GAAiB6G,QAAkB3G,IAEjCA,KAAM0V,EAAaC,WAASC,KAAqB5V,GAEzD,GAA2B,IAAvB0V,EAAY5U,OAId,OAAOgC,OAAK,GAAIpJ,GAGlB,MAAMiD,EAAS,IAAI9E,IACjB+O,EACE8O,EACAhc,EACAic,EAEKhO,IAAWkO,OAAaF,EAAMhO,GAE/B1F,MAIR,OAAOnC,EAAkBnD,EAAOwD,MAAKC,OAAiBN,IAAqCnD,EAGvF,WACJ+Y,EACAhc,EACAoc,EAAyC7T,KAEzC,OAAQnK,IAGNie,EACErc,EACA,KACE,MAAQoH,UAAW4U,EAEb/N,EAAS,IAAI0F,MAAMvM,GAGzB,IAAI7F,EAAS6F,EAITkV,EAAuBlV,EAG3B,QAASgF,EAAI,EAAGA,EAAIhF,EAAQgF,IAC1BiQ,EACErc,EACA,KACE,MAAM4D,GAASwF,OAAK4S,EAAY5P,GAAIpM,GACpC,IAAIuc,GAAgB,EACpB3Y,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IAECsO,EAAO7B,GAAKzM,EACP4c,IAEHA,GAAgB,EAChBD,KAEGA,GAGHle,EAAWO,KAAKyd,EAAenO,EAAO3C,WAG1C,OACS/J,GAGLnD,EAAWsB,eAMrBtB,IAINA,IASN,WAAuB4B,EAAsCK,EAAqBhC,GAC5E2B,GACF8F,OAAgBzH,EAAc2B,EAAWK,GAEzCA,yFCtLE,cAAoBiG,GACxB,OAAOiH,YAAYnE,KAAK9C,KAAMgH,MAAahH,+ECnEvC,WAAgD2D,GACpD,OAAO,IAAI9L,IAAgCC,KACzC2H,QAAUkE,KAAqB/F,UAAU9F,4ECzBtC,MAAMgF,EAAQ,IAAIjF,IAAmBC,GAAeA,EAAWsB,YA2DhE,WAAgBM,GACpB,OAAOA,EAGT,WAAwBA,GACtB,OAAO,IAAI7B,IAAmBC,GAAe4B,EAAU/B,SAAS,IAAMG,EAAWsB,aAJ9D8c,CAAexc,GAAaoD,mICyD3C,cAAsBkD,GAC1B,MAAMF,GAAiB6G,QAAkB3G,IACjCA,KAAMoC,EAASuT,WAASC,KAAqB5V,GAC/CrD,EAAS,IAAI9E,IAAYC,IAC7B,MAAQgJ,UAAWsB,EACnB,IAAKtB,EAEH,YADAhJ,EAAWsB,WAGb,MAAMuO,EAAS,IAAI0F,MAAMvM,GACzB,IAAIqV,EAAuBrV,EACvBsV,EAAqBtV,EACzB,QAASuV,EAAc,EAAGA,EAAcvV,EAAQuV,IAAe,CAC7D,IAAI3a,GAAW,KACf+D,MAAU2C,EAAQiU,IAAczY,UAC9B,IAAI8B,IACF5H,EACCuB,IACMqC,IACHA,GAAW,EACX0a,KAEFzO,EAAO0O,GAAehd,GAExB,IAAM8c,SACN5e,EACA,OACO4e,IAAyBza,KACvB0a,GACHte,EAAWO,KAAKsd,GAAOE,OAAaF,EAAMhO,GAAUA,GAEtD7P,EAAWsB,kBAOvB,OAAO0G,EAAiBnD,EAAOwD,MAAKC,OAAiBN,IAAmBnD,4EC5EpE,WAAkB2Z,EAA2B5c,GACjD,OAAOA,KAAY6c,KAAUD,EAAO5c,MAAa+F,MAAU6W,yHCnG7D,MAAME,EAA0B,CAAC,cAAe,kBAC1CC,EAAqB,CAAC,mBAAoB,uBAC1CC,EAAgB,CAAC,KAAM,OA2NvB,WACJC,EACAC,EACAC,EACA/W,GAMA,MAJIvD,KAAWsa,KACb/W,EAAiB+W,EACjBA,OAAUtf,GAERuI,EACF,OAAOgX,EAAaH,EAAQC,EAAWC,GAAiC1W,QAAKC,KAAiBN,IAUhG,MAAOtH,EAAK2b,GA4Ed,WAAuBwC,GACrB,SAAOpa,KAAWoa,EAAOI,oBAAqBxa,OAAWoa,EAAOK,qBA3E9DC,CAAcN,GACVF,EAAmBzO,IAAKkP,GAAgB1V,GAAiBmV,EAAOO,GAAYN,EAAWpV,EAASqV,IAuDxG,WAAiCF,GAC/B,SAAOpa,KAAWoa,EAAOQ,eAAgB5a,OAAWoa,EAAOS,gBAtDvDC,CAAwBV,GACtBH,EAAwBxO,IAAIsP,EAAwBX,EAAQC,IA6DpE,WAAmCD,GACjC,SAAOpa,KAAWoa,EAAOY,MAAOhb,OAAWoa,EAAOa,KA7D5CC,CAA0Bd,GAC1BD,EAAc1O,IAAIsP,EAAwBX,EAAQC,IAClD,GAON,IAAKpe,MACCkf,KAAYf,GACd,OAAOrQ,OAAUqR,GAAmBb,EAAUa,EAAWf,EAAWC,GAA7DvQ,IACL7G,MAAUkX,IAOhB,IAAKne,EACH,MAAM,IAAIuE,UAAU,wBAGtB,OAAO,IAAIlF,IAAeC,IAIxB,MAAM0J,EAAU,IAAIxB,IAAgBlI,EAAWO,KAAK,EAAI2H,EAAKc,OAASd,EAAOA,EAAK,IAElFxH,SAAIgJ,GAEG,IAAM2S,EAAQ3S,KAWzB,WAAiCmV,EAAaC,GAC5C,OAAQM,GAAwB1V,GAAiBmV,EAAOO,GAAYN,EAAWpV,kEC1N3E,WAAoBI,EAA0BgW,EAAgCC,GAClF,OAAOzW,OAAM,IAAOQ,IAAcgW,EAAaC,4LCrE3C,WAAuBvB,GAC3B,GAAIA,aAAiBze,IACnB,OAAOye,EAET,GAAa,MAATA,EAAe,CACjB,MAAIwB,KAAoBxB,GACtB,OA0BA,WAAmCzT,GACvC,OAAO,IAAIhL,IAAYC,IACrB,MAAMigB,EAAMlV,EAAIiO,OAChB,IAAIvU,OAAWwb,EAAIna,WACjB,OAAOma,EAAIna,UAAU9F,GAGvB,MAAM,IAAIiF,UAAU,oEAjCXib,CAAsB1B,GAE/B,MAAIoB,KAAYpB,GACd,OAyCA,WAA2B2B,GAC/B,OAAO,IAAIpgB,IAAYC,IAUrB,QAASgO,EAAI,EAAGA,EAAImS,EAAMnX,SAAWhJ,EAAWS,OAAQuN,IACtDhO,EAAWO,KAAK4f,EAAMnS,IAExBhO,EAAWsB,aAvDF8e,CAAc5B,GAEvB,MAAI6B,KAAU7B,GACZ,OAwDA,WAAyB8B,GAC7B,OAAO,IAAIvgB,IAAYC,IACrBsgB,EACGC,KACEhf,IACMvB,EAAWS,SACdT,EAAWO,KAAKgB,GAChBvB,EAAWsB,aAGd6D,GAAanF,EAAWqB,MAAM8D,IAEhCob,KAAK,KAAM1E,OApEL2E,CAAYhC,GAErB,MAAIiC,KAAgBjC,GAClB,OAAOkC,EAAkBlC,GAE3B,MAAImC,KAAWnC,GACb,OAkEA,WAA0BoC,GAC9B,OAAO,IAAI7gB,IAAYC,IACrB,UAAWuB,KAASqf,EAElB,GADA5gB,EAAWO,KAAKgB,GACZvB,EAAWS,OACb,OAGJT,EAAWsB,aA1EFuf,CAAarC,GAEtB,MAAIsC,KAAqBtC,GACvB,OAiFA,WAAoCuC,GACxC,OAAOL,KAAkBM,KAAmCD,IAlFjDE,CAAuBzC,GAIlC,QAAM0C,KAAiC1C,GAuEnC,WAA+B2C,GACnC,OAAO,IAAIphB,IAAYC,KASzB,WAA0BmhB,EAAiCnhB,iEACzD,IAA0BohB,gBAAaC,wBAIrC,GAHArhB,EAAWO,KADS+gB,SAIhBthB,EAAWS,OACb,gHAGJT,EAAWsB,cAjBTigB,CAAQJ,EAAenhB,GAAYwhB,MAAOrc,GAAQnF,EAAWqB,MAAM8D,gFC9DjE,WAAmBoP,EAAS,EAAG3S,EAA2BqF,KAC9D,OAAIsN,EAAS,IAEXA,EAAS,IAGJJ,OAAMI,EAAQA,EAAQ3S,6GC8BzB,cAAmBsG,GACvB,MAAMtG,GAAYsN,QAAahH,GACzBkK,GAAaE,QAAUpK,EAAMxF,KAC7B4H,EAAUpC,EAChB,OAAQoC,EAAQtB,OAGO,IAAnBsB,EAAQtB,QAERrB,QAAU2C,EAAQ,OAElBiI,KAASH,EAATG,IAAqBvH,KAAKV,EAAS1I,IALnCoD,sFC3DC,MAAMyc,EAAQ,IAAI1hB,IAAkB8K,KAKrC,aACJ,OAAO4W,6ECwCH,cAAmBvZ,GACvB,MAAMtG,KAAYsN,MAAahH,GAC/B,OAAO8C,OAAK9C,EAAatG,0GC7BrB,cAAqB0I,GACzBA,OAE0B,KAF1BA,GAAUE,OAAeF,IAEVtB,QAAerB,QAAU2C,EAAQ,IAA4B,IAAIvK,IAAcsT,EAAS/I,IAQnG,WAAsBA,GAC1B,OAAQtK,IACN,IAAI0hB,EAAgC,GAMpC,QAAS1T,EAAI,EAAG0T,IAAkB1hB,EAAWS,QAAUuN,EAAI1D,EAAQtB,OAAQgF,IACzE0T,EAActe,QACZuE,MAAU2C,EAAQ0D,IAA0BlI,UAC1C,IAAI8B,IAAmB5H,EAAauB,IAClC,GAAImgB,EAAe,CAGjB,QAASC,EAAI,EAAGA,EAAID,EAAc1Y,OAAQ2Y,IACxCA,IAAM3T,GAAK0T,EAAcC,GAAG5e,cAE9B2e,EAAgB,KAElB1hB,EAAWO,KAAKgB,kFCuCtB,WAAqBqgB,EAA0BhgB,GACnD,MAAMigB,KAAepd,KAAWmd,GAAuBA,EAAsB,IAAMA,EAC7EE,EAAQ9hB,GAAkCA,EAAWqB,MAAMwgB,KACjE,OAAO,IAAI9hB,IAAW6B,EAAa5B,GAAe4B,EAAU/B,SAASiiB,EAAa,EAAG9hB,GAAc8hB,mGCU/F,WACJC,EAAyB,EACzBC,EACApgB,EAA2BqF,KAI3B,IAAIgb,GAAmB,EAEvB,OAA2B,MAAvBD,KAIE/Z,OAAY+Z,GACdpgB,EAAYogB,EAIZC,EAAmBD,GAIhB,IAAIjiB,IAAYC,IAIrB,IAAIoW,KAAMjP,KAAY4a,IAAYA,EAAUngB,EAAWtC,MAAQyiB,EAE3D3L,EAAM,IAERA,EAAM,GAIR,IAAIzK,EAAI,EAGR,OAAO/J,EAAU/B,SAAS,WACnBG,EAAWS,SAEdT,EAAWO,KAAKoL,KAEhB,GAASsW,EAGPphB,KAAKhB,cAASJ,EAAWwiB,GAGzBjiB,EAAWsB,aAGd8U,0HCxID,cAAiBlO,GACrB,MAAMF,KAAiB6G,MAAkB3G,GAEnCoC,KAAUE,KAAetC,GAE/B,OAAOoC,EAAQtB,OACX,IAAIjJ,IAAuBC,IAGzB,IAAImM,EAAuB7B,EAAQ4F,IAAI,IAAM,IAKzCgS,EAAY5X,EAAQ4F,IAAI,KAAM,GAGlClQ,EAAWU,IAAI,KACbyL,EAAU+V,EAAY,OAMxB,QAAS3D,EAAc,GAAIve,EAAWS,QAAU8d,EAAcjU,EAAQtB,OAAQuV,OAC5E5W,MAAU2C,EAAQiU,IAAczY,UAC9B,IAAI8B,IACF5H,EACCuB,IAKC,GAJA4K,EAAQoS,GAAanb,KAAK7B,GAItB4K,EAAQgW,MAAO9V,GAAWA,EAAOrD,QAAS,CAC5C,MAAMnE,EAAcsH,EAAQ+D,IAAK7D,GAAWA,EAAOvJ,SAEnD9C,EAAWO,KAAKyH,EAAiBA,KAAkBnD,GAAUA,GAIzDsH,EAAQiW,KAAK,CAAC/V,EAAQ2B,KAAO3B,EAAOrD,QAAUkZ,EAAUlU,KAC1DhO,EAAWsB,aAIjB,KAGE4gB,EAAU3D,IAAe,GAIxBpS,EAAQoS,GAAavV,QAAUhJ,EAAWsB,cAOnD,MAAO,KACL6K,EAAU+V,EAAY,QAG1Bld,kEC3GA,gBAAqCuT,KAazC3X,YACE2Z,EACA8H,EACAC,EACAC,EACQC,GAcRhhB,MAAM+Y,GAdE1Z,kBAeRA,KAAKka,MAAQsH,EACT,SAAuC9gB,GACrC,IACE8gB,EAAO9gB,SACA4D,GACPoV,EAAYlZ,MAAM8D,KAGtB3D,MAAMuZ,MACVla,KAAKoa,OAASsH,EACV,SAAuCpd,GACrC,IACEod,EAAQpd,SACDA,GAEPoV,EAAYlZ,MAAM8D,WAGlBtE,KAAKkC,gBAGTvB,MAAMyZ,OACVpa,KAAKqa,UAAYoH,EACb,WACE,IACEA,UACOnd,GAEPoV,EAAYlZ,MAAM8D,WAGlBtE,KAAKkC,gBAGTvB,MAAM0Z,UAGZnY,oBACE,MAAQtC,UAAWI,KACnBW,MAAMuB,eAELtC,IAAyB,QAAfgiB,OAAKD,kBAAU7d,cAAf9D,6FC7BT,WAAmByO,GACvB,OAAOlI,OAAQ,CAAC5B,EAAQxF,KACtB,IAAI4D,GAAW,EACX2D,EAAsB,KACtBgI,EAA6C,KAC7CzG,GAAa,EAEjB,MAAM4Z,EAAc,KAGlB,GAFkB,MAAlBnT,KAAoBxM,cACpBwM,EAAqB,KACjB3L,EAAU,CACZA,GAAW,EACX,MAAMrC,EAAQgG,EACdA,EAAY,KACZvH,EAAWO,KAAKgB,GAElBuH,GAAc9I,EAAWsB,YAGrBqhB,EAAkB,KACtBpT,EAAqB,KACrBzG,GAAc9I,EAAWsB,YAG3BkE,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IACCqC,GAAW,EACX2D,EAAYhG,EACPgO,IACH5H,QAAU2H,EAAiB/N,IAAQuE,UAChCyJ,EAAqB,IAAI3H,IAAmB5H,EAAY0iB,EAAaC,KAI5E,KACE7Z,GAAa,IACXlF,IAAa2L,GAAsBA,EAAmB9O,SAAWT,EAAWsB,qGCrClF,WAAuBmP,EAAkB7O,EAA2BmU,KACxE,SAAO6M,KAAM,KAAMzO,OAAM1D,EAAU7O,yFCoD/B,WACJsR,GAEA,OAAO9L,OAAQ,CAAC5B,EAAQxF,KACtB,IAEI6iB,EAFAjY,EAAgC,KAChCqJ,GAAY,EAGhBrJ,EAAWpF,EAAOM,UAChB,IAAI8B,IAAmB5H,OAAYP,OAAWA,EAAY0F,IACxD0d,GAAgBlb,QAAUuL,EAAS/N,EAAK2d,EAAW5P,EAAX4P,CAAqBtd,KACzDoF,GACFA,EAAS7H,cACT6H,EAAW,KACXiY,EAAc/c,UAAU9F,IAIxBiU,GAAY,KAKdA,IAMFrJ,EAAS7H,cACT6H,EAAW,KACXiY,EAAe/c,UAAU9F,oEC7EzB,aACJ,SAAOuS,KAAS,6ECkBZ,WACJjE,EACAtG,GAEA,OAAOvD,OAAWuD,MAAkBwG,KAASF,EAAStG,EAAgB,IAAKwG,OAASF,EAAS,kGChE/F,MAAMrF,EAAyC,CAC7CC,UAAW,IAAM,IAAIvI,KA6EjB,WACJuS,EACAzN,EAA2BwD,GAE3B,MAAQC,aAAczD,EACtB,OAAO2B,OAAQ,CAAC5B,EAAQxF,KACtB,MAAMyI,EAAUS,KAChB8B,OAAKkI,ECzFH,WAA8B6P,GAClC,OAAO,IAAIhjB,IAAYC,GAA8B+iB,EAAajd,UAAU9F,IDwF5DgjB,CAAiBva,KAAW3C,UAAU9F,GACpDA,EAAWU,IAAI8E,EAAOM,UAAU2C,2FEzC9B,WAA0BsZ,EAAiBngB,EAA2BqF,KAC1E,OAAOG,OAAQ,CAAC5B,EAAQxF,KACtB,IAAIijB,EAAkC,KAClC1b,EAAsB,KACtB2b,EAA0B,KAE9B,MAAMrW,EAAO,KACX,GAAIoW,EAAY,CAEdA,EAAWlgB,cACXkgB,EAAa,KACb,MAAM1hB,EAAQgG,EACdA,EAAY,KACZvH,EAAWO,KAAKgB,KAGpB,aAIE,MAAM4hB,EAAaD,EAAYnB,EACzBziB,EAAMsC,EAAUtC,MACtB,GAAIA,EAAM6jB,EAIR,OAFAF,EAAapiB,KAAKhB,cAASJ,EAAW0jB,EAAa7jB,QACnDU,EAAWU,IAAIuiB,GAIjBpW,IAGFrH,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IACCgG,EAAYhG,EACZ2hB,EAAWthB,EAAUtC,MAGhB2jB,IACHA,EAAarhB,EAAU/B,SAASujB,EAAcrB,GAC9C/hB,EAAWU,IAAIuiB,KAGnB,KAGEpW,IACA7M,EAAWsB,iBAGb7B,EACA,KAEE8H,EAAY0b,EAAa,oFChF7B,WAA+Bld,GACnC,OAAOqB,OAAQ,CAAC5B,EAAQxF,KACtB,IAAI4D,GAAW,EACf4B,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IACCqC,GAAW,EACX5D,EAAWO,KAAKgB,IAElB,KACOqC,GACH5D,EAAWO,KAAKwF,GAElB/F,EAAWsB,oGCQf,WAAmB8U,EAAoBxU,EAA2BqF,KACtE,MAAMwJ,GAAW0D,OAAMiC,EAAKxU,GAC5B,OAAOyhB,OAAU,IAAM5S,0GCWnB,WACJ6S,EACAC,GAEA,OAAIA,EAEM/d,IACN4J,OAAOmU,EAAkBlb,MAAKqH,OAAK,MAAI8T,QAAmBhe,EAAO6C,KAAKgb,EAAUC,MAG7E9U,OAAS,CAACjN,EAAOyB,IAAUsgB,EAAsB/hB,EAAOyB,GAAOqF,QAAKqH,KAAK,MAAI+T,KAAMliB,0FCVtF,WAAyBgP,EAA+BmT,GAC5D,OAAOtc,OAAQ,CAAC5B,EAAQxF,KACtB,MAAM2jB,EAAe,IAAIC,IACzBpe,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAClC,MAAM6P,EAAMb,EAAcA,EAAYhP,GAASA,EAC1CoiB,EAAaE,IAAIzS,KACpBuS,EAAajjB,IAAI0Q,GACjBpR,EAAWO,KAAKgB,OAKf,MAAPmiB,KAAS5d,UAAU,IAAI8B,IAAmB5H,EAAY,IAAM2jB,EAAa5R,QAASlH,6FC4DhF,WACJ8J,EACApE,EAA+BpG,KAK/BwK,SAAuB,MAAVA,IAAcmP,GAEpB1c,OAAQ,CAAC5B,EAAQxF,KAGtB,IAAI+jB,EAEAnd,GAAQ,EAEZpB,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAElC,MAAMyiB,EAAazT,EAAYhP,IAK3BqF,IAAU+N,EAAYoP,EAAaC,MAMrCpd,GAAQ,EACRmd,EAAcC,EAGdhkB,EAAWO,KAAKgB,SAO1B,WAAwBiC,EAAQC,GAC9B,OAAOD,IAAMC,iEC/GT,WAAwD2N,EAAQ6S,GACpE,OAAOC,OAAqB,CAACjS,EAAMC,IAAS+R,EAAUA,EAAQhS,EAAEb,GAAMc,EAAEd,IAAQa,EAAEb,KAASc,EAAEd,8ECNzF,WACJ9C,EACA8D,EAAa1P,IACbd,GAEAwQ,UAAcA,GAAc,GAAK,EAAI1P,IAAW0P,GACzChL,OAAQ,CAAC5B,EAAQxF,OACtBqS,KAEE7M,EACAxF,EACAsO,EACA8D,OAGA3S,GAGA,EACAmC,8EChCA,WAAoB0J,EAAiDF,GACzE,OAAOhE,OAAQ,CAAC5B,EAAQxF,KAEtB,IAAIgD,EAAQ,EAIZwC,EAAOM,UAIL,IAAI8B,IAAmB5H,EAAauB,GAAU+J,EAAUD,KAAKD,EAAS7J,EAAOyB,MAAYhD,EAAWO,KAAKgB,sECLzG,WAAsB4iB,GAC1B,OAAO/c,OAAQ,CAAC5B,EAAQxF,KAGtB,IACEwF,EAAOM,UAAU9F,WAEjBA,EAAWU,IAAIyjB,4HCOf,WACJ7Y,EACAvF,GAEA,MAAMyJ,EAAkBtF,UAAUlB,QAAU,EAC5C,OAAQxD,GACNA,EAAO6C,KACLiD,GAAYC,OAAO,CAACkE,EAAGzB,IAAM1C,EAAUmE,EAAGzB,EAAGxI,IAAW2E,KACxDuF,OAAK,GACLF,KAAkBG,KAAe5J,IAAiB6J,OAAa,IAAM,IAAI5J,2FCnDzE,aACJ,OAAOoB,OAAQ,CAAC5B,EAAQxF,KACtBwF,EAAOM,UAAU,IAAI8B,IAAmB5H,EAAY6K,8HCgClD,WACJS,EACAvF,GAEA,MAAMyJ,EAAkBtF,UAAUlB,QAAU,EAC5C,OAAQxD,GACNA,EAAO6C,KACLiD,GAAYC,OAAO,CAACkE,EAAGzB,IAAM1C,EAAUmE,EAAGzB,EAAGxI,IAAW2E,KACxDia,OAAS,GACT5U,KAAkBG,KAAe5J,IAAiB6J,OAAa,IAAM,IAAI5J,gFCnCzE,WAAoBsI,EAAyClD,GACjE,OAAOhE,OAAQ,CAAC5B,EAAQxF,KAEtB,IAAIgD,EAAQ,EAGZwC,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAGlCvB,EAAWO,KAAK+N,EAAQjD,KAAKD,EAAS7J,EAAOyB,uEClB/C,WAAmBzB,GACvB,OAAO2O,OAAI,IAAM3O,4ECsBb,WAAmD6Q,EAAqB1P,KAC5E,OAAO8L,OAASrE,IAAUiI,uFCzCtB,WACJ5M,EACAxF,EACAsO,EACA8D,EACAiS,EACAC,EACAC,EACAC,GAGA,MAAMnY,EAAc,GAEpB,IAAIlJ,EAAS,EAETH,EAAQ,EAER8F,GAAa,EAKjB,MAAM6K,EAAgB,KAIhB7K,IAAeuD,EAAOrD,SAAW7F,GACnCnD,EAAWsB,YAKTmjB,EAAaljB,GAAc4B,EAASiP,EAAasS,EAAWnjB,GAAS8K,EAAOjJ,KAAK7B,GAEjFmjB,EAAcnjB,IAIlB+iB,GAAUtkB,EAAWO,KAAKgB,GAI1B4B,IAKA,IAAIwhB,GAAgB,GAGpBhd,QAAU2G,EAAQ/M,EAAOyB,MAAU8C,UACjC,IAAI8B,IACF5H,EACC8V,IAGa,MAAZuO,KAAevO,GAEfrG,EAGEgV,EAAU3O,GAGV9V,EAAWO,KAAKuV,IAGpB,KAGE6O,GAAgB,QAGlBllB,EACA,KAIE,GAAIklB,EAKF,IASE,IALAxhB,IAKOkJ,EAAOrD,QAAU7F,EAASiP,GAAY,CAC3C,MAAMwS,EAAgBvY,EAAOvJ,QAIzByhB,KACF7c,KAAgB1H,EAAYukB,EAAmB,IAAMG,EAAWE,IAEhEF,EAAWE,GAIfjR,UACOxO,GACPnF,EAAWqB,MAAM8D,QAS7BK,SAAOM,UACL,IAAI8B,IAAmB5H,EAAYykB,EAAW,KAE5C3b,GAAa,EACb6K,OAMG,KACa,MAAlB6Q,mHClEE,WACJlW,EACAtG,EACAoK,EAAqB1P,KAErB,SAAI+B,KAAWuD,GAENwG,EAAS,CAAChL,EAAGwK,KAAMkC,OAAI,CAACzM,EAAQ0M,IAAenI,EAAexE,EAAGC,EAAGuK,EAAGmC,GAApDD,EAAyDvI,QAAU2G,EAAQ9K,EAAGwK,KAAMoE,IAC3E,iBAAnBpK,IAChBoK,EAAapK,IAGRZ,OAAQ,CAAC5B,EAAQxF,KAAeqS,OAAe7M,EAAQxF,EAAYsO,EAAS8D,yFCX/E,WACJyS,EACA3R,GAEA,MAAMiK,GAAiB1Y,OAAWogB,GAA2BA,EAA0B,IAAMA,EAE7F,SAAIpgB,KAAWyO,IAIN7J,OAAQ6J,EAAU,CACvBhK,UAAWiU,IAIP3X,GAA0B,IAAIuN,IAA2BvN,EAAQ2X,sFCpCrE,WAAuBvb,EAA0BG,EAAQ,GAC7D,OAAOqF,OAAQ,CAAC5B,EAAQxF,KACtBwF,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IAAUmG,OAAgB1H,EAAY4B,EAAW,IAAM5B,EAAWO,KAAKgB,GAAQQ,GAChF,OAAM2F,KAAgB1H,EAAY4B,EAAW,IAAM5B,EAAWsB,WAAYS,GACzEoD,MAAQuC,KAAgB1H,EAAY4B,EAAW,IAAM5B,EAAWqB,MAAM8D,GAAMpD,iFCtB/E,aACJ,OAAOqF,OAAQ,CAAC5B,EAAQxF,KACtB,IAAI8kB,EACAC,GAAU,EACdvf,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAClC,MAAMqR,EAAIkS,EACVA,EAAOvjB,EACPwjB,GAAW/kB,EAAWO,KAAK,CAACqS,EAAGrR,IAC/BwjB,GAAU,2FCgCZ,WAAwB7R,GAC5B,OAAOA,EAAY1N,IAAW6D,OAAQ6J,EAAR7J,CAAkB7D,GAAWA,IAAW2N,OAAU,IAAIxS,IAAdwS,CAA4B3N,6ECtB9F,aACJ,OAAO4B,OAAQ,CAAC5B,EAAQxF,KACtB,IAAIoJ,EAAkC,KAErC5D,EAAegY,YAEhB,MAAMwH,EAAa,IAAIpd,IAAmB5H,OAAYP,OAAWA,OAAWA,EAAW,KACrF,IAAK+F,GAAWA,EAAegY,WAAa,GAAK,IAAOhY,EAAegY,UAErE,YADApU,EAAa,MA6Bf,MAAM6b,EAAoBzf,EAAeiY,YACnCyH,EAAO9b,EACbA,EAAa,KAET6b,KAAsBC,GAAQD,IAAqBC,IACrDD,EAAiBliB,cAGnB/C,EAAW+C,gBAGbyC,EAAOM,UAAUkf,GAEZA,EAAWvkB,SACd2I,EAAc5D,EAAoC6D,kGCxDlD,WAAoBoC,EAAQ/I,KAChC,OAAO+I,GAAS,EACZ,IAAMzG,KACNoC,OAAQ,CAAC5B,EAAQxF,KACf,IACI4K,EADAmJ,EAAQ,EAEZ,MAAMoR,EAAqB,KACzB,IAAIlR,GAAY,EAChBrJ,EAAWpF,EAAOM,UAChB,IAAI8B,IAAmB5H,OAAYP,EAAW,OACtCsU,EAAQtI,EACRb,GACFA,EAAS7H,cACT6H,EAAW,KACXua,KAEAlR,GAAY,EAGdjU,EAAWsB,cAKb2S,IACFrJ,EAAS7H,cACT6H,EAAW,KACXua,MAGJA,gHC6CF,WAAmBpG,EAA0B,IACjD,MAAQ7V,YAAY,KAAM,IAAIvI,KAAcykB,gBAAe,EAAMC,mBAAkB,EAAMC,uBAAsB,GAASvG,EAUxH,OAAQwG,IACN,IAAInc,EAAuC,KACvCoc,EAAuC,KACvC/c,EAAiC,KACjCiV,EAAW,EACX+H,GAAe,EACfC,GAAa,EAEjB,MAAMC,EAAc,KACH,MAAfH,KAAiBziB,cACjByiB,EAAkB,MAIdI,EAAQ,KACZD,IACAvc,EAAaX,EAAU,KACvBgd,EAAeC,GAAa,GAExBG,EAAsB,KAG1B,MAAMX,EAAO9b,EACbwc,IACI,MAAJV,KAAMniB,eAGR,OAAOqE,OAAc,CAAC5B,EAAQxF,KAC5B0d,KACKgI,IAAeD,GAClBE,IAOF,MAAMG,EAAQrd,EAAiB,MAAPA,IAAWS,IAOnClJ,EAAWU,IAAI,KACbgd,IAKiB,IAAbA,IAAmBgI,IAAeD,IACpCD,EAAkBO,EAAYF,EAAqBP,MAMvDQ,EAAKhgB,UAAU9F,GAEVoJ,IAMHA,EAAa,IAAInD,KAAe,CAC9B1F,KAAOgB,GAAUukB,EAAKvlB,KAAKgB,GAC3BF,MAAQ8D,IACNugB,GAAa,EACbC,IACAH,EAAkBO,EAAYH,EAAOR,EAAcjgB,GACnD2gB,EAAKzkB,MAAM8D,IAEb7D,SAAU,KACRmkB,GAAe,EACfE,IACAH,EAAkBO,EAAYH,EAAOP,GACrCS,EAAKxkB,eAGT0J,OAAKxF,GAAQM,UAAUsD,KArDpBhC,CAuDJme,IAIP,WACEK,EACAnG,KACGvX,GAEH,OAAW,IAAPuX,GACFmG,IAEO,OAGE,IAAPnG,EACK,KAGFA,KAAMvX,GACVG,MAAKqH,OAAK,IACV5J,UAAU,IAAM8f,+EChIf,WACJI,EACAhT,EACApR,WAEA,IAAIqK,EACAyR,GAAW,EACf,OAAIsI,GAAoD,iBAAvBA,GAC/B/Z,EAA0C,QAA7Bga,IAAmBha,kBAAUtH,QAAIjC,IAC9CsQ,EAA0C,QAA7BhF,IAAmBgF,kBAAU1N,QAAI5C,IAC9Cgb,IAAasI,EAAmBtI,SAChC9b,EAAYokB,EAAmBpkB,WAE/BqK,EAA+B,MAAlB+Z,IAAsBtjB,OAE9BwjB,KAAS,CACdhd,UAAW,IAAM,IAAIkK,IAAcnH,EAAY+G,EAAYpR,GAC3DwjB,cAAc,EACdC,iBAAiB,EACjBC,oBAAqB5H,mEC1GnB,WAAkBjS,GACtB,OAAOF,OAAO,CAACsK,EAAG7S,IAAUyI,GAASzI,6ECcjC,WAAuBsI,GAC3B,OAAOlE,OAAQ,CAAC5B,EAAQxF,KACtB,IAAI0V,GAAS,EACT1S,EAAQ,EACZwC,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAAWmU,IAAWA,GAAUpK,EAAU/J,EAAOyB,QAAchD,EAAWO,KAAKgB,4FCKnH,cAA6BsO,GACjC,MAAMjO,KAAYsN,MAAaW,GAC/B,OAAOzI,OAAQ,CAAC5B,EAAQxF,MAIrB4B,GAAYwN,OAAOS,EAAQrK,EAAQ5D,IAAawN,OAAOS,EAAQrK,IAASM,UAAU9F,oECFjF,WAAyB4B,EAA0BG,EAAgB,GACvE,OAAOqF,OAAQ,CAAC5B,EAAQxF,KACtBA,EAAWU,IAAIkB,EAAU/B,SAAS,IAAM2F,EAAOM,UAAU9F,GAAa+B,2FCiBpE,WACJuM,EACAtG,GAEA,OAAOZ,OAAQ,CAAC5B,EAAQxF,KACtB,IAAImmB,EAAyD,KACzDnjB,EAAQ,EAER8F,GAAa,EAIjB,MAAM6K,EAAgB,IAAM7K,IAAeqd,GAAmBnmB,EAAWsB,WAEzEkE,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IAEgB,MAAf4kB,KAAiBpjB,cACjB,IAAIqjB,EAAa,EACjB,MAAMC,EAAarjB,OAEnB2E,MAAU2G,EAAQ/M,EAAO8kB,IAAavgB,UACnCqgB,EAAkB,IAAIve,IACrB5H,EAIC8V,GAAe9V,EAAWO,KAAKyH,EAAiBA,EAAezG,EAAOuU,EAAYuQ,EAAYD,KAAgBtQ,GAC/G,KAIEqQ,EAAkB,KAClBxS,QAKR,KACE7K,GAAa,EACb6K,mFCnEJ,WACJ3E,EACAhH,GAEA,OAAOvD,OAAWuD,MAAkB4N,KAAU,IAAM5G,EAAiBhH,IAAkB4N,OAAU,IAAM5G,wFCfnG,WAAkBvD,GACtB,OAAOA,GAAS,EAEZ,IAAMzG,KACNoC,OAAQ,CAAC5B,EAAQxF,KACf,IAAIwH,EAAO,EACXhC,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,MAI5BiG,GAAQiE,IACZzL,EAAWO,KAAKgB,GAIZkK,GAASjE,GACXxH,EAAWsB,sGClBrB,WAAsBmK,GAC1B,OAAOA,GAAS,EACZ,IAAMzG,KACNoC,OAAQ,CAAC5B,EAAQxF,KAKf,IAAIqM,EAAc,GAClB7G,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IAEC8K,EAAOjJ,KAAK7B,GAGZkK,EAAQY,EAAOrD,QAAUqD,EAAOvJ,SAElC,KAGE,UAAWvB,KAAS8K,EAClBrM,EAAWO,KAAKgB,GAElBvB,EAAWsB,iBAGb7B,EACA,KAEE4M,EAAS,0GChCjB,WAAuBiH,GAC3B,OAAOlM,OAAQ,CAAC5B,EAAQxF,MACtB2H,QAAU2L,GAAUxN,UAAU,IAAI8B,IAAmB5H,EAAY,IAAMA,EAAWsB,WAAYuJ,OAC7F7K,EAAWS,QAAU+E,EAAOM,UAAU9F,+ECSrC,WAAuBsL,EAAiDgb,GAAY,GACxF,OAAOlf,OAAQ,CAAC5B,EAAQxF,KACtB,IAAIgD,EAAQ,EACZwC,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAClC,MAAMsD,EAASyG,EAAU/J,EAAOyB,MAC/B6B,GAAUyhB,IAActmB,EAAWO,KAAKgB,IACxCsD,GAAU7E,EAAWsB,gHCkDxB,WACJgX,EACAjX,EACAC,GAKA,MAAMilB,GACJ9hB,OAAW6T,IAAmBjX,GAASC,EAElC,CAAEf,KAAM+X,EAA2EjX,QAAOC,YAC3FgX,EAEN,OAAOiO,GACHnf,OAAQ,CAAC5B,EAAQxF,WACM,QAArBkS,IAAYpM,iBAASnB,cAArB4hB,GACA,IAAIC,GAAU,EACdhhB,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,UACiB,QAAhBqR,IAAYrS,YAAIoE,cAAhB4hB,EAAmBhlB,GACnBvB,EAAWO,KAAKgB,IAElB,WACEilB,GAAU,EACU,QAApB9J,IAAYpb,gBAAQqD,cAApB4hB,GACAvmB,EAAWsB,YAEZ6D,UACCqhB,GAAU,EACO,QAAjB5T,IAAYvR,aAAKsD,cAAjB4hB,EAAoBphB,GACpBnF,EAAWqB,MAAM8D,IAEnB,aACMqhB,IACqB,QAAvB9J,IAAY3Z,mBAAW4B,cAAvB4hB,IAEkB,QAApB3T,IAAY6T,gBAAQnhB,cAApBihB,QAQRpc,gGCpJC,MAAMuc,EAAwC,CACnDC,SAAS,EACTC,UAAU,GA+CN,WACJtX,GACEqX,UAASC,YAA6BF,GAExC,OAAOtf,OAAQ,CAAC5B,EAAQxF,KACtB,IAAI4D,GAAW,EACXijB,EAAsB,KACtBC,EAAiC,KACjChe,GAAa,EAEjB,MAAMie,EAAgB,KACX,MAATD,KAAW/jB,cACX+jB,EAAY,KACRF,IACFI,IACAle,GAAc9I,EAAWsB,aAIvB2lB,EAAoB,KACxBH,EAAY,KACZhe,GAAc9I,EAAWsB,YAGrB4lB,EAAiB3lB,GACpBulB,GAAYnf,QAAU2H,EAAiB/N,IAAQuE,UAAU,IAAI8B,IAAmB5H,EAAY+mB,EAAeE,IAExGD,EAAO,KACX,GAAIpjB,EAAU,CAIZA,GAAW,EACX,MAAMrC,EAAQslB,EACdA,EAAY,KAEZ7mB,EAAWO,KAAKgB,IACfuH,GAAcoe,EAAc3lB,KAIjCiE,EAAOM,UACL,IAAI8B,IACF5H,EAMCuB,IACCqC,GAAW,EACXijB,EAAYtlB,IACVulB,GAAcA,EAAUrmB,UAAYkmB,EAAUK,IAASE,EAAc3lB,KAEzE,KACEuH,GAAa,KACX8d,GAAYhjB,GAAYkjB,IAAcA,EAAUrmB,SAAWT,EAAWsB,oGCnC5E,WACJmP,EACA7O,EAA2BqF,IAC3BxB,EAASihB,KAET,MAAMS,GAAYhT,OAAM1D,EAAU7O,GAClC,OAAOwlB,OAAS,IAAMD,EAAW1hB,wFCnD7B,WAA0Boc,EAA0BwF,GACxD,OAAOjgB,OAAQ,CAAC5B,EAAQxF,KACtB,IAAI4D,GAAW,EACf4B,EAAOM,UACL,IAAI8B,IACF5H,EACCuB,IACCqC,GAAW,EACX5D,EAAWO,KAAKgB,IAElB,IAAOqC,EAAW5D,EAAWsB,WAAatB,EAAWqB,MAAMwgB,SAMnE,aACE,OAAO,IAAI7b,0HCEP,cAAkCshB,GACtC,MAAMhZ,KAAUO,MAAkByY,GAElC,OAAOlgB,OAAQ,CAAC5B,EAAQxF,KACtB,MAAMunB,EAAMD,EAAOte,OACbwe,EAAc,IAAIjS,MAAMgS,GAI9B,IAAI3jB,EAAW0jB,EAAOpX,IAAI,KAAM,GAG5BuX,GAAQ,EAMZ,QAASzZ,EAAI,EAAGA,EAAIuZ,EAAKvZ,OACvBrG,MAAU2f,EAAOtZ,IAAIlI,UACnB,IAAI8B,IACF5H,EACCuB,IACCimB,EAAYxZ,GAAKzM,GACZkmB,IAAU7jB,EAASoK,KAEtBpK,EAASoK,IAAK,GAKbyZ,EAAQ7jB,EAASue,MAAMhY,QAAevG,EAAW,QAKtDiH,MAMNrF,EAAOM,UACL,IAAI8B,IAAmB5H,EAAauB,IAClC,GAAIkmB,EAAO,CAET,MAAM5X,EAAS,CAACtO,KAAUimB,GAC1BxnB,EAAWO,KAAK+N,EAAUA,KAAWuB,GAAUA,wGC5FnD,WAA8B2O,EAAoB5c,GACtD,OAAO,IAAI7B,IAAeC,IACxB,IAAI0nB,EAKJhgB,cAAgB1H,EAAY4B,EAAW,KAErC8lB,EAAYlJ,EAAcmJ,QAE1BjgB,OACE1H,EACA4B,EACA,KACE,IAAIL,EACAqmB,EACJ,MAEKrmB,QAAOqmB,QAASF,EAASnnB,cACrB4E,GAGP,YADAnF,EAAWqB,MAAM8D,GAIfyiB,EAKF5nB,EAAWsB,WAGXtB,EAAWO,KAAKgB,IAGpB,GACA,KAQG,OAAMkD,KAAmB,MAARijB,OAAQ,EAARjN,EAAUoN,SAAWH,EAASG,+HCrDpD,WAAmCrJ,EAAyB5c,GAChE,IAAK4c,EACH,MAAM,IAAI9L,MAAM,2BAElB,OAAO,IAAI3S,IAAeC,KACxB0H,OAAgB1H,EAAY4B,EAAW,KACrC,MAAM8lB,EAAWlJ,EAAMsJ,OAAOC,kBAC9BrgB,OACE1H,EACA4B,EACA,KACE8lB,EAASnnB,OAAOggB,KAAM1b,IAChBA,EAAO+iB,KAGT5nB,EAAWsB,WAEXtB,EAAWO,KAAKsE,EAAOtD,UAI7B,GACA,wFCCF,WAAuBid,EAA2B5c,GACtD,GAAa,MAAT4c,EAAe,CACjB,MAAIwB,KAAoBxB,GACtB,OCzBA,WAAgCA,EAA6B5c,GACjE,OAAO+F,QAAU6W,GAAOnW,QAAKE,KAAY3G,MAAY4G,KAAU5G,IDwBpDomB,CAAmBxJ,EAAO5c,GAEnC,MAAIge,KAAYpB,GACd,OE9BA,WAA2BA,EAAqB5c,GACpD,OAAO,IAAI7B,IAAeC,IAExB,IAAIgO,EAAI,EAER,OAAOpM,EAAU/B,SAAS,WACpBmO,IAAMwQ,EAAMxV,OAGdhJ,EAAWsB,YAIXtB,EAAWO,KAAKie,EAAMxQ,MAIjBhO,EAAWS,QACdI,KAAKhB,gBFYFooB,CAAczJ,EAAO5c,GAE9B,MAAIye,KAAU7B,GACZ,OG/BA,WAA6BA,EAAuB5c,GACxD,OAAO+F,QAAU6W,GAAOnW,QAAKE,KAAY3G,MAAY4G,KAAU5G,IH8BpDsmB,CAAgB1J,EAAO5c,GAEhC,MAAI6e,KAAgBjC,GAClB,OAAO2J,EAAsB3J,EAAO5c,GAEtC,MAAI+e,KAAWnC,GACb,OAAOpU,OAAiBoU,EAAO5c,GAEjC,MAAIkf,KAAqBtC,GACvB,OIxCA,WAAwCA,EAA8B5c,GAC1E,OAAOumB,GAAsBnH,OAAmCxC,GAAQ5c,GJuC7DwmB,CAA2B5J,EAAO5c,GAG7C,QAAMsf,KAAiC1C,kEK9BnC,gBAAyBte,KAC7BU,YAAYgB,EAAsBC,GAChCL,QAYK3B,SAASiC,EAAWC,EAAgB,GACzC,OAAOlB,MCnBJ,MAAMwnB,EAAqC,CAGhDC,eAAepgB,GACb,MAAQ3I,YAAa8oB,EACrB,QAAgB,MAARpC,OAAQ,EAARA,EAAUqC,cAAeA,gBAAgBpgB,IAEnDqgB,cAAcC,GACZ,MAAQjpB,YAAa8oB,EACrB,QAAgB,MAARpC,OAAQ,EAARA,EAAUsC,gBAAiBA,eAAeC,IAEpDjpB,cAAUE,kBClBN,gBAA8BgpB,EAOlC7nB,YAAsBgB,EAAqCC,GACzDL,MAAMI,EAAWC,GADGhB,iBAAqCA,YAFjDA,cAAmB,EAMtBhB,SAASiC,EAAWC,EAAgB,GACzC,GAAIlB,KAAKJ,OACP,OAAOI,KAITA,KAAKiB,MAAQA,EAEb,MAAMM,EAAKvB,KAAKuB,GACVR,EAAYf,KAAKe,UAuBvB,OAAU,MAANQ,IACFvB,KAAKuB,GAAKvB,KAAK0C,eAAe3B,EAAWQ,EAAIL,IAK/ClB,KAAK6nB,SAAU,EAEf7nB,KAAKkB,MAAQA,EAEblB,KAAKuB,GAAKvB,KAAKuB,IAAMvB,KAAKsB,eAAeP,EAAWf,KAAKuB,GAAIL,GAEtDlB,KAGCsB,eAAeP,EAA2B+mB,EAAW5mB,EAAgB,GAC7E,OAAOsmB,cAA6BzmB,EAAUI,MAAMsZ,KAAK1Z,EAAWf,MAAOkB,GAGnEwB,eAAeqlB,EAA4BxmB,EAASL,EAAuB,GAEnF,GAAa,MAATA,GAAiBlB,KAAKkB,QAAUA,IAA0B,IAAjBlB,KAAK6nB,QAChD,OAAOtmB,EAITimB,gBAA+BjmB,GAQ1BH,QAAQH,EAAUC,GACvB,GAAIlB,KAAKJ,OACP,OAAO,IAAIiS,MAAM,gCAGnB7R,KAAK6nB,SAAU,EACf,MAAMrnB,EAAQR,KAAKqB,SAASJ,EAAOC,GACnC,GAAIV,EACF,OAAOA,GACmB,IAAjBR,KAAK6nB,SAAgC,MAAX7nB,KAAKuB,KAcxCvB,KAAKuB,GAAKvB,KAAK0C,eAAe1C,KAAKe,UAAWf,KAAKuB,GAAI,OAIjDF,SAASJ,EAAU+mB,GAC3B,IACIC,EADAC,GAAmB,EAEvB,IACEloB,KAAKgB,KAAKC,SACH6H,GACPof,GAAU,EAIVD,EAAanf,GAAQ,IAAI+I,MAAM,sCAEjC,GAAIqW,EACF,YAAKhmB,cACE+lB,EAIX/lB,cACE,IAAKlC,KAAKJ,OAAQ,CAChB,MAAQ2B,KAAIR,aAAcf,MAClB+B,WAAYhB,EAEpBf,KAAKgB,KAAOhB,KAAKiB,MAAQjB,KAAKe,UAAY,KAC1Cf,KAAK6nB,SAAU,GAEfpc,OAAU1J,EAAS/B,MACT,MAANuB,IACFvB,KAAKuB,GAAKvB,KAAK0C,eAAe3B,EAAWQ,EAAI,OAG/CvB,KAAKkB,MAAQ,KACbP,MAAMuB,+EC3IN,gBAA8BkX,IAkBlCrZ,YAAYooB,EAAgC1pB,EAAoB2a,SAC9DzY,MAAMwnB,EAAiB1pB,GAlBlBuB,aAAmC,GAOnCA,cAAmB,EAQnBA,qBAAkBpB,EAMlBuC,MAAMa,GACX,MAAQD,WAAY/B,KAEpB,GAAIA,KAAKooB,QAEP,YADArmB,EAAQQ,KAAKP,GAIf,IAAIxB,EACJR,KAAKooB,SAAU,EAEf,MACO5nB,EAAQwB,EAAOZ,QAAQY,EAAOf,MAAOe,EAAOd,OAC/C,YAEMc,EAASD,EAAQE,SAI3B,GAFAjC,KAAKooB,SAAU,EAEX5nB,EAAO,CACT,KAAQwB,EAASD,EAAQE,SACvBD,EAAOE,cAET,MAAM1B,iGCdL,MAAM6nB,EAA0B,IChCjC,gBAAuCxnB,IACpCM,MAAMa,GACXhC,KAAKooB,SAAU,EACfpoB,KAAKsoB,gBAAa1pB,EAElB,MAAQmD,WAAY/B,KACpB,IAAIQ,EACA2B,GAAQ,EACZH,EAASA,GAAUD,EAAQE,QAC3B,MAAM2I,EAAQ7I,EAAQoG,OAEtB,MACO3H,EAAQwB,EAAOZ,QAAQY,EAAOf,MAAOe,EAAOd,OAC/C,cAEOiB,EAAQyI,IAAU5I,EAASD,EAAQE,UAI9C,GAFAjC,KAAKooB,SAAU,EAEX5nB,EAAO,CACT,OAAS2B,EAAQyI,IAAU5I,EAASD,EAAQE,UAC1CD,EAAOE,cAET,MAAM1B,KCrBN,gBAAuCM,IAC3Cf,YAAsBgB,EAA8CC,GAClEL,MAAMI,EAAWC,GADGhB,iBAA8CA,YAI1DsB,eAAeP,EAAoCQ,EAAUL,EAAgB,GAErF,OAAc,OAAVA,GAAkBA,EAAQ,EACrBP,MAAMW,eAAeP,EAAWQ,EAAIL,IAG7CH,EAAUgB,QAAQQ,KAAKvC,MAIhBe,EAAUunB,aAAevnB,EAAUunB,WAAarpB,0BAA6C,IAAM8B,EAAUI,WAAMvC,MAElH8D,eAAe3B,EAAoCQ,EAAUL,EAAgB,GAIrF,GAAc,MAATA,GAAiBA,EAAQ,GAAgB,MAATA,GAAiBlB,KAAKkB,MAAQ,EACjE,OAAOP,MAAM+B,eAAe3B,EAAWQ,EAAIL,GAKZ,IAA7BH,EAAUgB,QAAQoG,SACpBlJ,yBAA4CsC,GAC5CR,EAAUunB,gBAAa1pB,MFMhB2pB,EAAiBF,gEG1BvB,MAAMppB,EAAiD,CAG5DD,SAASskB,GACP,IAAIkF,EAAUC,sBACVC,EAAkDC,qBACtD,MAAQjqB,YAAaO,EACjBP,IACF8pB,EAAU9pB,EAAS+pB,sBACnBC,EAAShqB,EAASiqB,sBAEpB,MAAMhB,EAASa,EAAS/oB,IAItBipB,OAAS9pB,EACT0kB,EAAS7jB,KAEX,OAAO,IAAIJ,KAAa,IAAY,MAANqpB,OAAM,EAAN/lB,EAASglB,KAEzCc,yBAAyBphB,GACvB,MAAQ3I,YAAaO,EACrB,QAAgB,MAAR2iB,OAAQ,EAARA,EAAU6G,wBAAyBA,0BAA0BphB,IAEvEshB,wBAAwBthB,GACtB,MAAQ3I,YAAaO,EACrB,QAAgB,MAAR2iB,OAAQ,EAARA,EAAU+G,uBAAwBA,yBAAyBthB,IAErE3I,cAAUE,yEC1CZ,IAEIgqB,EAFAC,EAAa,EAGjB,MAAMC,EAAwC,GAO9C,WAA4BnB,GAC1B,OAAIA,KAAUmB,WACLA,EAAcnB,IACd,GAQJ,MAAMoB,EAAY,CACvBC,aAAa/Y,GACX,MAAM0X,EAASkB,IACfC,SAAcnB,IAAU,EACnBiB,IACHA,EAAW9jB,QAAQC,WAErB6jB,EAASlJ,KAAK,IAAMuJ,EAAmBtB,IAAW1X,KAC3C0X,GAGTuB,eAAevB,GACbsB,EAAmBtB,MChCfqB,eAAcE,kBAAmBH,EAgB5BI,EAAuC,CAGlDH,gBAAgB3hB,GACd,MAAQ3I,YAAayqB,EACrB,QAAgB,MAARC,OAAQ,EAARA,EAAUJ,eAAgBA,MAAiB3hB,IAErD6hB,eAAevB,GACb,MAAQjpB,YAAayqB,EACrB,QAAgB,MAARC,OAAQ,EAARA,EAAUF,iBAAkBA,GAAgBvB,IAEtDjpB,cAAUE,kBCUL,MAAMyqB,EAAgB,ICnCvB,gBAA6BxoB,IAC1BM,MAAMa,GACXhC,KAAKooB,SAAU,EACfpoB,KAAKsoB,gBAAa1pB,EAElB,MAAQmD,WAAY/B,KACpB,IAAIQ,EACA2B,GAAQ,EACZH,EAASA,GAAUD,EAAQE,QAC3B,MAAM2I,EAAQ7I,EAAQoG,OAEtB,MACO3H,EAAQwB,EAAOZ,QAAQY,EAAOf,MAAOe,EAAOd,OAC/C,cAEOiB,EAAQyI,IAAU5I,EAASD,EAAQE,UAI9C,GAFAjC,KAAKooB,SAAU,EAEX5nB,EAAO,CACT,OAAS2B,EAAQyI,IAAU5I,EAASD,EAAQE,UAC1CD,EAAOE,cAET,MAAM1B,KCrBN,gBAA6BM,IACjCf,YAAsBgB,EAAoCC,GACxDL,MAAMI,EAAWC,GADGhB,iBAAoCA,YAIhDsB,eAAeP,EAA0BQ,EAAUL,EAAgB,GAE3E,OAAc,OAAVA,GAAkBA,EAAQ,EACrBP,MAAMW,eAAeP,EAAWQ,EAAIL,IAG7CH,EAAUgB,QAAQQ,KAAKvC,MAIhBe,EAAUunB,aAAevnB,EAAUunB,WAAaa,eAA+BpoB,EAAUI,MAAMsZ,KAAK1Z,OAAWnC,MAE9G8D,eAAe3B,EAA0BQ,EAAUL,EAAgB,GAI3E,GAAc,MAATA,GAAiBA,EAAQ,GAAgB,MAATA,GAAiBlB,KAAKkB,MAAQ,EACjE,OAAOP,MAAM+B,eAAe3B,EAAWQ,EAAIL,GAKZ,IAA7BH,EAAUgB,QAAQoG,SACpBghB,iBAAiC5nB,GACjCR,EAAUunB,gBAAa1pB,MFShB0qB,EAAOD,wEGOb,MAAMjjB,EAAiB,aAAIvF,GAAeC,KAKpCoU,EAAQ9O,iDCjDd,MAAMsP,EAA+C,CAC1DjX,SAGUiX,EAAsBhX,UAAY6qB,MAAM9qB,MAElDC,cAAUE,kDCEL,MAAMsc,EAAmC,CAG9CsO,cAAcniB,GACZ,MAAQ3I,YAAawc,EACrB,QAAgB,MAARpQ,OAAQ,EAARA,EAAU0e,aAAcA,eAAeniB,IAEjDoiB,aAAa9B,GACX,MAAQjpB,YAAawc,EACrB,QAAgB,MAARpQ,OAAQ,EAARA,EAAU2e,eAAgBA,cAAc9B,IAElDjpB,cAAUE,kDCjBL,MAAMioB,EARP,aACJ,MAAsB,mBAAXI,QAA0BA,OAAOJ,SAIrCI,OAAOJ,SAHL,aAMa6C,kDCPjB,MAAMlS,EAAwD,mBAAXyP,QAAyBA,OAAOzP,YAAe,8DCuBlG,MAAMrS,GAA6BG,cAAkBC,GAAW,WACrEA,EAAOvF,MACPA,KAAKwF,KAAO,aACZxF,KAAKyF,QAAU,2ECNV,MAAM6T,GAAuDhU,cACjEC,GACC,WACEA,EAAOvF,MACPA,KAAKwF,KAAO,0BACZxF,KAAKyF,QAAU,uECRd,MAAMgW,GAA+CnW,cACzDC,GACC,SAA4C6V,GAC1C7V,EAAOvF,MACPA,KAAKyF,QAAU2V,EACX,GAAGA,EAAOjT,kDAClBiT,EAAO/L,IAAI,CAAC/K,EAAK6I,IAAM,GAAGA,EAAI,MAAM7I,EAAIqlB,cAAcC,KAAK,UACnD,GACJ5pB,KAAKwF,KAAO,sBACZxF,KAAKob,OAASA,gGCvBpB,WAAiB9N,GACf,OAAOA,EAAIA,EAAInF,OAAS,GAGpB,WAA4Bd,GAChC,OAAOzD,OAAWyR,EAAKhO,IAASA,EAAKwiB,WAAQjrB,EAGzC,WAAuByI,GAC3B,OAAOD,OAAYiO,EAAKhO,IAASA,EAAKwiB,WAAQjrB,EAG1C,WAAoByI,EAAanC,GACrC,MAA6B,iBAAfmQ,EAAKhO,GAAqBA,EAAKwiB,MAAS3kB,kDCjBxD,MAAQoW,WAAY5G,OACZoV,iBAAgBC,UAAWC,EAAahN,KAAMiN,GAAY7f,OAQ5D,WAA+D/C,GACnE,GAAoB,IAAhBA,EAAKc,OAAc,CACrB,MAAMpC,EAAQsB,EAAK,GACnB,GAAIiU,EAAQvV,GACV,MAAO,CAAEsB,KAAMtB,EAAOiX,KAAM,MAE9B,GAYJ,WAAgB9S,GACd,OAAOA,GAAsB,iBAARA,GAAoB4f,EAAe5f,KAAS8f,EAb3DE,CAAOnkB,GAAQ,CACjB,MAAMiX,EAAOiN,EAAQlkB,GACrB,MAAO,CACLsB,KAAM2V,EAAK3N,IAAKkB,GAAQxK,EAAMwK,IAC9ByM,SAKN,MAAO,CAAE3V,KAAMA,EAAa2V,KAAM,qDCxBpC,MAAQ1B,WAAY5G,MAMd,WAA4BrN,GAChC,OAAuB,IAAhBA,EAAKc,QAAgBmT,EAAQjU,EAAK,IAAMA,EAAK,GAAMA,iCCFtD,WAAuBiG,EAA6B6c,GACxD,GAAI7c,EAAK,CACP,MAAMnL,EAAQmL,EAAI8c,QAAQD,GAC1B,GAAKhoB,GAASmL,EAAI6L,OAAOhX,EAAO,mDCC9B,WAA8BkoB,GAMlC,MAAMC,EAAWD,EALDvP,IACdjJ,MAAMrH,KAAKsQ,GACXA,EAASyP,OAAQ,IAAI1Y,OAAQ0Y,QAI/BD,SAASP,UAAY3f,OAAOmQ,OAAO1I,MAAMkY,WACzCO,EAASP,UAAUhqB,YAAcuqB,EAC1BA,iDClBH,WAAuBtN,EAAgBhO,GAC3C,OAAOgO,EAAKzP,OAAO,CAACvJ,EAAQuM,EAAKpD,KAAQnJ,EAAOuM,GAAOvB,EAAO7B,GAAKnJ,GAAS,2FCC9E,IAAIsW,EAAuD,KASrD,WAAuBrK,GAC3B,GAAIrL,0CAA8C,CAChD,MAAM4lB,GAAUlQ,EAKhB,GAJIkQ,IACFlQ,EAAU,CAAEmQ,aAAa,EAAOjqB,MAAO,OAEzCyP,IACIua,EAAQ,CACV,MAAQC,cAAajqB,SAAU8Z,EAE/B,GADAA,EAAU,KACNmQ,EACF,MAAMjqB,QAMVyP,IAQE,WAAuB3L,GACvBM,2CAAgD0V,IAClDA,EAAQmQ,aAAc,EACtBnQ,EAAQ9Z,MAAQ8D,iCCrBd,WACJomB,EACA3pB,EACAC,EACAE,EAAQ,EACRypB,GAAS,GAET,MAAMC,EAAuB7pB,EAAU/B,SAAS,WAC9CgC,IACI2pB,EACFD,EAAmB7qB,IAAIG,KAAKhB,SAAS,KAAMkC,IAE3ClB,KAAKkC,eAENhB,GAIH,GAFAwpB,EAAmB7qB,IAAI+qB,IAElBD,EAKH,OAAOC,iDCzCL,WAAsBxZ,GAC1B,OAAOA,kECDF,MAAM2N,EAAmB3N,GAA8BA,GAAyB,iBAAbA,EAAEjJ,QAAoC,mBAANiJ,gECEpG,WAA6BlH,GACjC,OAAO+c,OAAOC,kBAAiBtjB,KAAc,MAAHsG,OAAG,EAAHY,EAAMmc,OAAOC,+CCInD,WAAsBxmB,GAC1B,OAAOA,aAAiB6oB,OAASsB,MAAMnqB,kDCJnC,WAAqBA,GACzB,MAAwB,mBAAVA,4FCAV,WAA8Bid,GAClC,OAAO/Z,OAAW+Z,EAAMxF,gFCFpB,WAAqBwF,GACzB,SAAO/Z,KAAgB,MAAL+Z,OAAK,EAALiE,EAAQkF,gFCGtB,WAAuB5c,GAG3B,QAASA,IAAQA,aAAehL,QAAe0E,KAAWsG,EAAIoN,QAAS1T,OAAWsG,EAAIjF,2ECLlF,WAAoBvE,GACxB,OAAOkD,OAAgB,MAALlD,OAAK,EAALoK,EAAO4U,wFCJrB,WAAuDQ,6CAC3D,MAAM4K,EAAS5K,EAAe6K,YAC9B,IACE,OAAa,CACX,MAAQrqB,QAAOqmB,gBAASje,MAAMgiB,EAAOE,QACrC,GAAIjE,EACF,2CAEFje,MAAMpI,YAGRoqB,EAAOG,iBAIL,WAAkC/gB,GAGtC,OAAOtG,OAAc,MAAHsG,OAAG,EAAHvH,EAAKooB,0EClBnB,WAAsBrqB,GAC1B,OAAOA,IAASkD,OAAWlD,EAAM1B,iFCI7B,WAAkB2F,GACtB,OAAOf,OAAiB,MAANe,OAAM,EAANid,EAAQtK,MAOtB,WACJ2J,GAEA,OAAQtc,IACN,GAAI4X,EAAQ5X,GACV,OAAOA,EAAO2S,KAAK,SAA+B4T,GAChD,IACE,OAAOjK,EAAKiK,EAAclrB,YACnBsE,GACPtE,KAAKQ,MAAM8D,MAIjB,MAAM,IAAIF,UAAU,0GC1BxB,MAAQkX,WAAY5G,MAUd,WAAiCyW,GACnC,OAAO9b,OAAIhI,GATf,WAA2B8jB,EAA6B9jB,GACpD,OAAOiU,EAAQjU,GAAQ8jB,KAAM9jB,GAAQ8jB,EAAG9jB,GAQrB+jB,CAAYD,EAAI9jB,mCCbjC,qGCsEA,cAAkBgkB,GACtB,OAAOhT,EAAcgT,GAIjB,WAA8BA,GAClC,OAAmB,IAAfA,EAAIljB,OACCmB,IAGU,IAAf+hB,EAAIljB,OACCkjB,EAAI,GAGN,SAAe1N,GACpB,OAAO0N,EAAI9d,OAAO,CAAC0W,EAAWkH,IAA4BA,EAAGlH,GAAOtG,8EC1ElE,WAA+BrZ,GACnC4W,eAA2B,KACzB,MAAQiB,oBAAqBvX,IAC7B,IAAIuX,EAKF,MAAM7X,EAHN6X,EAAiB7X,oCCbjB,WAA2CqZ,GAE/C,OAAO,IAAIvZ,UACT,gBACY,OAAVuZ,GAAmC,iBAAVA,EAAqB,oBAAsB,IAAIA,+KCR9E;;;;;cAOuD,OAEpD;;;;;;;;AASC2N,KAAKC,aAAa,iBAAkB,SAAUC,EAAQF,EAAMG,GACxD,IAAIC,EAAiBF,EAAOE,eAC5B,GAAKA,EAGL,KAAIC,EAAuBF,EAAIG,OAAO,kBACtCH,EAAII,YAAYL,EAAQ,iBAAkB,SAAU9sB,GAAY,OAAO,SAAUotB,EAAMzkB,GACnF,IAAIic,EAAWjc,EAAKc,OAAS,EAAId,EAAK,GAAK,KAC3C,OAAIic,IACAjc,EAAK,GAAK,SAAUgD,EAASpH,GAIzB,QAHI8oB,EAAQ/rB,KACRgsB,EAAQ,GACRC,EAAWX,EAAKlW,QACX8W,EAAK,EAAGC,EAAY9hB,EAAS6hB,EAAKC,EAAUhkB,OAAQ+jB,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GAClBG,EAAOD,EAAMpO,OAAO2N,GACnBU,IACDA,EAAOJ,GAEX,IAAIK,EAAkBN,EAAMK,EAAK7mB,MAC5B8mB,IACDN,EAAMK,EAAK7mB,MAAQ8mB,EAAkB,CAAEjiB,QAAS,GAAIgiB,KAAMA,IAE9DC,EAAgBjiB,QAAQ9H,KAAK6pB,GAEjChiB,OAAO4S,KAAKgP,GAAO9b,QAAQ,SAAUqc,GACjC,IAAID,EAAkBN,EAAMO,GACxBD,EAAgBD,OAASf,EAAKlW,QAC9BkX,EAAgBD,KAAK7sB,IAAI8jB,EAAUyI,EAAO,CAACO,EAAgBjiB,QAASpH,GAAW,kBAG/EqgB,EAAS9Y,KAAKuhB,EAAOO,EAAgBjiB,QAASpH,OAKvDoE,EAAKc,OAAS,EAAI,IAAIujB,EAAerkB,EAAK,IAAM,IAAIqkB,KAE/DD,EAAII,YAAYH,EAAe3B,UAAW,UAAW,SAAUrrB,GAAY,OAAO,SAAUotB,EAAMzkB,GAC9F,IAAI2W,EAAS3W,EAAKc,OAAS,EAAId,EAAK,GAAK,KACzC,IAAK2W,EACD,OAAOtf,EAAS6I,MAAMukB,EAAMzkB,GAEhC,IAAImlB,EAAUV,EAAKH,GACnB,OAAKa,IACDA,EAAUV,EAAKH,GAAwB,IAE3Ca,EAAQjqB,KAAKyb,GACbA,EAAO2N,GAAwBL,EAAKlW,QAC7B1W,EAAS6I,MAAMukB,EAAMzkB,MAEhCokB,EAAII,YAAYH,EAAe3B,UAAW,YAAa,SAAUrrB,GAAY,OAAO,SAAUotB,EAAMzkB,GAChG,IAAI2W,EAAS3W,EAAKc,OAAS,EAAId,EAAK,GAAK,KACzC,IAAK2W,EACD,OAAOtf,EAAS6I,MAAMukB,EAAMzkB,GAEhC,IAAImlB,EAAUV,EAAKH,GACnB,GAAIa,EACA,QAASrf,EAAI,EAAGA,EAAIqf,EAAQrkB,OAAQgF,IAChC,GAAIqf,EAAQrf,KAAO6Q,EAAQ,CACvBwO,EAAQrT,OAAOhM,EAAG,GAClB,MAIZ6Q,SAAO2N,QAAwB/sB,EACxBF,EAAS6I,MAAMukB,EAAMzkB,MAEhCokB,EAAII,YAAYH,EAAe3B,UAAW,aAAc,SAAUrrB,GAAY,OAAO,SAAUotB,EAAMzkB,GACjG,IAAImlB,EAAUV,EAAKH,GACnB,OAAIa,IACAA,EAAQtc,QAAQ,SAAU8N,GACtBA,EAAO2N,QAAwB/sB,IAEnCktB,EAAKH,QAAwB/sB,GAE1BF,EAAS6I,MAAMukB,EAAMzkB,UAvFemD,2DCPvD;;;;;cAOuD,OAEpD;;;;;;;;AASC,IAAIiiB,EAA+B,WAC/B,WAAuBC,QACS,IAAxBA,IAAkCA,EAAsB,MAC5D1sB,KAAK0sB,oBAAsBA,EAC3B1sB,KAAKwF,KAAO,YACZxF,KAAK2sB,cAAgB,KACrB3sB,KAAK4R,WAAa,CAAE6a,cAAiBzsB,MACrCA,KAAK4sB,aAAe,KACpB5sB,KAAK6sB,cAAgB,KACrB7sB,KAAK8sB,wBAAyB,EAC9B9sB,KAAK+sB,MAAQ,GACb/sB,KAAKgtB,YAAYN,GAErBD,SAAchc,IAAM,WAChB,OAAO6a,KAAKlW,QAAQ3E,IAAI,kBAE5Bgc,EAAcQ,SAAW,WACrB,OAAOR,EAAchc,gBAAiBgc,GAE1CA,EAAcS,cAAgB,WAC1B,IAAKT,EAAcQ,WACf,MAAM,IAAIpb,MAAM,gEAEpB,OAAO4a,EAAchc,OAEzBgc,EAAc1C,UAAUiD,YAAc,SAAUG,GAC5C,IAAIpB,EAAQ/rB,KACRotB,EAAgBptB,KAAK2sB,gBAAkBQ,EAC3CntB,KAAK2sB,cAAgBQ,EACrBntB,KAAK4sB,cAAgB5sB,KAAK4sB,aAAa1c,QAAQ,SAAUK,GAAO,cAAcwb,EAAMna,WAAWrB,KAC/FvQ,KAAK4sB,aAAe,KAChBO,GAAgBA,EAAavb,aAC7B5R,KAAK4sB,aAAexiB,OAAO4S,KAAKmQ,EAAavb,YAC7C5R,KAAK4sB,aAAa1c,QAAQ,SAAUmd,GAAK,OAAOtB,EAAMna,WAAWyb,GAAKF,EAAavb,WAAWyb,MAG9FD,GAAiBptB,KAAK6sB,gBACrB7sB,KAAK6sB,cAAcS,WAAattB,KAAK6sB,cAAcU,aACpDvtB,KAAK8sB,wBAAyB,IAGtCL,EAAc1C,UAAUyD,YAAc,WAClC,OAAOxtB,KAAK2sB,eAEhBF,EAAc1C,UAAU0D,cAAgB,WACjBztB,KAAKwtB,cACxBxtB,KAAKgtB,YAAYhtB,KAAK0sB,sBAE1BD,EAAc1C,UAAU2D,kBAAoB,SAAUC,EAAoBC,EAAaC,GAC/E7tB,KAAK8sB,wBAA0B9sB,KAAK6sB,gBAGpC7sB,KAAK8sB,wBAAyB,EAC9B9sB,KAAK8tB,UAAUH,EAAoBC,EAAaC,EAAY7tB,KAAK6sB,iBAGzEJ,EAAc1C,UAAUgE,gBAAkB,SAAUC,GAChD,GAAKhuB,KAAK+sB,MAGV,QAAS5f,EAAI,EAAGA,EAAInN,KAAK+sB,MAAM5kB,OAAQgF,IACnC,GAAInN,KAAK+sB,MAAM5f,KAAO6gB,EAElB,YADAhuB,KAAK+sB,MAAM5T,OAAOhM,EAAG,IAKjCsf,EAAc1C,UAAUkE,4BAA8B,WAClD,GAA0B,IAAtBjuB,KAAK+sB,MAAM5kB,OACX,MAAO,GAEX,IASI+lB,EAAmB,+BATRluB,KAAK+sB,MAAM1d,IAAI,SAAU2e,GACpC,IAAIG,EAAWH,EAAKI,MAChBhkB,OAAO4S,KAAKgR,EAAKI,MACZ/e,IAAI,SAAUkB,GACf,OAAOA,EAAM,IAAMyd,EAAKI,KAAK7d,KAE5BqZ,KAAK,KACd,MAAO,SAAWoE,EAAKK,KAAO,aAAeL,EAAKrpB,OAAS,YAAcwpB,EAAW,MAErB,IAEnE,YAAKpB,MAAQ,GACNmB,GAEXzB,EAAc1C,UAAUuE,OAAS,SAAUX,EAAoBC,EAAaC,EAAYU,GACpF,OAAIvuB,KAAK2sB,eAAiB3sB,KAAK2sB,cAAc2B,OAClCtuB,KAAK2sB,cAAc2B,OAAOX,EAAoBC,EAAaC,EAAYU,GAGvEZ,EAAmBa,KAAKX,EAAYU,IAGnD9B,EAAc1C,UAAU0E,YAAc,SAAUd,EAAoBC,EAAaC,EAAYnvB,EAAUiG,GACnG,OAAI3E,KAAK2sB,eAAiB3sB,KAAK2sB,cAAc8B,YAClCzuB,KAAK2sB,cAAc8B,YAAYd,EAAoBC,EAAaC,EAAYnvB,EAAUiG,GAGtFgpB,EAAmBe,UAAUb,EAAYnvB,EAAUiG,IAGlE8nB,EAAc1C,UAAU4E,SAAW,SAAUhB,EAAoBC,EAAaC,EAAYnvB,EAAUkwB,EAAWC,EAAWlqB,GAEtH,OADA3E,KAAK0tB,kBAAkBC,EAAoBC,EAAaC,GACpD7tB,KAAK2sB,eAAiB3sB,KAAK2sB,cAAcgC,SAClC3uB,KAAK2sB,cAAcgC,SAAShB,EAAoBC,EAAaC,EAAYnvB,EAAUkwB,EAAWC,EAAWlqB,GAGzGgpB,EAAmBmB,OAAOjB,EAAYnvB,EAAUkwB,EAAWC,EAAWlqB,IAGrF8nB,EAAc1C,UAAUgF,cAAgB,SAAUpB,EAAoBC,EAAaC,EAAYrtB,GAC3F,OAAIR,KAAK2sB,eAAiB3sB,KAAK2sB,cAAcoC,cAClC/uB,KAAK2sB,cAAcoC,cAAcpB,EAAoBC,EAAaC,EAAYrtB,GAG9EmtB,EAAmBxd,YAAY0d,EAAYrtB,IAG1DisB,EAAc1C,UAAUiF,eAAiB,SAAUrB,EAAoBC,EAAaC,EAAYG,GAI5F,MAHkB,cAAdA,EAAKK,MACLruB,KAAK+sB,MAAMxqB,KAAKyrB,GAEhBhuB,KAAK2sB,eAAiB3sB,KAAK2sB,cAAcqC,eAClChvB,KAAK2sB,cAAcqC,eAAerB,EAAoBC,EAAaC,EAAYG,GAG/EL,EAAmBsB,aAAapB,EAAYG,IAG3DvB,EAAc1C,UAAUmF,aAAe,SAAUvB,EAAoBC,EAAaC,EAAYG,EAAMY,EAAWC,GAK3G,MAJkB,cAAdb,EAAKK,MACLruB,KAAK+tB,gBAAgBC,GAEzBhuB,KAAK0tB,kBAAkBC,EAAoBC,EAAaC,GACpD7tB,KAAK2sB,eAAiB3sB,KAAK2sB,cAAcuC,aAClClvB,KAAK2sB,cAAcuC,aAAavB,EAAoBC,EAAaC,EAAYG,EAAMY,EAAWC,GAG9FlB,EAAmBwB,WAAWtB,EAAYG,EAAMY,EAAWC,IAG1EpC,EAAc1C,UAAUqF,aAAe,SAAUzB,EAAoBC,EAAaC,EAAYG,GAK1F,MAJkB,cAAdA,EAAKK,MACLruB,KAAK+tB,gBAAgBC,GAEzBhuB,KAAK0tB,kBAAkBC,EAAoBC,EAAaC,GACpD7tB,KAAK2sB,eAAiB3sB,KAAK2sB,cAAcyC,aAClCpvB,KAAK2sB,cAAcyC,aAAazB,EAAoBC,EAAaC,EAAYG,GAG7EL,EAAmB0B,WAAWxB,EAAYG,IAGzDvB,EAAc1C,UAAU+D,UAAY,SAAUpvB,EAAU0W,EAAS4I,EAAQsR,GACrEtvB,KAAK6sB,cAAgByC,EACrBtvB,KAAS2sB,eAAiB3sB,KAAK2sB,cAAcmB,UACzC9tB,KAAK2sB,cAAcmB,UAAUpvB,EAAU0W,EAAS4I,EAAQsR,GAGxD5wB,EAAS6wB,QAAQvR,EAAQsR,IAG1B7C,EAlKwB,GAsKnCnB,KAAKmB,cAAmBA,GAjL2BjiB;;;;;SCG9C,IAAUglB,IAHwDC,EAAQ;;;;;;;;AAY/EnE,KAAKC,aAAa,OAAQ,SAAUC,EAAQF,EAAMG,GAC9C,IAAIG,EAASN,EAAKoE,WACd5lB,EAAa,uBACb6lB,EAAc,wBACdC,EAAiB,2BACjBC,EAAyBzlB,OAAO0lB,iBA4EpCrE,EAAII,YAAY2D,EAAKtwB,WAAW6qB,UAAW,OAAQ,SAAUrrB,GAAY,OAAO,SAAUotB,EAAMzkB,GAC5F,IAAImQ,EAAa9Y,EAAS6I,MAAMukB,EAAMzkB,GACtC,OAAImQ,EAAWD,WACXC,EAAWD,SAASwY,MAAQzE,EAAKlW,QACjCqW,EAAII,YAAYrU,EAAWD,SAAU,OAAQ,SAAUyY,GAAoB,OAAO,SAAUC,EAAcC,GACtG,OAAID,EAAaF,OAASE,EAAaF,QAAUzE,EAAKlW,QAC3C6a,EAAaF,MAAMvwB,IAAIwwB,EAAkBC,EAAcC,GAE3DF,EAAiBzoB,MAAM0oB,EAAcC,OAG7C1Y,KAEX,IAvFQ2Y,EAEA/Y,KAFA+Y,EAAsBX,EAAKtwB,WAAW6qB,WACnB6B,EAAO,eAC2BuE,EAAoB/Y,WAC7EyY,EAAuBL,EAAKtwB,WAAW6qB,UAAW,CAC9CgG,MAAO,CAAErvB,MAAO,KAAM0vB,UAAU,EAAMC,cAAc,GACpDC,YAAa,CAAE5vB,MAAO,KAAM0vB,UAAU,EAAMC,cAAc,GAC1DE,eAAgB,CAAE7vB,MAAO,KAAM0vB,UAAU,EAAMC,cAAc,GAC7D1rB,OAAQ,CACJ0rB,cAAc,EACd5f,IAAK,WACD,OAAOzQ,KAAKswB,aAEhB5f,IAAK,SAAU/L,GACX3E,KAAK+vB,MAAQzE,EAAKlW,QAClBpV,KAAKswB,YAAc3rB,IAG3ByS,WAAY,CACRiZ,cAAc,EACd5f,IAAK,WACD,GAAIzQ,KAAKuwB,eACL,OAAOvwB,KAAKuwB,eAEX,GAAIvwB,KAAKD,cAAgByvB,EAAKtwB,WAC/B,OAAOkY,EAEX,IAAIoZ,EAAQpmB,OAAO0f,eAAe9pB,MAClC,OAAOwwB,GAASA,EAAMpZ,YAE1B1G,IAAK,SAAUzL,GACXjF,KAAK+vB,MAAQzE,EAAKlW,QAKdpV,KAAKuwB,eAJJtrB,EAIqB,WAClB,GAAIjF,KAAK+vB,OAAS/vB,KAAK+vB,QAAUzE,EAAKlW,QAAS,CAC3C,IAAIqb,EAAazwB,KAAK+vB,MAAMvwB,IAAIyF,EAAWjF,KAAMqJ,WACjD,GAA0B,mBAAfonB,EAA2B,CAClC,IAAIC,EAAS1wB,KAAK+vB,MAClB,OAAO,WACH,OAAIW,IAAWpF,EAAKlW,QACTsb,EAAOlxB,IAAIixB,EAAYzwB,KAAMqJ,WAEjConB,EAAWlpB,MAAMvH,KAAMqJ,YAIlC,OAAOonB,EAIX,OAAOxrB,EAAUsC,MAAMvH,KAAMqJ,YApBfpE,IA0BlCqX,eAAgB,CACZ7L,IAAK,WACD,OAAOzQ,KAAK2wB,qBAEhBjgB,IAAK,SAAUkgB,GACX,IAAIvE,EAAOrsB,KAAK+vB,MAChB/vB,KAAK2wB,oBAAsB,WACvB,OAAItE,GAAQA,IAASf,EAAKlW,QACfiX,EAAK7sB,IAAIoxB,EAAS5wB,KAAMqJ,WAE5BunB,EAAQrpB,MAAMvH,KAAMqJ,gBAoB3CwmB,EAAuBL,EAAKnwB,aAAa0qB,UAAW,CAChDgG,MAAO,CAAErvB,MAAO,KAAM0vB,UAAU,EAAMC,cAAc,GACpDQ,iBAAkB,CAAEnwB,MAAO,KAAM0vB,UAAU,EAAMC,cAAc,GAC/DS,aAAc,CACVrgB,IAAK,WACD,GAAIzQ,KAAK6wB,kBAAoB7wB,KAAK+wB,wBAC9B,OAAO/wB,KAAK6wB,iBAEhB,IAAIL,EAAQpmB,OAAO0f,eAAe9pB,MAClC,OAAOwwB,GAASA,EAAMM,cAE1BpgB,IAAK,SAAUxO,GACXlC,KAAK+vB,MAAQzE,EAAKlW,QAClBmD,GASIvY,KAAK+wB,yBAA0B,EAC/B/wB,KAAK6wB,iBAAmB,WACpB,OAAI7wB,KAAK+vB,OAAS/vB,KAAK+vB,QAAUzE,EAAKlW,QAC3BpV,KAAK+vB,MAAMvwB,IAAI0C,EAAalC,KAAMqJ,WAGlCnH,EAAYqF,MAAMvH,KAAMqJ,cAdvCrJ,KAAK6wB,iBAAmB3uB,EAKxBlC,KAAK+wB,yBAA0B,OAiB7B,WAClB,IAAIrxB,EAAO8vB,EAAK9X,WAAWqS,UAAUrqB,KACjCc,EAAQgvB,EAAK9X,WAAWqS,UAAUvpB,MAClCC,EAAW+uB,EAAK9X,WAAWqS,UAAUtpB,SACzC2J,OAAO4mB,eAAexB,EAAK9X,WAAWqS,UAAW,cAAe,CAC5DsG,cAAc,EACd5f,IAAK,WACD,OAAOzQ,KAAKixB,kBAEhBvgB,IAAK,SAAUgJ,GACX1Z,KAAK+vB,MAAQzE,EAAKlW,QAClBpV,KAAKixB,iBAAmBvX,KAKhC8V,EAAK9X,WAAWqS,UAAUrqB,KAAO,WAC7B,IACIwxB,EAAmBlxB,KAAK+vB,MAG5B,OAAImB,GAAoBA,IAJN5F,EAAKlW,QAKZ8b,EAAiB1xB,IAAIE,EAAMM,KAAMqJ,UAAWS,GAG5CpK,EAAK6H,MAAMvH,KAAMqJ,YAGhCmmB,EAAK9X,WAAWqS,UAAUvpB,MAAQ,WAC9B,IACI0wB,EAAmBlxB,KAAK+vB,MAG5B,OAAImB,GAAoBA,IAJN5F,EAAKlW,QAKZ8b,EAAiB1xB,IAAIgB,EAAOR,KAAMqJ,UAAWsmB,GAG7CnvB,EAAM+G,MAAMvH,KAAMqJ,YAGjCmmB,EAAK9X,WAAWqS,UAAUtpB,SAAW,WACjC,IACIywB,EAAmBlxB,KAAK+vB,MAG5B,OAAImB,GAAoBA,IAJN5F,EAAKlW,QAKZ8b,EAAiB1xB,IAAIiB,EAAUT,KAAMqJ,UAAWumB,GAGhDnvB,EAAS+J,KAAKxK,OAMjCmxB;;;;;;;;;;;;UChMQ,SAAU3F,GACtB,MAAM7sB,EAAc6sB,EAAO7sB,YAC3B,WAAc6G,IACV7G,GAAeA,EAAYyyB,MAAWzyB,EAAYyyB,KAAQ5rB,IAE9D,WAA4BA,GAAM6rB,IAC9B1yB,GAAeA,EAAY2yB,SAAc3yB,EAAY2yB,QAAW9rB,GAAM6rB,IAE1ED,EAAK,QAIL,MAAMG,EAAe/F,EAAOgG,sBAA2B,kBACvD,WAAoBhsB,IAChB,OAAO+rB,EAAe/rB,GAE1B,MAAMisB,IAAmE,IAAlDjG,EAAOkE,EAAW,4BACzC,GAAIlE,EAAOF,KAAS,CAUhB,GAAImG,IAAuD,mBAA9BjG,EAAOF,KAAQoE,WACxC,MAAM,IAAI7d,MAAM,wBAGhB,OAAO2Z,EAAOF,KA/BQ,IAkCxBA,GAlCwB,MAkC9B,SACIvrB,YAAYwb,EAAQgT,GAChBvuB,KAAK0xB,QAAUnW,EACfvb,KAAK2xB,MAAQpD,EAAWA,EAAS/oB,MAAQ,UAAY,SACrDxF,KAAK4xB,YAAcrD,GAAYA,EAAS3c,YAAc,GACtD5R,KAAK6xB,cACD,IAAIC,GAAa9xB,KAAMA,KAAK0xB,SAAW1xB,KAAK0xB,QAAQG,cAAetD,8BAGvE,GAAI/C,EAAO1mB,UAAeitB,GAAQC,iBAC9B,MAAM,IAAIngB,MAAM,iSAObogB,kBACP,IAAI5F,EAAOf,GAAKlW,QAChB,KAAOiX,EAAK9Q,QACR8Q,EAAOA,EAAK9Q,OAEhB,OAAO8Q,EAEAjX,qBACP,OAAO8c,GAAkB7F,KAElB8F,yBACP,OAAOC,uBAGS5sB,EAAM2lB,EAAIkH,IAAkB,GAC5C,GAAIN,GAAQO,eAAe9sB,IAIvB,IAAK6sB,IAAmBZ,GACpB,MAAM5f,MAAM,yBAA2BrM,YAGrCgmB,EAAO,kBAAoBhmB,GAAO,CACxC,MAAM+sB,GAAW,QAAU/sB,EAC3B4rB,EAAKmB,IACLR,GAAQvsB,GAAQ2lB,EAAGK,EAAQF,GAAMkH,IACjCC,EAAmBF,GAAUA,KAGjChX,aACA,OAAOvb,KAAK0xB,QAEZlsB,WACA,OAAOxF,KAAK2xB,MAEhBlhB,IAAIF,GACA,MAAM8b,EAAOrsB,KAAK0yB,YAAYniB,GAC9B,GAAI8b,EACA,OAAOA,EAAKuF,YAAYrhB,GAEhCmiB,YAAYniB,GACR,IAAI6E,EAAUpV,KACd,KAAOoV,GAAS,CACZ,GAAIA,EAAQwc,YAAYU,eAAe/hB,GACnC,OAAO6E,EAEXA,EAAUA,EAAQsc,QAEtB,OAAO,KAEXlD,KAAKD,GACD,IAAKA,EACD,MAAM,IAAI1c,MAAM,sBACpB,OAAO7R,KAAK6xB,cAAcrD,KAAKxuB,KAAMuuB,GAEzCoE,KAAKrP,EAAU3e,GACX,GAAwB,mBAAb2e,EACP,MAAM,IAAIzR,MAAM,2BAA6ByR,GAEjD,MAAMsP,GAAY5yB,KAAK6xB,cAAcnD,UAAU1uB,KAAMsjB,EAAU3e,GACzD0nB,GAAOrsB,KACb,OAAO,WACH,OAAOqsB,GAAKwG,WAAWD,GAAW5yB,KAAMqJ,UAAW1E,IAG3DnF,IAAI8jB,EAAUsL,EAAWC,GAAWlqB,IAChCutB,GAAoB,CAAE3W,OAAQ2W,GAAmB7F,KAAMrsB,MACvD,IACI,OAAOA,KAAK6xB,cAAc/C,OAAO9uB,KAAMsjB,EAAUsL,EAAWC,GAAWlqB,YAGvEutB,GAAoBA,GAAkB3W,QAG9CsX,WAAWvP,EAAUsL,EAAY,KAAMC,GAAWlqB,IAC9CutB,GAAoB,CAAE3W,OAAQ2W,GAAmB7F,KAAMrsB,MACvD,IACI,IACI,OAAOA,KAAK6xB,cAAc/C,OAAO9uB,KAAMsjB,EAAUsL,EAAWC,GAAWlqB,UAEpEnE,IACH,GAAIR,KAAK6xB,cAAc1hB,YAAYnQ,KAAMQ,IACrC,MAAMA,YAKd0xB,GAAoBA,GAAkB3W,QAG9CuX,QAAQ9E,EAAMY,EAAWC,IACrB,GAAIb,EAAK3B,MAAQrsB,KACb,MAAM,IAAI6R,MAAM,+DACXmc,EAAK3B,MAAQ0G,IAASvtB,KAAO,gBAAkBxF,KAAKwF,KAAO,KAKpE,GAAIwoB,EAAK/sB,QAAU+xB,KAAiBhF,EAAKK,OAAS4E,IAAajF,EAAKK,OAASf,IACzE,OAEJ,MAAM4F,GAAelF,EAAK/sB,OAASkyB,EACnCD,IAAgBlF,EAAKoF,cAAcD,EAASvV,IAC5CoQ,EAAKqF,WACL,MAAMC,GAAelB,GACrBA,GAAepE,EACfkE,GAAoB,CAAE3W,OAAQ2W,GAAmB7F,KAAMrsB,MACvD,IACQguB,EAAKK,MAAQf,IAAaU,EAAKI,OAASJ,EAAKI,KAAKmF,aAClDvF,EAAKwF,cAAW50B,GAEpB,IACI,OAAOoB,KAAK6xB,cAAc1C,WAAWnvB,KAAMguB,EAAMY,EAAWC,UAEzDruB,IACH,GAAIR,KAAK6xB,cAAc1hB,YAAYnQ,KAAMQ,IACrC,MAAMA,YAOVwtB,EAAK/sB,QAAU+xB,IAAgBhF,EAAK/sB,QAAUwyB,IAC1CzF,EAAKK,MAAQ4E,IAAcjF,EAAKI,MAAQJ,EAAKI,KAAKmF,WAClDL,IAAgBlF,EAAKoF,cAAcxV,GAAWuV,IAG9CnF,EAAKqF,SAAW,EAChBrzB,KAAK0zB,iBAAiB1F,GAAM,GAC5BkF,IACIlF,EAAKoF,cAAcJ,GAAcG,EAASH,MAGtDd,GAAoBA,GAAkB3W,OACtC6W,GAAekB,IAGvBrE,aAAajB,GACT,GAAIA,EAAK3B,MAAQ2B,EAAK3B,OAASrsB,KAAM,CAGjC,IAAI2zB,GAAU3zB,KACd,KAAO2zB,IAAS,CACZ,GAAIA,KAAY3F,EAAK3B,KACjB,MAAMxa,MAAO,8BAA6B7R,KAAKwF,kDAAkDwoB,EAAK3B,KAAK7mB,QAE/GmuB,GAAUA,GAAQpY,QAG1ByS,EAAKoF,cAAcQ,GAAYZ,IAC/B,MAAMa,EAAgB,GACtB7F,EAAK8F,eAAiBD,EACtB7F,EAAK+B,MAAQ/vB,KACb,IACIguB,EAAOhuB,KAAK6xB,cAAc5C,aAAajvB,KAAMguB,SAE1C1pB,IAGH0pB,QAAKoF,cAAcK,EAASG,GAAYZ,IAExChzB,KAAK6xB,cAAc1hB,YAAYnQ,KAAMsE,IAC/BA,GAEV,OAAI0pB,EAAK8F,iBAAmBD,GAExB7zB,KAAK0zB,iBAAiB1F,EAAM,GAE5BA,EAAK/sB,OAAS2yB,IACd5F,EAAKoF,cAAcxV,GAAWgW,IAE3B5F,EAEX+F,kBAAkBpvB,EAAQ2e,EAAU8K,GAAM4F,IACtC,OAAOh0B,KAAKivB,aAAa,IAAIgF,GAAS1G,EAAW5oB,EAAQ2e,EAAU8K,GAAM4F,QAAgBp1B,IAE7Fs1B,kBAAkBvvB,EAAQ2e,EAAU8K,GAAM4F,GAAgBG,IACtD,OAAOn0B,KAAKivB,aAAa,IAAIgF,GAAS3G,GAAW3oB,EAAQ2e,EAAU8K,GAAM4F,GAAgBG,KAE7FC,kBAAkBzvB,EAAQ2e,EAAU8K,GAAM4F,GAAgBG,IACtD,OAAOn0B,KAAKivB,aAAa,IAAIgF,GAAShB,GAAWtuB,EAAQ2e,EAAU8K,GAAM4F,GAAgBG,KAE7F9E,WAAWrB,GACP,GAAIA,EAAK3B,MAAQrsB,KACb,MAAM,IAAI6R,MAAM,qEACXmc,EAAK3B,MAAQ0G,IAASvtB,KAAO,gBAAkBxF,KAAKwF,KAAO,KACpEwoB,EAAKoF,cAAciB,GAAWzW,GAAWuV,GACzC,IACInzB,KAAK6xB,cAAcxC,WAAWrvB,KAAMguB,SAEjC1pB,GAEH0pB,QAAKoF,cAAcK,EAASY,IAC5Br0B,KAAK6xB,cAAc1hB,YAAYnQ,KAAMsE,GAC/BA,EAEV,YAAKovB,iBAAiB1F,GAAM,GAC5BA,EAAKoF,cAAcJ,GAAcqB,IACjCrG,EAAKqF,SAAW,EACTrF,EAEX0F,iBAAiB1F,EAAMpjB,GACnB,MAAMipB,GAAgB7F,EAAK8F,gBACd,GAATlpB,IACAojB,EAAK8F,eAAiB,MAE1B,QAAS3mB,GAAI,EAAGA,GAAI0mB,GAAc1rB,OAAQgF,KACtC0mB,GAAc1mB,IAAGumB,iBAAiB1F,EAAKK,KAAMzjB,IAKzD0gB,UAAKoE,WAAaA,EAvOZpE,IAlCwB,GA0Q9B,MAAMgJ,GAAc,CAChB9uB,KAAM,GACNsoB,UAAW,CAACpvB,GAAUsW,GAAGgJ,EAAQsR,IAAiB5wB,GAAS6wB,QAAQvR,EAAQsR,GAC3EN,eAAgB,CAACtwB,GAAUsW,GAAGgJ,EAAQgQ,IAAStvB,GAASuwB,aAAajR,EAAQgQ,GAC7EkB,aAAc,CAACxwB,GAAUsW,GAAGgJ,EAAQgQ,EAAMY,GAAWC,KAAcnwB,GAASywB,WAAWnR,EAAQgQ,EAAMY,GAAWC,IAChHO,aAAc,CAAC1wB,GAAUsW,GAAGgJ,EAAQgQ,IAAStvB,GAAS2wB,WAAWrR,EAAQgQ,IAE7E,SACIjuB,YAAYssB,GAAMkI,EAAgBhG,GAC9BvuB,KAAKw0B,YAAc,CAAEjH,UAAa,EAAGD,UAAa,EAAG2F,UAAa,GAClEjzB,KAAKqsB,KAAOA,GACZrsB,KAAKy0B,gBAAkBF,EACvBv0B,KAAK00B,QAAUnG,IAAaA,GAAYA,EAASD,OAASC,EAAWgG,EAAeG,SACpF10B,KAAK20B,UAAYpG,IAAaA,EAASD,OAASiG,EAAiBA,EAAeI,WAChF30B,KAAK40B,cACDrG,IAAaA,EAASD,OAAStuB,KAAKqsB,KAAOkI,EAAeK,eAC9D50B,KAAK60B,aACDtG,IAAaA,EAASE,YAAcF,EAAWgG,EAAeM,cAClE70B,KAAK80B,eACDvG,IAAaA,EAASE,YAAc8F,EAAiBA,EAAeO,gBACxE90B,KAAK+0B,mBACDxG,IAAaA,EAASE,YAAczuB,KAAKqsB,KAAOkI,EAAeQ,oBACnE/0B,KAAKg1B,UAAYzG,IAAaA,EAASI,SAAWJ,EAAWgG,EAAeS,WAC5Eh1B,KAAKi1B,YACD1G,IAAaA,EAASI,SAAW4F,EAAiBA,EAAeU,aACrEj1B,KAAKk1B,gBACD3G,IAAaA,EAASI,SAAW3uB,KAAKqsB,KAAOkI,EAAeW,iBAChEl1B,KAAKm1B,eACD5G,IAAaA,EAASQ,cAAgBR,EAAWgG,EAAeY,gBACpEn1B,KAAKo1B,iBACD7G,IAAaA,EAASQ,cAAgBwF,EAAiBA,EAAea,kBAC1Ep1B,KAAKq1B,qBACD9G,IAAaA,EAASQ,cAAgB/uB,KAAKqsB,KAAOkI,EAAec,sBACrEr1B,KAAKs1B,gBACD/G,IAAaA,EAASS,eAAiBT,EAAWgG,EAAee,iBACrEt1B,KAAKu1B,kBAAoBhH,IACpBA,EAASS,eAAiBuF,EAAiBA,EAAegB,mBAC/Dv1B,KAAKw1B,sBACDjH,IAAaA,EAASS,eAAiBhvB,KAAKqsB,KAAOkI,EAAeiB,uBACtEx1B,KAAKy1B,cACDlH,IAAaA,EAASW,aAAeX,EAAWgG,EAAekB,eACnEz1B,KAAK01B,gBACDnH,IAAaA,EAASW,aAAeqF,EAAiBA,EAAemB,iBACzE11B,KAAK21B,oBACDpH,IAAaA,EAASW,aAAelvB,KAAKqsB,KAAOkI,EAAeoB,qBACpE31B,KAAK41B,cACDrH,IAAaA,EAASa,aAAeb,EAAWgG,EAAeqB,eACnE51B,KAAK61B,gBACDtH,IAAaA,EAASa,aAAemF,EAAiBA,EAAesB,iBACzE71B,KAAK81B,oBACDvH,IAAaA,EAASa,aAAepvB,KAAKqsB,KAAOkI,EAAeuB,qBACpE91B,KAAK+1B,WAAa,KAClB/1B,KAAKg2B,aAAe,KACpBh2B,KAAKi2B,kBAAoB,KACzBj2B,KAAKk2B,iBAAmB,KACxB,MAAMC,GAAkB5H,GAAYA,EAAST,WAEzCqI,IADkB5B,GAAkBA,EAAewB,cAInD/1B,KAAK+1B,WAAaI,GAAkB5H,EAAW+F,GAC/Ct0B,KAAKg2B,aAAezB,EACpBv0B,KAAKi2B,kBAAoBj2B,KACzBA,KAAKk2B,iBAAmB7J,GACnBkC,EAASS,iBACVhvB,KAAKs1B,gBAAkBhB,GACvBt0B,KAAKu1B,kBAAoBhB,EACzBv0B,KAAKw1B,sBAAwBx1B,KAAKqsB,MAEjCkC,EAASW,eACVlvB,KAAKy1B,cAAgBnB,GACrBt0B,KAAK01B,gBAAkBnB,EACvBv0B,KAAK21B,oBAAsB31B,KAAKqsB,MAE/BkC,EAASa,eACVpvB,KAAK41B,cAAgBtB,GACrBt0B,KAAK61B,gBAAkBtB,EACvBv0B,KAAK81B,oBAAsB91B,KAAKqsB,OAI5CmC,KAAKX,GAAYU,GACb,OAAOvuB,KAAK00B,QAAU10B,KAAK00B,QAAQpG,OAAOtuB,KAAK20B,UAAW30B,KAAKqsB,KAAMwB,GAAYU,GAC7E,IAAIjD,GAAKuC,GAAYU,GAE7BG,UAAUb,GAAYvK,EAAU3e,GAC5B,OAAO3E,KAAK60B,aACR70B,KAAK60B,aAAapG,YAAYzuB,KAAK80B,eAAgB90B,KAAK+0B,mBAAoBlH,GAAYvK,EAAU3e,GAClG2e,EAERwL,OAAOjB,GAAYvK,EAAUsL,EAAWC,GAAWlqB,IAC/C,OAAO3E,KAAKg1B,UAAYh1B,KAAKg1B,UAAUrG,SAAS3uB,KAAKi1B,YAAaj1B,KAAKk1B,gBAAiBrH,GAAYvK,EAAUsL,EAAWC,GAAWlqB,IAChI2e,EAAS/b,MAAMqnB,EAAWC,IAElC1e,YAAY0d,GAAYrtB,GACpB,OAAOR,KAAKm1B,gBACRn1B,KAAKm1B,eAAepG,cAAc/uB,KAAKo1B,iBAAkBp1B,KAAKq1B,qBAAsBxH,GAAYrtB,GAGxGyuB,aAAapB,GAAYG,GACrB,IAAIoI,EAAapI,EACjB,GAAIhuB,KAAKs1B,gBACDt1B,KAAK+1B,YACLK,EAAWtC,eAAevxB,KAAKvC,KAAKi2B,mBAGxCG,EAAap2B,KAAKs1B,gBAAgBtG,eAAehvB,KAAKu1B,kBAAmBv1B,KAAKw1B,sBAAuB3H,GAAYG,GAE5GoI,IACDA,EAAapI,WAGbA,EAAKqI,WACLrI,EAAKqI,WAAWrI,WAEXA,EAAKK,MAAQd,EAIlB,MAAM,IAAI1b,MAAM,+BAHhBkiB,GAAkB/F,GAM1B,OAAOoI,EAEXjH,WAAWtB,GAAYG,EAAMY,EAAWC,IACpC,OAAO7uB,KAAKy1B,cAAgBz1B,KAAKy1B,cAAcvG,aAAalvB,KAAK01B,gBAAiB11B,KAAK21B,oBAAqB9H,GAAYG,EAAMY,EAAWC,IACrIb,EAAK1K,SAAS/b,MAAMqnB,EAAWC,IAEvCQ,WAAWxB,GAAYG,GACnB,IAAIttB,EACJ,GAAIV,KAAK41B,cACLl1B,EAAQV,KAAK41B,cAAcxG,aAAapvB,KAAK61B,gBAAiB71B,KAAK81B,oBAAqBjI,GAAYG,OAEnG,CACD,IAAKA,EAAKwF,SACN,MAAM3hB,MAAM,0BAEhBnR,EAAQstB,EAAKwF,SAASxF,GAE1B,OAAOttB,EAEX6uB,QAAQ1B,GAAYyI,GAGhB,IACIt2B,KAAK+1B,YACD/1B,KAAK+1B,WAAWjI,UAAU9tB,KAAKg2B,aAAch2B,KAAKk2B,iBAAkBrI,GAAYyI,SAEjFhyB,GACHtE,KAAKmQ,YAAY0d,GAAYvpB,IAIrCovB,iBAAiBrF,GAAMzjB,GACnB,MAAM2rB,EAASv2B,KAAKw0B,YACdvQ,GAAOsS,EAAOlI,IACd3uB,GAAO62B,EAAOlI,IAAQpK,GAAOrZ,EACnC,GAAIlL,GAAO,EACP,MAAM,IAAImS,MAAM,4CAER,GAARoS,IAAqB,GAARvkB,IAObM,KAAKuvB,QAAQvvB,KAAKqsB,KANF,CACZkB,UAAWgJ,EAAOhJ,UAAe,EACjCD,UAAWiJ,EAAOjJ,UAAe,EACjC2F,UAAWsD,EAAOtD,UAAe,EACjCuD,OAAQnI,MAMxB,SACItuB,YAAYsuB,GAAM1pB,EAAQ2e,EAAUpF,GAASmY,GAAY7C,IAarD,GAXAxzB,KAAK+vB,MAAQ,KACb/vB,KAAKqzB,SAAW,EAEhBrzB,KAAK8zB,eAAiB,KAEtB9zB,KAAKy2B,OAAS,eACdz2B,KAAKquB,KAAOA,GACZruB,KAAK2E,OAASA,EACd3E,KAAKouB,KAAOlQ,GACZle,KAAKq2B,WAAaA,GAClBr2B,KAAKwzB,SAAWA,IACXlQ,EACD,MAAM,IAAIzR,MAAM,2BAEpB7R,KAAKsjB,SAAWA,EAChB,MAAMwI,GAAO9rB,KAGTA,KAAK8uB,OADLT,KAAS4E,IAAa/U,IAAWA,GAAQwY,KAC3BzC,GAAS9E,WAGT,WACV,OAAO8E,GAAS9E,WAAW3kB,KAAKghB,EAAQM,GAAM9rB,KAAMqJ,8BAI9C2kB,GAAMhQ,EAAQ3W,GACvB2mB,KACDA,GAAOhuB,MAEX22B,KACA,IACI3I,UAAKqF,WACErF,GAAK3B,KAAKyG,QAAQ9E,GAAMhQ,EAAQ3W,WAGN,GAA7BsvB,IACAC,KAEJD,MAGJtK,WACA,OAAOrsB,KAAK+vB,MAEZ9uB,YACA,OAAOjB,KAAKy2B,OAEhBI,wBACI72B,KAAKozB,cAAcJ,GAAcY,IAGrCR,cAAc0D,GAASC,EAAYC,GAC/B,GAAIh3B,KAAKy2B,SAAWM,GAAc/2B,KAAKy2B,SAAWO,EAO9C,MAAM,IAAInlB,MAAO,GAAE7R,KAAKquB,SAASruB,KAAK2E,mCAAmCmyB,yBAA8BC,KAAcC,EAAa,QAAWA,EAAa,IAAO,YAAYh3B,KAAKy2B,YANlLz2B,KAAKy2B,OAASK,GACVA,IAAW9D,KACXhzB,KAAK8zB,eAAiB,MAOlCnK,WACI,OAAI3pB,KAAKouB,WAAsC,IAAvBpuB,KAAKouB,KAAK6I,SACvBj3B,KAAKouB,KAAK6I,SAAStN,WAGnBvf,OAAO2f,UAAUJ,SAASnf,KAAKxK,MAK9Ck3B,SACI,MAAO,CACH7I,KAAMruB,KAAKquB,KACXptB,MAAOjB,KAAKiB,MACZ0D,OAAQ3E,KAAK2E,OACb0nB,KAAMrsB,KAAKqsB,KAAK7mB,KAChB6tB,SAAUrzB,KAAKqzB,WAS3B,MAAM8D,GAAmBzH,EAAW,cAC9B0H,GAAgB1H,EAAW,WAC3B2H,GAAa3H,EAAW,QAC9B,IAEI4H,GAFAC,GAAkB,GAClBC,IAA4B,EAEhC,YAA2BxJ,IAGvB,GAAkC,IAA9B2I,IAA8D,IAA3BY,GAAgBpvB,OAOnD,GALKmvB,IACG9L,EAAO4L,MACPE,GAA8B9L,EAAO4L,IAAeryB,QAAQ,IAGhEuyB,GAA6B,CAC7B,IAAIG,GAAaH,GAA4BD,IACxCI,KAGDA,GAAaH,GAA4B5X,MAE7C+X,GAAWjtB,KAAK8sB,GAA6BV,SAG7CpL,EAAO2L,IAAkBP,GAAqB,GAGtD5I,IAAQuJ,GAAgBh1B,KAAKyrB,IAEjC,cACI,IAAKwJ,GAA2B,CAE5B,IADAA,IAA4B,EACrBD,GAAgBpvB,QAAQ,CAC3B,MAAM3G,GAAQ+1B,GACdA,GAAkB,GAClB,QAASpqB,GAAI,EAAGA,GAAI3L,GAAM2G,OAAQgF,KAAK,CACnC,MAAM6gB,EAAOxsB,GAAM2L,IACnB,IACI6gB,EAAK3B,KAAKyG,QAAQ9E,EAAM,KAAM,YAE3BxtB,GACHgyB,GAAKrW,iBAAiB3b,KAIlCgyB,GAAKkF,qBACLF,IAA4B,GAQpC,MAAMzE,GAAU,CAAEvtB,KAAM,WAClBwtB,GAAe,eAAgBY,GAAa,aAAchW,GAAY,YAAauV,EAAU,UAAWkB,GAAY,YAAaZ,EAAU,UAC3IlG,EAAY,YAAaD,GAAY,YAAa2F,GAAY,YAC9DlB,GAAU,GACVS,GAAO,CACT5G,OAAQ8D,EACRiI,iBAAkB,IAAMzF,GACxB/V,iBAAkBnS,GAClB0tB,mBAAoB1tB,GACpB+pB,kBAAmBA,GACnB6D,kBAAmB,KAAOtM,GAAKoE,EAAW,oCAC1CmI,iBAAkB,IAAM,GACxBC,kBAAmB9tB,GACnB6hB,YAAa,IAAM7hB,GACnB+tB,cAAe,IAAM,GACrBC,UAAW,IAAMhuB,GACjBiuB,eAAgB,IAAMjuB,GACtBkuB,oBAAqB,IAAMluB,GAC3BmuB,WAAY,KAAM,EAClBC,iBAAkB,OAClBC,qBAAsB,IAAMruB,GAC5BsuB,+BAAgC,OAChCC,aAAc,OACdC,WAAY,IAAM,GAClBC,WAAY,IAAMzuB,GAClB0uB,oBAAqB,IAAM1uB,GAC3B2uB,iBAAkB,IAAM,GACxBC,sBAAuB,IAAM5uB,GAC7B6uB,kBAAmB,IAAM7uB,GACzB8uB,eAAgB,IAAM9uB,IAE1B,IAAIkoB,GAAoB,CAAE3W,OAAQ,KAAM8Q,KAAM,IAAIf,GAAK,KAAM,OACzD8G,GAAe,KACfuE,GAA4B,EAChC,eACAlE,EAAmB,OAAQ,QACpBjH,EAAOF,KAAUA,GA5mBZ,CA6mBK,oBAAXnV,QAA0BA,QAA0B,oBAAT2V,MAAwBA,MAAQN,QA7mBrF,MA8nBM8M,EAAiCluB,OAAO2uB,yBAExCV,EAAuBjuB,OAAO4mB,eAE9BgI,EAAuB5uB,OAAO0f,eAE9ByO,EAAenuB,OAAOmQ,OAEtBie,EAAa9jB,MAAMqV,UAAU1d,MAE7B4sB,EAAyB,mBAEzBC,EAA4B,sBAE5BC,EAAiC7N,KAAKoE,WAAWuJ,GAEjDG,EAAoC9N,KAAKoE,WAAWwJ,GAEpDG,EAAW,OAEXC,EAAY,QAEZC,EAAqBjO,KAAKoE,WAAW;;;;;;;SAC3C,WAA6BpM,EAAU3e,GACnC,OAAO2mB,KAAKlW,QAAQud,KAAKrP,EAAU3e,GAEvC,WAA0CA,EAAQ2e,EAAU8K,EAAM4F,EAAgBG,GAC9E,OAAO7I,KAAKlW,QAAQ8e,kBAAkBvvB,EAAQ2e,EAAU8K,EAAM4F,EAAgBG,GAElF,MAAMqF,EAAalO,KAAKoE,WAClB+J,EAAmC,oBAAXtjB,OACxBujB,EAAiBD,EAAiBtjB,YAASvX,EAC3C+6B,EAAUF,GAAkBC,GAAkC,iBAAT5N,MAAqBA,MAAQN,OAElFoO,EAAqB,CAAC,MAC5B,WAAuBvyB,EAAM1C,GACzB,QAASwI,EAAI9F,EAAKc,OAAS,EAAGgF,GAAK,EAAGA,IACX,mBAAZ9F,EAAK8F,KACZ9F,EAAK8F,GAAKurB,EAAoBrxB,EAAK8F,GAAIxI,EAAS,IAAMwI,IAG9D,OAAO9F,EAsBX,WAA4BwyB,GACxB,OAAKA,IAGyB,IAA1BA,EAAazJ,YAGoB,mBAArByJ,EAAappB,UAAkD,IAArBopB,EAAanpB,KAE3E,MAAMopB,EAA4C,oBAAtBC,mBAAqCjO,gBAAgBiO,kBAG3EC,IAAY,OAAQL,SAAuC,IAApBA,EAAQjZ,SACX,qBAAtC,GAAGiJ,SAASnf,KAAKmvB,EAAQjZ,SACvBuZ,GAAaD,IAAWF,MAAkBL,IAAkBC,EAAeQ,aAI3EC,OAAmC,IAApBR,EAAQjZ,SACa,qBAAtC,GAAGiJ,SAASnf,KAAKmvB,EAAQjZ,WAAoCoZ,MAC1DL,IAAkBC,EAAeQ,aAClCE,EAAuB,GACvBC,EAAS,SAAUC,GAIrB,KADAA,EAAQA,GAASX,EAAQW,OAErB,OAEJ,IAAIC,EAAkBH,EAAqBE,EAAMjM,MAC5CkM,IACDA,EAAkBH,EAAqBE,EAAMjM,MAAQmL,EAAW,cAAgBc,EAAMjM,OAE1F,MAAMrQ,EAAShe,MAAQs6B,EAAMtc,QAAU2b,EACjCa,EAAWxc,EAAOuc,GACxB,IAAIv2B,EACJ,GAAIi2B,GAAajc,IAAW0b,GAAiC,UAAfY,EAAMjM,KAAkB,CAIlE,MAAMoM,EAAaH,EACnBt2B,EAASw2B,GACLA,EAAShwB,KAAKxK,KAAMy6B,EAAWh1B,QAASg1B,EAAWC,SAAUD,EAAWE,OAAQF,EAAWG,MAAOH,EAAWj6B,QAClG,IAAXwD,GACAs2B,EAAMO,sBAIV72B,EAASw2B,GAAYA,EAASjzB,MAAMvH,KAAMqJ,WAC5BzK,MAAVoF,IAAwBA,GACxBs2B,EAAMO,iBAGd,OAAO72B,GAEX,WAAuBkG,EAAK4wB,EAAM/Q,GAC9B,IAAIgR,EAAOzC,EAA+BpuB,EAAK4wB,GAU/C,IATKC,GAAQhR,GAEauO,EAA+BvO,EAAW+Q,KAE5DC,EAAO,CAAEC,YAAY,EAAM3K,cAAc,KAK5C0K,IAASA,EAAK1K,aACf,OAEJ,MAAM4K,EAAsBzB,EAAW,KAAOsB,EAAO,WACrD,GAAI5wB,EAAIooB,eAAe2I,IAAwB/wB,EAAI+wB,GAC/C,cAOGF,EAAK3K,gBACL2K,EAAKr6B,MACZ,MAAMw6B,EAAkBH,EAAKtqB,IACvB0qB,GAAkBJ,EAAKrqB,IAEvBuN,GAAY6c,EAAKM,OAAO,GAC9B,IAAIb,GAAkBH,EAAqBnc,IACtCsc,KACDA,GAAkBH,EAAqBnc,IAAaub,EAAW,cAAgBvb,KAEnF8c,EAAKrqB,IAAM,SAAU2qB,IAGjB,IAAIrd,GAAShe,MACRge,IAAU9T,IAAQyvB,IACnB3b,GAAS2b,GAER3b,KAGeA,GAAOuc,KAEvBvc,GAAOK,oBAAoBJ,GAAWoc,GAItCc,IACAA,GAAgB5zB,MAAMyW,GAAQ4b,GAEV,mBAAbyB,IACPrd,GAAOuc,IAAmBc,GAC1Brd,GAAOI,iBAAiBH,GAAWoc,GAAQ,IAG3Crc,GAAOuc,IAAmB,OAKlCQ,EAAKtqB,IAAM,WAGP,IAAIuN,GAAShe,KAIb,IAHKge,IAAU9T,IAAQyvB,IACnB3b,GAAS2b,IAER3b,GACD,OAAO,KAEX,MAAMwc,GAAWxc,GAAOuc,IACxB,GAAIC,GACA,OAAOA,GAEN,GAAIU,EAAiB,CAOtB,IAAIx6B,GAAQw6B,GAAmBA,EAAgB1wB,KAAKxK,MACpD,GAAIU,GACAq6B,SAAKrqB,IAAIlG,KAAKxK,KAAMU,IACoB,mBAA7Bsd,GAAOsd,iBACdtd,GAAOud,gBAAgBT,GAEpBp6B,GAGf,OAAO,MAEX23B,EAAqBnuB,EAAK4wB,EAAMC,GAChC7wB,EAAI+wB,IAAuB,EAE/B,WAA2B/wB,EAAK0H,EAAYmY,GACxC,GAAInY,EACA,QAASzE,EAAI,EAAGA,EAAIyE,EAAWzJ,OAAQgF,IACnCquB,EAActxB,EAAK,KAAO0H,EAAWzE,GAAI4c,OAG5C,CACD,MAAM0R,EAAe,GACrB,UAAWX,KAAQ5wB,EACU,MAArB4wB,EAAKM,OAAO,EAAG,IACfK,EAAal5B,KAAKu4B,GAG1B,QAASY,EAAI,EAAGA,EAAID,EAAatzB,OAAQuzB,IACrCF,EAActxB,EAAKuxB,EAAaC,GAAI3R,IAIhD,MAAM4R,EAAsBnC,EAAW,oBAEvC,WAAoBoC,GAChB,MAAMC,EAAgBlC,EAAQiC,GAC9B,IAAKC,EACD,OAEJlC,EAAQH,EAAWoC,IAAcC,EACjClC,EAAQiC,GAAa,WACjB,MAAMj5B,EAAIo1B,EAAc1uB,UAAWuyB,GACnC,OAAQj5B,EAAEwF,aACD,EACDnI,KAAK27B,GAAuB,IAAIE,EAChC,WACC,EACD77B,KAAK27B,GAAuB,IAAIE,EAAcl5B,EAAE,IAChD,WACC,EACD3C,KAAK27B,GAAuB,IAAIE,EAAcl5B,EAAE,GAAIA,EAAE,IACtD,WACC,EACD3C,KAAK27B,GAAuB,IAAIE,EAAcl5B,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC5D,WACC,EACD3C,KAAK27B,GAAuB,IAAIE,EAAcl5B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAClE,cAEA,MAAM,IAAIkP,MAAM,wBAI5B+mB,EAAsBe,EAAQiC,GAAYC,GAC1C,MAAM/gB,EAAW,IAAI+gB,EAAc,cACnC,IAAIf,EACJ,IAAKA,KAAQhgB,EAES,mBAAd8gB,GAA2C,iBAATd,GAErC,SAAUA,GACuB,mBAAnBhgB,EAASggB,GAChBnB,EAAQiC,GAAW7R,UAAU+Q,GAAQ,WACjC,OAAO96B,KAAK27B,GAAqBb,GAAMvzB,MAAMvH,KAAK27B,GAAsBtyB,YAI5EgvB,EAAqBsB,EAAQiC,GAAW7R,UAAW+Q,EAAM,CACrDpqB,IAAK,SAAUya,GACO,mBAAPA,GACPnrB,KAAK27B,GAAqBb,GAAQpC,EAAoBvN,EAAIyQ,EAAY,IAAMd,GAI5ElC,EAAsB54B,KAAK27B,GAAqBb,GAAO3P,IAGvDnrB,KAAK27B,GAAqBb,GAAQ3P,GAG1C1a,IAAK,WACD,OAAOzQ,KAAK27B,GAAqBb,MArBhD,CAyBCA,GAEN,IAAKA,KAAQe,EACI,cAATf,GAAwBe,EAAcvJ,eAAewI,KACrDnB,EAAQiC,GAAWd,GAAQe,EAAcf,IAIrD,WAAqB9c,EAAQxY,EAAMs2B,GAC/B,IAAItL,EAAQxS,EACZ,KAAOwS,IAAUA,EAAM8B,eAAe9sB,IAClCgrB,EAAQwI,EAAqBxI,IAE5BA,GAASxS,EAAOxY,KAEjBgrB,EAAQxS,GAEZ,MAAM+d,EAAevC,EAAWh0B,GAChC,IAAI9G,EAAW,KACf,GAAI8xB,MAAY9xB,EAAW8xB,EAAMuL,MAAmBvL,EAAM8B,eAAeyJ,MACrEr9B,EAAW8xB,EAAMuL,GAAgBvL,EAAMhrB,GAInCw2B,EADSxL,GAAS8H,EAA+B9H,EAAOhrB,KAC9B,CAC1B,MAAMy2B,GAAgBH,EAAQp9B,EAAUq9B,EAAcv2B,GACtDgrB,EAAMhrB,GAAQ,WACV,OAAOy2B,GAAcj8B,KAAMqJ,YAE/BuvB,EAAsBpI,EAAMhrB,GAAO9G,GAG3C,OAAOA,EAGX,WAAwBwL,EAAKgyB,EAAUC,GACnC,IAAIC,EAAY,KAChB,WAAsBpO,GAClB,MAAMI,GAAOJ,EAAKI,KAClBA,UAAK/mB,KAAK+mB,GAAKiO,OAAS,WACpBrO,EAAKc,OAAOvnB,MAAMvH,KAAMqJ,YAE5B+yB,EAAU70B,MAAM6mB,GAAKpQ,OAAQoQ,GAAK/mB,MAC3B2mB,EAEXoO,EAAYvQ,EAAY3hB,EAAKgyB,EAAWx9B,GAAa,SAAUotB,GAAMzkB,IACjE,MAAMhB,GAAO81B,EAAYrQ,GAAMzkB,IAC/B,OAAIhB,GAAKg2B,OAAS,GAAiC,mBAArBh1B,GAAKhB,GAAKg2B,OAC7BC,EAAiCj2B,GAAKb,KAAM6B,GAAKhB,GAAKg2B,OAAQh2B,GAAM4oB,GAIpEvwB,EAAS6I,MAAMukB,GAAMzkB,MAIxC,WAA+Bk1B,EAASC,GACpCD,EAAQ/C,EAAW,qBAAuBgD,EAE9C,IAAIC,IAAqB,EACrBC,IAAW,EAYf,cACI,GAAID,GACA,OAAOC,GAEXD,IAAqB,EACrB,IACI,MAAME,EAAKjD,EAAekD,UAAUC,YACR,IAAxBF,EAAGvS,QAAQ,WAA8C,IAA3BuS,EAAGvS,QAAQ,cAA8C,IAAxBuS,EAAGvS,QAAQ,YAC1EsS,IAAW,SAGZl8B,IAEP,OAAOk8B;;;;;;;SAUXpR,KAAKC,aAAa,mBAAoB,CAACC,EAAQF,EAAMG,KACjD,MAAM6M,EAAiCluB,OAAO2uB,yBACxCV,EAAuBjuB,OAAO4mB,eAQ9BtB,GAAajE,EAAIG,OACjBkR,GAAyB,GACzBC,IAAkH,IAAtEvR,EAAOkE,GAAW,gDAC9D0H,GAAgB1H,GAAW,WAC3B2H,GAAa3H,GAAW,QAE9BjE,EAAItP,iBAAoBrT,KACpB,GAAI2iB,EAAImM,oBAAqB,CACzB,MAAMoF,GAAYl0B,IAAKA,GAAEk0B,UACrBA,GACAC,QAAQz8B,MAAM,+BAAgCw8B,cAAqBnrB,MAAQmrB,GAAUv3B,QAAUu3B,GAAW,UAAWl0B,GAAEujB,KAAK7mB,KAAM,UAAWsD,GAAEklB,MAAQllB,GAAEklB,KAAKrpB,OAAQ,WAAYq4B,GAAWA,cAAqBnrB,MAAQmrB,GAAUzS,WAAQ3rB,GAG5Oq+B,QAAQz8B,MAAMsI,MAI1B2iB,EAAIiM,mBAAqB,KACrB,KAAOoF,GAAuB30B,QAAQ,CAClC,MAAM+0B,GAAuBJ,GAAuB76B,QACpD,IACIi7B,GAAqB7Q,KAAKwG,WAAW,KACjC,MAAIqK,GAAqBC,cACfD,GAAqBF,UAEzBE,WAGP18B,IACH48B,GAAyB58B,OAIrC,MAAM68B,GAA6C3N,GAAW,oCAC9D,YAAkC5mB,IAC9B2iB,EAAItP,iBAAiBrT,IACrB,IACI,MAAMD,GAAUyiB,EAAK+R,IACE,mBAAZx0B,IACPA,GAAQ2B,KAAKxK,KAAM8I,UAGpBxE,MAGX,YAAoB5D,IAChB,OAAOA,IAASA,GAAMgf,KAE1B,YAA2Bhf,IACvB,OAAOA,GAEX,YAA0Bs8B,IACtB,OAAOhL,EAAiBhtB,OAAOg4B,IAEnC,MAAMM,GAAc5N,GAAW,SACzB6N,GAAc7N,GAAW,SACzB8N,GAAgB9N,GAAW,WAC3B+N,GAA2B/N,GAAW,sBACtCgO,GAA2BhO,GAAW,sBAEtCiO,EAAa,KAEbC,GAAW,EAEjB,YAAsBne,GAASxe,IAC3B,OAAQ2N,KACJ,IACIivB,GAAepe,GAASxe,GAAO2N,UAE5BtK,IACHu5B,GAAepe,IAAS,EAAOnb,MAK3C,MAaMw5B,GAA4BpO,GAAW,oBAE7C,YAAwBjQ,GAASxe,GAAOP,IACpC,MAAMq9B,GAhBG,WACT,IAAIC,IAAY,EAChB,OAAO,SAAiBC,IACpB,OAAO,WACCD,KAGJA,IAAY,EACZC,GAAgB12B,MAAM,KAAM8B,cAQhB60B,GACpB,GAAIze,KAAY/e,GACZ,MAAM,IAAI0D,UANC,gCAQf,GAAIqb,GAAQ6d,MAAiBK,EAAY,CAErC,IAAIje,GAAO,KACX,KACyB,iBAAVhf,IAAuC,mBAAVA,MACpCgf,GAAOhf,IAASA,GAAMgf,YAGvBpb,IACHy5B,UAAY,KACRF,GAAepe,IAAS,EAAOnb,KADnCy5B,GAGOte,GAGX,GAAIxe,KAAU28B,GAAYl9B,cAAiBsxB,GACvCtxB,GAAM4xB,eAAegL,KAAgB58B,GAAM4xB,eAAeiL,KAC1D78B,GAAM48B,MAAiBK,EACvBQ,GAAqBz9B,IACrBm9B,GAAepe,GAAS/e,GAAM48B,IAAc58B,GAAM68B,aAE7Ct8B,KAAU28B,GAA4B,mBAATle,GAClC,IACIA,GAAKlV,KAAK9J,GAAOq9B,GAAYK,GAAa3e,GAASxe,KAAS88B,GAAYK,GAAa3e,IAAS,WAE3Fnb,IACHy5B,GAAY,KACRF,GAAepe,IAAS,EAAOnb,KADnCy5B,OAKH,CACDte,GAAQ6d,IAAer8B,GACvB,MAAMO,GAAQie,GAAQ8d,IAatB,GAZA9d,GAAQ8d,IAAe78B,GACnB+e,GAAQ+d,MAAmBA,KArE1B,IAuEGv8B,KAGAwe,GAAQ6d,IAAe7d,GAAQie,IAC/Bje,GAAQ8d,IAAe9d,GAAQge,KAKnCx8B,KAAU28B,GAAYl9B,cAAiBmR,MAAO,CAE9C,MAAMwsB,GAAQ/S,EAAK6G,aAAe7G,EAAK6G,YAAY/D,MAC/C9C,EAAK6G,YAAY/D,KAAKkQ,kBACtBD,IAEAhG,EAAqB33B,GAAOo9B,GAA2B,CAAEzN,cAAc,EAAM2K,YAAY,EAAO5K,UAAU,EAAM1vB,MAAO29B,KAG/H,QAASlxB,GAAI,EAAGA,GAAI3L,GAAM2G,QACtBo2B,GAAwB9e,GAASje,GAAM2L,MAAM3L,GAAM2L,MAAM3L,GAAM2L,MAAM3L,GAAM2L,OAE/E,GAAoB,GAAhB3L,GAAM2G,QAAelH,IAAS28B,EAAU,CACxCne,GAAQ6d,IA3FE,EA4FV,IAAIJ,GAAuBx8B,GAC3B,IAII,MAAM,IAAImR,MAAM,0BAvKpC,WAAgC3H,IAC5B,OAAIA,IAAOA,GAAIyf,WAAavf,OAAO2f,UAAUJ,UACvBzf,GAAInK,aAAemK,GAAInK,YAAYyF,MACrB,IAAM,KAAOg5B,KAAKC,UAAUv0B,IAEzDA,GAAMA,GAAIyf,WAAavf,OAAO2f,UAAUJ,SAASnf,KAAKN,IAkKDw0B,CAAuBh+B,KAC9DA,IAASA,GAAM6pB,MAAQ,KAAO7pB,GAAM6pB,MAAQ,WAE9CjmB,IACH44B,GAAuB54B,GAEvBy4B,KAGAG,GAAqBC,eAAgB,GAEzCD,GAAqBF,UAAYt8B,GACjCw8B,GAAqBzd,QAAUA,GAC/Byd,GAAqB7Q,KAAOf,EAAKlW,QACjC8nB,GAAqBlP,KAAO1C,EAAK6G,YACjC2K,GAAuBv6B,KAAK26B,IAC5BzR,EAAIsI,sBAKhB,OAAOtU,GAEX,MAAMkf,GAA4BjP,GAAW,2BAC7C,YAA8BjQ,IAC1B,GA1HsB,IA0HlBA,GAAQ6d,IAAoC,CAM5C,IACI,MAAMz0B,GAAUyiB,EAAKqT,IACjB91B,IAA8B,mBAAZA,IAClBA,GAAQ2B,KAAKxK,KAAM,CAAEg9B,UAAWvd,GAAQ8d,IAAc9d,QAASA,WAGhEnb,KAEPmb,GAAQ6d,IAAeM,EACvB,QAASzwB,GAAI,EAAGA,GAAI2vB,GAAuB30B,OAAQgF,KAC3CsS,KAAYqd,GAAuB3vB,IAAGsS,SACtCqd,GAAuB3jB,OAAOhM,GAAG,IAKjD,YAAiCsS,GAAS4M,GAAMuS,GAAcC,GAAaC,IACvEX,GAAqB1e,IACrB,MAAMsf,GAAetf,GAAQ6d,IACvB5+B,GAAWqgC,GACW,mBAAhBF,GAA8BA,GAAcG,GAC7B,mBAAfF,GAA6BA,GAAaG,GACtD5S,GAAK0H,kBA1JM,eA0JoB,KAC3B,IACI,MAAMmL,GAAqBzf,GAAQ8d,IAC7B4B,KAAqBP,IAAgBpB,KAAkBoB,GAAapB,IACtE2B,KAEAP,GAAanB,IAA4ByB,GACzCN,GAAalB,IAA4BqB,IAG7C,MAAMr+B,GAAQ2rB,GAAK7sB,IAAId,QAAUE,EAAWugC,IAAoBzgC,KAAaugC,IAAoBvgC,KAAasgC,GAC1G,GACA,CAACE,KACLrB,GAAee,IAAc,EAAMl+B,UAEhCF,IAEHq9B,GAAee,IAAc,EAAOp+B,MAEzCo+B,IAEP,MACM50B,GAAO,aACb,QAAuBo1B,kBAEf,MAJ6B,gDAItBC,eAEI3+B,IACX,OAAOm9B,GAAe,IAAI79B,KAAK,OApLtB,EAoLuCU,kBAEtCF,IACV,OAAOq9B,GAAe,IAAI79B,KAAK,MAAO49B,EAAUp9B,gBAExCwO,IACR,IAAIjK,GACAC,GACAya,GAAU,IAAIzf,KAAK,CAACs/B,GAAKC,MACzBx6B,GAAUu6B,GACVt6B,GAASu6B,KAEb,YAAmB7+B,IACfqE,GAAQrE,IAEZ,YAAkBF,IACdwE,GAAOxE,IAEX,QAASE,MAASsO,GACTwwB,GAAW9+B,MACZA,GAAQV,KAAK+E,QAAQrE,KAEzBA,GAAMgf,KAAK+f,GAAWC,IAE1B,OAAOjgB,cAEAzQ,IACP,OAAOgjB,EAAiB2N,gBAAgB3wB,sBAE1BA,IAEd,OADUhP,MAAQA,KAAK+pB,qBAAqBiI,EAAmBhyB,KAAOgyB,GAC7D2N,gBAAgB3wB,GAAQ,CAC7B4wB,aAAel/B,KAAW,CAAEm/B,OAAQ,YAAan/B,WACjDo/B,cAAgBx7B,KAAS,CAAEu7B,OAAQ,WAAYE,OAAQz7B,8BAGxC0K,GAAQsU,IAC3B,IAAIve,GACAC,GACAya,GAAU,IAAIzf,KAAK,CAACs/B,GAAKC,MACzBx6B,GAAUu6B,GACVt6B,GAASu6B,KAGTS,GAAkB,EAClBrrB,GAAa,EACjB,MAAMsrB,GAAiB,GACvB,QAASv/B,MAASsO,GAAQ,CACjBwwB,GAAW9+B,MACZA,GAAQV,KAAK+E,QAAQrE,KAEzB,MAAMw/B,GAAgBvrB,GACtB,IACIjU,GAAMgf,KAAMhf,KACRu/B,GAAeC,IAAiB5c,GAAWA,GAASsc,aAAal/B,IAASA,GAC1Es/B,KACwB,IAApBA,IACAj7B,GAAQk7B,KAEZ37B,KACKgf,IAID2c,GAAeC,IAAiB5c,GAASwc,cAAcx7B,IACvD07B,KACwB,IAApBA,IACAj7B,GAAQk7B,KANZj7B,GAAOV,YAWZ67B,IACHn7B,GAAOm7B,IAEXH,KACArrB,KAGJqrB,WAAmB,EACK,IAApBA,IACAj7B,GAAQk7B,IAELxgB,GAEX1f,YAAYqgC,IACR,MAAM3gB,GAAUzf,KAChB,KAAMyf,cAAmBuS,GACrB,MAAM,IAAIngB,MAAM,kCAEpB4N,GAAQ6d,IAAeK,EACvBle,GAAQ8d,IAAe,GACvB,IACI6C,IAAYA,GAAShC,GAAa3e,IAjR7B,GAiRiD2e,GAAa3e,GAASme,UAEzEp9B,IACHq9B,GAAepe,IAAS,EAAOjf,KAG3B6/B,IAAPpZ,OAAOoZ,eACR,MAAO,UAECC,IAAPrZ,OAAOqZ,WACR,OAAOtO,EAEXtS,KAAKmf,GAAaC,IACd,IAAIyB,GAAIvgC,KAAKD,YAAYknB,OAAOqZ,WAC3BC,IAAkB,mBAANA,MACbA,GAAIvgC,KAAKD,aAAeiyB,GAE5B,MAAM4M,GAAe,IAAI2B,GAAEv2B,IACrBqiB,GAAOf,EAAKlW,QAClB,OAAIpV,KAAKs9B,KAAgBK,EACrB39B,KAAKu9B,IAAah7B,KAAK8pB,GAAMuS,GAAcC,GAAaC,IAGxDP,GAAwBv+B,KAAMqsB,GAAMuS,GAAcC,GAAaC,IAE5DF,GAEXje,MAAMme,IACF,OAAO9+B,KAAK0f,KAAK,KAAMof,IAE3B0B,QAAQC,IACJ,IAAIF,GAAIvgC,KAAKD,YAAYknB,OAAOqZ,WAC3BC,IAAkB,mBAANA,MACbA,GAAIvO,GAER,MAAM4M,GAAe,IAAI2B,GAAEv2B,IAC3B40B,GAAapB,IAAiBA,GAC9B,MAAMnR,GAAOf,EAAKlW,QAClB,OAAIpV,KAAKs9B,KAAgBK,EACrB39B,KAAKu9B,IAAah7B,KAAK8pB,GAAMuS,GAAc6B,GAAWA,IAGtDlC,GAAwBv+B,KAAMqsB,GAAMuS,GAAc6B,GAAWA,IAE1D7B,IAKf5M,EAAiBjtB,QAAaitB,EAAiBjtB,QAC/CitB,EAAiBhtB,OAAYgtB,EAAiBhtB,OAC9CgtB,EAAiB0O,KAAU1O,EAAiB0O,KAC5C1O,EAAiB2O,IAAS3O,EAAiB2O,IAC3C,MAAMC,EAAgBpV,EAAO4L,IAAiB5L,EAAO1mB,QACrD0mB,EAAO1mB,QAAaktB,EACpB,MAAM6O,GAAoBnR,GAAW,eACrC,YAAmBoR,IACf,MAAMtQ,GAAQsQ,GAAK/W,UACb+Q,GAAOxC,EAA+B9H,GAAO,QACnD,GAAIsK,MAA2B,IAAlBA,GAAK1K,WAAuB0K,GAAKzK,cAG1C,OAEJ,MAAM0Q,GAAevQ,GAAM9Q,KAE3B8Q,GAAM6G,IAAc0J,GACpBD,GAAK/W,UAAUrK,KAAO,SAAU+f,GAAWC,IAIvC,OAAOsB,IAHahP,EAAiB,CAACjtB,GAASC,MAC3C+7B,GAAav2B,KAAKxK,KAAM+E,GAASC,MAEtB0a,KAAK+f,GAAWC,KAEnCoB,GAAKD,KAAqB,EAgB9B,OAdApV,EAAIuM,UAAYA,GAcZ4I,IACA5I,GAAU4I,GACV/U,EAAYL,EAAQ,QAAS9sB,IAfjC,YAAiBysB,IACb,OAAO,SAAUW,GAAMzkB,IACnB,IAAI45B,GAAgB9V,GAAG5jB,MAAMukB,GAAMzkB,IACnC,GAAI45B,cAAyBjP,EACzB,OAAOiP,GAEX,IAAIC,GAAOD,GAAclhC,YACzB,OAAKmhC,GAAKL,KACN7I,GAAUkJ,IAEPD,IAK8BE,CAAQziC,MAGrDoG,QAAQwmB,EAAKoE,WAAW,0BAA4BoN,GAC7C9K;;;;;;;;AAYX1G,KAAKC,aAAa,WAAaC,IAE3B,MAAM4V,EAA2BC,SAAStX,UAAUJ,SAC9C2X,EAA2B9H,EAAW,oBACtC+H,EAAiB/H,EAAW,WAC5BgI,EAAehI,EAAW,SAC1BiI,EAAsB,WACxB,GAAoB,mBAATzhC,KAAqB,CAC5B,MAAM0hC,GAAmB1hC,KAAKshC,GAC9B,GAAII,GACA,MAAgC,mBAArBA,GACAN,EAAyB52B,KAAKk3B,IAG9Bt3B,OAAO2f,UAAUJ,SAASnf,KAAKk3B,IAG9C,GAAI1hC,OAAS8E,QAAS,CAClB,MAAM68B,GAAgBnW,EAAO+V,GAC7B,GAAII,GACA,OAAOP,EAAyB52B,KAAKm3B,IAG7C,GAAI3hC,OAAS6R,MAAO,CAChB,MAAM+vB,GAAcpW,EAAOgW,GAC3B,GAAII,GACA,OAAOR,EAAyB52B,KAAKo3B,KAIjD,OAAOR,EAAyB52B,KAAKxK,OAEzCyhC,EAAoBH,GAA4BF,EAChDC,SAAStX,UAAUJ,SAAW8X,EAE9B,MAAMI,GAAyBz3B,OAAO2f,UAAUJ,SAEhDvf,OAAO2f,UAAUJ,SAAW,WACxB,MAAuB,mBAAZ7kB,SAA0B9E,gBAAgB8E,QAFxB,mBAKtB+8B,GAAuBr3B,KAAKxK;;;;;;;;AAW3C,IAAI8hC,IAAmB,EACvB,GAAsB,oBAAX3rB,OACP,IACI,MAAM+H,EAAU9T,OAAO4mB,eAAe,GAAI,UAAW,CACjDvgB,IAAK,WACDqxB,IAAmB,KAG3B3rB,OAAOiI,iBAAiB,OAAQF,EAASA,GACzC/H,OAAOkI,oBAAoB,OAAQH,EAASA,SAEzC5Z,GACHw9B,IAAmB,EAI3B,MAAMC,GAAiC,CACnCrL,MAAM,GAEJsL,GAAyB,GACzBC,GAAgB,GAChBC,GAAyB,IAAIC,OAAO,IAAM5I,EAAqB,uBAC/D6I,GAA+B5I,EAAW,sBAChD,YAA2Bvb,EAAWokB,GAClC,MAAMC,GAAkBD,EAAoBA,EAAkBpkB,GAAaA,GAAaqb,EAClFiJ,GAAiBF,EAAoBA,EAAkBpkB,GAAaA,GAAaob,EACjFzN,EAAS2N,EAAqB+I,EAC9BE,EAAgBjJ,EAAqBgJ,EAC3CP,GAAuB/jB,GAAa,GACpC+jB,GAAuB/jB,GAAWqb,GAAa1N,EAC/CoW,GAAuB/jB,GAAWob,GAAYmJ,EAElD,YAA0B7I,EAAS8I,EAAMC,GACrC,MAAMC,EAAsBD,GAAgBA,EAAa7iC,KAAQo5B,EAC3D2J,EAAyBF,GAAgBA,EAAaG,IAAO3J,EAC7D4J,EAA4BJ,GAAgBA,EAAaK,WAAc,iBACvEC,GAAuCN,GAAgBA,EAAaO,OAAU,qBAC9EC,GAA6B1J,EAAWmJ,GACxCQ,GAA4B,IAAMR,EAAqB,IAGvDxT,GAAa,SAAUnB,GAAMhQ,GAAQsc,IAGvC,GAAItM,GAAKoV,UACL,OAEJ,MAAM1kC,GAAWsvB,GAAK1K,SACE,iBAAb5kB,IAAyBA,GAAS2kC,cAEzCrV,GAAK1K,SAAYgX,IAAU57B,GAAS2kC,YAAY/I,IAChDtM,GAAK0T,iBAAmBhjC,IAG5BsvB,GAAKc,OAAOd,GAAMhQ,GAAQ,CAACsc,KAC3B,MAAMpc,GAAU8P,GAAK9P,QACjBA,IAA8B,iBAAZA,IAAwBA,GAAQggB,MAKlDlgB,GAAO4kB,GAAuBp4B,KAAKwT,GAAQsc,GAAMjM,KADhCL,GAAK0T,iBAAmB1T,GAAK0T,iBAAmB1T,GAAK1K,SACLpF,KAInEolB,GAA0B,SAAUhJ,IAItC,KADAA,GAAQA,IAASX,EAAQW,OAErB,OAIJ,MAAMtc,GAAShe,MAAQs6B,GAAMtc,QAAU2b,EACjC5M,GAAQ/O,GAAOgkB,GAAuB1H,GAAMjM,MAAMiL,IACxD,GAAIvM,GAGA,GAAqB,IAAjBA,GAAM5kB,OACNgnB,GAAWpC,GAAM,GAAI/O,GAAQsc,QAE5B,CAID,MAAMiJ,GAAYxW,GAAM1gB,QACxB,QAASc,GAAI,EAAGA,GAAIo2B,GAAUp7B,UACtBmyB,KAAiD,IAAxCA,GAAM8H,KADej1B,KAIlCgiB,GAAWoU,GAAUp2B,IAAI6Q,GAAQsc,MAM3CkJ,GAAiC,SAAUlJ,IAI7C,KADAA,GAAQA,IAASX,EAAQW,OAErB,OAIJ,MAAMtc,GAAShe,MAAQs6B,GAAMtc,QAAU2b,EACjC5M,GAAQ/O,GAAOgkB,GAAuB1H,GAAMjM,MAAMgL,IACxD,GAAItM,GAGA,GAAqB,IAAjBA,GAAM5kB,OACNgnB,GAAWpC,GAAM,GAAI/O,GAAQsc,QAE5B,CAID,MAAMiJ,GAAYxW,GAAM1gB,QACxB,QAASc,GAAI,EAAGA,GAAIo2B,GAAUp7B,UACtBmyB,KAAiD,IAAxCA,GAAM8H,KADej1B,KAIlCgiB,GAAWoU,GAAUp2B,IAAI6Q,GAAQsc,MAKjD,YAAiCpwB,GAAKw4B,IAClC,IAAKx4B,GACD,OAAO,EAEX,IAAIu5B,IAAoB,EACpBf,SAAsC9jC,IAAtB8jC,GAAahM,OAC7B+M,GAAoBf,GAAahM,MAErC,MAAMgN,GAAkBhB,IAAgBA,GAAaiB,GACrD,IAAIlS,IAAiB,EACjBiR,SAAwC9jC,IAAxB8jC,GAAakB,SAC7BnS,GAAiBiR,GAAakB,QAElC,IAAIC,IAAe,EACfnB,SAAoC9jC,IAApB8jC,GAAaoB,KAC7BD,GAAenB,GAAaoB,IAEhC,IAAItT,GAAQtmB,GACZ,KAAOsmB,KAAUA,GAAM8B,eAAeqQ,IAClCnS,GAAQwI,EAAqBxI,IASjC,IAPKA,IAAStmB,GAAIy4B,KAEdnS,GAAQtmB,KAEPsmB,IAGDA,GAAM0S,IACN,OAAO,EAEX,MAAMb,EAAoBK,IAAgBA,GAAaL,kBAGjD0B,GAAW,GACXC,EAAyBxT,GAAM0S,IAA8B1S,GAAMmS,GACnEsB,EAA4BzT,GAAMgJ,EAAWoJ,IAC/CpS,GAAMoS,GACJsB,GAAkB1T,GAAMgJ,EAAWsJ,IACrCtS,GAAMsS,GACJqB,GAA2B3T,GAAMgJ,EAAWwJ,KAC9CxS,GAAMwS,IACV,IAAIoB,GASJ,YAAmClmB,GAASmmB,IACxC,OAAKvC,IAAuC,iBAAZ5jB,IAAwBA,KAI3CA,GAAQomB,QAEhBxC,IAAqBuC,GAGH,kBAAZnmB,GACA,CAAEomB,QAASpmB,GAASmmB,SAAS,GAEnCnmB,GAGkB,iBAAZA,KAA4C,IAApBA,GAAQmmB,QAChCj6B,OAAOm6B,OAAOn6B,OAAOm6B,OAAO,GAAIrmB,IAAU,CAAEmmB,SAAS,IAEzDnmB,GALI,CAAEmmB,SAAS,GANXnmB,GAhBXwkB,IAAgBA,GAAa8B,UAC7BJ,GAA6B5T,GAAMgJ,EAAWkJ,GAAa8B,UACvDhU,GAAMkS,GAAa8B,UA2B3B,MAsDMxQ,GAAiByP,GAtDM,SAAUzV,IAGnC,IAAI+V,GAASU,WAGb,OAAOT,EAAuBx5B,KAAKu5B,GAAS/lB,OAAQ+lB,GAAS9lB,UAAW8lB,GAASO,QAAUd,GAAiCF,GAAyBS,GAAS7lB,UAuClI,SAAU8P,IACtC,OAAOgW,EAAuBx5B,KAAKu5B,GAAS/lB,OAAQ+lB,GAAS9lB,UAAW+P,GAAKc,OAAQiV,GAAS7lB,UAS5FiW,EAAesP,GA/CM,SAAUzV,IAIjC,IAAKA,GAAKoV,UAAW,CACjB,MAAMsB,GAAmB1C,GAAuBhU,GAAK/P,WACrD,IAAI0mB,GACAD,KACAC,GAAkBD,GAAiB1W,GAAKsW,QAAUjL,EAAWC,IAEjE,MAAMsL,GAAgBD,IAAmB3W,GAAKhQ,OAAO2mB,IACrD,GAAIC,GACA,QAASz3B,GAAI,EAAGA,GAAIy3B,GAAcz8B,OAAQgF,KAEtC,GADqBy3B,GAAcz3B,MACd6gB,GAAM,CACvB4W,GAAczrB,OAAOhM,GAAG,GAExB6gB,GAAKoV,WAAY,EACY,IAAzBwB,GAAcz8B,SAGd6lB,GAAK6W,YAAa,EAClB7W,GAAKhQ,OAAO2mB,IAAmB,MAEnC,OAQhB,GAAK3W,GAAK6W,WAGV,OAAOZ,EAA0Bz5B,KAAKwjB,GAAKhQ,OAAQgQ,GAAK/P,UAAW+P,GAAKsW,QAAUd,GAAiCF,GAAyBtV,GAAK9P,UAQvH,SAAU8P,IACpC,OAAOiW,EAA0Bz5B,KAAKwjB,GAAKhQ,OAAQgQ,GAAK/P,UAAW+P,GAAKc,OAAQd,GAAK9P,UASnFkF,GAAWsf,IAAgBA,GAAaoC,KAAQpC,GAAaoC,KAL7B,SAAU9W,GAAMtvB,IAClD,MAAMqmC,UAAwBrmC,GAC9B,MAA2B,aAAnBqmC,IAAiC/W,GAAK1K,WAAa5kB,IACnC,WAAnBqmC,IAA+B/W,GAAK0T,mBAAqBhjC,IAG5DsmC,GAAkB1Z,KAAKkO,EAAW,qBAClCyL,GAAgBtL,EAAQH,EAAW,mBACnC0L,GAAkB,SAAUC,GAAgBC,GAAWC,GAAkBC,GAAgBzB,IAAe,EAAOW,IAAU,GAC3H,OAAO,WACH,MAAMxmB,GAAShe,MAAQ25B,EACvB,IAAI1b,GAAY5U,UAAU,GACtBq5B,IAAgBA,GAAa6C,oBAC7BtnB,GAAYykB,GAAa6C,kBAAkBtnB,KAE/C,IAAIvf,GAAW2K,UAAU,GACzB,IAAK3K,GACD,OAAOymC,GAAe59B,MAAMvH,KAAMqJ,WAEtC,GAAI2wB,GAAwB,sBAAd/b,GAEV,OAAOknB,GAAe59B,MAAMvH,KAAMqJ,WAKtC,IAAIm8B,IAAgB,EACpB,GAAwB,mBAAb9mC,GAAyB,CAChC,IAAKA,GAAS2kC,YACV,OAAO8B,GAAe59B,MAAMvH,KAAMqJ,WAEtCm8B,IAAgB,EAEpB,GAAI9B,KAAoBA,GAAgByB,GAAgBzmC,GAAUsf,GAAQ3U,WACtE,OAEJ,MAAMg7B,GAAUvC,MAAsBmD,KAAsD,IAArCA,GAAc7a,QAAQnM,IACvEC,GAAUunB,GAA0Bp8B,UAAU,GAAIg7B,IACxD,GAAIW,GAEA,QAAS73B,GAAI,EAAGA,GAAI63B,GAAgB78B,OAAQgF,KACxC,GAAI8Q,KAAc+mB,GAAgB73B,IAC9B,OAAIk3B,GACOc,GAAe36B,KAAKwT,GAAQC,GAAWvf,GAAUwf,IAGjDinB,GAAe59B,MAAMvH,KAAMqJ,WAKlD,MAAMi7B,KAAUoB,KAAsC,kBAAZxnB,IAA+BA,GAAQomB,SAC3EpG,MAAOhgB,IAA8B,iBAAZA,KAAuBA,GAAQggB,KACxD7R,GAAOf,KAAKlW,QAClB,IAAIsvB,GAAmB1C,GAAuB/jB,IACzCymB,KACDiB,GAAkB1nB,GAAWokB,GAC7BqC,GAAmB1C,GAAuB/jB,KAE9C,MAAM0mB,GAAkBD,GAAiBJ,GAAUjL,EAAWC,GAC9D,IAiBI30B,GAjBAigC,GAAgB5mB,GAAO2mB,IACvBF,IAAa,EACjB,GAAIG,IAGA,GADAH,IAAa,EACThT,GACA,QAAStkB,GAAI,EAAGA,GAAIy3B,GAAcz8B,OAAQgF,KACtC,GAAIiW,GAAQwhB,GAAcz3B,IAAIzO,IAE1B,YAMZkmC,GAAgB5mB,GAAO2mB,IAAmB,GAG9C,MAAMiB,GAAkB5nB,GAAOje,YAAYyF,KACrCqgC,GAAe5D,GAAc2D,IAC/BC,KACAlhC,GAASkhC,GAAa5nB,KAErBtZ,KACDA,GAASihC,GAAkBR,IACtB/C,EAAoBA,EAAkBpkB,IAAaA,KAI5D8lB,GAAS7lB,QAAUA,GACfggB,KAIA6F,GAAS7lB,QAAQggB,MAAO,GAE5B6F,GAAS/lB,OAASA,GAClB+lB,GAASO,QAAUA,GACnBP,GAAS9lB,UAAYA,GACrB8lB,GAASU,WAAaA,GACtB,MAAMrW,GAAOqV,GAAoB1B,QAAiCnjC,EAE9DwvB,KACAA,GAAK2V,SAAWA,IAEpB,MAAM/V,GAAO3B,GAAK+H,kBAAkBzvB,GAAQjG,GAAU0vB,GAAMiX,GAAkBC,IA+B9E,OA5BAvB,GAAS/lB,OAAS,KAEdoQ,KACAA,GAAK2V,SAAW,MAIhB7F,KACAhgB,GAAQggB,MAAO,IAEZ4D,IAA4C,kBAAjB9T,GAAK9P,UAGnC8P,GAAK9P,QAAUA,IAEnB8P,GAAKhQ,OAASA,GACdgQ,GAAKsW,QAAUA,GACftW,GAAK/P,UAAYA,GACbunB,KAEAxX,GAAK0T,iBAAmBhjC,IAE5BonC,GAIIlB,GAAcmB,QAAQ/X,IAHtB4W,GAAcriC,KAAKyrB,IAKnB6V,GACO7lB,QADX,IAKRwS,UAAMmS,GAAsBuC,GAAgBlB,EAAwBb,GAA2BnP,GAAgBG,EAAc0P,IACzHO,KACA5T,GAAMwV,gBAA0Bd,GAAgBd,GAvWlB,oBAgNJ,SAAUpW,IACpC,OAAOoW,GAA2B55B,KAAKu5B,GAAS/lB,OAAQ+lB,GAAS9lB,UAAW+P,GAAKc,OAAQiV,GAAS7lB,UAsJgCiW,EAAc0P,IAAc,IAElKrT,GAAMoS,GAAyB,WAC3B,MAAM5kB,GAAShe,MAAQ25B,EACvB,IAAI1b,GAAY5U,UAAU,GACtBq5B,IAAgBA,GAAa6C,oBAC7BtnB,GAAYykB,GAAa6C,kBAAkBtnB,KAE/C,MAAMC,GAAU7U,UAAU,GACpBi7B,KAAWpmB,KAAqC,kBAAZA,IAA+BA,GAAQomB,SAC3E5lC,GAAW2K,UAAU,GAC3B,IAAK3K,GACD,OAAOulC,EAA0B18B,MAAMvH,KAAMqJ,WAEjD,GAAIq6B,KACCA,GAAgBO,EAA2BvlC,GAAUsf,GAAQ3U,WAC9D,OAEJ,MAAMq7B,GAAmB1C,GAAuB/jB,IAChD,IAAI0mB,GACAD,KACAC,GAAkBD,GAAiBJ,GAAUjL,EAAWC,IAE5D,MAAMsL,GAAgBD,IAAmB3mB,GAAO2mB,IAChD,GAAIC,GACA,QAASz3B,GAAI,EAAGA,GAAIy3B,GAAcz8B,OAAQgF,KAAK,CAC3C,MAAM84B,GAAerB,GAAcz3B,IACnC,GAAIiW,GAAQ6iB,GAAcvnC,IAkBtB,OAjBAkmC,GAAczrB,OAAOhM,GAAG,GAExB84B,GAAa7C,WAAY,EACI,IAAzBwB,GAAcz8B,SAGd89B,GAAapB,YAAa,EAC1B7mB,GAAO2mB,IAAmB,KAID,iBAAd1mB,MAEPD,GADyBub,EAAqB,cAAgBtb,IACnC,MAGnCgoB,GAAa5Z,KAAKgD,WAAW4W,IACzBpC,GACO7lB,QAEX,EAQZ,OAAOimB,EAA0B18B,MAAMvH,KAAMqJ,YAEjDmnB,GAAMsS,GAA4B,WAC9B,MAAM9kB,GAAShe,MAAQ25B,EACvB,IAAI1b,GAAY5U,UAAU,GACtBq5B,IAAgBA,GAAa6C,oBAC7BtnB,GAAYykB,GAAa6C,kBAAkBtnB,KAE/C,MAAM8kB,GAAY,GACZhW,GAAQmZ,GAAeloB,GAAQqkB,EAAoBA,EAAkBpkB,IAAaA,IACxF,QAAS9Q,GAAI,EAAGA,GAAI4f,GAAM5kB,OAAQgF,KAAK,CACnC,MAAM6gB,GAAOjB,GAAM5f,IAEnB41B,GAAUxgC,KADKyrB,GAAK0T,iBAAmB1T,GAAK0T,iBAAmB1T,GAAK1K,UAGxE,OAAOyf,IAEXvS,GAAMwS,IAAuC,WACzC,MAAMhlB,GAAShe,MAAQ25B,EACvB,IAAI1b,GAAY5U,UAAU,GAC1B,GAAK4U,GAiBA,CACGykB,IAAgBA,GAAa6C,oBAC7BtnB,GAAYykB,GAAa6C,kBAAkBtnB,KAE/C,MAAMymB,GAAmB1C,GAAuB/jB,IAChD,GAAIymB,GAAkB,CAClB,MAEM3X,GAAQ/O,GAFU0mB,GAAiBpL,IAGnC6M,GAAenoB,GAFU0mB,GAAiBrL,IAGhD,GAAItM,GAAO,CACP,MAAMqZ,GAAcrZ,GAAM1gB,QAC1B,QAASc,GAAI,EAAGA,GAAIi5B,GAAYj+B,OAAQgF,KAAK,CACzC,MAAM6gB,GAAOoY,GAAYj5B,IAEzBnN,KAAK4iC,GAAuBp4B,KAAKxK,KAAMie,GADxB+P,GAAK0T,iBAAmB1T,GAAK0T,iBAAmB1T,GAAK1K,SACR0K,GAAK9P,UAGzE,GAAIioB,GAAc,CACd,MAAMC,GAAcD,GAAa95B,QACjC,QAASc,GAAI,EAAGA,GAAIi5B,GAAYj+B,OAAQgF,KAAK,CACzC,MAAM6gB,GAAOoY,GAAYj5B,IAEzBnN,KAAK4iC,GAAuBp4B,KAAKxK,KAAMie,GADxB+P,GAAK0T,iBAAmB1T,GAAK0T,iBAAmB1T,GAAK1K,SACR0K,GAAK9P,gBAxCjE,CACZ,MAAMlB,GAAO5S,OAAO4S,KAAKgB,IACzB,QAAS7Q,GAAI,EAAGA,GAAI6P,GAAK7U,OAAQgF,KAAK,CAClC,MACMk5B,GAAQnE,GAAuBoE,KADxBtpB,GAAK7P,KAElB,IAAIo5B,GAAUF,IAASA,GAAM,GAKzBE,IAAuB,mBAAZA,IACXvmC,KAAKgjC,IAAqCx4B,KAAKxK,KAAMumC,IAI7DvmC,KAAKgjC,IAAqCx4B,KAAKxK,KAAM,kBA8BzD,GAAI6jC,GACA,OAAO7jC,MAIf44B,EAAsBpI,GAAMmS,GAAqBqB,GACjDpL,EAAsBpI,GAAMoS,GAAwBqB,GAChDE,IACAvL,EAAsBpI,GAAMwS,IAAsCmB,IAElED,IACAtL,EAAsBpI,GAAMsS,GAA2BoB,KAEpD,EAEX,IAAIh8B,GAAU,GACd,QAASiF,GAAI,EAAGA,GAAIs1B,EAAKt6B,OAAQgF,KAC7BjF,GAAQiF,IAAKq5B,GAAwB/D,EAAKt1B,IAAIu1B,GAElD,OAAOx6B,GAEX,YAAwB8V,EAAQC,GAC5B,IAAKA,EAAW,CACZ,MAAMwoB,EAAa,GACnB,QAAS3L,MAAQ9c,EAAQ,CACrB,MAAMqoB,GAAQnE,GAAuBoE,KAAKxL,IAC1C,IAAIyL,GAAUF,IAASA,GAAM,GAC7B,GAAIE,MAAatoB,GAAasoB,KAAYtoB,GAAY,CAClD,MAAM8O,GAAQ/O,EAAO8c,IACrB,GAAI/N,GACA,QAAS5f,GAAI,EAAGA,GAAI4f,GAAM5kB,OAAQgF,KAC9Bs5B,EAAWlkC,KAAKwqB,GAAM5f,MAKtC,OAAOs5B,EAEX,IAAI9B,EAAkB3C,GAAuB/jB,GACxC0mB,IACDgB,GAAkB1nB,GAClB0mB,EAAkB3C,GAAuB/jB,IAE7C,MAAMyoB,EAAoB1oB,EAAO2mB,EAAgBrL,IAC3CqN,EAAmB3oB,EAAO2mB,EAAgBtL,IAChD,OAAKqN,EAIMC,EAAmBD,EAAkBn4B,OAAOo4B,GAC/CD,EAAkBr6B,QAJfs6B,EAAmBA,EAAiBt6B,QAAU,GAO7D,YAA6Bmf,EAAQC,GACjC,MAAMmb,EAAQpb,EAAOob,MACjBA,GAASA,EAAM7c,WACf0B,EAAII,YAAY+a,EAAM7c,UAAW,2BAA6BrrB,GAAa,SAAUotB,EAAMzkB,GACvFykB,EAAKsW,KAAgC,EAIrC1jC,GAAYA,EAAS6I,MAAMukB,EAAMzkB;;;;;;;SAY7C,YAAwBokB,EAAKzN,EAAQ6oB,EAAYC,EAAQC,GACrD,MAAMnb,EAASN,KAAKoE,WAAWoX,GAC/B,GAAI9oB,EAAO4N,GACP,OAEJ,MAAMob,GAAiBhpB,EAAO4N,GAAU5N,EAAO8oB,GAC/C9oB,EAAO8oB,GAAU,SAAUthC,GAAMyhC,GAAM/oB,IACnC,OAAI+oB,IAAQA,GAAKld,WACbgd,EAAU72B,QAAQ,SAAUoT,IACxB,MAAM3e,GAAU,GAAEkiC,KAAcC,MAAaxjB,GACvCyG,GAAYkd,GAAKld,UACvB,GAAIA,GAAUuI,eAAehP,IAAW,CACpC,MAAM4jB,GAAazb,EAAI6M,+BAA+BvO,GAAWzG,IAC7D4jB,IAAcA,GAAWxmC,OACzBwmC,GAAWxmC,MAAQ+qB,EAAIiN,oBAAoBwO,GAAWxmC,MAAOiE,IAC7D8mB,EAAIoN,kBAAkBoO,GAAKld,UAAWzG,GAAU4jB,KAE3Cnd,GAAUzG,MACfyG,GAAUzG,IAAYmI,EAAIiN,oBAAoB3O,GAAUzG,IAAW3e,UAGlEolB,GAAUzG,MACfyG,GAAUzG,IAAYmI,EAAIiN,oBAAoB3O,GAAUzG,IAAW3e,OAIxEqiC,GAAex8B,KAAKwT,EAAQxY,GAAMyhC,GAAM/oB,KAEnDuN,EAAImN,sBAAsB5a,EAAO8oB,GAASE;;;;;;;SAU9C,MAwGMG,GAAmB,CACrB,4BACA,aACA,aACA,eACA,sBACA,cACA,eACA,cACA,eACA,oBACA,4BACA,kBACA,aACA,iBACA,UACA,iBACA,UACA,SACA,QACA,WACA,WACA,WACA,mBACA,UACA,qBACA,SACA,gBACA,qBACA,wBACA,0BAOEC,GAAyB,CAAC,YAAa,gBAAiB,YAAa,oBAAqB,mBA6D1FC,GAAkB,CAAC,QACnBC,GAAqB,CAAC,OAAQ,QAAS,QAAS,OAAQ,SAAU,SAAU,gBAC5EC,GAAoB,CAAC,SAAU,SAAU,SACzCC,GAA2B,CAC7B,YAAa,WAAY,QAAS,QAAS,OAAQ,WAAY,UAAW,UAC1E,oBAEEC,GAAqB,CAAC,gBAAiB,WAAY,QAAS,UAAW,QAAS,UAAW,gBAAiB,SAC5GC,GAAsB,CAAC,QAAS,QAAS,OAAQ,WACjDC,GAAmB,CAAC,QAAS,WAC7BC,GApNgC,CAClC,QACA,kBACA,eACA,qBACA,WACA,cACA,OACA,SACA,UACA,iBACA,SACA,mBACA,oBACA,iBACA,YACA,QACA,QACA,cACA,aACA,WACA,OACA,UACA,YACA,WACA,YACA,WACA,OACA,iBACA,UACA,QACA,QACA,QACA,UACA,WACA,oBACA,QACA,UACA,UACA,WACA,QACA,OACA,YACA,aACA,iBACA,qBACA,YACA,aACA,aACA,YACA,WACA,YACA,UACA,aACA,oBACA,QACA,OACA,UACA,gBACA,cACA,eACA,eACA,oBACA,uBACA,4BACA,mBACA,sBACA,yBACA,cACA,WACA,cACA,YACA,WACA,aACA,QACA,SACA,SACA,SACA,UACA,SACA,kBACA,cACA,OACA,OACA,UACA,SACA,UACA,aACA,eACA,cACA,YACA,aACA,WACA,mBACA,gBACA,UACA,SAoH6Cr5B,OAbzB,CAAC,uBAAwB,mBAAoB,6BAC9C,CAAC,eAAgB,qBACf,CAAC,UAvGC,CACvB,qBAAsB,sBAAuB,mBAAoB,SAAU,mBAC3E,sBAAuB,yBAA0B,qBAAsB,kBACvE,qBAAsB,wBAAyB,oBAAqB,mBACpE,mBAAoB,UA8GuG44B,GA5EjG,CAC1B,aAAc,YAAa,cAAe,OAAQ,MAAO,QAAS,YAAa,UAC/E,iBAAkB,SAAU,gBAAiB,kBAAmB,qBAChE,2BAA4B,uBAAwB,uBAG5B,CACxB,WACA,cACA,cACA,iBACA,mBACA,kBACA,eACA,aACA,gBACA,gBACA,iBACA,kBACA,cACA,eACA,iBACA,cACA,OACA,UACA,YACA,iBACA,YACA,cACA,WACA,UACA,aACA,eACA,UACA,0BACA,aACA,OACA,gBACA,6BACA,kBACA,qBACA,eACA,gBACA,iBACA,eACA,sBACA,iBACA,uBACA,kBACA,gBACA,iBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,aACA,gCACA,mBACA,OACA,kBAgBJ,YAA0BnpB,EAAQyd,EAAcoM,GAC5C,IAAKA,GAAgD,IAA5BA,EAAiB1/B,OACtC,OAAOszB,EAEX,MAAMqM,EAAMD,EAAiBn9B,OAAOq9B,GAAMA,EAAG/pB,SAA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0BACAI,wBACAI,oBACAC,kBAEAqI,gBACA,oBACA,sBACAzI,UACAC,YACA,yDACGJ,IAeHU,qBAEAD,OAbAT,GAaAU,MAZApwB,aACA,uCAAgGg5B,WAChG,iFACGtJ,KAoBH0I,wBACA,iBAAiDiI,YAAeA,SAGhEhI,cAEAE,gBACA,0CAGA7H,mBACA,4FAGAC,mBAEA,GADA93B,qBACA/K,gBAEA,OACA,mCACI6hC,UAEJ,IAEAI,0BAFAF,SACAC,MAGA,eACA,QACAmN,MACAnN,MACA,UACA,SACAmN,MACAnN,MACA,UACA,MACAmN,UACAnN,MACA,UACA,MACAmN,UACAnN,MACA,UACA,SAGAmN,sDACA,UACA,QAEA,OADAD,YACA,IACA,iBACAC,2BACA,UACA,YACAA,OACA,UACA,aACAA,OACA,UACA,iBACAA,OACA,UACA,cACAA,OACA,UACA,YACAA,OACA,UACA,WACAA,OACA,UACA,eACAA,OACA,UACA,YACAA,OACA,UACA,eACAA,QACA,cAEAA,OAEAnN,MACA,UACA,eACAmN,8BACAnN,MACA,UACA,eACA,gBACA,iBACA,wBACA,iBACA,kBACA,iBACA,kBACA,mBACA,mBACA,oBACA,iBAIAhiC,EAHAiiC,WAGAW,OACAuM,UAEAtM,iBACAjB,cACA,yCAEA,UACA,UACA,IACAuN,eACAtM,aACAA,aACAA,aACAA,oBAEQiM,GACRvE,GACA4E,UACUvM,OAEV,UACA,WAEA,KADAX,mBACA,CAEA,IADA0I,UACAC,cAAuDA,MAAYA,KACnED,4BAEAwE,iBACQ5E,GACR4E,UACQvM,OACR,UACA,YAEA,IACAuM,iBACAtM,eACAjB,SACAA,UACA,CAAY4Q,iCAEJ1D,GACRvE,GACA4E,UACUvM,OACF,cAER,MACAuM,eACQ,eACR,SAEAA,mBACA,UACA,UACAA,aACA,UACA,SACAA,aACA,UACA,SACAA,aACA,UACA,OACAA,iBACA,UACA,gBACAlN,gBAGA,oCAEA,IACA,+BACAkN,oBAMA,IAJAtE,iBACAsE,uBACAnE,aACAF,aACAF,KAA0BA,MAAYA,KACtCE,oCAGYgE,GACZ,2CACY,UACZ,oBAEAK,MACA,UACA,OACA,IACAA,qCACYL,GACZlM,OACY,UACZ,eACA,mBACAX,SACA,IACAkN,gBACAlN,iBACA,kCACY6M,GACZlM,OACY,UACZ,cACA,kBACAX,SACA,IACAkN,eACAlN,gBACA,2CACY6M,GACZlM,OACY,UACZ,gBACA,oBACAX,SACA,IACAkN,iBACAlN,kBACA,iBACY6M,GACZlM,OACY,UACZ,gBACA,aACArkC,oBACA,IACA4wC,oBACYL,GACZrE,OACY,UACZ,OACA,IACA0E,mCACYL,GACZlM,OACY,UACZ,gBACA,4BACA,yBACA,kBACA,qBACA,qBACAA,eAGA6H,QAMA,GAFAnJ,aAEAU,kBACA,YACA,SAEA,IADArQ,SACAiZ,aAAoDA,MAAYA,KAEhElM,KADAqM,QACAlI,cACQ,UACR,MACAjB,yBACAN,2BAEA,UACA,MACAM,uBACAL,kBAEA,UACA,QACA/mB,kCACArX,eACAqX,8BAEA,uBACA20B,gCAEA,eACApjC,GACAyO,8BAIA,WAGAmnB,qBACA,0BACAE,UAA8C4Q,gBAC9C,4CAGA/H,mBACA,uEAEA,UAEAjoC,iBACAk+B,cAGA,IAEAuO,iBAFAlN,KACAC,SAGA,MAEA,IADA2I,UAAyD6H,cACzDzQ,mCACI,aAEJ,GADAkN,YACA9N,oDAIA,OAFA+N,UAEA,IACA,cAEAnkC,EADA2/B,uBACA/H,UACA,KACAjR,8BACA+gB,6BACAC,4BACA9H,mCACUG,IACV,UACA,gBACA,eACAzsC,sCACA,IACAssC,cACAqE,iBACUlE,IACV,UACA,kBACA,kBACA,sBACA,qBACA,sBACA,iBACApI,UAGA,yEACAtB,eAIA/C,GAAI3hB,4CAAoF,CACxFg2B,6BACA,IAEA3Q,GAFAF,kDACAC,yBAGA,qBACAC,UACAyI,WAGA7H,8BA3cA,MAAQvE,EAAQ,KAChBC,EAAaD,EAAQ,OACrBpiC,EAAYoiC,EAAQ,OACpBtrB,EAAiBsrB,EAAQ,OACzBvqC,EAAgBuqC,EAAQ,OACxBpsB,EAAiBosB,EAAQ,OAEzB9nB,qBACAjY,aAEAyM,cACA,qBAC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D,IACxC,gCAEAjB,QAAoCkB,IACpC,gBAAoB,MAAQ,IAE5B6H,QAAwC/I,IACxC,gBAAoB,+CAGpBC,kBACA,aACA,sDAIAC,IACAmS,OACAC,UACAC,QACAC,UACAC,MACAC,SAIAtS,kBACA,MACA,mCACA,+BAIAC,eACA,OACA,mCACA,aACA,mDAKAC,eACA,8BAIAiN,eACA,MACA,QADA0E,UACA,sCAIAzE,MACAxE,MACAC,MACAC,MACAlZ,KACAoZ,KACAC,KACAF,KACAgE,KACA1oC,KACA4oC,MACAD,MACAE,MACAqF,MACAhF,MACAiF,MACAC,MACAva,MACAwa,MACAC,MACAC,MAEAC,oBACA,IACAd,SADAD,OAEA,OAEA,GADAE,iBACA,YACA3iD,2BACI,CAGJ,QAFA,yBACA2iD,yBACA,aACAc,aACAhC,cACAzhD,uBAIAwjD,cACAn1B,WAGAq1B,uBACA,IAOAC,YAPAlB,OACAC,UACAC,KACAc,MACAG,MACAC,MACAC,MAsBA,IAnBAtB,OAEAD,KACAE,YACAA,cACAA,cACAA,YACAA,YACAA,UACAA,aACAA,gBACAA,sBACAD,eAGAA,cAEAmB,QAEAhB,gBAEA,OADAoB,UACArB,SACA3E,GACA,kBAGY,OAGA,UAFZ2E,MACA,SAJAe,WACAf,MAKA,WAEAnJ,GACA,6CACAkK,mBACY,QA0BA,OAKA,UAJZA,MACAf,MACAC,KACA,SA7BA,QACAF,yBACA,sDACA,2BACA,OAEA,GADAA,YACAF,GAEA,YADAE,oDAGAgB,MACA,iBACAf,MACcD,qCACdC,MACcD,cACdC,KACc,eACdA,KACAC,OAEAF,sBACAlU,aACAmU,OAQA,WAEAlJ,GACA,6CACA,gCACAiJ,kBACAA,iBACAA,gBACAA,cACAA,sBACAC,MACA,MAEAA,yBACA,cAEAjJ,GACA,0BAGY,CACZiJ,KACA,SAJAA,KACAC,KAIY,WAEZpiB,EACA,YACAmiB,KACA,MAEAA,MACA,cAGA/I,EAEA,GADA8I,kBACAsB,OACAtB,sBACAA,sBACAA,cACAA,cACAA,iBACAA,wBACY,iCACZC,aACY,QACZD,sBACAA,sBACAA,cACAA,cACAA,iBACAA,WACAC,cACY,QASA,CACZD,sBACAA,sBACAA,cACAA,cACAA,iBACAA,gBACAC,MACA,SAhBAD,sBACAA,sBACAA,cACAA,cACAA,iBACAA,gBACAA,cACAC,MAUY,WAEZ9I,EACA,qCACA,IACY,QAEA,CACZ6I,sBACAA,sBACAA,cACAA,cACAC,MACA,SAPAA,UAFAA,KAUY,WAEZhJ,EAEA,GADAgJ,KACA,kCACAC,KACA,WAEAjF,EACA,sBACAgF,KACA,SACY,WAEZ1tC,EACA,YACA4uC,kBACAA,MACAI,SACA,YAA4BC,YAA6BA,KACzD,YACA,eAIA,gBACAH,kBACArB,oBALAqB,MAOAL,cAEAM,mCACA,wBACA,CACA,oBAteA,oBAueApB,mBACAc,MACAf,WACYe,OACZ,WAEA7F,QACAD,GACA,yBACA+E,MACA,YACY,YAMZ,IAEAqB,mCACA,wBACA,CACA,mCACA,+DAEA,GADAG,mBACA,UAGA,GAFAT,MACAf,MACAH,UACA,SAEA,cACA,iBACAkB,WAtBY,CACZ,oBAEA,GADAS,mBACA,UAGA,GAFAT,MACAf,MACAH,cAiBY,WAEZ1E,GACA,aACA,IAEAkG,mCACA,yBACAxB,GACA,CACA,WACA,gBACA,sBACAE,gDACAgB,MAEA,aACAf,MACA,SACY,UAfZe,OAgBA,WAEAP,GAEA,GADAT,gBACA,iCACAp1B,oBAyBY,CACZq1B,MACA,SA1BA,UACAD,cACAA,iBACAA,wBACc,QACdA,cACAA,iBACAA,WACAC,cACc,QAMA,CACd9R,qBACA6R,cACAA,iBACAA,iBAEAC,MACA,SAZAD,cACAA,iBACAA,gBACAA,cACAC,OAaY,WAEZxE,GACA,sBACAwE,MACA,MAEAr1B,2CACAsjB,qCACA8R,eAEAC,MACA,cAEAS,GACA,gDACA,eACAT,cACc,QAEd,GADAD,UACAF,UACAG,UACc,CAEd,GADAwB,mBACA,UAEA,GADA,iCACA3B,UACAkB,MACAf,MACc,SACFe,OACZ,WAEAL,GACA,kBAEA,GADAV,MACA,mCACYH,YAEZ,GACYA,aAEZ,GACYwB,SACZrB,MACA,uBAJAD,cACAC,WAJAD,WACAC,MAOY,WAEZ7Z,GACA,GACAkb,iBACA,0BACAxB,uBACA,CAkBA,GAjBAzE,QACA2E,gBACA,qCACAlU,cAEcsC,OACd,qCACAtC,cAGA,2CACAkU,oBACAgB,gBAEAlV,cAEAkV,MACA,6CACA,sCACA/U,WAGA,SACA+T,WACAC,OACc,UACdD,cACAC,YAGAe,cACY,WAEZJ,GACA,SACAZ,WACAC,OACY,SACZD,cACAC,OACYqB,SACZtB,sBACY,WAEZa,GACAf,YAGYwB,SACZ,sCACAtB,uBACAjS,YALAiS,cACAC,OAKY,WAEZa,GACAQ,gCAIApB,OAIAwB,sBACA,WACA,gBAGA,GAFA,uBACA5B,GAznBA,YACA,IAIAI,qBAJAJ,qBACAl1B,IACAo1B,OACAC,KAGAsB,cACA,gBAGA,cACA,sBACAtB,MAEAD,IADAp1B,EAGA,YACA,eACA,cAQA,IADAs1B,QACAc,kBACAd,oBACAD,KACAe,KAEA,cAGA,GAFA,QACAf,OACAr1B,YAEA,IADAu2B,KACAI,OAEA,GADAH,QACAD,KACA,uBACA,OADAlB,KAGA,sBACA,kBAEA,GADAoB,cACA,oBACA,iBACAD,YACA,iBACAnB,KAEAH,oBAEA,KADAqB,IACA,YAEA,gBACA,SACM,WAEN,GADAlB,MACAsB,oBACMA,YACNzB,eA3CA,CACA,mBACAG,KAEAD,IADAp1B,GA0CA,YAGA,IAFAs2B,OACAt2B,IACA,YACA02B,SACAxB,mBACAA,sBAEI,YACJ,UAgjBArJ,cACAqJ,cACAviD,qBAEMA,iBAQA,CAIN,GAHAwiD,OACAnV,UACAkV,GAhrBA,YACA,IACAl1B,mBADAk1B,aAMA,GAJAA,gCACAA,aAEAl1B,aACA,WAEA,IADAo1B,KACAC,KAAkBA,KAAqBA,MAEvC,QADAC,WACA,SAMA,GALAc,MACAd,4BACAc,iBACAd,qBAEA,QACAiB,SACM,CACN,yCACAA,YAEArV,QAEA,SAAkBmU,KAAqBA,KAEvC,GADAkB,SACAlB,SACA,sCACMkB,mBAGN,IADAC,QACAnB,KAAkBA,YAAwBA,KAC1CmB,sBAEA,UA6oBA5S,IACA,qBACAjxC,iBAbM,CACN,qBAGA,IAFAuiD,MACAl1B,OACAo1B,IAAsBA,WAA2BA,IACjDF,gBAEAviD,eAUAokD,0CACA,8DAGAC,+BACA,4CAGAC,qBACA,0BAGAC,uBACA,gBACAhC,YACAA,gDACAC,YAIAZ,qBACA,WACAW,YACAl1B,aACAo1B,aACAC,UACAC,UACAc,UACAG,WACAC,cACAC,UACA,kBACAA,SACAtB,0BACAsB,wBAEAA,WACA,yBACM,uBACNA,wDACA,wBACA,wBACAA,IAGAU,oBACA,qBACA,kBACAxkD,4BAGAykD,qBACA,kBACAlC,aACA,iBACA,sCACMl1B,GACN,aAEA,kCACAm1B,4CADA,QAIAkC,uBACA,wBAEAC,wBACA3kD,yBAGA4kD,uBACA,sBAEAC,wBACA,eACA,0CACA,kBACA,YAAoBx3B,YAAuBA,IAC3CrtB,8BAIA8kD,uBACA,sBAEAC,wBACA,eACA,0CACA,kBACA,YAAoB13B,YAAuBA,IAC3CrtB,8BAIAglD,mBACA,gBACAzC,aACA,mBACA,gBACAlJ,cAEA4L,oBACAjlD,uBACAA,kBAGAklD,uBACA,gBACA,0BAEAC,wBACAnlD,uBACAA,kBAGAolD,mBACA,gBACA,yBAEAC,oBACArlD,wCAEA,KADAwiD,QACAxiD,eACAA,mBAGAslD,uBACA,gBACA,4DAEAC,wBACAvlD,wBACAA,aACAA,mBAGAwlD,qBACA,iBACA,mBAEAC,sBAEA,KADAjD,QAEAxiD,iBAEA,yBACAA,cACAA,kBAEAA,4BAGA0lD,2BACA,iCAGAC,mBACA,oBACA,mBAEAC,oBAEA,KADApD,SAKA,yBACAxiD,iBACAA,kBALAA,oBAOA6hD,kBACA7hD,iDAMA,oBACA,iBACAyiD,yCACAC,wBACAvV,IACA9f,sBACAA,wBACAA,4BACAA,4BACAA,4BACAA,oBACAA,4BACAA,oBACAA,4BACAA,wBACAA,oCACAA,sBAIAw4B,gBAEAC,kBACA,OACAr1C,eACA,qBAEAC,oBACA,uBAEA2f,gBACA2K,gBAyDA,GArDAmS,GACA/nB,MAGA2gC,+BAGAC,uBAGAC,yCAGAC,yCAGAC,yCAGAC,6BAGAC,yCAGAC,6BAGAC,yCAGAC,mCAGAC,mCAGAC,+BAMAv5C,yBACA,4BACC,CAAI6tB,gBAIL7tB,2BACA,4BACC,CAAI6tB,gBAELva,GACA,yBACAkmC,qBAGAC,oCAGAD,oCAGAv9B,YAEAtgB,GAAI0iB,6BAA2D,CAC/Dq7B,uCAhhCA,MAAQ3Z,EAAQ,KAChBC,EAAWD,EAAQ,OAInBpkC,GAAIkV,qCAA8C,CAClDkZ,kBACA,0DAPAgW,EAAQ,uBAARA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,wBAHRA,EAAQ,OACRA,EAAQ,OAERA,EAAQ,uBAHRA,EAAQ,OACR,MAAaA,EAAQ,OAErBE,6BAHAF,EAAQ,wBAARA,EAAQ,OACRA,EAAQ,wBADRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,wBAFRA,EAAQ,wBAARA,EAAQ,OACRA,EAAQ,wBAFRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,KACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,IACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,KACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OAERE,oCA/OAF,EAAQ,OACRA,EAAQ,OACR,MAAaA,EAAQ,OAErBE,6BAHAF,EAAQ,OAERA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACR,MAAWA,EAAQ,OAEnBE;;;;;;;;;;;;;;;AAKA,oBACA,gCACA,CAAW0Z,wBAAgBpyC,qBAAsCk5B,gBACjE,cAA0B,wEAC1BD,MAGO,gBACP,kCACA,sFAEA,aAAoB3tC,mBADpB8I,OAEA6kC,sEAcO,gBACP,SACA,2EACAC,WACA,4DACA,+CAA6DgB,WAAcA,IAC3EhsC,wEACAgrC,iBAEA,SAGO,oBACP,mFACA,kGACA,qBAA6CW,KAAQA,oDACrD,8CAWO,oBAEP,yCACA,eAAoC,IAAMG,qBAA+BoB,IAAYjC,OACrF,gBAAmC,IAAMa,sBAAmCoB,IAAYjC,OACxF,gBAAgCgC,oBAJhC,cAA4B,0CAA+DhC,OAI3De,sBAChCF,kCAmGO,cACP,kDAGO,kBACP,qFACA,8BACA,YAAiBb,oEAAuF,aAAce,EACtH,eAAuBvB,2BAAgC,mCAAqCsB,sCAC5F,kBAA4B,KAC5B,gBAAuBoB,6EADWH,kBAAiBK,IAAYH,gBAE/D,gBAA8BvB,aAC9B,gBAA6BA,cAC7B,mBAA4BwB,+CASrB,cACP,qFACA,gCACA,sBAhFO,cACP,+DACA,sBACA,uCACArwC,gBACA,kCACA,CAAqBgB,2BAGrB,mFAuEA2Q,SAA2Gg8B,oEAAuF,aAAcO,GAChN,cAAuBA,uBAA8B,mCACrD,qBAA6C9oC,sCAAsC6pC,GAAUjuC,mBAAuBmtC,GADfe","names":["performanceTimestampProvider","now","delegate","performance","undefined","timestampProvider","animationFramesFactory","DEFAULT_ANIMATION_FRAMES","schedule","animationFrameProvider","Observable","subscriber","subscription","Subscription","provider","start","run","timestamp","next","elapsed","closed","add","Subject","constructor","this","_checkFinalizedStatuses","hasError","_hasValue","_value","thrownError","isStopped","_isComplete","error","complete","value","super","queueScheduler","AsyncScheduler","AsyncAction","scheduler","work","state","delay","flush","execute","_execute","requestAsyncId","id","queue","VirtualTimeScheduler","schedulerActionCtor","VirtualAction","maxFrames","Infinity","frame","actions","action","shift","unsubscribe","index","Number","isFinite","active","push","sort","sortActions","recycleAsyncId","a","b","NotificationKind","kind","hasValue","observe","observer","observeNotification","do","nextHandler","errorHandler","completeHandler","D","L","U","accept","nextOrObserver","isFunction","V","_a","toObservable","result","of","throwError","EMPTY","TypeError","Notification","err","completeNotification","notification","_b","_c","source","config","hasConfig","Promise","resolve","reject","subscribe","defaultValue","EmptyError","SafeSubscriber","ArgumentOutOfRangeError","createErrorClass","_super","name","message","NotFoundError","SequenceError","TimeoutError","info","schedulerArg","first","each","with","_with","timeoutErrorFactory","asyncScheduler","meta","isValidDate","operate","originalSourceSubscription","timerSubscription","lastValue","seen","startTimer","executeSchedule","innerFrom","OperatorSubscriber","ue","isNodeStyle","callbackFunc","resultSelector","isScheduler","args","bindCallbackInternals","apply","pipe","mapOneOrManyArgs","subscribeOn","observeOn","subject","AsyncSubject","uninitialized","subs","isAsync","isComplete","results","length","DEFAULT_CONFIG","connector","resetOnDisconnect","connection","connect","defer","addHandler","removeHandler","fromEventPattern","handler","e","retValue","initialStateOrOptions","condition","iterate","resultSelectorOrScheduler","initialState","arguments","identity","scheduleIterable","gen","sources","nextSources","argsOrArgArray","remaining","subscribeNext","nextSource","innerSub","noop","onErrorResumeNextWith","obj","from","Object","entries","pred","thisArg","call","predicate","filter","not","count","end","n","resourceFactory","observableFactory","resource","closingNotifier","currentBuffer","bufferSize","startBufferEvery","buffers","toEmit","buffer","arrRemove","bufferTimeSpan","otherArgs","bufferCreationInterval","maxBufferSize","bufferRecords","restartOnEmit","emit","record","startBuffer","bufferTimeSubscriber","recordsCopy","slice","me","openings","closingSelector","openValue","closingSubscription","closingSubscriber","openBuffer","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","i","scanInternals","arrReducer","arr","reduce","joinFn","project","toArray","mergeMap","joinAllInternals","combineLatest","combineAll","combineLatestAll","popResultSelector","combineLatestInit","otherSources","innerObservable","concatMap","popScheduler","concatAll","concat","total","durationSelector","durationSubscriber","hasDefaultValue","v","take","defaultIfEmpty","throwIfEmpty","values","inner","exhaust","exhaustAll","exhaustMap","map","ii","outerValue","createFind","findIndex","keySelector","elementOrOptions","duration","element","groups","Map","notify","cb","forEach","handleError","consumer","groupBySourceSubscriber","GroupBySubscriber","key","group","get","set","grouped","groupSubject","groupSubscriber","activeGroups","teardownAttempted","createGroupedObservable","delete","clear","comparer","x","y","flatMap","concurrent","mergeInternals","popNumber","mergeAll","merge","properties","Error","currentProp","p","initialValue","BehaviorSubject","ConnectableObservable","windowTime","selectorOrScheduler","selector","multicast","ReplaySubject","raceInit","notifier","completions$","syncResub","isNotifierComplete","isMainComplete","checkComplete","subscribeForRepeatWhen","configOrCount","resetOnSuccess","soFar","subscribeForRetry","syncUnsub","resub","timer","notifierSubscriber","errors$","subscribeForRetryWhen","period","sample","interval","compareTo","comparator","aState","bState","isEqual","createSubscriber","selfState","otherState","sequenceEqualSubscriber","singleValue","seenValue","skipCount","ring","Array","valueIndex","oldValue","taking","skipSubscriber","switchMap","_","innerValue","async","scan","current","last","TimeInterval","due","withObservable","timeout","dateTimestampProvider","windowBoundaries","windowSubject","asObservable","windowSize","startWindowEvery","startEvery","windows","starts","window","c","windowTimeSpan","windowCreationInterval","maxWindowSize","windowRecords","restartOnClose","closeWindow","startWindow","loop","terminate","windowsCopy","openWindow","zip","otherInputs","zipStatic","getValue","_subscribe","_throwIfClosed","lift","operator","observable","observerOrNext","Subscriber","isObserver","isSubscription","isSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","toPromise","h","_bufferSize","_windowTime","_timestampProvider","_infiniteTimeWindow","Math","max","_buffer","_trimBuffer","_innerSubscribe","copy","adjustedBufferSize","splice","Scheduler","AnonymousSubject","ObjectUnsubscribedError","observers","observed","EMPTY_SUBSCRIPTION","destination","d","l","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","context","create","I","bind","T","m","wrapForErrorHandling","defaultErrorHandler","instance","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","initialTeardown","errors","_parentage","isArray","parent","remove","UnsubscriptionError","_teardowns","teardown","execTeardown","g","_hasParent","_addParent","includes","_removeParent","empty","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","subjectFactory","hasLift","getSubject","_subject","_teardown","_refCount","_connection","refCount","higherOrderRefCount","observables","keys","argsArgArrayOrObject","createObject","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","emptyScheduled","remainingCompletions","remainingEmissions","sourceIndex","input","scheduled","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","target","eventName","options","fromEvent","addEventListener","removeEventListener","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","on","off","isJQueryStyleEventEmitter","isArrayLike","subTarget","trueResult","falseResult","isInteropObservable","obs","fromInteropObservable","array","fromArrayLike","isPromise","promise","then","fromPromise","isAsyncIterable","fromAsyncIterable","isIterable","iterable","fromIterable","isReadableStreamLike","readableStream","readableStreamLikeToAsyncGenerator","fromReadableStreamLike","createInvalidObservableTypeError","asyncIterable","asyncIterable_1","asyncIterable_1_1","A","process","catch","NEVER","subscriptions","s","errorOrErrorFactory","errorFactory","init","dueTime","intervalOrScheduler","intervalDuration","completed","every","some","onNext","onComplete","onError","onFinalize","o","endDuration","cleanupDuration","audit","handledResult","catchError","subscribable","fromSubscribable","activeTask","lastTime","targetTime","emitWhenIdle","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","flushes","distinctKeys","Set","has","defaultCompare","previousKey","currentKey","compare","distinctUntilChanged","callback","takeLast","onBeforeNext","expand","innerSubScheduler","additionalTeardown","outerNext","doInnerSub","innerComplete","bufferedValue","subjectOrSubjectFactory","prev","hasPrev","refCounter","sharedConnection","conn","subscribeForRepeat","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","dest","handleReset","configOrBufferSize","u","share","innerSubscriber","innerIndex","outerIndex","inclusive","tapObserver","isUnsub","finalize","defaultThrottleConfig","leading","trailing","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","duration$","throttle","defaultErrorFactory","inputs","len","otherValues","ready","iterator","Symbol_iterator","done","return","Symbol","asyncIterator","scheduleObservable","scheduleArray","schedulePromise","scheduleAsyncIterable","scheduleReadableStreamLike","intervalProvider","setInterval","clearInterval","handle","Action","pending","_id","_scheduler","_delay","errorValue","errored","SchedulerAction","_active","animationFrameScheduler","_scheduled","animationFrame","request","requestAnimationFrame","cancel","cancelAnimationFrame","resolved","nextHandle","activeHandles","Immediate","setImmediate","findAndClearHandle","clearImmediate","immediateProvider","O","asapScheduler","asap","Date","setTimeout","clearTimeout","getSymbolIterator","toString","join","pop","getPrototypeOf","prototype","objectProto","getKeys","isPOJO","item","indexOf","createImpl","ctorFunc","stack","isRoot","errorThrown","parentSubscription","repeat","scheduleSubscription","isNaN","reader","getReader","read","releaseLock","liftedSource","fn","callOrApply","fns","Zone","__load_patch","global","api","ResizeObserver","resizeObserverSymbol","symbol","patchMethod","self","_this","zones","currZone","_i","entries_1","entry","zone","zoneEntriesInfo","zoneName","targets","ProxyZoneSpec","defaultSpecDelegate","_delegateSpec","propertyKeys","lastTaskState","isNeedToTriggerHasTask","tasks","setDelegate","isLoaded","assertPresent","delegateSpec","isNewDelegate","k","macroTask","microTask","getDelegate","resetDelegate","tryTriggerHasTask","parentZoneDelegate","currentZone","targetZone","onHasTask","removeFromTasks","task","getAndClearPendingTasksInfo","pendingTasksInfo","dataInfo","data","type","onFork","zoneSpec","fork","onIntercept","intercept","onInvoke","applyThis","applyArgs","invoke","onHandleError","onScheduleTask","scheduleTask","onInvokeTask","invokeTask","onCancelTask","cancelTask","hasTaskState","hasTask","rxjs","require","__symbol__","errorSource","completeSource","ObjectDefineProperties","defineProperties","_zone","operatorDelegate","operatorSelf","operatorArgs","ObservablePrototype","writable","configurable","_zoneSource","_zoneSubscribe","proto","tearDown_1","zone_1","_zoneSubjectFactory","factory","_zoneUnsubscribe","_unsubscribe","_zoneUnsubscribeCleared","defineProperty","_zoneDestination","subscriptionZone","patchSubscriber","mark","label","measure","symbolPrefix","__Zone_symbol_prefix","checkDuplicate","_parent","_name","_properties","_zoneDelegate","ZoneDelegate","patches","ZoneAwarePromise","root","_currentZoneFrame","currentTask","_currentTask","ignoreDuplicate","hasOwnProperty","perfName","_api","performanceMeasure","getZoneWith","wrap","_callback","runGuarded","runTask","NO_ZONE","notScheduled","eventTask","reEntryGuard","running","_transitionTo","runCount","previousTask","isPeriodic","cancelFn","unknown","_updateTaskCount","newZone","scheduling","zoneDelegates","_zoneDelegates","scheduleMicroTask","customSchedule","ZoneTask","scheduleMacroTask","customCancel","scheduleEventTask","canceling","DELEGATE_ZS","parentDelegate","_taskCounts","_parentDelegate","_forkZS","_forkDlgt","_forkCurrZone","_interceptZS","_interceptDlgt","_interceptCurrZone","_invokeZS","_invokeDlgt","_invokeCurrZone","_handleErrorZS","_handleErrorDlgt","_handleErrorCurrZone","_scheduleTaskZS","_scheduleTaskDlgt","_scheduleTaskCurrZone","_invokeTaskZS","_invokeTaskDlgt","_invokeTaskCurrZone","_cancelTaskZS","_cancelTaskDlgt","_cancelTaskCurrZone","_hasTaskZS","_hasTaskDlgt","_hasTaskDlgtOwner","_hasTaskCurrZone","zoneSpecHasTask","returnTask","scheduleFn","isEmpty","counts","change","_state","useG","_numberOfNestedTaskFrames","drainMicroTaskQueue","cancelScheduleRequest","toState","fromState1","fromState2","handleId","toJSON","symbolSetTimeout","symbolPromise","symbolThen","nativeMicroTaskQueuePromise","_microTaskQueue","_isDrainingMicrotaskQueue","nativeThen","microtaskDrainDone","currentZoneFrame","showUncaughtError","patchEventTarget","patchOnProperties","bindArguments","patchThen","patchMacroTask","patchEventPrototype","isIEOrEdge","getGlobalObjects","ObjectDefineProperty","ObjectGetOwnPropertyDescriptor","ObjectCreate","ArraySlice","patchClass","wrapWithCurrentZone","filterProperties","attachOriginToPatched","_redefineProperty","patchCallbacks","getOwnPropertyDescriptor","ObjectGetPrototypeOf","ADD_EVENT_LISTENER_STR","REMOVE_EVENT_LISTENER_STR","ZONE_SYMBOL_ADD_EVENT_LISTENER","ZONE_SYMBOL_REMOVE_EVENT_LISTENER","TRUE_STR","FALSE_STR","ZONE_SYMBOL_PREFIX","zoneSymbol","isWindowExists","internalWindow","_global","NULL_ON_PROP_VALUE","propertyDesc","isWebWorker","WorkerGlobalScope","isNode","isBrowser","HTMLElement","isMix","zoneSymbolEventNames","wrapFn","event","eventNameSymbol","listener","errorEvent","filename","lineno","colno","preventDefault","prop","desc","enumerable","onPropPatchedSymbol","originalDescGet","originalDescSet","substr","newValue","REMOVE_ATTRIBUTE","removeAttribute","patchProperty","onProperties","j","originalInstanceKey","className","OriginalClass","patchFn","delegateName","isPropertyWritable","patchDelegate","funcName","metaCreator","setNative","cbIdx","scheduleMacroTaskWithCurrentZone","patched","original","isDetectedIEOrEdge","ieOrEdge","ua","navigator","userAgent","_uncaughtPromiseErrors","isDisableWrappingUncaughtPromiseRejection","rejection","console","uncaughtPromiseError","throwOriginal","handleUnhandledRejection","UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL","symbolState","symbolValue","symbolFinally","symbolParentPromiseValue","symbolParentPromiseState","UNRESOLVED","REJECTED","resolvePromise","CURRENT_TASK_TRACE_SYMBOL","onceWrapper","wasCalled","wrappedFunction","once","clearRejectedNoCatch","makeResolver","trace","creationTrace","scheduleResolveOrReject","JSON","stringify","readableObjectToString","REJECTION_HANDLED_HANDLER","chainPromise","onFulfilled","onRejected","promiseState","forwardResolution","forwardRejection","parentPromiseValue","isFinallyPromise","static","ZONE_AWARE_PROMISE_TO_STRING","res","rej","isThenable","onResolve","onReject","allWithCallback","thenCallback","status","errorCallback","reason","unresolvedCount","resolvedValues","curValueIndex","thenErr","executor","toStringTag","species","C","finally","onFinally","race","all","NativePromise","symbolThenPatched","Ctor","originalThen","wrapped","resultPromise","ctor","zoneify","originalFunctionToString","Function","ORIGINAL_DELEGATE_SYMBOL","PROMISE_SYMBOL","ERROR_SYMBOL","newFunctionToString","originalDelegate","nativePromise","nativeError","originalObjectToString","passiveSupported","OPTIMIZED_ZONE_EVENT_TASK_DATA","zoneSymbolEventNames$1","globalSources","EVENT_NAME_SYMBOL_REGX","RegExp","IMMEDIATE_PROPAGATION_SYMBOL","eventNameToString","falseEventName","trueEventName","symbolCapture","apis","patchOptions","ADD_EVENT_LISTENER","REMOVE_EVENT_LISTENER","rm","LISTENERS_EVENT_LISTENER","listeners","REMOVE_ALL_LISTENERS_EVENT_LISTENER","rmAll","zoneSymbolAddEventListener","ADD_EVENT_LISTENER_SOURCE","isRemoved","handleEvent","globalZoneAwareCallback","copyTasks","globalZoneAwareCaptureCallback","useGlobalCallback","validateHandler","vh","chkDup","returnTarget","rt","taskData","nativeAddEventListener","nativeRemoveEventListener","nativeListeners","nativeRemoveAllListeners","nativePrependEventListener","passive","capture","assign","prepend","isExisting","symbolEventNames","symbolEventName","existingTasks","allRemoved","diff","typeOfDelegate","unpatchedEvents","passiveEvents","makeAddListener","nativeListener","addSource","customScheduleFn","customCancelFn","transferEventName","isHandleEvent","buildEventListenerOptions","$e","prepareEventNames","constructorName","targetSource","ie","unshift","PREPEND_EVENT_LISTENER","existingTask","findEventTasks","captureTasks","removeTasks","match","exec","evtName","patchEventTargetMethods","foundTasks","captureFalseTasks","captureTrueTasks","Event","targetName","method","callbacks","nativeDelegate","opts","descriptor","windowEventNames","mediaElementEventNames","frameEventNames","frameSetEventNames","marqueeEventNames","XMLHttpRequestEventNames","IDBIndexEventNames","websocketEventNames","workerEventNames","eventNames","ignoreProperties","tip","ip","targetIgnoreProperties","op","SYMBOL_BLACK_LISTED_EVENTS","SYMBOL_UNPATCHED_EVENTS","taskSymbol","setName","cancelName","nameSuffix","clearNative","tasksByHandleId","clearTask","ref","unref","ae","legacyPatch","patchTimer","blockingMethods","patchEvent","EVENT_TARGET","EventTarget","eventTargetPatch","XMLHttpRequestEventTarget","supportsWebSocket","WebSocket","__Zone_ignore_on_properties","ignoreErrorProperties","isIE","patchFilteredProperties","Document","SVGElement","Element","HTMLMediaElement","HTMLFrameSetElement","HTMLBodyElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker","XMLHttpRequest","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","propertyDescriptorPatch","customElements","patchCustomElements","XMLHttpRequestPrototype","oriAddListener","oriRemoveListener","XMLHttpRequestEventTargetPrototype","READY_STATE_CHANGE","SCHEDULED","XHR_SCHEDULED","XHR_ERROR_BEFORE_SCHEDULED","XHR_LISTENER","newListener","readyState","DONE","aborted","loadTasks","oriInvoke","storedTask","XHR_TASK","sendNative","abortNative","openNative","XHR_SYNC","XHR_URL","fetchTaskAborting","fetchTaskScheduling","url","placeholderCallback","findPendingTask","patchXHR","geolocation","fnNames","patchPrototype","PromiseRejectionEvent","evt","findPromiseRejectionHandler","t","r","f","M","E","S","P","K","G","R","F","Z","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Y","BigInt64Array","BigUint64Array","tt","N","B","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_CONSTRUCTOR","TYPED_ARRAY_TAG","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","Wt","pt","Jt","exportTypedArrayStaticMethod","Nt","isView","isTypedArray","TypedArray","TypedArrayPrototype","lt","dt","yt","Et","Rt","ut","bt","jt","Ut","Mt","Zt","Xt","st","$t","re","ct","gt","vt","se","Me","kt","ne","Kt","setInt8","setUint8","unsafe","bytes","byteLength","ee","qt","byteOffset","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","ArrayBuffer","DataView","findLast","findLastIndex","find","filterReject","foo","left","right","String","getConstructor","size","that","previous","removed","setStrong","frozen","IndexSizeError","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","InvalidNodeTypeError","DataCloneError","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","EXISTS","PROPER","CONFIGURABLE","pack","unpack","objectID","weakData","enable","getOwnPropertyNames","fastKey","getWeakData","onFreeze","enforce","getterFor","IteratorPrototype","BUGGY_SAFARI_ITERATORS","characterData","document","open","isPrototypeOf","propertyIsEnumerable","__defineSetter__","BROKEN_CARET","MISSED_STICKY","UNSUPPORTED_Y","version","mode","copyright","license","codeAt","charAt","test","trim","port2","Tt","Pt","Se","Yt","xe","at","At","Ft","H","W","J","view","cause","AggregateError","copyWithin","fill","flat","lastIndexOf","reduceRight","reverse","getYear","setYear","toGMTString","toISOString","escape","globalThis","acosh","asinh","atanh","cbrt","clz32","cosh","expm1","fround","hypot","imul","log10","log1p","log2","sign","sinh","tanh","trunc","split","EPSILON","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseFloat","parseInt","toExponential","toFixed","toPrecision","__defineGetter__","sham","freeze","fromEntries","AS_ENTRIES","getOwnPropertyDescriptors","hasOwn","isExtensible","isFrozen","isSealed","is","__lookupGetter__","__lookupSetter__","preventExtensions","seal","setPrototypeOf","allSettled","any","w","mt","ht","Bt","Ot","nt","notified","reactions","Ht","Reflect","construct","deleteProperty","ownKeys","dotAll","anchor","big","blink","bold","codePointAt","endsWith","fixed","fontcolor","fontsize","fromCodePoint","italics","string","link","regexp","unicode","matchAll","padEnd","padStart","raw","replaceAll","small","startsWith","strike","sub","sup","trimEnd","trimRight","trimStart","trimLeft","tag","description","for","keyFor","useSetter","useSimple","getOwnPropertySymbols","unescape","groupByToMap","groupBy","port1","code","DOMException","queueMicrotask","detail","colorSpace","transfer","getContext","transferFromImageBitmap","structuredClone","bindURL","parseObject","parseQuery","serialize","update","updateURL","append","getAll","URLSearchParams","body","headers","fetch","Request","getState","ot","X","$","et","It","ftp","file","http","https","ws","wss","Qt","ve","ce","be","Oe","Vt","Gt","Ct","parse","Ne","Ie","oe","Ae","it","_t","z","zt","parseHost","cannotHaveUsernamePasswordPort","includesCredentials","isSpecial","shortenPath","setHref","getOrigin","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","Te","de","href","origin","protocol","username","password","host","hostname","port","pathname","search","searchParams","hash","pe","De","URL","__proto__"],"sources":["./node_modules/rxjs/src/internal/scheduler/performanceTimestampProvider.ts","./node_modules/rxjs/src/internal/observable/dom/animationFrames.ts","./node_modules/rxjs/src/internal/AsyncSubject.ts","./node_modules/rxjs/src/internal/scheduler/queue.ts","./node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","./node_modules/rxjs/src/internal/scheduler/QueueAction.ts","./node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts","./node_modules/rxjs/src/internal/Notification.ts","./node_modules/rxjs/src/internal/lastValueFrom.ts","./node_modules/rxjs/src/internal/firstValueFrom.ts","./node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","./node_modules/rxjs/src/internal/util/NotFoundError.ts","./node_modules/rxjs/src/internal/util/SequenceError.ts","./node_modules/rxjs/src/internal/operators/timeout.ts","./node_modules/rxjs/src/internal/observable/bindCallbackInternals.ts","./node_modules/rxjs/src/internal/observable/bindCallback.ts","./node_modules/rxjs/src/internal/observable/bindNodeCallback.ts","./node_modules/rxjs/src/internal/observable/connectable.ts","./node_modules/rxjs/src/internal/observable/fromEventPattern.ts","./node_modules/rxjs/src/internal/observable/generate.ts","./node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts","./node_modules/rxjs/src/internal/operators/onErrorResumeNext.ts","./node_modules/rxjs/src/internal/observable/pairs.ts","./node_modules/rxjs/src/internal/util/not.ts","./node_modules/rxjs/src/internal/observable/partition.ts","./node_modules/rxjs/src/internal/observable/range.ts","./node_modules/rxjs/src/internal/observable/using.ts","./node_modules/rxjs/src/internal/operators/buffer.ts","./node_modules/rxjs/src/internal/operators/bufferCount.ts","./node_modules/rxjs/src/internal/operators/bufferTime.ts","./node_modules/rxjs/src/internal/operators/bufferToggle.ts","./node_modules/rxjs/src/internal/operators/bufferWhen.ts","./node_modules/rxjs/src/internal/operators/scanInternals.ts","./node_modules/rxjs/src/internal/operators/reduce.ts","./node_modules/rxjs/src/internal/operators/toArray.ts","./node_modules/rxjs/src/internal/operators/joinAllInternals.ts","./node_modules/rxjs/src/internal/operators/combineLatestAll.ts","./node_modules/rxjs/src/internal/operators/combineAll.ts","./node_modules/rxjs/src/internal/operators/combineLatest.ts","./node_modules/rxjs/src/internal/operators/combineLatestWith.ts","./node_modules/rxjs/src/internal/operators/concatMapTo.ts","./node_modules/rxjs/src/internal/operators/concatWith.ts","./node_modules/rxjs/src/internal/operators/concat.ts","./node_modules/rxjs/src/internal/operators/count.ts","./node_modules/rxjs/src/internal/operators/debounce.ts","./node_modules/rxjs/src/internal/operators/dematerialize.ts","./node_modules/rxjs/src/internal/operators/elementAt.ts","./node_modules/rxjs/src/internal/operators/endWith.ts","./node_modules/rxjs/src/internal/operators/every.ts","./node_modules/rxjs/src/internal/operators/exhaustAll.ts","./node_modules/rxjs/src/internal/operators/exhaust.ts","./node_modules/rxjs/src/internal/operators/exhaustMap.ts","./node_modules/rxjs/src/internal/operators/find.ts","./node_modules/rxjs/src/internal/operators/findIndex.ts","./node_modules/rxjs/src/internal/operators/groupBy.ts","./node_modules/rxjs/src/internal/operators/isEmpty.ts","./node_modules/rxjs/src/internal/operators/materialize.ts","./node_modules/rxjs/src/internal/operators/max.ts","./node_modules/rxjs/src/internal/operators/flatMap.ts","./node_modules/rxjs/src/internal/operators/mergeMapTo.ts","./node_modules/rxjs/src/internal/operators/mergeScan.ts","./node_modules/rxjs/src/internal/operators/mergeWith.ts","./node_modules/rxjs/src/internal/operators/merge.ts","./node_modules/rxjs/src/internal/operators/min.ts","./node_modules/rxjs/src/internal/operators/pluck.ts","./node_modules/rxjs/src/internal/operators/publishBehavior.ts","./node_modules/rxjs/src/internal/operators/publishLast.ts","./node_modules/rxjs/src/internal/operators/publishReplay.ts","./node_modules/rxjs/src/internal/operators/raceWith.ts","./node_modules/rxjs/src/internal/operators/repeatWhen.ts","./node_modules/rxjs/src/internal/operators/retry.ts","./node_modules/rxjs/src/internal/operators/retryWhen.ts","./node_modules/rxjs/src/internal/operators/sample.ts","./node_modules/rxjs/src/internal/operators/sampleTime.ts","./node_modules/rxjs/src/internal/operators/scan.ts","./node_modules/rxjs/src/internal/operators/sequenceEqual.ts","./node_modules/rxjs/src/internal/operators/single.ts","./node_modules/rxjs/src/internal/operators/skipLast.ts","./node_modules/rxjs/src/internal/operators/skipUntil.ts","./node_modules/rxjs/src/internal/operators/switchAll.ts","./node_modules/rxjs/src/internal/operators/switchScan.ts","./node_modules/rxjs/src/internal/operators/timeInterval.ts","./node_modules/rxjs/src/internal/operators/timeoutWith.ts","./node_modules/rxjs/src/internal/operators/timestamp.ts","./node_modules/rxjs/src/internal/operators/window.ts","./node_modules/rxjs/src/internal/operators/windowCount.ts","./node_modules/rxjs/src/internal/operators/windowTime.ts","./node_modules/rxjs/src/internal/operators/windowToggle.ts","./node_modules/rxjs/src/internal/operators/windowWhen.ts","./node_modules/rxjs/src/internal/operators/zipAll.ts","./node_modules/rxjs/src/internal/operators/zipWith.ts","./node_modules/rxjs/src/internal/operators/zip.ts","./node_modules/rxjs/src/internal/BehaviorSubject.ts","./node_modules/rxjs/src/internal/Observable.ts","./node_modules/rxjs/src/internal/ReplaySubject.ts","./node_modules/rxjs/src/internal/Scheduler.ts","./node_modules/rxjs/src/internal/Subject.ts","./node_modules/rxjs/src/internal/NotificationFactories.ts","./node_modules/rxjs/src/internal/Subscriber.ts","./node_modules/rxjs/src/internal/Subscription.ts","./node_modules/rxjs/src/internal/config.ts","./node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","./node_modules/rxjs/src/internal/observable/combineLatest.ts","./node_modules/rxjs/src/internal/observable/concat.ts","./node_modules/rxjs/src/internal/observable/defer.ts","./node_modules/rxjs/src/internal/observable/empty.ts","./node_modules/rxjs/src/internal/observable/forkJoin.ts","./node_modules/rxjs/src/internal/observable/from.ts","./node_modules/rxjs/src/internal/observable/fromEvent.ts","./node_modules/rxjs/src/internal/observable/iif.ts","./node_modules/rxjs/src/internal/observable/innerFrom.ts","./node_modules/rxjs/src/internal/observable/interval.ts","./node_modules/rxjs/src/internal/observable/merge.ts","./node_modules/rxjs/src/internal/observable/never.ts","./node_modules/rxjs/src/internal/observable/of.ts","./node_modules/rxjs/src/internal/observable/race.ts","./node_modules/rxjs/src/internal/observable/throwError.ts","./node_modules/rxjs/src/internal/observable/timer.ts","./node_modules/rxjs/src/internal/observable/zip.ts","./node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts","./node_modules/rxjs/src/internal/operators/audit.ts","./node_modules/rxjs/src/internal/operators/auditTime.ts","./node_modules/rxjs/src/internal/operators/catchError.ts","./node_modules/rxjs/src/internal/operators/concatAll.ts","./node_modules/rxjs/src/internal/operators/concatMap.ts","./node_modules/rxjs/src/internal/operators/connect.ts","./node_modules/rxjs/src/internal/observable/fromSubscribable.ts","./node_modules/rxjs/src/internal/operators/debounceTime.ts","./node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","./node_modules/rxjs/src/internal/operators/delay.ts","./node_modules/rxjs/src/internal/operators/delayWhen.ts","./node_modules/rxjs/src/internal/operators/distinct.ts","./node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","./node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts","./node_modules/rxjs/src/internal/operators/expand.ts","./node_modules/rxjs/src/internal/operators/filter.ts","./node_modules/rxjs/src/internal/operators/finalize.ts","./node_modules/rxjs/src/internal/operators/first.ts","./node_modules/rxjs/src/internal/operators/ignoreElements.ts","./node_modules/rxjs/src/internal/operators/last.ts","./node_modules/rxjs/src/internal/operators/map.ts","./node_modules/rxjs/src/internal/operators/mapTo.ts","./node_modules/rxjs/src/internal/operators/mergeAll.ts","./node_modules/rxjs/src/internal/operators/mergeInternals.ts","./node_modules/rxjs/src/internal/operators/mergeMap.ts","./node_modules/rxjs/src/internal/operators/multicast.ts","./node_modules/rxjs/src/internal/operators/observeOn.ts","./node_modules/rxjs/src/internal/operators/pairwise.ts","./node_modules/rxjs/src/internal/operators/publish.ts","./node_modules/rxjs/src/internal/operators/refCount.ts","./node_modules/rxjs/src/internal/operators/repeat.ts","./node_modules/rxjs/src/internal/operators/share.ts","./node_modules/rxjs/src/internal/operators/shareReplay.ts","./node_modules/rxjs/src/internal/operators/skip.ts","./node_modules/rxjs/src/internal/operators/skipWhile.ts","./node_modules/rxjs/src/internal/operators/startWith.ts","./node_modules/rxjs/src/internal/operators/subscribeOn.ts","./node_modules/rxjs/src/internal/operators/switchMap.ts","./node_modules/rxjs/src/internal/operators/switchMapTo.ts","./node_modules/rxjs/src/internal/operators/take.ts","./node_modules/rxjs/src/internal/operators/takeLast.ts","./node_modules/rxjs/src/internal/operators/takeUntil.ts","./node_modules/rxjs/src/internal/operators/takeWhile.ts","./node_modules/rxjs/src/internal/operators/tap.ts","./node_modules/rxjs/src/internal/operators/throttle.ts","./node_modules/rxjs/src/internal/operators/throttleTime.ts","./node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","./node_modules/rxjs/src/internal/operators/withLatestFrom.ts","./node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","./node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts","./node_modules/rxjs/src/internal/scheduled/scheduled.ts","./node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","./node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","./node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","./node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts","./node_modules/rxjs/src/internal/scheduler/Action.ts","./node_modules/rxjs/src/internal/scheduler/intervalProvider.ts","./node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","./node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","./node_modules/rxjs/src/internal/scheduler/animationFrame.ts","./node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","./node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","./node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts","./node_modules/rxjs/src/internal/util/Immediate.ts","./node_modules/rxjs/src/internal/scheduler/immediateProvider.ts","./node_modules/rxjs/src/internal/scheduler/asap.ts","./node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","./node_modules/rxjs/src/internal/scheduler/AsapAction.ts","./node_modules/rxjs/src/internal/scheduler/async.ts","./node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts","./node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts","./node_modules/rxjs/src/internal/symbol/iterator.ts","./node_modules/rxjs/src/internal/symbol/observable.ts","./node_modules/rxjs/src/internal/util/EmptyError.ts","./node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","./node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","./node_modules/rxjs/src/internal/util/args.ts","./node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts","./node_modules/rxjs/src/internal/util/argsOrArgArray.ts","./node_modules/rxjs/src/internal/util/arrRemove.ts","./node_modules/rxjs/src/internal/util/createErrorClass.ts","./node_modules/rxjs/src/internal/util/createObject.ts","./node_modules/rxjs/src/internal/util/errorContext.ts","./node_modules/rxjs/src/internal/util/executeSchedule.ts","./node_modules/rxjs/src/internal/util/identity.ts","./node_modules/rxjs/src/internal/util/isArrayLike.ts","./node_modules/rxjs/src/internal/util/isAsyncIterable.ts","./node_modules/rxjs/src/internal/util/isDate.ts","./node_modules/rxjs/src/internal/util/isFunction.ts","./node_modules/rxjs/src/internal/util/isInteropObservable.ts","./node_modules/rxjs/src/internal/util/isIterable.ts","./node_modules/rxjs/src/internal/util/isObservable.ts","./node_modules/rxjs/src/internal/util/isPromise.ts","./node_modules/rxjs/src/internal/util/isReadableStreamLike.ts","./node_modules/rxjs/src/internal/util/isScheduler.ts","./node_modules/rxjs/src/internal/util/lift.ts","./node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts","./node_modules/rxjs/src/internal/util/noop.ts","./node_modules/rxjs/src/internal/util/pipe.ts","./node_modules/rxjs/src/internal/util/reportUnhandledError.ts","./node_modules/rxjs/src/internal/util/throwUnobservableError.ts","./node_modules/zone.js/dist/zone-patch-resize-observer.js","./node_modules/zone.js/dist/zone-patch-rxjs-fake-async.js","./node_modules/zone.js/dist/zone-patch-rxjs.js","./node_modules/zone.js/fesm2015/zone.js","./node_modules/source-map-loader/dist/cjs.js"],"sourcesContent":["import { TimestampProvider } from '../types';\n\ninterface PerformanceTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const performanceTimestampProvider: PerformanceTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n","import { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { TimestampProvider } from \"../../types\";\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\n\n/**\n * An observable of animation frames\n *\n * Emits the the amount of time elapsed since subscription and the timestamp on each animation frame.\n * Defaults to milliseconds provided to the requestAnimationFrame's callback. Does not end on its own.\n *\n * Every subscription will start a separate animation loop. Since animation frames are always scheduled\n * by the browser to occur directly before a repaint, scheduling more than one animation frame synchronously\n * should not be much different or have more overhead than looping over an array of events during\n * a single animation frame. However, if for some reason the developer would like to ensure the\n * execution of animation-related handlers are all executed during the same task by the engine,\n * the `share` operator can be used.\n *\n * This is useful for setting up animations with RxJS.\n *\n * ### Example\n *\n * Tweening a div to move it on the screen\n *\n * ```ts\n * import { animationFrames } from 'rxjs';\n * import { map, takeWhile, endWith } from 'rxjs/operators';\n *\n * function tween(start: number, end: number, duration: number) {\n * const diff = end - start;\n * return animationFrames().pipe(\n * // Figure out what percentage of time has passed\n * map(({elapsed}) => elapsed / duration),\n * // Take the vector while less than 100%\n * takeWhile(v => v < 1),\n * // Finish with 100%\n * endWith(1),\n * // Calculate the distance traveled between start and end\n * map(v => v * diff + start)\n * );\n * }\n *\n * // Setup a div for us to move around\n * const div = document.createElement('div');\n * document.body.appendChild(div);\n * div.style.position = 'absolute';\n * div.style.width = '40px';\n * div.style.height = '40px';\n * div.style.backgroundColor = 'lime';\n * div.style.transform = 'translate3d(10px, 0, 0)';\n *\n * tween(10, 200, 4000).subscribe(x => {\n * div.style.transform = `translate3d(${x}px, 0, 0)`;\n * });\n * ```\n *\n * ### Example\n *\n * Providing a custom timestamp provider\n *\n * ```ts\n * import { animationFrames, TimestampProvider } from 'rxjs';\n *\n * // A custom timestamp provider\n * let now = 0;\n * const customTSProvider: TimestampProvider = {\n * now() { return now++; }\n * };\n *\n * const source$ = animationFrames(customTSProvider);\n *\n * // Log increasing numbers 0...1...2... on every animation frame.\n * source$.subscribe(({ elapsed }) => console.log(elapsed));\n * ```\n *\n * @param timestampProvider An object with a `now` method that provides a numeric timestamp\n */\nexport function animationFrames(timestampProvider?: TimestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\n\n/**\n * Does the work of creating the observable for `animationFrames`.\n * @param timestampProvider The timestamp provider to use to create the observable\n */\nfunction animationFramesFactory(timestampProvider?: TimestampProvider) {\n const { schedule } = animationFrameProvider;\n return new Observable<{ timestamp: number, elapsed: number }>(subscriber => {\n const subscription = new Subscription();\n // If no timestamp provider is specified, use performance.now() - as it\n // will return timestamps 'compatible' with those passed to the run\n // callback and won't be affected by NTP adjustments, etc.\n const provider = timestampProvider || performanceTimestampProvider;\n // Capture the start time upon subscription, as the run callback can remain\n // queued for a considerable period of time and the elapsed time should\n // represent the time elapsed since subscription - not the time since the\n // first rendered animation frame.\n const start = provider.now();\n const run = (timestamp: DOMHighResTimeStamp | number) => {\n // Use the provider's timestamp to calculate the elapsed time. Note that\n // this means - if the caller hasn't passed a provider - that\n // performance.now() will be used instead of the timestamp that was\n // passed to the run callback. The reason for this is that the timestamp\n // passed to the callback can be earlier than the start time, as it\n // represents the time at which the browser decided it would render any\n // queued frames - and that time can be earlier the captured start time.\n const now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start\n });\n if (!subscriber.closed) {\n subscription.add(schedule(run));\n }\n };\n subscription.add(schedule(run));\n return subscription;\n });\n}\n\n/**\n * In the common case, where the timestamp provided by the rAF API is used,\n * we use this shared observable to reduce overhead.\n */\nconst DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n *\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private _value: T | null = null;\n private _hasValue = false;\n private _isComplete = false;\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, _hasValue, _value, thrownError, isStopped, _isComplete } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value!);\n subscriber.complete();\n }\n }\n\n next(value: T): void {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n }\n\n complete(): void {\n const { _hasValue, _value, _isComplete } = this;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && super.next(_value!);\n super.complete();\n }\n }\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n /** @deprecated Not used in VirtualTimeScheduler directly. Will be removed in v8. */\n static frameTimeFactor = 10;\n\n /**\n * The current frame for the state of the virtual scheduler instance. The the difference\n * between two \"frames\" is synonymous with the passage of \"virtual time units\". So if\n * you record `scheduler.frame` to be `1`, then later, observe `scheduler.frame` to be at `11`,\n * that means `10` virtual time units have passed.\n */\n public frame: number = 0;\n\n /**\n * Used internally to examine the current virtual action index being processed.\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n public index: number = -1;\n\n /**\n * This creates an instance of a `VirtualTimeScheduler`. Experts only. The signature of\n * this constructor is likely to change in the long run.\n *\n * @param schedulerActionCtor The type of Action to initialize when initializing actions during scheduling.\n * @param maxFrames The maximum number of frames to process before stopping. Used to prevent endless flush cycles.\n */\n constructor(schedulerActionCtor: typeof AsyncAction = VirtualAction as any, public maxFrames: number = Infinity) {\n super(schedulerActionCtor, () => this.frame);\n }\n\n /**\n * Prompt the Scheduler to execute all of its queued actions, therefore\n * clearing its queue.\n * @return {void}\n */\n public flush(): void {\n const { actions, maxFrames } = this;\n let error: any;\n let action: AsyncAction | undefined;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n\nexport class VirtualAction extends AsyncAction {\n protected active: boolean = true;\n\n constructor(\n protected scheduler: VirtualTimeScheduler,\n protected work: (this: SchedulerAction, state?: T) => void,\n protected index: number = (scheduler.index += 1)\n ) {\n super(scheduler, work);\n this.index = scheduler.index = index;\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return super.schedule(state, delay);\n }\n this.active = false;\n // If an action is rescheduled, we save allocations by mutating its state,\n // pushing it to the end of the scheduler queue, and recycling the action.\n // But since the VirtualTimeScheduler is used for testing, VirtualActions\n // must be immutable so they can be inspected later.\n const action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n } else {\n // If someone schedules something with Infinity, it'll never happen. So we\n // don't even schedule it.\n return Subscription.EMPTY;\n }\n }\n\n protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n this.delay = scheduler.frame + delay;\n const { actions } = scheduler;\n actions.push(this);\n (actions as Array>).sort(VirtualAction.sortActions);\n return true;\n }\n\n protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n return undefined;\n }\n\n protected _execute(state: T, delay: number): any {\n if (this.active === true) {\n return super._execute(state, delay);\n }\n }\n\n private static sortActions(a: VirtualAction, b: VirtualAction) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","import { PartialObserver, ObservableNotification, CompleteNotification, NextNotification, ErrorNotification } from './types';\nimport { Observable } from './Observable';\nimport { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated Use a string literal instead. `NotificationKind` will be replaced with a type alias in v8.\n * It will not be replaced with a const enum as those are not compatible with isolated modules.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n * @deprecated It is NOT recommended to create instances of `Notification` directly.\n * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n * Will be removed in v8.\n */\nexport class Notification {\n /**\n * A value signifying that the notification will \"next\" if observed. In truth,\n * This is really synonymous with just checking `kind === \"N\"`.\n * @deprecated Will be removed in v8. Instead, just check to see if the value of `kind` is `\"N\"`.\n */\n readonly hasValue: boolean;\n\n /**\n * Creates a \"Next\" notification object.\n * @param kind Always `'N'`\n * @param value The value to notify with if observed.\n * @deprecated Internal implementation detail. Use {@link Notification#createNext createNext} instead.\n */\n constructor(kind: 'N', value?: T);\n /**\n * Creates an \"Error\" notification object.\n * @param kind Always `'E'`\n * @param value Always `undefined`\n * @param error The error to notify with if observed.\n * @deprecated Internal implementation detail. Use {@link Notification#createError createError} instead.\n */\n constructor(kind: 'E', value: undefined, error: any);\n /**\n * Creates a \"completion\" notification object.\n * @param kind Always `'C'`\n * @deprecated Internal implementation detail. Use {@link Notification#createComplete createComplete} instead.\n */\n constructor(kind: 'C');\n constructor(public readonly kind: 'N' | 'E' | 'C', public readonly value?: T, public readonly error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Executes the appropriate handler on a passed `observer` given the `kind` of notification.\n * If the handler is missing it will do nothing. Even if the notification is an error, if\n * there is no error handler on the observer, an error will not be thrown, it will noop.\n * @param observer The observer to notify.\n */\n observe(observer: PartialObserver): void {\n return observeNotification(this as ObservableNotification, observer);\n }\n\n /**\n * Executes a notification on the appropriate handler from a list provided.\n * If a handler is missing for the kind of notification, nothing is called\n * and no error is thrown, it will be a noop.\n * @param next A next handler\n * @param error An error handler\n * @param complete A complete handler\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n do(next: (value: T) => void, error: (err: any) => void, complete: () => void): void;\n /**\n * Executes a notification on the appropriate handler from a list provided.\n * If a handler is missing for the kind of notification, nothing is called\n * and no error is thrown, it will be a noop.\n * @param next A next handler\n * @param error An error handler\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n do(next: (value: T) => void, error: (err: any) => void): void;\n /**\n * Executes the next handler if the Notification is of `kind` `\"N\"`. Otherwise\n * this will not error, and it will be a noop.\n * @param next The next handler\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n do(next: (value: T) => void): void;\n do(nextHandler: (value: T) => void, errorHandler?: (err: any) => void, completeHandler?: () => void): void {\n const { kind, value, error } = this;\n return kind === 'N' ? nextHandler?.(value!) : kind === 'E' ? errorHandler?.(error) : completeHandler?.();\n }\n\n /**\n * Executes a notification on the appropriate handler from a list provided.\n * If a handler is missing for the kind of notification, nothing is called\n * and no error is thrown, it will be a noop.\n * @param next A next handler\n * @param error An error handler\n * @param complete A complete handler\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n accept(next: (value: T) => void, error: (err: any) => void, complete: () => void): void;\n /**\n * Executes a notification on the appropriate handler from a list provided.\n * If a handler is missing for the kind of notification, nothing is called\n * and no error is thrown, it will be a noop.\n * @param next A next handler\n * @param error An error handler\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n accept(next: (value: T) => void, error: (err: any) => void): void;\n /**\n * Executes the next handler if the Notification is of `kind` `\"N\"`. Otherwise\n * this will not error, and it will be a noop.\n * @param next The next handler\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n accept(next: (value: T) => void): void;\n\n /**\n * Executes the appropriate handler on a passed `observer` given the `kind` of notification.\n * If the handler is missing it will do nothing. Even if the notification is an error, if\n * there is no error handler on the observer, an error will not be thrown, it will noop.\n * @param observer The observer to notify.\n * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n */\n accept(observer: PartialObserver): void;\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n return isFunction((nextOrObserver as any)?.next)\n ? this.observe(nextOrObserver as PartialObserver)\n : this.do(nextOrObserver as (value: T) => void, error as any, complete as any);\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n *\n * @deprecated Will be removed in v8. To convert a `Notification` to an {@link Observable},\n * use {@link of} and {@link dematerialize}: `of(notification).pipe(dematerialize())`.\n */\n toObservable(): Observable {\n const { kind, value, error } = this;\n // Select the observable to return by `kind`\n const result =\n kind === 'N'\n ? // Next kind. Return an observable of that value.\n of(value!)\n : //\n kind === 'E'\n ? // Error kind. Return an observable that emits the error.\n throwError(() => error)\n : //\n kind === 'C'\n ? // Completion kind. Kind is \"C\", return an observable that just completes.\n EMPTY\n : // Unknown kind, return falsy, so we error below.\n 0;\n if (!result) {\n // TODO: consider removing this check. The only way to cause this would be to\n // use the Notification constructor directly in a way that is not type-safe.\n // and direct use of the Notification constructor is deprecated.\n throw new TypeError(`Unexpected notification kind ${kind}`);\n }\n return result;\n }\n\n private static completeNotification = new Notification('C') as Notification & CompleteNotification;\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n * @deprecated It is NOT recommended to create instances of `Notification` directly.\n * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n * Will be removed in v8.\n */\n static createNext(value: T) {\n return new Notification('N', value) as Notification & NextNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n * @deprecated It is NOT recommended to create instances of `Notification` directly.\n * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n * Will be removed in v8.\n */\n static createError(err?: any) {\n return new Notification('E', undefined, err) as Notification & ErrorNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n * @deprecated It is NOT recommended to create instances of `Notification` directly.\n * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n * Will be removed in v8.\n */\n static createComplete(): Notification & CompleteNotification {\n return Notification.completeNotification;\n }\n}\n\n/**\n * Executes the appropriate handler on a passed `observer` given the `kind` of notification.\n * If the handler is missing it will do nothing. Even if the notification is an error, if\n * there is no error handler on the observer, an error will not be thrown, it will noop.\n * @param notification The notification object to observe.\n * @param observer The observer to notify.\n */\nexport function observeNotification(notification: ObservableNotification, observer: PartialObserver) {\n const { kind, value, error } = notification as any;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? observer.next?.(value!) : kind === 'E' ? observer.error?.(error) : observer.complete?.();\n}\n","import { Observable } from './Observable';\nimport { EmptyError } from './util/EmptyError';\n\nexport interface LastValueFromConfig {\n defaultValue: T;\n}\n\nexport function lastValueFrom(source: Observable, config: LastValueFromConfig): Promise;\nexport function lastValueFrom(source: Observable): Promise;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * waiting for it to complete, and resolving the returned promise with the\n * last value from the observed stream.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError} or will resolve\n * with the default value if a default was specified.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * ### Example\n *\n * Wait for the last value from a stream and emit it from a promise in\n * an async function.\n *\n * ```ts\n * import { interval, lastValueFrom } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * async function execute() {\n * const source$ = interval(2000).pipe(take(10));\n * const finalNumber = await lastValueFrom(source$);\n * console.log(`The final number is ${finalNumber}`);\n * }\n *\n * execute();\n *\n * // Expected output:\n * // \"The final number is 9\"\n * ```\n *\n * @see {@link firstValueFrom}\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function lastValueFrom(source: Observable, config?: LastValueFromConfig): Promise {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\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 } else if (hasConfig) {\n resolve(config!.defaultValue);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n","import { Observable } from './Observable';\nimport { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\n\nexport interface FirstValueFromConfig {\n defaultValue: T;\n}\n\nexport function firstValueFrom(source: Observable, config: FirstValueFromConfig): Promise;\nexport function firstValueFrom(source: Observable): Promise;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve as soon as the first value\n * arrives from the observable. The subscription will then be closed.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError} or will resolve\n * with the default value if a default was specified.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * **WARNING**: Only use this with observables you *know* will emit at least one value,\n * *OR* complete. If the source observable does not emit one value or complete, you will\n * end up with a promise that is hung up, and potentially all of the state of an\n * async function hanging out in memory. To avoid this situation, look into adding\n * something like {@link timeout}, {@link take}, {@link takeWhile}, or {@link takeUntil}\n * amongst others.\n *\n * ### Example\n *\n * Wait for the first value from a stream and emit it from a promise in\n * an async function.\n *\n * ```ts\n * import { interval, firstValueFrom } from 'rxjs';\n *\n * async function execute() {\n * const source$ = interval(2000);\n * const firstNumber = await firstValueFrom(source$);\n * console.log(`The first number is ${firstNumber}`);\n * }\n *\n * execute();\n *\n * // Expected output:\n * // \"The first number is 0\"\n * ```\n *\n * @see {@link lastValueFrom}\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function firstValueFrom(source: Observable, config?: FirstValueFromConfig): Promise {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: () => {\n if (hasConfig) {\n resolve(config!.defaultValue);\n } else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface ArgumentOutOfRangeError extends Error {}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ArgumentOutOfRangeError;\n}\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = createErrorClass(\n (_super) =>\n function ArgumentOutOfRangeErrorImpl(this: any) {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n }\n);\n","import { createErrorClass } from './createErrorClass';\n\nexport interface NotFoundError extends Error {}\n\nexport interface NotFoundErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (message: string): NotFoundError;\n}\n\n/**\n * An error thrown when a value or values are missing from an\n * observable sequence.\n *\n * @see {@link operators/single}\n *\n * @class NotFoundError\n */\nexport const NotFoundError: NotFoundErrorCtor = createErrorClass(\n (_super) =>\n function NotFoundErrorImpl(this: any, message: string) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n }\n);\n","import { createErrorClass } from './createErrorClass';\n\nexport interface SequenceError extends Error {}\n\nexport interface SequenceErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (message: string): SequenceError;\n}\n\n/**\n * An error thrown when something is wrong with the sequence of\n * values arriving on the observable.\n *\n * @see {@link operators/single}\n *\n * @class SequenceError\n */\nexport const SequenceError: SequenceErrorCtor = createErrorClass(\n (_super) =>\n function SequenceErrorImpl(this: any, message: string) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n }\n);\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { isValidDate } from '../util/isDate';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport interface TimeoutConfig = ObservableInput, M = unknown> {\n /**\n * The time allowed between values from the source before timeout is triggered.\n */\n each?: number;\n\n /**\n * The relative time as a `number` in milliseconds, or a specific time as a `Date` object,\n * by which the first value must arrive from the source before timeout is triggered.\n */\n first?: number | Date;\n\n /**\n * The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n */\n scheduler?: SchedulerLike;\n\n /**\n * A factory used to create observable to switch to when timeout occurs. Provides\n * some information about the source observable's emissions and what delay or\n * exact time triggered the timeout.\n */\n with?: (info: TimeoutInfo) => O;\n\n /**\n * Optional additional metadata you can provide to code that handles\n * the timeout, will be provided through the {@link TimeoutError}.\n * This can be used to help identify the source of a timeout or pass along\n * other information related to the timeout.\n */\n meta?: M;\n}\n\nexport interface TimeoutInfo {\n /** Optional metadata that was provided to the timeout configuration. */\n readonly meta: M;\n /** The number of messages seen before the timeout */\n readonly seen: number;\n /** The last message seen */\n readonly lastValue: T | null;\n}\n\n/**\n * An error emitted when a timeout occurs.\n */\nexport interface TimeoutError extends Error {\n /**\n * The information provided to the error by the timeout\n * operation that created the error. Will be `null` if\n * used directly in non-RxJS code with an empty constructor.\n * (Note that using this constructor directly is not recommended,\n * you should create your own errors)\n */\n info: TimeoutInfo | null;\n}\n\nexport interface TimeoutErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (info?: TimeoutInfo): TimeoutError;\n}\n\n/**\n * An error thrown by the {@link operators/timeout} operator.\n *\n * Provided so users can use as a type and do quality comparisons.\n * We recommend you do not subclass this or create instances of this class directly.\n * If you have need of a error representing a timeout, you should\n * create your own error class and use that.\n *\n * @see {@link operators/timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = createErrorClass(\n (_super) =>\n function TimeoutErrorImpl(this: any, info: TimeoutInfo | null = null) {\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n }\n);\n\n/**\n * If `with` is provided, this will return an observable that will switch to a different observable if the source\n * does not push values within the specified time parameters.\n *\n * The most flexible option for creating a timeout behavior.\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ### Example\n *\n * Emit a custom error if there is too much time between values\n *\n * ```ts\n * import { interval, throwError } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * class CustomTimeoutError extends Error {\n * constructor() {\n * super('It was too slow');\n * this.name = 'CustomTimeoutError';\n * }\n * }\n *\n * const slow$ = interval(900);\n *\n * slow$.pipe(\n * timeout({\n * each: 1000,\n * with: () => throwError(new CustomTimeoutError())\n * })\n * )\n * .subscribe({\n * error: console.error\n * })\n * ```\n *\n * ### Example\n *\n * Switch to a faster observable if your source is slow.\n *\n * ```ts\n * import { interval, throwError } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const slow$ = interval(900);\n * const fast$ = interval(500);\n *\n * slow$.pipe(\n * timeout({\n * each: 1000,\n * with: () => fast$,\n * })\n * )\n * .subscribe(console.log)\n * ```\n * @param config The configuration for the timeout.\n */\nexport function timeout, M = unknown>(\n config: TimeoutConfig & { with: (info: TimeoutInfo) => O }\n): OperatorFunction>;\n\n/**\n * Returns an observable that will error or switch to a different observable if the source does not push values\n * within the specified time parameters.\n *\n * The most flexible option for creating a timeout behavior.\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ### Handling TimeoutErrors\n *\n * If no `with` property was provided, subscriptions to the resulting observable may emit an error of {@link TimeoutError}.\n * The timeout error provides useful information you can examine when you're handling the error. The most common way to handle\n * the error would be with {@link catchError}, although you could use {@link tap} or just the error handler in your `subscribe` call\n * directly, if your error handling is only a side effect (such as notifying the user, or logging).\n *\n * In this case, you would check the error for `instanceof TimeoutError` to validate that the error was indeed from `timeout`, and\n * not from some other source. If it's not from `timeout`, you should probably rethrow it if you're in a `catchError`.\n *\n *\n * ### Example\n *\n * Emit a {@link TimeoutError} if the first value, and _only_ the first value, does not arrive within 5 seconds\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * // A random interval that lasts between 0 and 10 seconds per tick\n * const source$ = interval(Math.round(Math.random() * 10000));\n *\n * source$.pipe(\n * timeout({ first: 5000 })\n * )\n * .subscribe(console.log);\n * ```\n *\n * ### Example\n *\n * Emit a {@link TimeoutError} if the source waits longer than 5 seconds between any two values or the first value\n * and subscription.\n *\n * ```ts\n * import { timer } from 'rxjs';\n * import { timeout, expand } from 'rxjs/operators';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime()).pipe(\n * expand(() => timer(getRandomTime()))\n * )\n *\n * source$.pipe(\n * timeout({ each: 5000 })\n * )\n * .subscribe(console.log);\n * ```\n *\n * ### Example\n *\n * Emit a {@link TimeoutError} if the the source does not emit before 7 seconds, _or_ if the source waits longer than\n * 5 seconds between any two values after the first.\n *\n * ```ts\n * import { timer } from 'rxjs';\n * import { timeout, expand } from 'rxjs/operators';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime()).pipe(\n * expand(() => timer(getRandomTime()))\n * )\n *\n * source$.pipe(\n * timeout({ first: 7000, each: 5000 })\n * )\n * .subscribe(console.log);\n * ```\n */\nexport function timeout(config: Omit, 'with'>): OperatorFunction;\n\n/**\n * Returns an observable that will error if the source does not push its first value before the specified time passed as a `Date`.\n * This is functionally the same as `timeout({ first: someDate })`.\n *\n * Errors if the first value doesn't show up before the given date and time\n *\n * ![](timeout.png)\n *\n * @param first The date to at which the resulting observable will timeout if the source observable\n * does not emit at least one value.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout(first: Date, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n\n/**\n * Returns an observable that will error if the source does not push a value within the specified time in milliseconds.\n * This is functionally the same as `timeout({ each: milliseconds })`.\n *\n * Errors if it waits too long between any value\n *\n * ![](timeout.png)\n *\n * @param each The time allowed between each pushed value from the source before the resulting observable\n * will timeout.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout(each: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * Timeouts on Observable that doesn't emit values fast enough.\n *\n * ![](timeout.png)\n *\n * @return A function that returns an Observable that mirrors behaviour of the\n * source Observable, unless timeout happens when it throws an error.\n */\nexport function timeout, M>(\n config: number | Date | TimeoutConfig,\n schedulerArg?: SchedulerLike\n): OperatorFunction> {\n // Intentionally terse code.\n // If the first argument is a valid `Date`, then we use it as the `first` config.\n // Otherwise, if the first argument is a `number`, then we use it as the `each` config.\n // Otherwise, it can be assumed the first argument is the configuration object itself, and\n // we destructure that into what we're going to use, setting important defaults as we do.\n // NOTE: The default for `scheduler` will be the `scheduler` argument if it exists, or\n // it will default to the `asyncScheduler`.\n const { first, each, with: _with = timeoutErrorFactory, scheduler = schedulerArg ?? asyncScheduler, meta = null! } = (isValidDate(config)\n ? { first: config }\n : typeof config === 'number'\n ? { each: config }\n : config) as TimeoutConfig;\n\n if (first == null && each == null) {\n // Ensure timeout was provided at runtime.\n throw new TypeError('No timeout provided.');\n }\n\n return operate((source, subscriber) => {\n // This subscription encapsulates our subscription to the\n // source for this operator. We're capturing it separately,\n // because if there is a `with` observable to fail over to,\n // we want to unsubscribe from our original subscription, and\n // hand of the subscription to that one.\n let originalSourceSubscription: Subscription;\n // The subscription for our timeout timer. This changes\n // every time get get a new value.\n let timerSubscription: Subscription;\n // A bit of state we pass to our with and error factories to\n // tell what the last value we saw was.\n let lastValue: T | null = null;\n // A bit of state we pass to the with and error factories to\n // tell how many values we have seen so far.\n let seen = 0;\n const startTimer = (delay: number) => {\n timerSubscription = executeSchedule(\n subscriber,\n scheduler,\n () => {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(\n _with!({\n meta,\n lastValue,\n seen,\n })\n ).subscribe(subscriber);\n } catch (err) {\n subscriber.error(err);\n }\n },\n delay\n );\n };\n\n originalSourceSubscription = source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value: T) => {\n // clear the timer so we can emit and start another one.\n timerSubscription?.unsubscribe();\n seen++;\n // Emit\n subscriber.next((lastValue = value));\n // null | undefined are both < 0. Thanks, JavaScript.\n each! > 0 && startTimer(each!);\n },\n undefined,\n undefined,\n () => {\n if (!timerSubscription?.closed) {\n timerSubscription?.unsubscribe();\n }\n // Be sure not to hold the last value in memory after unsubscription\n // it could be quite large.\n lastValue = null;\n }\n )\n );\n\n // Intentionally terse code.\n // If `first` was provided, and it's a number, then use it.\n // If `first` was provided and it's not a number, it's a Date, and we get the difference between it and \"now\".\n // If `first` was not provided at all, then our first timer will be the value from `each`.\n startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler!.now()) : each!);\n });\n}\n\n/**\n * The default function to use to emit an error when timeout occurs and a `with` function\n * is not specified.\n * @param info The information about the timeout to pass along to the error\n */\nfunction timeoutErrorFactory(info: TimeoutInfo): Observable {\n throw new TimeoutError(info);\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { Observable } from '../Observable';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { observeOn } from '../operators/observeOn';\nimport { AsyncSubject } from '../AsyncSubject';\n\nexport function bindCallbackInternals(\n isNodeStyle: boolean,\n callbackFunc: any,\n resultSelector?: any,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // The user provided a result selector.\n return function (this: any, ...args: any[]) {\n return (bindCallbackInternals(isNodeStyle, callbackFunc, scheduler) as any)\n .apply(this, args)\n .pipe(mapOneOrManyArgs(resultSelector as any));\n };\n }\n }\n\n // If a scheduler was passed, use our `subscribeOn` and `observeOn` operators\n // to compose that behavior for the user.\n if (scheduler) {\n return function (this: any, ...args: any[]) {\n return (bindCallbackInternals(isNodeStyle, callbackFunc) as any)\n .apply(this, args)\n .pipe(subscribeOn(scheduler!), observeOn(scheduler!));\n };\n }\n\n return function (this: any, ...args: any[]): Observable {\n // We're using AsyncSubject, because it emits when it completes,\n // and it will play the value to all late-arriving subscribers.\n const subject = new AsyncSubject();\n\n // If this is true, then we haven't called our function yet.\n let uninitialized = true;\n return new Observable((subscriber) => {\n // Add our subscriber to the subject.\n const subs = subject.subscribe(subscriber);\n\n if (uninitialized) {\n uninitialized = false;\n // We're going to execute the bound function\n // This bit is to signal that we are hitting the callback asychronously.\n // Because we don't have any anti-\"Zalgo\" gaurantees with whatever\n // function we are handed, we use this bit to figure out whether or not\n // we are getting hit in a callback synchronously during our call.\n let isAsync = false;\n\n // This is used to signal that the callback completed synchronously.\n let isComplete = false;\n\n // Call our function that has a callback. If at any time during this\n // call, an error is thrown, it will be caught by the Observable\n // subscription process and sent to the consumer.\n callbackFunc.apply(\n // Pass the appropriate `this` context.\n this,\n [\n // Pass the arguments.\n ...args,\n // And our callback handler.\n (...results: any[]) => {\n if (isNodeStyle) {\n // If this is a node callback, shift the first value off of the\n // results and check it, as it is the error argument. By shifting,\n // we leave only the argument(s) we want to pass to the consumer.\n const err = results.shift();\n if (err != null) {\n subject.error(err);\n // If we've errored, we can stop processing this function\n // as there's nothing else to do. Just return to escape.\n return;\n }\n }\n // If we have one argument, notify the consumer\n // of it as a single value, otherwise, if there's more than one, pass\n // them as an array. Note that if there are no arguments, `undefined`\n // will be emitted.\n subject.next(1 < results.length ? results : results[0]);\n // Flip this flag, so we know we can complete it in the synchronous\n // case below.\n isComplete = true;\n // If we're not asynchronous, we need to defer the `complete` call\n // until after the call to the function is over. This is because an\n // error could be thrown in the function after it calls our callback,\n // and if that is the case, if we complete here, we are unable to notify\n // the consumer than an error occured.\n if (isAsync) {\n subject.complete();\n }\n },\n ]\n );\n // If we flipped `isComplete` during the call, we resolved synchronously,\n // notify complete, because we skipped it in the callback to wait\n // to make sure there were no errors during the call.\n if (isComplete) {\n subject.complete();\n }\n\n // We're no longer synchronous. If the callback is called at this point\n // we can notify complete on the spot.\n isAsync = true;\n }\n\n // Return the subscription fron adding our subscriber to the subject.\n return subs;\n });\n };\n}\n","/* @prettier */\nimport { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { bindCallbackInternals } from './bindCallbackInternals';\n\nexport function bindCallback(\n callbackFunc: (...args: any[]) => void,\n resultSelector: (...args: any[]) => any,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable;\n\n// args is the arguments array and we push the callback on the rest tuple since the rest parameter must be last (only item) in a parameter list\nexport function bindCallback(\n callbackFunc: (...args: [...A, (...res: R) => void]) => void,\n schedulerLike?: SchedulerLike\n): (...arg: A) => Observable;\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well. If you want to defer that call,\n * you may use {@link asyncScheduler} just as before. This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * ### Convert jQuery's getJSON to an Observable API\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Receive an array of arguments passed to a callback\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (cb) => {\n * cb(5, 'some string', {someProperty: 'someValue'})\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction(12, 10).subscribe(values => {\n * console.log(values); // [22, 2]\n * });\n * ```\n *\n * ### Compare behaviour with and without async Scheduler\n * ```ts\n * import { bindCallback, asyncScheduler } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n * cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, asyncScheduler);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * ### Use bindCallback on an object method\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod\n * .call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n */\nexport function bindCallback(\n callbackFunc: (...args: [...any[], (...res: any) => void]) => void,\n resultSelector?: ((...args: any[]) => any) | SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n","/* @prettier */\nimport { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { bindCallbackInternals } from './bindCallbackInternals';\n\nexport function bindNodeCallback(\n callbackFunc: (...args: any[]) => void,\n resultSelector: (...args: any[]) => any,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable;\n\n// args is the arguments array and we push the callback on the rest tuple since the rest parameter must be last (only item) in a parameter list\nexport function bindNodeCallback(\n callbackFunc: (...args: [...A, (err: any, ...res: R) => void]) => void,\n schedulerLike?: SchedulerLike\n): (...arg: A) => Observable;\n\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n * ### Read a file from the filesystem and get the data as an Observable\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Use on function calling callback with multiple arguments\n * ```ts\n * someFunction((err, a, b) => {\n * console.log(err); // null\n * console.log(a); // 5\n * console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n * console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * ### Use on function calling callback in regular style\n * ```ts\n * someFunction(a => {\n * console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n * value => {} // never gets called\n * err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n */\nexport function bindNodeCallback(\n callbackFunc: (...args: [...any[], (err: any, ...res: any) => void]) => void,\n resultSelector?: ((...args: any[]) => any) | SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n","import { Connectable, ObservableInput, SubjectLike } from '../types';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { defer } from './defer';\n\nexport interface ConnectableConfig {\n /**\n * A factory function used to create the Subject through which the source\n * is multicast. By default this creates a {@link Subject}.\n */\n connector: () => SubjectLike;\n /**\n * If true, the resulting observable will reset internal state upon disconnetion\n * and return to a \"cold\" state. This allows the resulting observable to be\n * reconnected.\n * If false, upon disconnection, the connecting subject will remain the\n * connecting subject, meaning the resulting observable will not go \"cold\" again,\n * and subsequent repeats or resubscriptions will resubscribe to that same subject.\n */\n resetOnDisconnect?: boolean;\n}\n\n/**\n * The default configuration for `connectable`.\n */\nconst DEFAULT_CONFIG: ConnectableConfig = {\n connector: () => new Subject(),\n resetOnDisconnect: true,\n};\n\n/**\n * Creates an observable that multicasts once `connect()` is called on it.\n *\n * @param source The observable source to make connectable.\n * @param config The configuration object for `connectable`.\n * @returns A \"connectable\" observable, that has a `connect()` method, that you must call to\n * connect the source to all consumers through the subject provided as the connector.\n */\nexport function connectable(source: ObservableInput, config: ConnectableConfig = DEFAULT_CONFIG): Connectable {\n // The subscription representing the connection.\n let connection: Subscription | null = null;\n const { connector, resetOnDisconnect = true } = config;\n let subject = connector();\n\n const result: any = new Observable((subscriber) => {\n return subject.subscribe(subscriber);\n });\n\n // Define the `connect` function. This is what users must call\n // in order to \"connect\" the source to the subject that is\n // multicasting it.\n result.connect = () => {\n if (!connection || connection.closed) {\n connection = defer(() => source).subscribe(subject);\n if (resetOnDisconnect) {\n connection.add(() => (subject = connector()));\n }\n }\n return connection;\n };\n\n return result;\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern(\n addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void\n): Observable;\nexport function fromEventPattern(\n addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T\n): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * than one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Example\n * ### Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * ## Example\n * ### Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * ## Example\n * ### Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs \"EVENT_TYPE\" \"EVENT_MESSAGE\" to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + \" --- \" + eventMessage // without that function only \"EVENT_TYPE\"\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"EVENT_TYPE --- EVENT_MESSAGE\"\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n */\nexport function fromEventPattern(\n addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T\n): Observable {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n return new Observable((subscriber) => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n const retValue = addHandler(handler);\n return isFunction(removeHandler) ? () => removeHandler(handler, retValue) : undefined;\n });\n}\n","import { Observable } from '../Observable';\nimport { identity } from '../util/identity';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { defer } from './defer';\nimport { scheduleIterable } from '../scheduled/scheduleIterable';\n\ntype ConditionFunc = (state: S) => boolean;\ntype IterateFunc = (state: S) => S;\ntype ResultFunc = (state: S) => T;\n\nexport interface GenerateBaseOptions {\n /**\n * Initial state.\n */\n initialState: S;\n /**\n * Condition function that accepts state and returns boolean.\n * When it returns false, the generator stops.\n * If not specified, a generator never stops.\n */\n condition?: ConditionFunc;\n /**\n * Iterate function that accepts state and returns new state.\n */\n iterate: IterateFunc;\n /**\n * SchedulerLike to use for generation process.\n * By default, a generator starts immediately.\n */\n scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions extends GenerateBaseOptions {\n /**\n * Result selection function that accepts state and returns a value to emit.\n */\n resultSelector: ResultFunc;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * ## Examples\n *\n * ### Produces sequences of number\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(0, x => x < 3, x => x + 1, x => x);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * ```\n *\n * ### Use asap scheduler\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(1, x => x < 5, x => x * 2, x => x + 1, asap);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 2\n * // 3\n * // 5\n * ```\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} on which to run the generator loop. If not provided, defaults to emit immediately.\n * @returns {Observable} The generated sequence.\n * @deprecated Instead of passing separate arguments, use the options argument. Signatures taking separate arguments will be removed in v8.\n */\nexport function generate(\n initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n resultSelector: ResultFunc,\n scheduler?: SchedulerLike\n): Observable;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * Use it instead of nexting values in a for loop.\n *\n * ![](generate.png)\n *\n * `generate` allows you to create a stream of values generated with a loop very similar to\n * a traditional for loop. The first argument of `generate` is a beginning value. The second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * then the loop continues, if not, it stops. The third value is a function which takes the\n * previously defined value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in a traditional for loop: the first expression\n * initializes some state (for example, a numeric index), the second tests if the loop can perform the next\n * iteration (for example, if the index is lower than 10) and the third states how the defined value\n * will be modified on every step (for example, the index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First of all, the condition function is ran. If it returns true, then the Observable\n * emits the currently stored value (initial value at the first iteration) and finally updates\n * that value with iterate function. If at some point the condition returns false, then the Observable\n * completes at that moment.\n *\n * Optionally you can pass a fourth parameter to `generate` - a result selector function which allows you\n * to immediately map the value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * a single object to the operator instead where the object has the properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, or in other words the resulting Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of a multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is a `resultSelector`\n * function or not). In case of a single-parameter call, you can provide it as a\n * `scheduler` property on the object passed to the operator. In both cases, a scheduler decides when\n * the next iteration of the loop will happen and therefore when the next value will be emitted\n * by the Observable. For example, to ensure that each value is pushed to the Observer\n * on a separate task in the event loop, you could use the `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * ## Examples\n *\n * ### Use with condition and iterate functions\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(0, x => x < 3, x => x + 1);\n *\n * result.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Complete!\"\n * ```\n *\n * ### Use with condition, iterate and resultSelector functions\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * result.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"complete!\"\n * ```\n *\n * ### Use with options object\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n * initialState: 0,\n * condition(value) { return value < 3; },\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * result.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Complete!\"\n * ```\n *\n * ### Use options object without condition function\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n * initialState: 0,\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * result.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('complete!') // This will never run\n * });\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n * ```\n *\n * @see {@link from}\n * @see {@link index/Observable.create}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} [resultSelector] Selector function for results produced in the sequence.\n * @param {Scheduler} [scheduler] A {@link Scheduler} on which to run the generator loop. If not provided, defaults to emitting immediately.\n * @return {Observable} The generated sequence.\n * @deprecated Instead of passing separate arguments, use the options argument. Signatures taking separate arguments will be removed in v8.\n */\nexport function generate(\n initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n scheduler?: SchedulerLike\n): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * ## Examples\n *\n * ### Use options object with condition function\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n * initialState: 0,\n * condition: x => x < 3,\n * iterate: x => x + 1,\n * });\n *\n * result.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Complete!\".\n * ```\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateBaseOptions} options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateBaseOptions): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * ## Examples\n *\n * ### Use options object with condition and iterate function\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n * initialState: 0,\n * condition: x => x < 3,\n * iterate: x => x + 1,\n * resultSelector: x => x,\n * });\n *\n * result.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Complete!\".\n * ```\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateOptions} options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateOptions): Observable;\n\nexport function generate(\n initialStateOrOptions: S | GenerateOptions,\n condition?: ConditionFunc,\n iterate?: IterateFunc,\n resultSelectorOrScheduler?: ResultFunc | SchedulerLike,\n scheduler?: SchedulerLike\n): Observable {\n let resultSelector: ResultFunc;\n let initialState: S;\n\n // TODO: Remove this as we move away from deprecated signatures\n // and move towards a configuration object argument.\n if (arguments.length === 1) {\n // If we only have one argument, we can assume it is a configuration object.\n // Note that folks not using TypeScript may trip over this.\n ({\n initialState,\n condition,\n iterate,\n resultSelector = identity as ResultFunc,\n scheduler,\n } = initialStateOrOptions as GenerateOptions);\n } else {\n // Deprecated arguments path. Figure out what the user\n // passed and set it here.\n initialState = initialStateOrOptions as S;\n if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity as ResultFunc;\n scheduler = resultSelectorOrScheduler as SchedulerLike;\n } else {\n resultSelector = resultSelectorOrScheduler as ResultFunc;\n }\n }\n\n // The actual generator used to \"generate\" values.\n function* gen() {\n for (let state = initialState; !condition || condition(state); state = iterate!(state)) {\n yield resultSelector(state);\n }\n }\n\n // We use `defer` because we want to defer the creation of the iterator from the iterable.\n return defer(\n (scheduler\n ? // If a scheduler was provided, use `scheduleIterable` to ensure that iteration/generation\n // happens on the scheduler.\n () => scheduleIterable(gen(), scheduler!)\n : // Otherwise, if there's no scheduler, we can just use the generator function directly in\n // `defer` and executing it will return the generator (which is iterable).\n gen) as () => ObservableInput\n );\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple } from '../types';\nimport { EMPTY } from './empty';\nimport { onErrorResumeNext as onErrorResumeNextWith } from '../operators/onErrorResumeNext';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(sources: [...ObservableInputTuple]): Observable;\nexport function onErrorResumeNext(...sources: [...ObservableInputTuple]): Observable;\n\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link index/EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { onErrorResumeNext, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) throw Error();\n * return 10 / x;\n * })\n * ),\n * of(1, 2, 3),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('done'),\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext(\n ...sources: [[...ObservableInputTuple]] | [...ObservableInputTuple]\n): Observable {\n return onErrorResumeNextWith(argsOrArgArray(sources))(EMPTY);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\nexport function onErrorResumeNext(\n sources: [...ObservableInputTuple]\n): OperatorFunction;\nexport function onErrorResumeNext(\n ...sources: [...ObservableInputTuple]\n): OperatorFunction;\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables, subscribes to next one on error or complete.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link Observable#subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catchError} instead.\n *\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { of } from 'rxjs';\n * import { onErrorResumeNext, map } from 'rxjs/operators';\n *\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) { throw Error(); }\n * return 10 / x;\n * }),\n * onErrorResumeNext(of(1, 2, 3)),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('that\\'s it!')\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} nextSources Observables passed either directly or as an array.\n * @return A function that returns an Observable that emits values from source\n * Observable, but - if it errors - subscribes to the next passed Observable\n * and so on, until it completes or runs out of Observables.\n */\nexport function onErrorResumeNext(\n ...sources: [[...ObservableInputTuple]] | [...ObservableInputTuple]\n): OperatorFunction {\n // For some reason, TS 4.1 RC gets the inference wrong here and infers the\n // result to be `A[number][]` - completely dropping the ObservableInput part\n // of the type. This makes no sense whatsoever. As a workaround, the type is\n // asserted explicitly.\n const nextSources = (argsOrArgArray(sources) as unknown) as ObservableInputTuple;\n\n return operate((source, subscriber) => {\n const remaining = [source, ...nextSources];\n const subscribeNext = () => {\n if (!subscriber.closed) {\n if (remaining.length > 0) {\n let nextSource: Observable;\n try {\n nextSource = innerFrom(remaining.shift()!);\n } catch (err) {\n subscribeNext();\n return;\n }\n\n // Here we have to use one of our Subscribers, or it does not wire up\n // The `closed` property of upstream Subscribers synchronously, that\n // would result in situation were we could not stop a synchronous firehose\n // with something like `take(3)`.\n const innerSub = new OperatorSubscriber(subscriber, undefined, noop, noop);\n subscriber.add(nextSource.subscribe(innerSub));\n innerSub.add(subscribeNext);\n } else {\n subscriber.complete();\n }\n }\n };\n\n subscribeNext();\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { from } from './from';\n\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs(arr: readonly T[], scheduler?: SchedulerLike): Observable<[string, T]>;\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs>(obj: O, scheduler?: SchedulerLike): Observable<[keyof O, O[keyof O]]>;\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs(iterable: Iterable, scheduler?: SchedulerLike): Observable<[string, T]>;\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs(\n n: number | bigint | boolean | ((...args: any[]) => any) | symbol,\n scheduler?: SchedulerLike\n): Observable<[never, never]>;\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * Turn entries of an object into a stream.\n *\n * ![](pairs.png)\n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * ## Example\n * ### Converts an object to an Observable\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n * foo: 42,\n * bar: 56,\n * baz: 78\n * };\n *\n * pairs(obj).subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // [\"foo\", 42],\n * // [\"bar\", 56],\n * // [\"baz\", 78],\n * // \"Complete!\"\n * ```\n *\n * ### Object.entries required\n *\n * In IE, you will need to polyfill `Object.entries` in order to use this.\n * [MDN has a polyfill here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to schedule\n * when resulting Observable will emit values.\n * @returns {(Observable>)} An observable sequence of\n * [key, value] pairs from the object.\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs(obj: any, scheduler?: SchedulerLike) {\n return from(Object.entries(obj), scheduler as any);\n}\n","export function not(pred: (value: T, index: number) => boolean, thisArg: any): (value: T, index: number) => boolean {\n return (value: T, index: number) => !pred.call(thisArg, value, index); \n}","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function partition(\n source: ObservableInput,\n predicate: (this: A, value: T, index: number) => value is U,\n thisArg: A\n): [Observable, Observable>];\nexport function partition(\n source: ObservableInput,\n predicate: (value: T, index: number) => value is U\n): [Observable, Observable>];\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function partition(\n source: ObservableInput,\n predicate: (this: A, value: T, index: number) => boolean,\n thisArg: A\n): [Observable, Observable];\nexport function partition(source: ObservableInput, predicate: (value: T, index: number) => boolean): [Observable, Observable];\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition a set of numbers into odds and evens observables\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, (value, index) => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n */\nexport function partition(\n source: ObservableInput,\n predicate: (this: any, value: T, index: number) => boolean,\n thisArg?: any\n): [Observable, Observable] {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))] as [\n Observable,\n Observable\n ];\n}\n","import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { EMPTY } from './empty';\n\nexport function range(start: number, count?: number): Observable;\n\n/**\n * @deprecated The `scheduler` parameter will be removed in v8. Use `range(start, count).pipe(observeOn(scheduler))` instead. Details: Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function range(start: number, count: number | undefined, scheduler: SchedulerLike): Observable;\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * Emits a sequence of numbers in a range.\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n *\n * ### Produce a range of numbers\n *\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 3);\n *\n * numbers.subscribe({\n * next: value => { console.log(value) },\n * complete: () => { console.log('Complete!') }\n * });\n *\n * // Logs:\n * // 1\n * // 2\n * // 3\n * // \"Complete!\"\n * ```\n *\n * @see {@link timer}\n * @see {@link index/interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} count The number of sequential integers to generate.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n */\nexport function range(start: number, count?: number, scheduler?: SchedulerLike): Observable {\n if (count == null) {\n // If one argument was passed, it's the count, not the start.\n count = start;\n start = 0;\n }\n\n if (count <= 0) {\n // No count? We're going nowhere. Return EMPTY.\n return EMPTY;\n }\n\n // Where the range should stop.\n const end = count + start;\n\n return new Observable(\n scheduler\n ? // The deprecated scheduled path.\n (subscriber) => {\n let n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n } else {\n subscriber.complete();\n }\n });\n }\n : // Standard synchronous range.\n (subscriber) => {\n let n = start;\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n subscriber.complete();\n }\n );\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput, ObservedValueOf } from '../types';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * Use it when you catch yourself cleaning up after an Observable.\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using>(\n resourceFactory: () => Unsubscribable | void,\n observableFactory: (resource: Unsubscribable | void) => T | void\n): Observable> {\n return new Observable>((subscriber) => {\n const resource = resourceFactory();\n const result = observableFactory(resource);\n const source = result ? innerFrom(result) : EMPTY;\n source.subscribe(subscriber);\n return () => {\n // NOTE: Optional chaining did not work here.\n // Related TS Issue: https://github.com/microsoft/TypeScript/issues/40818\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * Collects values from the past as an array, and emits\n * that array only when another Observable emits.\n *\n * ![](buffer.png)\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * ## Example\n *\n * On every click, emit array of most recent interval events\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { buffer } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const intervalEvents = interval(1000);\n * const buffered = intervalEvents.pipe(buffer(clicks));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return A function that returns an Observable of buffers, which are arrays\n * of values.\n */\nexport function buffer(closingNotifier: Observable): OperatorFunction {\n return operate((source, subscriber) => {\n // The current buffered values.\n let currentBuffer: T[] = [];\n\n // Subscribe to our source.\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => currentBuffer.push(value),\n () => {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }\n )\n );\n\n // Subscribe to the closing notifier.\n closingNotifier.subscribe(\n new OperatorSubscriber(\n subscriber,\n () => {\n // Start a new buffer and emit the previous one.\n const b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n },\n noop\n )\n );\n\n return () => {\n // Ensure buffered values are released on teardown.\n currentBuffer = null!;\n };\n });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.\n *\n * ![](bufferCount.png)\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferCount(bufferSize: number, startBufferEvery: number | null = null): OperatorFunction {\n // If no `startBufferEvery` value was supplied, then we're\n // opening and closing on the bufferSize itself.\n startBufferEvery = startBufferEvery ?? bufferSize;\n\n return operate((source, subscriber) => {\n let buffers: T[][] = [];\n let count = 0;\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n let toEmit: T[][] | null = null;\n\n // Check to see if we need to start a buffer.\n // This will start one at the first value, and then\n // a new one every N after that.\n if (count++ % startBufferEvery! === 0) {\n buffers.push([]);\n }\n\n // Push our value into our active buffers.\n for (const buffer of buffers) {\n buffer.push(value);\n // Check to see if we're over the bufferSize\n // if we are, record it so we can emit it later.\n // If we emitted it now and removed it, it would\n // mutate the `buffers` array while we're looping\n // over it.\n if (bufferSize <= buffer.length) {\n toEmit = toEmit ?? [];\n toEmit.push(buffer);\n }\n }\n\n if (toEmit) {\n // We have found some buffers that are over the\n // `bufferSize`. Emit them, and remove them from our\n // buffers list.\n for (const buffer of toEmit) {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n }\n },\n () => {\n // When the source completes, emit all of our\n // active buffers.\n for (const buffer of buffers) {\n subscriber.next(buffer);\n }\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n () => {\n // Clean up our memory when we teardown\n buffers = null!;\n }\n )\n );\n });\n}\n","import { Subscription } from '../Subscription';\nimport { OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/* tslint:disable:max-line-length */\nexport function bufferTime(bufferTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(\n bufferTimeSpan: number,\n bufferCreationInterval: number | null | undefined,\n scheduler?: SchedulerLike\n): OperatorFunction;\nexport function bufferTime(\n bufferTimeSpan: number,\n bufferCreationInterval: number | null | undefined,\n maxBufferSize: number,\n scheduler?: SchedulerLike\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * Collects values from the past as an array, and emits\n * those arrays periodically in time.\n *\n * ![](bufferTime.png)\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * ## Examples\n *\n * Every second, emit an array of the recent click events\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(1000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds, emit the click events from the next 2 seconds\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(2000, 5000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferTime(bufferTimeSpan: number, ...otherArgs: any[]): OperatorFunction {\n const scheduler = popScheduler(otherArgs) ?? asyncScheduler;\n const bufferCreationInterval = (otherArgs[0] as number) ?? null;\n const maxBufferSize = (otherArgs[1] as number) || Infinity;\n\n return operate((source, subscriber) => {\n // The active buffers, their related subscriptions, and removal functions.\n let bufferRecords: { buffer: T[]; subs: Subscription }[] | null = [];\n // If true, it means that every time we emit a buffer, we want to start a new buffer\n // this is only really used for when *just* the buffer time span is passed.\n let restartOnEmit = false;\n\n /**\n * Does the work of emitting the buffer from the record, ensuring that the\n * record is removed before the emission so reentrant code (from some custom scheduling, perhaps)\n * does not alter the buffer. Also checks to see if a new buffer needs to be started\n * after the emit.\n */\n const emit = (record: { buffer: T[]; subs: Subscription }) => {\n const { buffer, subs } = record;\n subs.unsubscribe();\n arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n\n /**\n * Called every time we start a new buffer. This does\n * the work of scheduling a job at the requested bufferTimeSpan\n * that will emit the buffer (if it's not unsubscribed before then).\n */\n const startBuffer = () => {\n if (bufferRecords) {\n const subs = new Subscription();\n subscriber.add(subs);\n const buffer: T[] = [];\n const record = {\n buffer,\n subs,\n };\n bufferRecords.push(record);\n executeSchedule(subs, scheduler, () => emit(record), bufferTimeSpan);\n }\n };\n\n if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n // The user passed both a bufferTimeSpan (required), and a creation interval\n // That means we need to start new buffers on the interval, and those buffers need\n // to wait the required time span before emitting.\n executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n } else {\n restartOnEmit = true;\n }\n\n startBuffer();\n\n const bufferTimeSubscriber = new OperatorSubscriber(\n subscriber,\n (value: T) => {\n // Copy the records, so if we need to remove one we\n // don't mutate the array. It's hard, but not impossible to\n // set up a buffer time that could mutate the array and\n // cause issues here.\n const recordsCopy = bufferRecords!.slice();\n for (const record of recordsCopy) {\n // Loop over all buffers and\n const { buffer } = record;\n buffer.push(value);\n // If the buffer is over the max size, we need to emit it.\n maxBufferSize <= buffer.length && emit(record);\n }\n },\n () => {\n // The source completed, emit all of the active\n // buffers we have before we complete.\n while (bufferRecords?.length) {\n subscriber.next(bufferRecords.shift()!.buffer);\n }\n bufferTimeSubscriber?.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n },\n // Pass all errors through to consumer.\n undefined,\n // Clean up\n () => (bufferRecords = null)\n );\n\n source.subscribe(bufferTimeSubscriber);\n });\n}\n","import { Subscription } from '../Subscription';\nimport { OperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.\n *\n * ![](bufferToggle.png)\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { bufferToggle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const buffered = clicks.pipe(bufferToggle(openings, i =>\n * i % 2 ? interval(500) : EMPTY\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferToggle(\n openings: ObservableInput,\n closingSelector: (value: O) => ObservableInput\n): OperatorFunction {\n return operate((source, subscriber) => {\n const buffers: T[][] = [];\n\n // Subscribe to the openings notifier first\n innerFrom(openings).subscribe(\n new OperatorSubscriber(\n subscriber,\n (openValue) => {\n const buffer: T[] = [];\n buffers.push(buffer);\n // We use this composite subscription, so that\n // when the closing notifier emits, we can tear it down.\n const closingSubscription = new Subscription();\n\n const emitBuffer = () => {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n\n // The line below will add the subscription to the parent subscriber *and* the closing subscription.\n closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(new OperatorSubscriber(subscriber, emitBuffer, noop)));\n },\n noop\n )\n );\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n // Value from our source. Add it to all pending buffers.\n for (const buffer of buffers) {\n buffer.push(value);\n }\n },\n () => {\n // Source complete. Emit all pending buffers.\n while (buffers.length > 0) {\n subscriber.next(buffers.shift()!);\n }\n subscriber.complete();\n }\n )\n );\n });\n}\n","import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.\n *\n * ![](bufferWhen.png)\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * ## Example\n *\n * Emit an array of the last clicks every [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { bufferWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferWhen(() =>\n * interval(1000 + Math.random() * 4000)\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferWhen(closingSelector: () => ObservableInput): OperatorFunction {\n return operate((source, subscriber) => {\n // The buffer we keep and emit.\n let buffer: T[] | null = null;\n // A reference to the subscriber used to subscribe to\n // the closing notifier. We need to hold this so we can\n // end the subscription after the first notification.\n let closingSubscriber: Subscriber | null = null;\n\n // Ends the previous closing notifier subscription, so it\n // terminates after the first emission, then emits\n // the current buffer if there is one, starts a new buffer, and starts a\n // new closing notifier.\n const openBuffer = () => {\n // Make sure to teardown the closing subscription, we only cared\n // about one notification.\n closingSubscriber?.unsubscribe();\n // emit the buffer if we have one, and start a new buffer.\n const b = buffer;\n buffer = [];\n b && subscriber.next(b);\n\n // Get a new closing notifier and subscribe to it.\n innerFrom(closingSelector()).subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openBuffer, noop)));\n };\n\n // Start the first buffer.\n openBuffer();\n\n // Subscribe to our source.\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n // Add every new value to the current buffer.\n (value) => buffer?.push(value),\n // When we complete, emit the buffer if we have one,\n // then complete the result.\n () => {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n // Release memory on teardown\n () => (buffer = closingSubscriber = null!)\n )\n );\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A basic scan operation. This is used for `scan` and `reduce`.\n * @param accumulator The accumulator to use\n * @param seed The seed value for the state to accumulate\n * @param hasSeed Whether or not a seed was provided\n * @param emitOnNext Whether or not to emit the state on next\n * @param emitBeforeComplete Whether or not to emit the before completion\n */\n\nexport function scanInternals(\n accumulator: (acc: V | A | S, value: V, index: number) => A,\n seed: S,\n hasSeed: boolean,\n emitOnNext: boolean,\n emitBeforeComplete?: undefined | true\n) {\n return (source: Observable, subscriber: Subscriber) => {\n // Whether or not we have state yet. This will only be\n // false before the first value arrives if we didn't get\n // a seed value.\n let hasState = hasSeed;\n // The state that we're tracking, starting with the seed,\n // if there is one, and then updated by the return value\n // from the accumulator on each emission.\n let state: any = seed;\n // An index to pass to the accumulator function.\n let index = 0;\n\n // Subscribe to our source. All errors and completions are passed through.\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n // Always increment the index.\n const i = index++;\n // Set the state\n state = hasState\n ? // We already have state, so we can get the new state from the accumulator\n accumulator(state, value, i)\n : // We didn't have state yet, a seed value was not provided, so\n\n // we set the state to the first value, and mark that we have state now\n ((hasState = true), value);\n\n // Maybe send it to the consumer.\n emitOnNext && subscriber.next(state);\n },\n // If an onComplete was given, call it, otherwise\n // just pass through the complete notification to the consumer.\n emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })\n )\n );\n };\n}\n","import { scanInternals } from './scanInternals';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\nexport function reduce(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction;\nexport function reduce(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction;\nexport function reduce(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction;\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events that happened in 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { reduce, takeUntil, mapTo } from 'rxjs/operators';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click').pipe(\n * takeUntil(interval(5000)),\n * );\n * const ones = clicksInFiveSeconds.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: A, value: V, index: number): A} accumulator The accumulator function\n * called on each source value.\n * @param {A} [seed] The initial accumulation value.\n * @return A function that returns an Observable that emits a single value that\n * is the result of accumulating the values emitted by the source Observable.\n */\nexport function reduce(accumulator: (acc: V | A, value: V, index: number) => A, seed?: any): OperatorFunction {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\nconst arrReducer = (arr: any[], value: any) => (arr.push(value), arr);\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * Get all values inside an array when the source completes\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { toArray, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * take(10),\n * toArray()\n * );\n *\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n * ```\n *\n * @return A function that returns an Observable that emits an array of items\n * emitted by the source Observable when source completes.\n */\nexport function toArray(): OperatorFunction {\n // Because arrays are mutable, and we're mutating the array in this\n // reducer process, we have to escapulate the creation of the initial\n // array within this `operate` function.\n return operate((source, subscriber) => {\n reduce(arrReducer, [] as T[])(source).subscribe(subscriber)\n });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\n\n/**\n * Collects all of the inner sources from source observable. Then, once the\n * source completes, joins the values using the given static.\n *\n * This is used for {@link combineLatestAll} and {@link zipAll} which both have the\n * same behavior of collecting all inner observables, then operating on them.\n *\n * @param joinFn The type of static join to apply to the sources collected\n * @param project The projection function to apply to the values, if any\n */\nexport function joinAllInternals(joinFn: (sources: ObservableInput[]) => Observable, project?: (...args: any[]) => R) {\n return pipe(\n // Collect all inner sources into an array, and emit them when the\n // source completes.\n toArray() as OperatorFunction, ObservableInput[]>,\n // Run the join function on the collected array of inner sources.\n mergeMap((sources) => joinFn(sources)),\n // If a projection function was supplied, apply it to each result.\n project ? mapOneOrManyArgs(project) : (identity as any)\n );\n}\n","import { combineLatest } from '../observable/combineLatest';\nimport { OperatorFunction, ObservableInput } from '../types';\nimport { joinAllInternals } from './joinAllInternals';\n\nexport function combineLatestAll(): OperatorFunction, T[]>;\nexport function combineLatestAll(): OperatorFunction;\nexport function combineLatestAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function combineLatestAll(project: (...values: Array) => R): OperatorFunction;\n\n/**\n * Flattens an Observable-of-Observables by applying {@link combineLatest} when the Observable-of-Observables completes.\n *\n * ![](combineLatestAll.png)\n *\n * `combineLatestAll` takes an Observable of Observables, and collects all Observables from it. Once the outer Observable completes,\n * it subscribes to all collected Observables and combines their values using the {@link combineLatest} strategy, such that:\n *\n * * Every time an inner Observable emits, the output Observable emits\n * * When the returned observable emits, it emits all of the latest values by:\n * * If a `project` function is provided, it is called with each recent value from each inner Observable in whatever order they\n * arrived, and the result of the `project` function is what is emitted by the output Observable.\n * * If there is no `project` function, an array of all the most recent values is emitted by the output Observable.\n *\n * ---\n *\n * ## Examples\n *\n * ### Map two click events to a finite interval Observable, then apply `combineLatestAll`\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, combineLatestAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev =>\n * interval(Math.random() * 2000).pipe(take(3))\n * ),\n * take(2)\n * );\n * const result = higherOrder.pipe(\n * combineLatestAll()\n * );\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link combineLatestWith}\n * @see {@link mergeAll}\n *\n * @param project optional function to map the most recent values from each inner Observable into a new result.\n * Takes each of the most recent values from each collected inner Observable as arguments, in order.\n * @return A function that returns an Observable that flattens Observables\n * emitted by the source Observable.\n */\nexport function combineLatestAll(project?: (...values: Array) => R) {\n return joinAllInternals(combineLatest, project);\n}\n","import { combineLatestAll } from './combineLatestAll';\n\n/**\n * @deprecated Renamed to {@link combineLatestAll}. Will be removed in v8.\n */\nexport const combineAll = combineLatestAll;\n","import { combineLatestInit } from '../observable/combineLatest';\nimport { ObservableInput, ObservableInputTuple, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\n\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest(\n sources: [...ObservableInputTuple],\n project: (...values: [T, ...A]) => R\n): OperatorFunction;\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest(sources: [...ObservableInputTuple]): OperatorFunction;\n\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest(\n ...sourcesAndProject: [...ObservableInputTuple, (...values: [T, ...A]) => R]\n): OperatorFunction;\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest(...sources: [...ObservableInputTuple]): OperatorFunction;\n\n/**\n * @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8.\n */\nexport function combineLatest(...args: (ObservableInput | ((...values: any[]) => R))[]): OperatorFunction {\n const resultSelector = popResultSelector(args);\n return resultSelector\n ? pipe(combineLatest(...(args as Array>)), mapOneOrManyArgs(resultSelector))\n : operate((source, subscriber) => {\n combineLatestInit([source, ...argsOrArgArray(args)])(subscriber);\n });\n}\n","import { ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { combineLatest } from './combineLatest';\n\n/**\n * Create an observable that combines the latest values from all passed observables and the source\n * into arrays and emits them.\n *\n * Returns an observable, that when subscribed to, will subscribe to the source observable and all\n * sources provided as arguments. Once all sources emit at least one value, all of the latest values\n * will be emitted as an array. After that, every time any source emits a value, all of the latest values\n * will be emitted as an array.\n *\n * This is a useful operator for eagerly calculating values based off of changed inputs.\n *\n * ### Example\n *\n * Simple calculation from two inputs.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map, combineLatestWith } from 'rxjs/operators';\n *\n * // Setup: Add two inputs to the page\n * const input1 = document.createElement('input');\n * document.body.appendChild(input1);\n * const input2 = document.createElement('input');\n * document.body.appendChild(input2);\n *\n * // Get streams of changes\n * const input1Changes$ = fromEvent(input1, 'change');\n * const input2Changes$ = fromEvent(input2, 'change');\n *\n * // Combine the changes by adding them together\n * input1Changes$.pipe(\n * combineLatestWith(input2Changes$),\n * map(([e1, e2]) => Number(e1.target.value) + Number(e2.target.value)),\n * )\n * .subscribe(x => console.log(x));\n *\n * ```\n * @param otherSources the other sources to subscribe to.\n * @return A function that returns an Observable that emits the latest\n * emissions from both source and provided Observables.\n */\nexport function combineLatestWith(\n ...otherSources: [...ObservableInputTuple]\n): OperatorFunction> {\n return combineLatest(...otherSources);\n}\n","import { concatMap } from './concatMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMapTo>(observable: O): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMapTo>(\n observable: O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMapTo>(\n observable: O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](concatMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMapTo, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMapTo(interval(1000).pipe(take(4))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return A function that returns an Observable of values merged together by\n * joining the passed Observable with itself, one after the other, for each\n * value emitted from the source.\n */\nexport function concatMapTo>(\n innerObservable: O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n return isFunction(resultSelector) ? concatMap(() => innerObservable, resultSelector) : concatMap(() => innerObservable);\n}\n","import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { concat } from './concat';\n\n/**\n * Emits all of the values from the source observable, then, once it completes, subscribes\n * to each observable source provided, one at a time, emitting all of their values, and not subscribing\n * to the next one until it completes.\n *\n * `concat(a$, b$, c$)` is the same as `a$.pipe(concatWith(b$, c$))`.\n *\n * ## Example\n *\n * Listen for one mouse click, then listen for all mouse moves.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { concatWith, map, take } from 'rxjs/operators';\n *\n * const clicks$ = fromEvent(document, 'click');\n * const moves$ = fromEvent(document, 'mousemove');\n *\n * clicks$.pipe(\n * map(() => 'click'),\n * take(1),\n * concatWith(\n * moves$.pipe(\n * map(() => 'move')\n * )\n * )\n * )\n * .subscribe(x => console.log(x));\n *\n * // 'click'\n * // 'move'\n * // 'move'\n * // 'move'\n * // ...\n * ```\n *\n * @param otherSources Other observable sources to subscribe to, in sequence, after the original source is complete.\n * @return A function that returns an Observable that concatenates\n * subscriptions to the source and provided Observables subscribing to the next\n * only once the current subscription completes.\n */\nexport function concatWith(\n ...otherSources: [...ObservableInputTuple]\n): OperatorFunction {\n return concat(...otherSources);\n}\n","import { ObservableInputTuple, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { concatAll } from './concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from '../observable/from';\n\n/** @deprecated Replaced with {@link concatWith}. Will be removed in v8. */\nexport function concat(...sources: [...ObservableInputTuple]): OperatorFunction;\n/** @deprecated Replaced with {@link concatWith}. Will be removed in v8. */\nexport function concat(\n ...sourcesAndScheduler: [...ObservableInputTuple, SchedulerLike]\n): OperatorFunction;\n\n/**\n * @deprecated Replaced with {@link concatWith}. Will be removed in v8.\n */\nexport function concat(...args: any[]): OperatorFunction {\n const scheduler = popScheduler(args);\n return operate((source, subscriber) => {\n concatAll()(from([source, ...args], scheduler)).subscribe(subscriber);\n });\n}\n","import { OperatorFunction } from '../types';\nimport { reduce } from './reduce';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * Tells how many values were emitted, when the source\n * completes.\n *\n * ![](count.png)\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * ## Examples\n *\n * Counts how many seconds have passed before the first click happened\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { count, takeUntil } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const secondsBeforeClick = seconds.pipe(takeUntil(clicks));\n * const result = secondsBeforeClick.pipe(count());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Counts how many odd numbers are there between 1 and 7\n * ```ts\n * import { range } from 'rxjs';\n * import { count } from 'rxjs/operators';\n *\n * const numbers = range(1, 7);\n * const result = numbers.pipe(count(i => i % 2 === 1));\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // 4\n * ```\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param predicate A function that is used to analyze the value and the index and\n * determine whether or not to increment the count. Return `true` to increment the count,\n * and return `false` to keep the count the same.\n * If the predicate is not provided, every value will be counted.\n * @return A function that returns an Observable that emits one number that\n * represents the count of emissions.\n */\n\nexport function count(predicate?: (value: T, index: number) => boolean): OperatorFunction {\n return reduce((total, value, i) => (!predicate || predicate(value, i) ? total + 1 : total), 0);\n}\n","import { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.\n *\n * ![](debounce.png)\n *\n * `debounce` delays notifications emitted by the source Observable, but drops previous\n * pending delayed emissions if a new notification arrives on the source Observable.\n * This operator keeps track of the most recent notification from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The notification is emitted only when the duration\n * Observable emits a next notification, and if no other notification was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * notification appears before the duration Observable emits, the previous notification will\n * not be emitted and a new duration is scheduled from `durationSelector` is scheduled.\n * If the completing event happens during the scheduled duration the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during the scheduled duration or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { scan, debounce } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * scan((i) => ++i, 1),\n * debounce((i) => interval(200 * i))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n */\nexport function debounce(durationSelector: (value: T) => ObservableInput): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue: T | null = null;\n // The subscriber/subscription for the current debounce, if there is one.\n let durationSubscriber: Subscriber | null = null;\n\n const emit = () => {\n // Unsubscribe any current debounce subscription we have,\n // we only cared about the first notification from it, and we\n // want to clean that subscription up as soon as possible.\n durationSubscriber?.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n // We have a value! Free up memory first, then emit the value.\n hasValue = false;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value: T) => {\n // Cancel any pending debounce duration. We don't\n // need to null it out here yet tho, because we're just going\n // to create another one in a few lines.\n durationSubscriber?.unsubscribe();\n hasValue = true;\n lastValue = value;\n // Capture our duration subscriber, so we can unsubscribe it when we're notified\n // and we're going to emit the value.\n durationSubscriber = new OperatorSubscriber(subscriber, emit, noop);\n // Subscribe to the duration.\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n },\n () => {\n // Source completed.\n // Emit any pending debounced values then complete\n emit();\n subscriber.complete();\n },\n // Pass all errors through to consumer\n undefined,\n () => {\n // Teardown.\n lastValue = durationSubscriber = null;\n }\n )\n );\n });\n}\n","import { observeNotification } from '../Notification';\nimport { OperatorFunction, ObservableNotification, ValueFromNotification } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Converts an Observable of {@link ObservableNotification} objects into the emissions\n * that they represent.\n *\n * Unwraps {@link ObservableNotification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.\n *\n * ![](dematerialize.png)\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link ObservableNotification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * ## Example\n *\n * Convert an Observable of Notifications to an actual Observable\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { dematerialize } from 'rxjs/operators';\n *\n * const notifA = { kind: 'N', value: 'A' };\n * const notifB = { kind: 'N', value: 'B' };\n * const notifE = { kind: 'E', error: new TypeError('x.toUpperCase is not a function') }\n *\n * const materialized = of(notifA, notifB, notifE);\n *\n * const upperCase = materialized.pipe(dematerialize());\n * upperCase.subscribe({\n * next: x => console.log(x),\n * error: e => console.error(e)\n * });\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n * ```\n * @see {@link materialize}\n *\n * @return A function that returns an Observable that emits items and\n * notifications embedded in Notification objects emitted by the source\n * Observable.\n */\nexport function dematerialize>(): OperatorFunction> {\n return operate((source, subscriber) => {\n source.subscribe(new OperatorSubscriber(subscriber, (notification) => observeNotification(notification, subscriber)));\n });\n}\n","import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\n\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * Emits only the i-th value, then completes.\n *\n * ![](elementAt.png)\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * ## Example\n * Emit only the third click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { elementAt } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(elementAt(2));\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n * ```\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOfRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return A function that returns an Observable that emits a single item, if\n * it is found. Otherwise, it will emit the default value if given. If not, it\n * emits an error.\n */\nexport function elementAt(index: number, defaultValue?: D): OperatorFunction {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) =>\n source.pipe(\n filter((v, i) => i === index),\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new ArgumentOutOfRangeError())\n );\n}\n","/** prettier */\nimport { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ValueFromArray } from '../types';\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function endWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function endWith(\n ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction>;\n\nexport function endWith(...values: A): OperatorFunction>;\n\n/**\n * Returns an observable that will emit all values from the source, then synchronously emit\n * the provided value(s) immediately after the source completes.\n *\n * NOTE: Passing a last argument of a Scheduler is _deprecated_, and may result in incorrect\n * types in TypeScript.\n *\n * This is useful for knowing when an observable ends. Particularly when paired with an\n * operator like {@link takeUntil}\n *\n * ![](endWith.png)\n *\n * ## Example\n *\n * Emit values to know when an interval starts and stops. The interval will\n * stop when a user clicks anywhere on the document.\n *\n * ```ts\n * import { interval, fromEvent } from 'rxjs';\n * import { map, startWith, takeUntil, endWith } from 'rxjs/operators';\n *\n * const ticker$ = interval(5000).pipe(\n * map(() => 'tick'),\n * );\n *\n * const documentClicks$ = fromEvent(document, 'click');\n *\n * ticker$.pipe(\n * startWith('interval started'),\n * takeUntil(documentClicks$),\n * endWith('interval ended by click'),\n * )\n * .subscribe(x => console.log(x));\n *\n * // Result (assuming a user clicks after 15 seconds)\n * // \"interval started\"\n * // \"tick\"\n * // \"tick\"\n * // \"tick\"\n * // \"interval ended by click\"\n * ```\n *\n * @param values Items you want the modified Observable to emit last.\n * @return A function that returns an Observable that emits all values from the\n * source, then synchronously emits the provided value(s) immediately after the\n * source completes.\n *\n * @see {@link startWith}\n * @see {@link concat}\n * @see {@link takeUntil}\n */\nexport function endWith(...values: Array): MonoTypeOperatorFunction {\n return (source: Observable) => concat(source, of(...values)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { Falsy, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\nexport function every(predicate: BooleanConstructor): OperatorFunction extends never ? false : boolean>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function every(\n predicate: BooleanConstructor,\n thisArg: any\n): OperatorFunction extends never ? false : boolean>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function every(\n predicate: (this: A, value: T, index: number, source: Observable) => boolean,\n thisArg: A\n): OperatorFunction;\nexport function every(predicate: (value: T, index: number, source: Observable) => boolean): OperatorFunction;\n\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * If all values pass predicate before the source completes, emits true before completion,\n * otherwise emit false, then complete.\n *\n * ![](every.png)\n *\n * ## Example\n * A simple example emitting true if all elements are less than 5, false otherwise\n * ```ts\n * import { of } from 'rxjs';\n * import { every } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5, 6).pipe(\n * every(x => x < 5),\n * )\n * .subscribe(x => console.log(x)); // -> false\n * ```\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return A function that returns an Observable of booleans that determines if\n * all items of the source Observable meet the condition specified.\n */\nexport function every(\n predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any\n): OperatorFunction {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n },\n () => {\n subscriber.next(true);\n subscriber.complete();\n }\n )\n );\n });\n}\n","import { Subscription } from '../Subscription';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.\n *\n * ![](exhaust.png)\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaustAll, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(5))),\n * );\n * const result = higherOrder.pipe(exhaustAll());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable that takes a source of\n * Observables and propagates the first Observable exclusively until it\n * completes before subscribing to the next.\n */\nexport function exhaustAll>(): OperatorFunction> {\n return operate((source, subscriber) => {\n let isComplete = false;\n let innerSub: Subscription | null = null;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (inner) => {\n if (!innerSub) {\n innerSub = innerFrom(inner).subscribe(\n new OperatorSubscriber(subscriber, undefined, () => {\n innerSub = null;\n isComplete && subscriber.complete();\n })\n );\n }\n },\n () => {\n isComplete = true;\n !innerSub && subscriber.complete();\n }\n )\n );\n });\n}\n","import { exhaustAll } from './exhaustAll';\n\n/**\n * @deprecated Renamed to {@link exhaustAll}. Will be removed in v8.\n */\nexport const exhaust = exhaustAll;\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function exhaustMap>(\n project: (value: T, index: number) => O\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function exhaustMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function exhaustMap(\n project: (value: T, index: number) => ObservableInput,\n resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.\n *\n * ![](exhaustMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaustMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * exhaustMap(ev => interval(1000).pipe(take(5)))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable containing projected\n * Observables of each item of the source, ignoring projected Observables that\n * start before their preceding Observable has completed.\n */\nexport function exhaustMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n if (resultSelector) {\n // DEPRECATED PATH\n return (source: Observable) =>\n source.pipe(exhaustMap((a, i) => innerFrom(project(a, i)).pipe(map((b: any, ii: any) => resultSelector(a, b, i, ii)))));\n }\n return operate((source, subscriber) => {\n let index = 0;\n let innerSub: Subscriber | null = null;\n let isComplete = false;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (outerValue) => {\n if (!innerSub) {\n innerSub = new OperatorSubscriber(subscriber, undefined, () => {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n },\n () => {\n isComplete = true;\n !innerSub && subscriber.complete();\n }\n )\n );\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\nexport function find(predicate: BooleanConstructor): OperatorFunction>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function find(\n predicate: (this: A, value: T, index: number, source: Observable) => value is S,\n thisArg: A\n): OperatorFunction;\nexport function find(\n predicate: (value: T, index: number, source: Observable) => value is S\n): OperatorFunction;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function find(\n predicate: (this: A, value: T, index: number, source: Observable) => boolean,\n thisArg: A\n): OperatorFunction;\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean): OperatorFunction;\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * Finds the first value that passes some test and emits\n * that.\n *\n * ![](find.png)\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found\n * (emits `undefined` instead).\n *\n * ## Example\n * Find and emit the first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { find } from 'rxjs/operators';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(find(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits the first item that\n * matches the condition.\n */\nexport function find(\n predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any\n): OperatorFunction {\n return operate(createFind(predicate, thisArg, 'value'));\n}\n\nexport function createFind(\n predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg: any,\n emit: 'value' | 'index'\n) {\n const findIndex = emit === 'index';\n return (source: Observable, subscriber: Subscriber) => {\n let index = 0;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n const i = index++;\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n },\n () => {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }\n )\n );\n };\n}\n","import { Observable } from '../Observable';\nimport { Falsy, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createFind } from './find';\n\nexport function findIndex(predicate: BooleanConstructor): OperatorFunction;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function findIndex(predicate: BooleanConstructor, thisArg: any): OperatorFunction;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function findIndex(\n predicate: (this: A, value: T, index: number, source: Observable) => boolean,\n thisArg: A\n): OperatorFunction;\nexport function findIndex(predicate: (value: T, index: number, source: Observable) => boolean): OperatorFunction;\n\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * It's like {@link find}, but emits the index of the\n * found value, not the value itself.\n *\n * ![](findIndex.png)\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * ## Example\n * Emit the index of first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { findIndex } from 'rxjs/operators';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(findIndex(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits the index of the\n * first item that matches the condition.\n */\nexport function findIndex(\n predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any\n): OperatorFunction {\n return operate(createFind(predicate, thisArg, 'index'));\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { ObservableInput, Observer, OperatorFunction, SubjectLike } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\ninterface BasicGroupByOptions {\n element?: undefined;\n duration?: (grouped: GroupedObservable) => ObservableInput;\n connector?: () => SubjectLike;\n}\n\ninterface GroupByOptionsWithElement {\n element: (value: T) => E;\n duration?: (grouped: GroupedObservable) => ObservableInput;\n connector?: () => SubjectLike;\n}\n\nexport function groupBy(key: (value: T) => K, options: BasicGroupByOptions): OperatorFunction>;\n\nexport function groupBy(\n key: (value: T) => K,\n options: GroupByOptionsWithElement\n): OperatorFunction>;\n\nexport function groupBy(\n key: (value: T) => value is K\n): OperatorFunction | GroupedObservable>>;\n\nexport function groupBy(key: (value: T) => K): OperatorFunction>;\n\n/**\n * @deprecated use the options parameter instead.\n */\nexport function groupBy(\n key: (value: T) => K,\n element: void,\n duration: (grouped: GroupedObservable) => Observable\n): OperatorFunction>;\n\n/**\n * @deprecated use the options parameter instead.\n */\nexport function groupBy(\n key: (value: T) => K,\n element?: (value: T) => R,\n duration?: (grouped: GroupedObservable) => Observable\n): OperatorFunction>;\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the key function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Otherwise, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the `key` field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the element function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], [])))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, { element: p => p.name }),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param key A function that extracts the key\n * for each item.\n * @param element A function that extracts the\n * return element for each item.\n * @param duration\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @param connector Factory function to create an\n * intermediate Subject through which grouped elements are emitted.\n * @return A function that returns an Observable that emits GroupedObservables,\n * each of which corresponds to a unique key value and each of which emits\n * those items from the source Observable that share that key value.\n *\n * @deprecated Use the options parameter instead.\n */\nexport function groupBy(\n key: (value: T) => K,\n element?: (value: T) => R,\n duration?: (grouped: GroupedObservable) => Observable,\n connector?: () => Subject\n): OperatorFunction>;\n\n// Impl\nexport function groupBy(\n keySelector: (value: T) => K,\n elementOrOptions?: ((value: any) => any) | void | BasicGroupByOptions | GroupByOptionsWithElement,\n duration?: (grouped: GroupedObservable) => ObservableInput,\n connector?: () => SubjectLike\n): OperatorFunction> {\n return operate((source, subscriber) => {\n let element: ((value: any) => any) | void;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n } else {\n ({ duration, element, connector } = elementOrOptions);\n }\n\n // A lookup for the groups that we have so far.\n const groups = new Map>();\n\n // Used for notifying all groups and the subscriber in the same way.\n const notify = (cb: (group: Observer) => void) => {\n groups.forEach(cb);\n cb(subscriber);\n };\n\n // Used to handle errors from the source, AND errors that occur during the\n // next call from the source.\n const handleError = (err: any) => notify((consumer) => consumer.error(err));\n\n // Capturing a reference to this, because we need a handle to it\n // in `createGroupedObservable` below. This is what we use to\n // subscribe to our source observable. This sometimes needs to be unsubscribed\n // out-of-band with our `subscriber` which is the downstream subscriber, or destination,\n // in cases where a user unsubscribes from the main resulting subscription, but\n // still has groups from this subscription subscribed and would expect values from it\n // Consider: `source.pipe(groupBy(fn), take(2))`.\n const groupBySourceSubscriber = new GroupBySubscriber(\n subscriber,\n (value: T) => {\n // Because we have to notify all groups of any errors that occur in here,\n // we have to add our own try/catch to ensure that those errors are propagated.\n // OperatorSubscriber will only send the error to the main subscriber.\n try {\n const key = keySelector(value);\n\n let group = groups.get(key);\n if (!group) {\n // Create our group subject\n groups.set(key, (group = connector ? connector() : new Subject()));\n\n // Emit the grouped observable. Note that we can't do a simple `asObservable()` here,\n // because the grouped observable has special semantics around reference counting\n // to ensure we don't sever our connection to the source prematurely.\n const grouped = createGroupedObservable(key, group);\n subscriber.next(grouped);\n\n if (duration) {\n const durationSubscriber = new OperatorSubscriber(\n // Providing the group here ensures that it is disposed of -- via `unsubscribe` --\n // wnen the duration subscription is torn down. That is important, because then\n // if someone holds a handle to the grouped observable and tries to subscribe to it\n // after the connection to the source has been severed, they will get an\n // `ObjectUnsubscribedError` and know they can't possibly get any notifications.\n group as any,\n () => {\n // Our duration notified! We can complete the group.\n // The group will be removed from the map in the teardown phase.\n group!.complete();\n durationSubscriber?.unsubscribe();\n },\n // Completions are also sent to the group, but just the group.\n undefined,\n // Errors on the duration subscriber are sent to the group\n // but only the group. They are not sent to the main subscription.\n undefined,\n // Teardown: Remove this group from our map.\n () => groups.delete(key)\n );\n\n // Start our duration notifier.\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber));\n }\n }\n\n // Send the value to our group.\n group.next(element ? element(value) : value);\n } catch (err) {\n handleError(err);\n }\n },\n // Source completes.\n () => notify((consumer) => consumer.complete()),\n // Error from the source.\n handleError,\n // Free up memory.\n // When the source subscription is _finally_ torn down, release the subjects and keys\n // in our groups Map, they may be quite large and we don't want to keep them around if we\n // don't have to.\n () => groups.clear()\n );\n\n // Subscribe to the source\n source.subscribe(groupBySourceSubscriber);\n\n /**\n * Creates the actual grouped observable returned.\n * @param key The key of the group\n * @param groupSubject The subject that fuels the group\n */\n function createGroupedObservable(key: K, groupSubject: SubjectLike) {\n const result: any = new Observable((groupSubscriber) => {\n groupBySourceSubscriber.activeGroups++;\n const innerSub = groupSubject.subscribe(groupSubscriber);\n return () => {\n innerSub.unsubscribe();\n // We can kill the subscription to our source if we now have no more\n // active groups subscribed, and a teardown was already attempted on\n // the source.\n --groupBySourceSubscriber.activeGroups === 0 &&\n groupBySourceSubscriber.teardownAttempted &&\n groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n\n/**\n * This was created because groupBy is a bit unique, in that emitted groups that have\n * subscriptions have to keep the subscription to the source alive until they\n * are torn down.\n */\nclass GroupBySubscriber extends OperatorSubscriber {\n /**\n * The number of actively subscribed groups\n */\n activeGroups = 0;\n /**\n * Whether or not teardown was attempted on this subscription.\n */\n teardownAttempted = false;\n\n unsubscribe() {\n this.teardownAttempted = true;\n // We only kill our subscription to the source if we have\n // no active groups. As stated above, consider this scenario:\n // source$.pipe(groupBy(fn), take(2)).\n this.activeGroups === 0 && super.unsubscribe();\n }\n}\n\n/**\n * An observable of values that is the emitted by the result of a {@link groupBy} operator,\n * contains a `key` property for the grouping.\n */\nexport interface GroupedObservable extends Observable {\n /**\n * The key value for the grouped notifications.\n */\n readonly key: K;\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits `false` if the input Observable emits any values, or emits `true` if the\n * input Observable completes without emitting any values.\n *\n * Tells whether any values are emitted by an Observable.\n *\n * ![](isEmpty.png)\n *\n * `isEmpty` transforms an Observable that emits values into an Observable that\n * emits a single boolean value representing whether or not any values were\n * emitted by the source Observable. As soon as the source Observable emits a\n * value, `isEmpty` will emit a `false` and complete. If the source Observable\n * completes having not emitted anything, `isEmpty` will emit a `true` and\n * complete.\n *\n * A similar effect could be achieved with {@link count}, but `isEmpty` can emit\n * a `false` value sooner.\n *\n * ## Examples\n *\n * Emit `false` for a non-empty Observable.\n *\n * ```ts\n * import { Subject } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const source = new Subject();\n * const result = source.pipe(isEmpty());\n *\n * source.subscribe(x => console.log(x));\n * result.subscribe(x => console.log(x));\n *\n * source.next('a');\n * source.next('b');\n * source.next('c');\n * source.complete();\n *\n * // Outputs\n * // a\n * // false\n * // b\n * // c\n * ```\n *\n * Emit `true` for an empty Observable.\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const result = EMPTY.pipe(isEmpty());\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // true\n * ```\n *\n * @see {@link count}\n * @see {@link index/EMPTY}\n *\n * @return A function that returns an Observable that emits boolean value\n * indicating whether the source Observable was empty or not.\n */\nexport function isEmpty(): OperatorFunction {\n return operate((source, subscriber) => {\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n () => {\n subscriber.next(false);\n subscriber.complete();\n },\n () => {\n subscriber.next(true);\n subscriber.complete();\n }\n )\n );\n });\n}\n","import { Notification } from '../Notification';\nimport { OperatorFunction, ObservableNotification } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * \n *\n * ![](materialize.png)\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * ## Example\n *\n * Convert a faulty Observable to an Observable of Notifications\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { materialize, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 13, 'd');\n * const upperCase = letters.pipe(map(x => x.toUpperCase()));\n * const materialized = upperCase.pipe(materialize());\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * // x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * // [as project] (http://1…, hasValue: false}\n * ```\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return A function that returns an Observable that emits\n * {@link Notification} objects that wrap the original emissions from the\n * source Observable with metadata.\n */\nexport function materialize(): OperatorFunction & ObservableNotification> {\n return operate((source, subscriber) => {\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n subscriber.next(Notification.createNext(value));\n },\n () => {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n },\n (err) => {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }\n )\n );\n });\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * ![](max.png)\n *\n * ## Examples\n * Get the maximal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * max(),\n * )\n * .subscribe(x => console.log(x)); // -> 8\n * ```\n *\n * Use a comparer function to get the maximal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * max((a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * ```\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return A function that returns an Observable that emits item with the\n * largest value.\n */\nexport function max(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n return reduce(isFunction(comparer) ? (x, y) => (comparer(x, y) > 0 ? x : y) : (x, y) => (x > y ? x : y));\n}\n","import { mergeMap } from './mergeMap';\n\n/**\n * @deprecated Renamed to {@link mergeMap}. Will be removed in v8.\n */\nexport const flatMap = mergeMap;\n","import { OperatorFunction, ObservedValueOf, ObservableInput } from '../types';\nimport { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMapTo>(\n innerObservable: O,\n concurrent?: number\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMapTo>(\n innerObservable: O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.\n *\n * ![](mergeMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * ## Example\n * For each click event, start an interval Observable ticking every 1 second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { mergeMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(mergeMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits items from the\n * given `innerObservable`.\n */\nexport function mergeMapTo>(\n innerObservable: O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction | R> {\n if (isFunction(resultSelector)) {\n return mergeMap(() => innerObservable, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(() => innerObservable, concurrent);\n}\n","import { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.\n *\n * The first parameter of the `mergeScan` is an `accumulator` function which is\n * being called every time the source Observable emits a value. `mergeScan` will\n * subscribe to the value returned by the `accumulator` function and will emit\n * values to the subscriber emitted by inner Observable.\n *\n * The `accumulator` function is being called with three parameters passed to it:\n * `acc`, `value` and `index`. The `acc` parameter is used as the state parameter\n * whose value is initially set to the `seed` parameter (the second parameter\n * passed to the `mergeScan` operator).\n *\n * `mergeScan` internally keeps the value of the `acc` parameter: as long as the\n * source Observable emits without inner Observable emitting, the `acc` will be\n * set to `seed`. The next time the inner Observable emits a value, `mergeScan`\n * will internally remember it and it will be passed to the `accumulator`\n * function as `acc` parameter the next time source emits.\n *\n * The `value` parameter of the `accumulator` function is the value emitted by the\n * source Observable, while the `index` is a number which represent the order of the\n * current emission by the source Observable. It starts with 0.\n *\n * The last parameter to the `mergeScan` is the `concurrent` value which defaults\n * to Infinity. It represent the maximum number of inner Observable subscriptions\n * at a time.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { mapTo, mergeScan } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n * const one$ = click$.pipe(mapTo(1));\n * const seed = 0;\n * const count$ = one$.pipe(\n * mergeScan((acc, one) => of(acc + one), seed),\n * );\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...and so on for each click\n * ```\n *\n * @see {@link scan}\n * @see {@link switchScan}\n *\n * @param {function(acc: R, value: T): Observable} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Infinity] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return A function that returns an Observable of the accumulated values.\n */\nexport function mergeScan(\n accumulator: (acc: R, value: T, index: number) => ObservableInput,\n seed: R,\n concurrent = Infinity\n): OperatorFunction {\n return operate((source, subscriber) => {\n // The accumulated state.\n let state = seed;\n\n return mergeInternals(\n source,\n subscriber,\n (value, index) => accumulator(state, value, index),\n concurrent,\n (value) => {\n state = value;\n },\n false,\n undefined,\n () => (state = null!)\n );\n });\n}\n","import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { merge } from './merge';\n\n/**\n * Merge the values from all observables to an single observable result.\n *\n * Creates an observable, that when subscribed to, subscribes to the source\n * observable, and all other sources provided as arguments. All values from\n * every source are emitted from the resulting subscription.\n *\n * When all sources complete, the resulting observable will complete.\n *\n * When any one source errors, the resulting observable will error.\n *\n *\n * ### Example\n *\n * Joining all outputs from multiple user input event streams:\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map, mergeWith } from 'rxjs/operators';\n *\n * const clicks$ = fromEvent(document, 'click').pipe(map(() => 'click'));\n * const mousemoves$ = fromEvent(document, 'mousemove').pipe(map(() => 'mousemove'));\n * const dblclicks$ = fromEvent(document, 'dblclick').pipe(map(() => 'dblclick'));\n *\n * mousemoves$.pipe(\n * mergeWith(clicks$, dblclicks$),\n * )\n * .subscribe(x => console.log(x));\n *\n * // result (assuming user interactions)\n * // \"mousemove\"\n * // \"mousemove\"\n * // \"mousemove\"\n * // \"click\"\n * // \"click\"\n * // \"dblclick\"\n * ```\n * @param otherSources the sources to combine the current source with.\n * @return A function that returns an Observable that merges the values from\n * all given Observables.\n */\nexport function mergeWith(\n ...otherSources: [...ObservableInputTuple]\n): OperatorFunction {\n return merge(...otherSources);\n}\n","import { ObservableInput, ObservableInputTuple, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\n\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge(...sources: [...ObservableInputTuple]): OperatorFunction;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge(\n ...sourcesAndConcurrency: [...ObservableInputTuple, number]\n): OperatorFunction;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge(\n ...sourcesAndScheduler: [...ObservableInputTuple, SchedulerLike]\n): OperatorFunction;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge(\n ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple, number, SchedulerLike]\n): OperatorFunction;\n\nexport function merge(...args: unknown[]): OperatorFunction {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n\n return operate((source, subscriber) => {\n mergeAll(concurrent)(from([source, ...(args as ObservableInput[])], scheduler)).subscribe(subscriber);\n });\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * ![](min.png)\n *\n * ## Examples\n * Get the minimal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * min(),\n * )\n * .subscribe(x => console.log(x)); // -> 2\n * ```\n *\n * Use a comparer function to get the minimal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * min( (a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * ```\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return A function that returns an Observable that emits item with the\n * smallest value.\n */\nexport function min(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n return reduce(isFunction(comparer) ? (x, y) => (comparer(x, y) < 0 ? x : y) : (x, y) => (x < y ? x : y));\n}\n","import { map } from './map';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pluck(k1: K1): OperatorFunction;\nexport function pluck(k1: K1, k2: K2): OperatorFunction;\nexport function pluck(\n k1: K1,\n k2: K2,\n k3: K3\n): OperatorFunction;\nexport function pluck(\n k1: K1,\n k2: K2,\n k3: K3,\n k4: K4\n): OperatorFunction;\nexport function pluck<\n T,\n K1 extends keyof T,\n K2 extends keyof T[K1],\n K3 extends keyof T[K1][K2],\n K4 extends keyof T[K1][K2][K3],\n K5 extends keyof T[K1][K2][K3][K4]\n>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): OperatorFunction;\nexport function pluck<\n T,\n K1 extends keyof T,\n K2 extends keyof T[K1],\n K3 extends keyof T[K1][K2],\n K4 extends keyof T[K1][K2][K3],\n K5 extends keyof T[K1][K2][K3][K4],\n K6 extends keyof T[K1][K2][K3][K4][K5]\n>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): OperatorFunction;\nexport function pluck<\n T,\n K1 extends keyof T,\n K2 extends keyof T[K1],\n K3 extends keyof T[K1][K2],\n K4 extends keyof T[K1][K2][K3],\n K5 extends keyof T[K1][K2][K3][K4],\n K6 extends keyof T[K1][K2][K3][K4][K5]\n>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, ...rest: string[]): OperatorFunction;\nexport function pluck(...properties: string[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Maps each source value to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted value.\n *\n * ![](pluck.png)\n *\n * Given a list of strings or numbers describing a path to a property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * ## Example\n * Map every click to the tagName of the clicked target element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pluck } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const tagNames = clicks.pipe(pluck('target', 'tagName'));\n * tagNames.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param properties The nested properties to pluck from each source\n * value.\n * @return A function that returns an Observable of property values from the\n * source values.\n * @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8.\n */\nexport function pluck(...properties: Array): OperatorFunction {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return map((x) => {\n let currentProp: any = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp?.[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\n","import { Observable } from '../Observable';\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Creates a {@link ConnectableObservable} that utilizes a {@link BehaviorSubject}.\n *\n * @param initialValue The initial value passed to the {@link BehaviorSubject}.\n * @return A function that returns a {@link ConnectableObservable}\n * @deprecated Will be removed in v8. To create a connectable observable that uses a\n * {@link BehaviorSubject} under the hood, use {@link connectable}.\n * `source.pipe(publishBehavior(initValue))` is equivalent to\n * `connectable(source, { connector: () => new BehaviorSubject(initValue), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishBehavior`, use the {@link share} operator instead.\n * `source.pipe(publishBehavior(initValue), refCount())` is equivalent to\n * `source.pipe(share({ connector: () => new BehaviorSubject(initValue), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishBehavior(initialValue: T): UnaryFunction, ConnectableObservable> {\n // Note that this has *never* supported the selector function.\n return (source) => {\n const subject = new BehaviorSubject(initialValue);\n return new ConnectableObservable(source, () => subject);\n };\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Returns a connectable observable sequence that shares a single subscription to the\n * underlying sequence containing only the last notification.\n *\n * ![](publishLast.png)\n *\n * Similar to {@link publish}, but it waits until the source observable completes and stores\n * the last emitted value.\n * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last\n * value even if it has no more subscribers. If subsequent subscriptions happen, they will\n * immediately get that last stored value and complete.\n *\n * ## Example\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { publishLast, tap, take } from 'rxjs/operators';\n *\n * const connectable =\n * interval(1000)\n * .pipe(\n * tap(x => console.log(\"side effect\", x)),\n * take(3),\n * publishLast());\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. A\", x),\n * err => console.log(\"Sub. A Error\", err),\n * () => console.log( \"Sub. A Complete\"));\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. B\", x),\n * err => console.log(\"Sub. B Error\", err),\n * () => console.log( \"Sub. B Complete\"));\n *\n * connectable.connect();\n *\n * // Results:\n * // \"side effect 0\"\n * // \"side effect 1\"\n * // \"side effect 2\"\n * // \"Sub. A 2\"\n * // \"Sub. B 2\"\n * // \"Sub. A Complete\"\n * // \"Sub. B Complete\"\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link publish}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @return A function that returns an Observable that emits elements of a\n * sequence produced by multicasting the source sequence.\n * @deprecated Will be removed in v8. To create a connectable observable with an\n * {@link AsyncSubject} under the hood, use {@link connectable}.\n * `source.pipe(publishLast())` is equivalent to\n * `connectable(source, { connector: () => new AsyncSubject(), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishLast`, use the {@link share} operator instead.\n * `source.pipe(publishLast(), refCount())` is equivalent to\n * `source.pipe(share({ connector: () => new AsyncSubject(), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishLast(): UnaryFunction, ConnectableObservable> {\n // Note that this has *never* supported a selector function like `publish` and `publishReplay`.\n return (source) => {\n const subject = new AsyncSubject();\n return new ConnectableObservable(source, () => subject);\n };\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { MonoTypeOperatorFunction, OperatorFunction, TimestampProvider, ObservableInput, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates a {@link ConnectableObservable} that uses a {@link ReplaySubject}\n * internally.\n *\n * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.\n * @param windowTime The window time for the underlying {@link ReplaySubject}.\n * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.\n * @deprecated Will be removed in v8. To create a connectable observable that uses a\n * {@link ReplaySubject} under the hood, use {@link connectable}.\n * `source.pipe(publishReplay(size, time, scheduler))` is equivalent to\n * `connectable(source, { connector: () => new ReplaySubject(size, time, scheduler), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishReplay`, use the {@link share} operator instead.\n * `publishReplay(size, time, scheduler), refCount()` is equivalent to\n * `share({ connector: () => new ReplaySubject(size, time, scheduler), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay(\n bufferSize?: number,\n windowTime?: number,\n timestampProvider?: TimestampProvider\n): MonoTypeOperatorFunction;\n\n/**\n * Creates an observable, that when subscribed to, will create a {@link ReplaySubject},\n * and pass an observable from it (using [asObservable](api/index/class/Subject#asObservable)) to\n * the `selector` function, which then returns an observable that is subscribed to before\n * \"connecting\" the source to the internal `ReplaySubject`.\n *\n * Since this is deprecated, for additional details see the documentation for {@link connect}.\n *\n * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.\n * @param windowTime The window time for the underlying {@link ReplaySubject}.\n * @param selector A function used to setup the multicast.\n * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `source.pipe(publishReplay(size, window, selector, scheduler))` is equivalent to\n * `source.pipe(connect(selector, { connector: () => new ReplaySubject(size, window, scheduler) }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay>(\n bufferSize: number | undefined,\n windowTime: number | undefined,\n selector: (shared: Observable) => O,\n timestampProvider?: TimestampProvider\n): OperatorFunction>;\n\n/**\n * Creates a {@link ConnectableObservable} that uses a {@link ReplaySubject}\n * internally.\n *\n * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.\n * @param windowTime The window time for the underlying {@link ReplaySubject}.\n * @param selector Passing `undefined` here determines that this operator will return a {@link ConnectableObservable}.\n * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.\n * @deprecated Will be removed in v8. To create a connectable observable that uses a\n * {@link ReplaySubject} under the hood, use {@link connectable}.\n * `source.pipe(publishReplay(size, time, scheduler))` is equivalent to\n * `connectable(source, { connector: () => new ReplaySubject(size, time, scheduler), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishReplay`, use the {@link share} operator instead.\n * `publishReplay(size, time, scheduler), refCount()` is equivalent to\n * `share({ connector: () => new ReplaySubject(size, time, scheduler), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay>(\n bufferSize: number | undefined,\n windowTime: number | undefined,\n selector: undefined,\n timestampProvider: TimestampProvider\n): OperatorFunction>;\n\n/**\n * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the\n * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's\n * behaviors.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay(\n bufferSize?: number,\n windowTime?: number,\n selectorOrScheduler?: TimestampProvider | OperatorFunction,\n timestampProvider?: TimestampProvider\n) {\n if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n const selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n // Note, we're passing `selector!` here, because at runtime, `undefined` is an acceptable argument\n // but it makes our TypeScript signature for `multicast` unhappy (as it should, because it's gross).\n return (source: Observable) => multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector!)(source);\n}\n","import { OperatorFunction, ObservableInputTuple } from '../types';\nimport { raceInit } from '../observable/race';\nimport { operate } from '../util/lift';\nimport { identity } from '../util/identity';\n\n/**\n * Creates an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of the Observable to which\n * the operator is applied and supplied Observables.\n *\n * ## Example\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { mapTo, raceWith } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * obs2.pipe(\n * raceWith(obs3, obs1)\n * ).subscribe(\n * winner => console.log(winner)\n * );\n *\n * // Outputs\n * // a series of 'fast one'\n * ```\n *\n * @param otherSources Sources used to race for which Observable emits first.\n * @return A function that returns an Observable that mirrors the output of the\n * first Observable to emit an item.\n */\n\nexport function raceWith(\n ...otherSources: [...ObservableInputTuple]\n): OperatorFunction {\n return !otherSources.length\n ? identity\n : operate((source, subscriber) => {\n raceInit([source, ...otherSources])(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * ![](repeatWhen.png)\n *\n * ## Example\n * Repeat a message stream on click\n * ```ts\n * import { of, fromEvent } from 'rxjs';\n * import { repeatWhen } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const documentClick$ = fromEvent(document, 'click');\n *\n * source.pipe(repeatWhen(() => documentClick$)\n * ).subscribe(data => console.log(data))\n * ```\n * @see {@link repeat}\n * @see {@link retry}\n * @see {@link retryWhen}\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return A function that returns an Observable that that mirrors the source\n * Observable with the exception of a `complete`.\n */\nexport function repeatWhen(notifier: (notifications: Observable) => Observable): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null;\n let syncResub = false;\n let completions$: Subject;\n let isNotifierComplete = false;\n let isMainComplete = false;\n\n /**\n * Checks to see if we can complete the result, completes it, and returns `true` if it was completed.\n */\n const checkComplete = () => isMainComplete && isNotifierComplete && (subscriber.complete(), true);\n /**\n * Gets the subject to send errors through. If it doesn't exist,\n * we know we need to setup the notifier.\n */\n const getCompletionSubject = () => {\n if (!completions$) {\n completions$ = new Subject();\n\n // If the call to `notifier` throws, it will be caught by the OperatorSubscriber\n // In the main subscription -- in `subscribeForRepeatWhen`.\n notifier(completions$).subscribe(\n new OperatorSubscriber(\n subscriber,\n () => {\n if (innerSub) {\n subscribeForRepeatWhen();\n } else {\n // If we don't have an innerSub yet, that's because the inner subscription\n // call hasn't even returned yet. We've arrived here synchronously.\n // So we flag that we want to resub, such that we can ensure teardown\n // happens before we resubscribe.\n syncResub = true;\n }\n },\n () => {\n isNotifierComplete = true;\n checkComplete();\n }\n )\n );\n }\n return completions$;\n };\n\n const subscribeForRepeatWhen = () => {\n isMainComplete = false;\n\n innerSub = source.subscribe(\n new OperatorSubscriber(subscriber, undefined, () => {\n isMainComplete = true;\n // Check to see if we are complete, and complete if so.\n // If we are not complete. Get the subject. This calls the `notifier` function.\n // If that function fails, it will throw and `.next()` will not be reached on this\n // line. The thrown error is caught by the _complete handler in this\n // `OperatorSubscriber` and handled appropriately.\n !checkComplete() && getCompletionSubject().next();\n })\n );\n\n if (syncResub) {\n // Ensure that the inner subscription is torn down before\n // moving on to the next subscription in the synchronous case.\n // If we don't do this here, all inner subscriptions will not be\n // torn down until the entire observable is done.\n innerSub.unsubscribe();\n // It is important to null this out. Not only to free up memory, but\n // to make sure code above knows we are in a subscribing state to\n // handle synchronous resubscription.\n innerSub = null;\n // We may need to do this multiple times, so reset the flags.\n syncResub = false;\n // Resubscribe\n subscribeForRepeatWhen();\n }\n };\n\n // Start the subscription\n subscribeForRepeatWhen();\n });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { Subscription } from '../Subscription';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\n\nexport interface RetryConfig {\n /**\n * The maximum number of times to retry.\n */\n count?: number;\n /**\n * The number of milliseconds to delay before retrying, OR a function to\n * return a notifier for delaying. If a function is given, that function should\n * return a notifier that, when it emits will retry the source. If the notifier\n * completes _without_ emitting, the resulting observable will complete without error,\n * if the notifier errors, the error will be pushed to the result.\n */\n delay?: number | ((error: any, retryCount: number) => ObservableInput);\n /**\n * Whether or not to reset the retry counter when the retried subscription\n * emits its first value.\n */\n resetOnSuccess?: boolean;\n}\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * ![](retry.png)\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n *\n * ## Example\n * ```ts\n * import { interval, of, throwError } from 'rxjs';\n * import { mergeMap, retry } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * mergeMap(val => {\n * if(val > 5){\n * return throwError('Error!');\n * }\n * return of(val);\n * }),\n * //retry 2 times on error\n * retry(2)\n * );\n *\n * const subscribe = example.subscribe({\n * next: val => console.log(val),\n * error: val => console.log(`${val}: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // \"Error!: Retried 2 times then quit!\"\n * ```\n *\n * @param count - Number of retry attempts before failing.\n * @param resetOnSuccess - When set to `true` every successful emission will reset the error count\n * @return A function that returns an Observable that will resubscribe to the\n * source stream when the source stream errors, at most `count` times.\n */\nexport function retry(count?: number): MonoTypeOperatorFunction;\n\n/**\n * Returns an observable that mirrors the source observable unless it errors. If it errors, the source observable\n * will be resubscribed to (or \"retried\") based on the configuration passed here. See documentation\n * for {@link RetryConfig} for more details.\n *\n * @param config - The retry configuration\n */\nexport function retry(config: RetryConfig): MonoTypeOperatorFunction;\n\nexport function retry(configOrCount: number | RetryConfig = Infinity): MonoTypeOperatorFunction {\n let config: RetryConfig;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n } else {\n config = {\n count: configOrCount,\n };\n }\n const { count = Infinity, delay, resetOnSuccess: resetOnSuccess = false } = config;\n\n return count <= 0\n ? identity\n : operate((source, subscriber) => {\n let soFar = 0;\n let innerSub: Subscription | null;\n const subscribeForRetry = () => {\n let syncUnsub = false;\n innerSub = source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n // If we're resetting on success\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n },\n // Completions are passed through to consumer.\n undefined,\n (err) => {\n if (soFar++ < count) {\n // We are still under our retry count\n const resub = () => {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n } else {\n syncUnsub = true;\n }\n };\n\n if (delay != null) {\n // The user specified a retry delay.\n // They gave us a number, use a timer, otherwise, it's a function,\n // and we're going to call it to get a notifier.\n const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n const notifierSubscriber = new OperatorSubscriber(\n subscriber,\n () => {\n // After we get the first notification, we\n // unsubscribe from the notifer, because we don't want anymore\n // and we resubscribe to the source.\n notifierSubscriber.unsubscribe();\n resub();\n },\n () => {\n // The notifier completed without emitting.\n // The author is telling us they want to complete.\n subscriber.complete();\n }\n );\n notifier.subscribe(notifierSubscriber);\n } else {\n // There was no notifier given. Just resub immediately.\n resub();\n }\n } else {\n // We're past our maximum number of retries.\n // Just send along the error.\n subscriber.error(err);\n }\n }\n )\n );\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * ![](retryWhen.png)\n *\n * Retry an observable sequence on error based on custom criteria.\n *\n * ## Example\n * ```ts\n * import { timer, interval } from 'rxjs';\n * import { map, tap, retryWhen, delayWhen } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * map(val => {\n * if (val > 5) {\n * // error will be picked up by retryWhen\n * throw val;\n * }\n * return val;\n * }),\n * retryWhen(errors =>\n * errors.pipe(\n * // log error message\n * tap(val => console.log(`Value ${val} was too high!`)),\n * // restart in 5 seconds\n * delayWhen(val => timer(val * 1000))\n * )\n * )\n * );\n *\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // \"Value 6 was too high!\"\n * // --Wait 5 seconds then repeat\n * ```\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return A function that returns an Observable that mirrors the source\n * Observable with the exception of an `error`.\n */\nexport function retryWhen(notifier: (errors: Observable) => Observable): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null;\n let syncResub = false;\n let errors$: Subject;\n\n const subscribeForRetryWhen = () => {\n innerSub = source.subscribe(\n new OperatorSubscriber(subscriber, undefined, undefined, (err) => {\n if (!errors$) {\n errors$ = new Subject();\n notifier(errors$).subscribe(\n new OperatorSubscriber(subscriber, () =>\n // If we have an innerSub, this was an asynchronous call, kick off the retry.\n // Otherwise, if we don't have an innerSub yet, that's because the inner subscription\n // call hasn't even returned yet. We've arrived here synchronously.\n // So we flag that we want to resub, such that we can ensure teardown\n // happens before we resubscribe.\n innerSub ? subscribeForRetryWhen() : (syncResub = true)\n )\n );\n }\n if (errors$) {\n // We have set up the notifier without error.\n errors$.next(err);\n }\n })\n );\n\n if (syncResub) {\n // Ensure that the inner subscription is torn down before\n // moving on to the next subscription in the synchronous case.\n // If we don't do this here, all inner subscriptions will not be\n // torn down until the entire observable is done.\n innerSub.unsubscribe();\n innerSub = null;\n // We may need to do this multiple times, so reset the flag.\n syncResub = false;\n // Resubscribe\n subscribeForRetryWhen();\n }\n };\n\n // Start the subscription\n subscribeForRetryWhen();\n });\n}\n","import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.\n *\n * ![](sample.png)\n *\n * Whenever the `notifier` Observable emits a value, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n * On every click, sample the most recent \"seconds\" timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { sample } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param notifier The Observable to use for sampling the\n * source Observable.\n * @return A function that returns an Observable that emits the results of\n * sampling the values emitted by the source Observable whenever the notifier\n * Observable emits value or completes.\n */\nexport function sample(notifier: Observable): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue: T | null = null;\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n })\n );\n const emit = () => {\n if (hasValue) {\n hasValue = false;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n };\n notifier.subscribe(new OperatorSubscriber(subscriber, emit, noop));\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { sample } from './sample';\nimport { interval } from '../observable/interval';\n\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * Samples the source Observable at periodic time\n * intervals, emitting what it samples.\n *\n * ![](sampleTime.png)\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * ## Example\n * Every second, emit the most recent click at most once\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { sampleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(sampleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the sampling.\n * @return A function that returns an Observable that emits the results of\n * sampling the values emitted by the source Observable at the specified time\n * interval.\n */\nexport function sampleTime(period: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction {\n return sample(interval(period, scheduler));\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\n\nexport function scan(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction;\nexport function scan(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction;\nexport function scan(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction;\n\n// TODO: link to a \"redux pattern\" section in the guide (location TBD)\n\n/**\n * Useful for encapsulating and managing state. Applies an accumulator (or \"reducer function\")\n * to each value from the source after an initial state is established -- either via\n * a `seed` value (second argument), or from the first value from the source.\n *\n * It's like {@link reduce}, but emits the current\n * accumulation state after each update\n *\n * ![](scan.png)\n *\n * This operator maintains an internal state and emits it after processing each value as follows:\n *\n * 1. First value arrives\n * - If a `seed` value was supplied (as the second argument to `scan`), let `state = seed` and `value = firstValue`.\n * - If NO `seed` value was supplied (no second argument), let `state = firstValue` and go to 3.\n * 2. Let `state = accumulator(state, value)`.\n * - If an error is thrown by `accumulator`, notify the consumer of an error. The process ends.\n * 3. Emit `state`.\n * 4. Next value arrives, let `value = nextValue`, go to 2.\n *\n * ## Example\n *\n * An average of previous numbers. This example shows how\n * not providing a `seed` can prime the stream with the\n * first value from the source.\n *\n * ```ts\n * import { interval, of } from 'rxjs';\n * import { scan, map } from 'rxjs/operators';\n *\n * const numbers$ = of(1, 2, 3);\n *\n * numbers$\n * .pipe(\n * // Get the sum of the numbers coming in.\n * scan((total, n) => total + n),\n * // Get the average by dividing the sum by the total number\n * // received so var (which is 1 more than the zero-based index).\n * map((sum, index) => sum / (index + 1))\n * )\n * .subscribe(console.log);\n * ```\n *\n * ## Example\n *\n * The Fibonacci sequence. This example shows how you can use\n * a seed to prime accumulation process. Also... you know... Fibinacci.\n * So important to like, computers and stuff that its whiteboarded\n * in job interviews. Now you can show them the Rx version! (Please don't, haha)\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { scan, map, startWith } from 'rxjs/operators';\n *\n * const firstTwoFibs = [0, 1];\n * // An endless stream of Fibonnaci numbers.\n * const fibonnaci$ = interval(1000).pipe(\n * // Scan to get the fibonnaci numbers (after 0, 1)\n * scan(([a, b]) => [b, a + b], firstTwoFibs),\n * // Get the second number in the tuple, it's the one you calculated\n * map(([, n]) => n),\n * // Start with our first two digits :)\n * startWith(...firstTwoFibs)\n * );\n *\n * fibonnaci$.subscribe(console.log);\n * ```\n *\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n * @see {@link switchScan}\n *\n * @param accumulator A \"reducer function\". This will be called for each value after an initial state is\n * acquired.\n * @param seed The initial state. If this is not provided, the first value from the source will\n * be used as the initial state, and emitted without going through the accumulator. All subsequent values\n * will be processed by the accumulator function. If this is provided, all values will go through\n * the accumulator function.\n * @return A function that returns an Observable of the accumulated values.\n */\nexport function scan(accumulator: (acc: V | A | S, value: V, index: number) => A, seed?: S): OperatorFunction {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n return operate(scanInternals(accumulator, seed as S, arguments.length >= 2, true));\n}\n","import { Observable } from '../Observable';\n\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Compares all values of two observables in sequence using an optional comparator function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * Checks to see of all values emitted by both observables are equal, in order.\n *\n * ![](sequenceEqual.png)\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other completes, the returned observable will never complete.\n *\n * ## Example\n * figure out if the Konami code matches\n * ```ts\n * import { from, fromEvent } from 'rxjs';\n * import { sequenceEqual, bufferCount, mergeMap, map } from 'rxjs/operators';\n *\n * const codes = from([\n * 'ArrowUp',\n * 'ArrowUp',\n * 'ArrowDown',\n * 'ArrowDown',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'KeyB',\n * 'KeyA',\n * 'Enter', // no start key, clearly.\n * ]);\n *\n * const keys = fromEvent(document, 'keyup').pipe(map(e => e.code));\n * const matches = keys.pipe(\n * bufferCount(11, 1),\n * mergeMap(\n * last11 => from(last11).pipe(sequenceEqual(codes)),\n * ),\n * );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparator] An optional function to compare each value pair\n * @return A function that returns an Observable that emits a single boolean\n * value representing whether or not the values emitted by the source\n * Observable and provided Observable were equal in sequence.\n */\nexport function sequenceEqual(\n compareTo: Observable,\n comparator: (a: T, b: T) => boolean = (a, b) => a === b\n): OperatorFunction {\n return operate((source, subscriber) => {\n // The state for the source observable\n const aState = createState();\n // The state for the compareTo observable;\n const bState = createState();\n\n /** A utility to emit and complete */\n const emit = (isEqual: boolean) => {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n\n /**\n * Creates a subscriber that subscribes to one of the sources, and compares its collected\n * state -- `selfState` -- to the other source's collected state -- `otherState`. This\n * is used for both streams.\n */\n const createSubscriber = (selfState: SequenceState, otherState: SequenceState) => {\n const sequenceEqualSubscriber = new OperatorSubscriber(\n subscriber,\n (a: T) => {\n const { buffer, complete } = otherState;\n if (buffer.length === 0) {\n // If there's no values in the other buffer\n // and the other stream is complete, we know\n // this isn't a match, because we got one more value.\n // Otherwise, we push onto our buffer, so when the other\n // stream emits, it can pull this value off our buffer and check it\n // at the appropriate time.\n complete ? emit(false) : selfState.buffer.push(a);\n } else {\n // If the other stream *does* have values in it's buffer,\n // pull the oldest one off so we can compare it to what we\n // just got. If it wasn't a match, emit `false` and complete.\n !comparator(a, buffer.shift()!) && emit(false);\n }\n },\n () => {\n // Or observable completed\n selfState.complete = true;\n const { complete, buffer } = otherState;\n // If the other observable is also complete, and there's\n // still stuff left in their buffer, it doesn't match, if their\n // buffer is empty, then it does match. This is because we can't\n // possibly get more values here anymore.\n complete && emit(buffer.length === 0);\n // Be sure to clean up our stream as soon as possible if we can.\n sequenceEqualSubscriber?.unsubscribe();\n }\n );\n\n return sequenceEqualSubscriber;\n };\n\n // Subscribe to each source.\n source.subscribe(createSubscriber(aState, bState));\n compareTo.subscribe(createSubscriber(bState, aState));\n });\n}\n\n/**\n * A simple structure for the data used to test each sequence\n */\ninterface SequenceState {\n /** A temporary store for arrived values before they are checked */\n buffer: T[];\n /** Whether or not the sequence source has completed. */\n complete: boolean;\n}\n\n/**\n * Creates a simple structure that is used to represent\n * data used to test each sequence.\n */\nfunction createState(): SequenceState {\n return {\n buffer: [],\n complete: false,\n };\n}\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\n\nimport { MonoTypeOperatorFunction, OperatorFunction, TruthyTypesOf } from '../types';\nimport { SequenceError } from '../util/SequenceError';\nimport { NotFoundError } from '../util/NotFoundError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\nexport function single(predicate: BooleanConstructor): OperatorFunction>;\nexport function single(predicate?: (value: T, index: number, source: Observable) => boolean): MonoTypeOperatorFunction;\n\n/**\n * Returns an observable that asserts that only one value is\n * emitted from the observable that matches the predicate. If no\n * predicate is provided, then it will assert that the observable\n * only emits one value.\n *\n * In the event that the observable is empty, it will throw an\n * {@link EmptyError}.\n *\n * In the event that two values are found that match the predicate,\n * or when there are two values emitted and no predicate, it will\n * throw a {@link SequenceError}\n *\n * In the event that no values match the predicate, if one is provided,\n * it will throw a {@link NotFoundError}\n *\n * ## Example\n *\n * Expect only name beginning with 'B':\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const source1 = of(\n * { name: 'Ben' },\n * { name: 'Tracy' },\n * { name: 'Laney' },\n * { name: 'Lily' }\n * );\n *\n * source1.pipe(\n * single(x => x.name.startsWith('B'))\n * )\n * .subscribe(x => console.log(x));\n * // Emits \"Ben\"\n *\n *\n * const source2 = of(\n * { name: 'Ben' },\n * { name: 'Tracy' },\n * { name: 'Bradley' },\n * { name: 'Lincoln' }\n * );\n *\n * source2.pipe(\n * single(x => x.name.startsWith('B'))\n * )\n * .subscribe(x => console.log(x));\n * // Error emitted: SequenceError('Too many values match')\n *\n *\n * const source3 = of(\n * { name: 'Laney' },\n * { name: 'Tracy' },\n * { name: 'Lily' },\n * { name: 'Lincoln' }\n * );\n *\n * source3.pipe(\n * single(x => x.name.startsWith('B'))\n * )\n * .subscribe(x => console.log(x));\n * // Error emitted: NotFoundError('No values match')\n * ```\n *\n * @see {@link first}\n * @see {@link find}\n * @see {@link findIndex}\n * @see {@link elementAt}\n *\n * @throws {NotFoundError} Delivers an NotFoundError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @throws {SequenceError} Delivers a SequenceError if more than one value is emitted that matches the\n * provided predicate. If no predicate is provided, will deliver a SequenceError if more\n * that one value comes from the source\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return A function that returns an Observable that emits the single item\n * emitted by the source Observable that matches the predicate.\n */\nexport function single(predicate?: (value: T, index: number, source: Observable) => boolean): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n let singleValue: T;\n let seenValue = false;\n let index = 0;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n },\n () => {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n } else {\n subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());\n }\n }\n )\n );\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Skip a specified number of values before the completion of an observable.\n *\n * ![](skipLast.png)\n *\n * Returns an observable that will emit values as soon as it can, given a number of\n * skipped values. For example, if you `skipLast(3)` on a source, when the source\n * emits its fourth value, the first value the source emitted will finally be emitted\n * from the returned observable, as it is no longer part of what needs to be skipped.\n *\n * All values emitted by the result of `skipLast(N)` will be delayed by `N` emissions,\n * as each value is held in a buffer until enough values have been emitted that that\n * the buffered value may finally be sent to the consumer.\n *\n * After subscribing, unsubscribing will not result in the emission of the buffered\n * skipped values.\n *\n * ## Example\n *\n * Skip the last 2 values of an observable with many values\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { skipLast } from 'rxjs/operators';\n *\n * const numbers = of(1, 2, 3, 4, 5);\n * const skipLastTwo = numbers.pipe(skipLast(2));\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n * // (4 and 5 are skipped)\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @param skipCount Number of elements to skip from the end of the source Observable.\n * @return A function that returns an Observable that skips the last `count`\n * values emitted by the source Observable.\n */\nexport function skipLast(skipCount: number): MonoTypeOperatorFunction {\n return skipCount <= 0\n ? // For skipCounts less than or equal to zero, we are just mirroring the source.\n identity\n : operate((source, subscriber) => {\n // A ring buffer to hold the values while we wait to see\n // if we can emit it or it's part of the \"skipped\" last values.\n // Note that it is the _same size_ as the skip count.\n let ring: T[] = new Array(skipCount);\n // The number of values seen so far. This is used to get\n // the index of the current value when it arrives.\n let seen = 0;\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n // Get the index of the value we have right now\n // relative to all other values we've seen, then\n // increment `seen`. This ensures we've moved to\n // the next slot in our ring buffer.\n const valueIndex = seen++;\n if (valueIndex < skipCount) {\n // If we haven't seen enough values to fill our buffer yet,\n // Then we aren't to a number of seen values where we can\n // emit anything, so let's just start by filling the ring buffer.\n ring[valueIndex] = value;\n } else {\n // We are traversing over the ring array in such\n // a way that when we get to the end, we loop back\n // and go to the start.\n const index = valueIndex % skipCount;\n // Pull the oldest value out so we can emit it,\n // and stuff the new value in it's place.\n const oldValue = ring[index];\n ring[index] = value;\n // Emit the old value. It is important that this happens\n // after we swap the value in the buffer, if it happens\n // before we swap the value in the buffer, then a synchronous\n // source can get the buffer out of whack.\n subscriber.next(oldValue);\n }\n })\n );\n\n return () => {\n // Release our values in memory\n ring = null!;\n };\n });\n}\n","import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values ​​until the passed in observable emits the first value.\n * This can be particularly useful in combination with user interactions, responses of http requests or waiting for specific times to pass by.\n *\n * ![](skipUntil.png)\n *\n * Internally the `skipUntil` operator subscribes to the passed in observable (in the following called *notifier*) in order to recognize the emission\n * of its first value. When this happens, the operator unsubscribes from the *notifier* and starts emitting the values of the *source*\n * observable. It will never let the *source* observable emit any values if the *notifier* completes or throws an error without emitting\n * a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values ​​of the interval observable are skipped until the user clicks anywhere within the page.\n *\n * ```ts\n * import { interval, fromEvent } from 'rxjs';\n * import { skipUntil } from 'rxjs/operators';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n * skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * const subscribe = emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return A function that returns an Observable that skips items from the\n * source Observable until the second Observable emits an item, then emits the\n * remaining items.\n */\nexport function skipUntil(notifier: Observable): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let taking = false;\n\n const skipSubscriber = new OperatorSubscriber(\n subscriber,\n () => {\n skipSubscriber?.unsubscribe();\n taking = true;\n },\n noop\n );\n\n innerFrom(notifier).subscribe(skipSubscriber);\n\n source.subscribe(new OperatorSubscriber(subscriber, (value) => taking && subscriber.next(value)));\n });\n}\n","import { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\n\n/**\n * Converts a higher-order Observable into a first-order Observable\n * producing values only from the most recent observable sequence\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](switchAll.png)\n *\n * `switchAll` subscribes to a source that is an observable of observables, also known as a\n * \"higher-order observable\" (or `Observable>`). It subscribes to the most recently\n * provided \"inner observable\" emitted by the source, unsubscribing from any previously subscribed\n * to inner observable, such that only the most recent inner observable may be subscribed to at\n * any point in time. The resulting observable returned by `switchAll` will only complete if the\n * source observable completes, *and* any currently subscribed to inner observable also has completed,\n * if there are any.\n *\n * ## Examples\n * Spawn a new interval observable for each click event, but for every new\n * click, cancel the previous interval and subscribe to the new one.\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchAll, map, tap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));\n * const source = clicks.pipe(map((ev) => interval(1000)));\n *\n * source.pipe(\n * switchAll()\n * ).subscribe(x => console.log(x));\n *\n * // Output\n * // click\n * // 0\n * // 1\n * // 2\n * // 3\n * // ...\n * // click\n * // 0\n * // 1\n * // 2\n * // ...\n * // click\n * // ...\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link mergeAll}\n *\n * @return A function that returns an Observable that converts a higher-order\n * Observable into a first-order Observable producing values only from the most\n * recent Observable sequence.\n */\n\nexport function switchAll>(): OperatorFunction> {\n return switchMap(identity);\n}\n","import { ObservableInput, ObservedValueOf, OperatorFunction } from '../types';\nimport { switchMap } from './switchMap';\nimport { operate } from '../util/lift';\n\n// TODO: Generate a marble diagram for these docs.\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, emitting values\n * only from the most recently returned Observable.\n *\n * It's like {@link mergeScan}, but only the most recent\n * Observable returned by the accumulator is merged into the outer Observable.\n *\n * @see {@link scan}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @return A function that returns an observable of the accumulated values.\n */\nexport function switchScan>(\n accumulator: (acc: R, value: T, index: number) => O,\n seed: R\n): OperatorFunction> {\n return operate((source, subscriber) => {\n // The state we will keep up to date to pass into our\n // accumulator function at each new value from the source.\n let state = seed;\n\n // Use `switchMap` on our `source` to do the work of creating\n // this operator. Note the backwards order here of `switchMap()(source)`\n // to avoid needing to use `pipe` unnecessarily\n switchMap(\n // On each value from the source, call the accumulator with\n // our previous state, the value and the index.\n (value: T, index) => accumulator(state, value, index),\n // Using the deprecated result selector here as a dirty trick\n // to update our state with the flattened value.\n (_, innerValue) => ((state = innerValue), innerValue)\n )(source).subscribe(subscriber);\n\n return () => {\n // Release state on teardown\n state = null!;\n };\n });\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerLike, OperatorFunction } from '../types';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\n\n/**\n *\n * Emits an object containing the current value, and the time that has\n * passed between emitting the current value and the previous value, which is\n * calculated by using the provided `scheduler`'s `now()` method to retrieve\n * the current time at each emission, then calculating the difference. The `scheduler`\n * defaults to {@link asyncScheduler}, so by default, the `interval` will be in\n * milliseconds.\n *\n * Convert an Observable that emits items into one that\n * emits indications of the amount of time elapsed between those emissions.\n *\n * ![](timeInterval.png)\n *\n * ## Examples\n * Emit interval between current value with the last value\n *\n * ```ts\n * import { interval } from \"rxjs\";\n * import { timeInterval, timeout } from \"rxjs/operators\";\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeInterval())\n * .subscribe({\n * next: value => console.log(value),\n * error: err => console.log(err),\n * });\n *\n * seconds.pipe(timeout(900))\n * .subscribe({\n * next: value => console.log(value),\n * error: err => console.log(err),\n * });\n *\n * // NOTE: The values will never be this precise,\n * // intervals created with `interval` or `setInterval`\n * // are non-deterministic.\n *\n * // {value: 0, interval: 1000}\n * // {value: 1, interval: 1000}\n * // {value: 2, interval: 1000}\n * ```\n *\n * @param {SchedulerLike} [scheduler] Scheduler used to get the current time.\n * @return A function that returns an Observable that emits information about\n * value and interval.\n */\nexport function timeInterval(scheduler: SchedulerLike = async): OperatorFunction> {\n return (source: Observable) =>\n defer(() => {\n return source.pipe(\n // TODO(benlesh): correct these typings.\n scan(({ current }, value) => ({ value, current: scheduler.now(), last: current }), {\n current: scheduler.now(),\n value: undefined,\n last: undefined,\n } as any) as OperatorFunction,\n map>(({ current, last, value }) => new TimeInterval(value, current - last))\n );\n });\n}\n\n// TODO(benlesh): make this an interface, export the interface, but not the implemented class,\n// there's no reason users should be manually creating this type.\n\nexport class TimeInterval {\n /**\n * @deprecated Internal implementation detail, do not construct directly. Will be made an interface in v8.\n */\n constructor(public value: T, public interval: number) {}\n}\n","import { async } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { ObservableInput, OperatorFunction, SchedulerLike } from '../types';\nimport { timeout } from './timeout';\n\n/**\n * If the time of the Date object passed arrives before the first value arrives from the source, it will unsubscribe\n * from the source and switch the subscription to another observable.\n *\n * Use to switch to a different observable if the first value doesn't arrive by a specific time\n *\n * Can be used to set a timeout only for the first value, however it's recommended to use the {@link timeout} operator with\n * the `first` configuration to get that effect.\n *\n * @param dueBy The exact time, as a `Date`, at which the timeout will be triggered if the first value does not arrive.\n * @param switchTo The observable to switch to when timeout occurs.\n * @param scheduler The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n * @deprecated Replaced with {@link timeout}. Instead of `timeoutWith(someDate, a$, scheduler)`, use the configuration object `timeout({ first: someDate, with: () => a$, scheduler })`. Will be removed in v8.\n */\nexport function timeoutWith(dueBy: Date, switchTo: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n\n/**\n * When the passed timespan ellapses before the source emits any given value, it will unsubscribe from the source,\n * and switch the subscription to another observable.\n *\n * Used to switch to a different observable if your source is being slow\n *\n * Useful in cases where:\n *\n * - You want to switch to a different source that may be faster\n * - You want to notify a user that the data stream is slow\n * - You want to emit a custom error rather than the {@link TimeoutError} emitted\n * by the default usage of {@link timeout}.\n *\n * ## Example\n *\n * Fallback to a faster observable\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeoutWith } from 'rxjs/operators';\n *\n * const slow$ = interval(1000);\n * const faster$ = interval(500);\n *\n * slow$.pipe(\n * timeoutWith(900, faster$)\n * )\n * .subscribe(console.log)\n * ```\n *\n * ### Example\n *\n * Emit your own custom timeout error\n *\n * ```ts\n * import { interval, throwError } from 'rxjs';\n * import { timeoutWith } from 'rxjs/operators';\n *\n * class CustomTimeoutError extends Error {\n * constructor() {\n * super('It was too slow');\n * this.name = 'CustomTimeoutError';\n * }\n * }\n *\n * const slow = interval(1000);\n *\n * slow$.pipe(\n * timeoutWith(900, throwError(new CustomTimeoutError()))\n * )\n * .subscribe({\n * error: console.error\n * })\n * ```\n * @param waitFor The time allowed between values from the source before timeout is triggered.\n * @param switchTo The observable to switch to when timeout occurs.\n * @param scheduler The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n * @return A function that returns an Observable that mirrors behaviour of the\n * source Observable, unless timeout happens when it starts emitting values\n * from the Observable passed as a second parameter.\n * @deprecated Replaced with {@link timeout}. Instead of `timeoutWith(100, a$, scheduler)`, use the configuration object `timeout({ each: 100, with: () => a$, scheduler })`. Will be removed in v8.\n */\nexport function timeoutWith(waitFor: number, switchTo: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n\nexport function timeoutWith(\n due: number | Date,\n withObservable: ObservableInput,\n scheduler?: SchedulerLike\n): OperatorFunction {\n let first: number | Date | undefined;\n let each: number | undefined;\n let _with: () => ObservableInput;\n scheduler = scheduler ?? async;\n\n if (isValidDate(due)) {\n first = due;\n } else if (typeof due === 'number') {\n each = due;\n }\n\n if (withObservable) {\n _with = () => withObservable;\n } else {\n throw new TypeError('No observable provided to switch to');\n }\n\n if (first == null && each == null) {\n // Ensure timeout was provided at runtime.\n throw new TypeError('No timeout provided.');\n }\n\n return timeout>({\n first,\n each,\n scheduler,\n with: _with,\n });\n}\n","import { OperatorFunction, TimestampProvider, Timestamp } from '../types';\nimport { dateTimestampProvider } from '../scheduler/dateTimestampProvider';\nimport { map } from './map';\n\n/**\n * Attaches a timestamp to each item emitted by an observable indicating when it was emitted\n *\n * The `timestamp` operator maps the *source* observable stream to an object of type\n * `{value: T, timestamp: R}`. The properties are generically typed. The `value` property contains the value\n * and type of the *source* observable. The `timestamp` is generated by the schedulers `now` function. By\n * default it uses the *async* scheduler which simply returns `Date.now()` (milliseconds since 1970/01/01\n * 00:00:00:000) and therefore is of type `number`.\n *\n * ![](timestamp.png)\n *\n * ## Example\n *\n * In this example there is a timestamp attached to the documents click event.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { timestamp } from 'rxjs/operators';\n *\n * const clickWithTimestamp = fromEvent(document, 'click').pipe(\n * timestamp()\n * );\n *\n * // Emits data of type {value: MouseEvent, timestamp: number}\n * clickWithTimestamp.subscribe(data => {\n * console.log(data);\n * });\n * ```\n *\n * @param timestampProvider An object with a `now()` method used to get the current timestamp.\n * @return A function that returns an Observable that attaches a timestamp to\n * each item emitted by the source Observable indicating when it was emitted.\n */\nexport function timestamp(timestampProvider: TimestampProvider = dateTimestampProvider): OperatorFunction> {\n return map((value: T) => ({ value, timestamp: timestampProvider.now()}));\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * It's like {@link buffer}, but emits a nested Observable\n * instead of an array.\n *\n * ![](window.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * ## Example\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { window, mergeAll, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const sec = interval(1000);\n * const result = clicks.pipe(\n * window(sec),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return A function that returns an Observable of windows, which are\n * Observables emitting values of the source Observable.\n */\nexport function window(windowBoundaries: Observable): OperatorFunction> {\n return operate((source, subscriber) => {\n let windowSubject: Subject = new Subject();\n\n subscriber.next(windowSubject.asObservable());\n\n const errorHandler = (err: any) => {\n windowSubject.error(err);\n subscriber.error(err);\n };\n\n // Subscribe to our source\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => windowSubject?.next(value),\n () => {\n windowSubject.complete();\n subscriber.complete();\n },\n errorHandler\n )\n );\n\n // Subscribe to the window boundaries.\n windowBoundaries.subscribe(\n new OperatorSubscriber(\n subscriber,\n () => {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject()));\n },\n noop,\n errorHandler\n )\n );\n\n return () => {\n // Unsubscribing the subject ensures that anyone who has captured\n // a reference to this window that tries to use it after it can\n // no longer get values from the source will get an ObjectUnsubscribedError.\n windowSubject?.unsubscribe();\n windowSubject = null!;\n };\n });\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowCount.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * ## Examples\n * Ignore every 3rd click event, starting from the first one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, map, mergeAll, skip } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(3),\n * map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Ignore every 3rd click event, starting from the third one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(2, 3),\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return A function that returns an Observable of windows, which in turn are\n * Observable of values.\n */\nexport function windowCount(windowSize: number, startWindowEvery: number = 0): OperatorFunction> {\n const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n\n return operate((source, subscriber) => {\n let windows = [new Subject()];\n let starts: number[] = [];\n let count = 0;\n\n // Open the first window.\n subscriber.next(windows[0].asObservable());\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value: T) => {\n // Emit the value through all current windows.\n // We don't need to create a new window yet, we\n // do that as soon as we close one.\n for (const window of windows) {\n window.next(value);\n }\n // Here we're using the size of the window array to figure\n // out if the oldest window has emitted enough values. We can do this\n // because the size of the window array is a function of the values\n // seen by the subscription. If it's time to close it, we complete\n // it and remove it.\n const c = count - windowSize + 1;\n if (c >= 0 && c % startEvery === 0) {\n windows.shift()!.complete();\n }\n\n // Look to see if the next count tells us it's time to open a new window.\n // TODO: We need to figure out if this really makes sense. We're technically\n // emitting windows *before* we have a value to emit them for. It's probably\n // more expected that we should be emitting the window when the start\n // count is reached -- not before.\n if (++count % startEvery === 0) {\n const window = new Subject();\n windows.push(window);\n subscriber.next(window.asObservable());\n }\n },\n () => {\n while (windows.length > 0) {\n windows.shift()!.complete();\n }\n subscriber.complete();\n },\n (err) => {\n while (windows.length > 0) {\n windows.shift()!.error(err);\n }\n subscriber.error(err);\n },\n () => {\n starts = null!;\n windows = null!;\n }\n )\n );\n });\n}\n","import { Subject } from '../Subject';\nimport { asyncScheduler } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { Observer, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function windowTime(windowTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(\n windowTimeSpan: number,\n windowCreationInterval: number,\n scheduler?: SchedulerLike\n): OperatorFunction>;\nexport function windowTime(\n windowTimeSpan: number,\n windowCreationInterval: number | null | void,\n maxWindowSize: number,\n scheduler?: SchedulerLike\n): OperatorFunction>;\n/**\n * Branch out the source Observable values as a nested Observable periodically\n * in time.\n *\n * It's like {@link bufferTime}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowTime.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable starts a new window periodically, as\n * determined by the `windowCreationInterval` argument. It emits each window\n * after a fixed timespan, specified by the `windowTimeSpan` argument. When the\n * source Observable completes or encounters an error, the output Observable\n * emits the current window and propagates the notification from the source\n * Observable. If `windowCreationInterval` is not provided, the output\n * Observable starts a new window when the previous window of duration\n * `windowTimeSpan` completes. If `maxWindowCount` is provided, each window\n * will emit at most fixed number of values. Window will complete immediately\n * after emitting last value and next one still will open as specified by\n * `windowTimeSpan` and `windowCreationInterval` arguments.\n *\n * ## Examples\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds start a window 1 second long, and emit at most 2 click events per window\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Same as example above but with maxWindowCount instead of take\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000, 2), // each window has still at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferTime}\n *\n * @param windowTimeSpan The amount of time, in milliseconds, to fill each window.\n * @param windowCreationInterval The interval at which to start new\n * windows.\n * @param maxWindowSize Max number of\n * values each window can emit before completion.\n * @param scheduler The scheduler on which to schedule the\n * intervals that determine window boundaries.\n * @return A function that returns an Observable of windows, which in turn are\n * Observables.\n */\nexport function windowTime(windowTimeSpan: number, ...otherArgs: any[]): OperatorFunction> {\n const scheduler = popScheduler(otherArgs) ?? asyncScheduler;\n const windowCreationInterval = (otherArgs[0] as number) ?? null;\n const maxWindowSize = (otherArgs[1] as number) || Infinity;\n\n return operate((source, subscriber) => {\n // The active windows, their related subscriptions, and removal functions.\n let windowRecords: WindowRecord[] | null = [];\n // If true, it means that every time we close a window, we want to start a new window.\n // This is only really used for when *just* the time span is passed.\n let restartOnClose = false;\n\n const closeWindow = (record: { window: Subject; subs: Subscription }) => {\n const { window, subs } = record;\n window.complete();\n subs.unsubscribe();\n arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n\n /**\n * Called every time we start a new window. This also does\n * the work of scheduling the job to close the window.\n */\n const startWindow = () => {\n if (windowRecords) {\n const subs = new Subscription();\n subscriber.add(subs);\n const window = new Subject();\n const record = {\n window,\n subs,\n seen: 0,\n };\n windowRecords.push(record);\n subscriber.next(window.asObservable());\n executeSchedule(subs, scheduler, () => closeWindow(record), windowTimeSpan);\n }\n };\n\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n // The user passed both a windowTimeSpan (required), and a creation interval\n // That means we need to start new window on the interval, and those windows need\n // to wait the required time span before completing.\n executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);\n } else {\n restartOnClose = true;\n }\n\n startWindow();\n\n /**\n * We need to loop over a copy of the window records several times in this operator.\n * This is to save bytes over the wire more than anything.\n * The reason we copy the array is that reentrant code could mutate the array while\n * we are iterating over it.\n */\n const loop = (cb: (record: WindowRecord) => void) => windowRecords!.slice().forEach(cb);\n\n /**\n * Used to notify all of the windows and the subscriber in the same way\n * in the error and complete handlers.\n */\n const terminate = (cb: (consumer: Observer) => void) => {\n loop(({ window }) => cb(window));\n cb(subscriber);\n subscriber.unsubscribe();\n };\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value: T) => {\n // Notify all windows of the value.\n loop((record) => {\n record.window.next(value);\n // If the window is over the max size, we need to close it.\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n },\n // Complete the windows and the downstream subscriber and clean up.\n () => terminate((consumer) => consumer.complete()),\n // Notify the windows and the downstream subscriber of the error and clean up.\n (err) => terminate((consumer) => consumer.error(err))\n )\n );\n\n // Additional teardown. This will be called when the\n // destination tears down. Other teardowns are registered implicitly\n // above via subscription.\n return () => {\n // Ensure that the buffer is released.\n windowRecords = null!;\n };\n });\n}\n\ninterface WindowRecord {\n seen: number;\n window: Subject;\n subs: Subscription;\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowToggle.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * ## Example\n * Every other second, emit the click events from the next 500ms\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { windowToggle, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const result = clicks.pipe(\n * windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n * mergeAll()\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits a next notification, signals that the\n * associated window should complete.\n * @return A function that returns an Observable of windows, which in turn are\n * Observables.\n */\nexport function windowToggle(\n openings: ObservableInput,\n closingSelector: (openValue: O) => ObservableInput\n): OperatorFunction> {\n return operate((source, subscriber) => {\n const windows: Subject[] = [];\n\n const handleError = (err: any) => {\n while (0 < windows.length) {\n windows.shift()!.error(err);\n }\n subscriber.error(err);\n };\n\n innerFrom(openings).subscribe(\n new OperatorSubscriber(\n subscriber,\n (openValue) => {\n const window = new Subject();\n windows.push(window);\n const closingSubscription = new Subscription();\n const closeWindow = () => {\n arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n\n let closingNotifier: Observable;\n try {\n closingNotifier = innerFrom(closingSelector(openValue));\n } catch (err) {\n handleError(err);\n return;\n }\n\n subscriber.next(window.asObservable());\n\n closingSubscription.add(closingNotifier.subscribe(new OperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n },\n noop\n )\n );\n\n // Subcribe to the source to get things started.\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value: T) => {\n // Copy the windows array before we emit to\n // make sure we don't have issues with reentrant code.\n const windowsCopy = windows.slice();\n for (const window of windowsCopy) {\n window.next(value);\n }\n },\n () => {\n // Complete all of our windows before we complete.\n while (0 < windows.length) {\n windows.shift()!.complete();\n }\n subscriber.complete();\n },\n handleError,\n () => {\n // Add this teardown so that all window subjects are\n // disposed of. This way, if a user tries to subscribe\n // to a window *after* the outer subscription has been unsubscribed,\n // they will get an error, instead of waiting forever to\n // see if a value arrives.\n while (0 < windows.length) {\n windows.shift()!.unsubscribe();\n }\n }\n )\n );\n });\n}\n","import { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowWhen.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * ## Example\n * Emit only the first two clicks events in every window of [1-5] random seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { windowWhen, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowWhen(() => interval(1000 + Math.random() * 4000)),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return A function that returns an Observable of windows, which in turn are\n * Observables.\n */\nexport function windowWhen(closingSelector: () => ObservableInput): OperatorFunction> {\n return operate((source, subscriber) => {\n let window: Subject | null;\n let closingSubscriber: Subscriber | undefined;\n\n /**\n * When we get an error, we have to notify both the\n * destiation subscriber and the window.\n */\n const handleError = (err: any) => {\n window!.error(err);\n subscriber.error(err);\n };\n\n /**\n * Called every time we need to open a window.\n * Recursive, as it will start the closing notifier, which\n * inevitably *should* call openWindow -- but may not if\n * it is a \"never\" observable.\n */\n const openWindow = () => {\n // We need to clean up our closing subscription,\n // we only cared about the first next or complete notification.\n closingSubscriber?.unsubscribe();\n\n // Close our window before starting a new one.\n window?.complete();\n\n // Start the new window.\n window = new Subject();\n subscriber.next(window.asObservable());\n\n // Get our closing notifier.\n let closingNotifier: Observable;\n try {\n closingNotifier = innerFrom(closingSelector());\n } catch (err) {\n handleError(err);\n return;\n }\n\n // Subscribe to the closing notifier, be sure\n // to capture the subscriber (aka Subscription)\n // so we can clean it up when we close the window\n // and open a new one.\n closingNotifier.subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n\n // Start the first window.\n openWindow();\n\n // Subscribe to the source\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => window!.next(value),\n () => {\n // The source completed, close the window and complete.\n window!.complete();\n subscriber.complete();\n },\n handleError,\n () => {\n // Be sure to clean up our closing subscription\n // when this tears down.\n closingSubscriber?.unsubscribe();\n window = null!;\n }\n )\n );\n });\n}\n","import { OperatorFunction, ObservableInput } from '../types';\nimport { zip } from '../observable/zip';\nimport { joinAllInternals } from './joinAllInternals';\n\n/**\n * Collects all observable inner sources from the source, once the source completes,\n * it will subscribe to all inner sources, combining their values by index and emitting\n * them.\n *\n * @see {@link zipWith}\n * @see {@link zip}\n */\nexport function zipAll(): OperatorFunction, T[]>;\nexport function zipAll(): OperatorFunction;\nexport function zipAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function zipAll(project: (...values: Array) => R): OperatorFunction;\n\nexport function zipAll(project?: (...values: T[]) => R) {\n return joinAllInternals(zip, project);\n}\n","import { ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { zip } from './zip';\n\n/**\n * Subscribes to the source, and the observable inputs provided as arguments, and combines their values, by index, into arrays.\n *\n * What is meant by \"combine by index\": The first value from each will be made into a single array, then emitted,\n * then the second value from each will be combined into a single array and emitted, then the third value\n * from each will be combined into a single array and emitted, and so on.\n *\n * This will continue until it is no longer able to combine values of the same index into an array.\n *\n * After the last value from any one completed source is emitted in an array, the resulting observable will complete,\n * as there is no way to continue \"zipping\" values together by index.\n *\n * Use-cases for this operator are limited. There are memory concerns if one of the streams is emitting\n * values at a much faster rate than the others. Usage should likely be limited to streams that emit\n * at a similar pace, or finite streams of known length.\n *\n * In many cases, authors want `combineLatestWith` and not `zipWith`.\n *\n * @param otherInputs other observable inputs to collate values from.\n * @return A function that returns an Observable that emits items by index\n * combined from the source Observable and provided Observables, in form of an\n * array.\n */\nexport function zipWith(...otherInputs: [...ObservableInputTuple]): OperatorFunction> {\n return zip(...otherInputs);\n}\n","import { zip as zipStatic } from '../observable/zip';\nimport { ObservableInput, ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { operate } from '../util/lift';\n\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip(otherInputs: [...ObservableInputTuple]): OperatorFunction>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip(\n otherInputsAndProject: [...ObservableInputTuple],\n project: (...values: Cons) => R\n): OperatorFunction;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip(...otherInputs: [...ObservableInputTuple]): OperatorFunction>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip(\n ...otherInputsAndProject: [...ObservableInputTuple, (...values: Cons) => R]\n): OperatorFunction;\n\n/**\n * @deprecated Replaced with {@link zipWith}. Will be removed in v8.\n */\nexport function zip(...sources: Array | ((...values: Array) => R)>): OperatorFunction {\n return operate((source, subscriber) => {\n // Casting here as zipStatic accepts the result selector as well.\n zipStatic(source, ...(sources as any[])).subscribe(subscriber);\n });\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n\n getValue(): T {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n\n next(value: T): void {\n super.next((this._value = value));\n }\n}\n","/**\n * @prettier\n */\nimport { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\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';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: Partial>): Subscription;\n subscribe(next: (value: T) => void): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * ### Example:\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ', value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total:', total)\n * )\n *\n * // Expected:\n * // \"observable -> 0\"\n * // \"observable -> 1\"\n * // \"observable -> 2\"\n * // \"observable -> 3\"\n * // \"Total: 6\"\n * ```\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe(\n (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription?.unsubscribe();\n }\n },\n reject,\n resolve\n );\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple fo exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will say buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\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\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n const copy = this.observers.slice();\n for (const observer of copy) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\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\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\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n return hasError || isStopped\n ? EMPTY_SUBSCRIPTION\n : (observers.push(subscriber), new Subscription(() => arrRemove(observers, subscriber)));\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n","import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\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';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let next: ((value: T) => void) | undefined;\n if (isFunction(observerOrNext)) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n next = observerOrNext;\n } else if (observerOrNext) {\n // The first argument is an observer object, we have to pull the handlers\n // off and capture the owner object as the context. That is because we're\n // going to put them all in a new destination with ensured methods\n // for `next`, `error`, and `complete`. That's part of what makes this\n // the \"Safe\" Subscriber.\n ({ next, error, complete } = observerOrNext);\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n } else {\n context = observerOrNext;\n }\n next = next?.bind(context);\n error = error?.bind(context);\n complete = complete?.bind(context);\n }\n\n // Once we set the destination, the superclass `Subscriber` will\n // do it's magic in the `_next`, `_error`, and `_complete` methods.\n this.destination = {\n next: next ? wrapForErrorHandling(next, this) : noop,\n error: wrapForErrorHandling(error ?? defaultErrorHandler, this),\n complete: complete ? wrapForErrorHandling(complete, this) : noop,\n };\n }\n}\n\n/**\n * Wraps a user-provided handler (or our {@link defaultErrorHandler} in one case) to\n * ensure that any thrown errors are caught and handled appropriately.\n *\n * @param handler The handler to wrap\n * @param instance The SafeSubscriber instance we're going to mark if there's an error.\n */\nfunction wrapForErrorHandling(handler: (arg?: any) => void, instance: SafeSubscriber) {\n return (...args: any[]) => {\n try {\n handler(...args);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(err);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(err);\n }\n }\n };\n}\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered teardowns to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _teardowns: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the teardown\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\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 } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown } = this;\n if (isFunction(initialTeardown)) {\n try {\n initialTeardown();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _teardowns } = this;\n if (_teardowns) {\n this._teardowns = null;\n for (const teardown of _teardowns) {\n try {\n execTeardown(teardown);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a teardown to this subscription, so that teardown will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever teardown is passed to it\n * will automatically be executed (unless the teardown itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as teardowns to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The teardown logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the teardown if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever teardown is handed to it automatically.\n execTeardown(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._teardowns = this._teardowns ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a teardown from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same teardown instance of a function or an unsubscribable object to a `Subcription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All teardown instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The teardown to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _teardowns } = this;\n _teardowns && arrRemove(_teardowns, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execTeardown(teardown: Unsubscribable | (() => void)) {\n if (isFunction(teardown)) {\n teardown();\n } else {\n teardown.unsubscribe();\n }\n}\n","import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\n\n/**\n * @class ConnectableObservable\n * @deprecated Will be removed in v8. Use {@link connectable} to create a connectable observable.\n * If you are using the `refCount` method of `ConnectableObservable`, use the {@link share} operator\n * instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport class ConnectableObservable extends Observable {\n protected _subject: Subject | null = null;\n protected _refCount: number = 0;\n protected _connection: Subscription | null = null;\n\n /**\n * @param source The source observable\n * @param subjectFactory The factory that creates the subject used internally.\n * @deprecated Will be removed in v8. Use {@link connectable} to create a connectable observable.\n * `new ConnectableObservable(source, factory)` is equivalent to\n * `connectable(source, { connector: factory })`.\n * When the `refCount()` method is needed, the {@link share} operator should be used instead:\n * `new ConnectableObservable(source, factory).refCount()` is equivalent to\n * `source.pipe(share({ connector: factory }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\n constructor(public source: Observable, protected subjectFactory: () => Subject) {\n super();\n // If we have lift, monkey patch that here. This is done so custom observable\n // types will compose through multicast. Otherwise the resulting observable would\n // simply be an instance of `ConnectableObservable`.\n if (hasLift(source)) {\n this.lift = source.lift;\n }\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject!;\n }\n\n protected _teardown() {\n this._refCount = 0;\n const { _connection } = this;\n this._subject = this._connection = null;\n _connection?.unsubscribe();\n }\n\n /**\n * @deprecated {@link ConnectableObservable} will be removed in v8. Use {@link connectable} instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n const subject = this.getSubject();\n connection.add(\n this.source.subscribe(\n new OperatorSubscriber(\n subject as any,\n undefined,\n () => {\n this._teardown();\n subject.complete();\n },\n (err) => {\n this._teardown();\n subject.error(err);\n },\n () => this._teardown()\n )\n )\n );\n\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n /**\n * @deprecated {@link ConnectableObservable} will be removed in v8. Use the {@link share} operator instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf, ObservableInputTuple } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { Subscriber } from '../Subscriber';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { Subscription } from '../Subscription';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { AnyCatcher } from '../AnyCatcher';\nimport { executeSchedule } from '../util/executeSchedule';\n\n// combineLatest(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function combineLatest(arg: T): Observable;\n\n// combineLatest([a, b, c])\nexport function combineLatest(sources: []): Observable;\nexport function combineLatest(sources: readonly [...ObservableInputTuple]): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n sources: readonly [...ObservableInputTuple],\n resultSelector: (...values: A) => R,\n scheduler: SchedulerLike\n): Observable;\nexport function combineLatest(\n sources: readonly [...ObservableInputTuple],\n resultSelector: (...values: A) => R\n): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n sources: readonly [...ObservableInputTuple],\n scheduler: SchedulerLike\n): Observable;\n\n// combineLatest(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest(...sources: [...ObservableInputTuple]): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n ...sourcesAndResultSelectorAndScheduler: [...ObservableInputTuple, (...values: A) => R, SchedulerLike]\n): Observable;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest(\n ...sourcesAndResultSelector: [...ObservableInputTuple, (...values: A) => R]\n): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n ...sourcesAndScheduler: [...ObservableInputTuple, SchedulerLike]\n): Observable;\n\n// combineLatest({a, b, c})\nexport function combineLatest(sourcesObject: { [K in any]: never }): Observable;\nexport function combineLatest>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed in the\n * observables array. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to this operator,\n * the returned Observable will always emit an array of `n` values, in an order\n * corresponding to the order of the passed Observables (the value from the first Observable\n * will be at index 0 of the array and so on).\n *\n * Static version of `combineLatest` accepts an array of Observables. Note that an array of\n * Observables is a good choice, if you don't know beforehand how many Observables\n * you will combine. Passing an empty array will result in an Observable that\n * completes immediately.\n *\n * To ensure the output array always has the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will now be impossible to include a value from the\n * completed Observable in the resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, the resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, the result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of a completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * ## Examples\n * ### Combine two timer Observables\n * ```ts\n * import { combineLatest, timer } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest([firstTimer, secondTimer]);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n * ### Combine a dictionary of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, startWith } from 'rxjs/operators';\n *\n * const observables = {\n * a: of(1).pipe(delay(1000), startWith(0)),\n * b: of(5).pipe(delay(5000), startWith(0)),\n * c: of(10).pipe(delay(10000), startWith(0))\n * };\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // {a: 0, b: 0, c: 0} immediately\n * // {a: 1, b: 0, c: 0} after 1s\n * // {a: 1, b: 5, c: 0} after 5s\n * // {a: 1, b: 5, c: 10} after 10s\n * ```\n * ### Combine an array of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, startWith } from 'rxjs/operators';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0),\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n *\n * ### Use map operator to dynamically calculate the Body-Mass Index\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest([weight, height]).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} [observables] An array of input Observables to combine with each other.\n * An array of Observables must be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(...args: any[]): Observable | Observable[]> {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n\n const { args: observables, keys } = argsArgArrayOrObject(args);\n\n if (observables.length === 0) {\n // If no observables are passed, or someone has passed an ampty array\n // of observables, or even an empty object POJO, we need to just\n // complete (EMPTY), but we have to honor the scheduler provided if any.\n return from([], scheduler as any);\n }\n\n const result = new Observable[]>(\n combineLatestInit(\n observables as ObservableInput>[],\n scheduler,\n keys\n ? // A handler for scrubbing the array of args into a dictionary.\n (values) => createObject(keys, values)\n : // A passthrough to just return the array\n identity\n )\n );\n\n return resultSelector ? (result.pipe(mapOneOrManyArgs(resultSelector)) as Observable) : result;\n}\n\nexport function combineLatestInit(\n observables: ObservableInput[],\n scheduler?: SchedulerLike,\n valueTransform: (values: any[]) => any = identity\n) {\n return (subscriber: Subscriber) => {\n // The outer subscription. We're capturing this in a function\n // because we may have to schedule it.\n maybeSchedule(\n scheduler,\n () => {\n const { length } = observables;\n // A store for the values each observable has emitted so far. We match observable to value on index.\n const values = new Array(length);\n // The number of currently active subscriptions, as they complete, we decrement this number to see if\n // we are all done combining values, so we can complete the result.\n let active = length;\n // The number of inner sources that still haven't emitted the first value\n // We need to track this because all sources need to emit one value in order\n // to start emitting values.\n let remainingFirstValues = length;\n // The loop to kick off subscription. We're keying everything on index `i` to relate the observables passed\n // in to the slot in the output array or the key in the array of keys in the output dictionary.\n for (let i = 0; i < length; i++) {\n maybeSchedule(\n scheduler,\n () => {\n const source = from(observables[i], scheduler as any);\n let hasFirstValue = false;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n // When we get a value, record it in our set of values.\n values[i] = value;\n if (!hasFirstValue) {\n // If this is our first value, record that.\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n // We're not waiting for any more\n // first values, so we can emit!\n subscriber.next(valueTransform(values.slice()));\n }\n },\n () => {\n if (!--active) {\n // We only complete the result if we have no more active\n // inner observables.\n subscriber.complete();\n }\n }\n )\n );\n },\n subscriber\n );\n }\n },\n subscriber\n );\n };\n}\n\n/**\n * A small utility to handle the couple of locations where we want to schedule if a scheduler was provided,\n * but we don't if there was no scheduler.\n */\nfunction maybeSchedule(scheduler: SchedulerLike | undefined, execute: () => void, subscription: Subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n } else {\n execute();\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple, SchedulerLike } from '../types';\nimport { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function concat(...inputs: [...ObservableInputTuple]): Observable;\nexport function concat(\n ...inputsAndScheduler: [...ObservableInputTuple, SchedulerLike]\n): Observable;\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param input1 An input Observable to concatenate with others.\n * @param input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param scheduler An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n */\nexport function concat(...args: any[]): Observable {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInput } from '../types';\nimport { innerFrom } from './innerFrom';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create an Observable only when the Observer\n * subscribes. It waits until an Observer subscribes to it, calls the given\n * factory function to get an Observable -- where a factory function typically\n * generates a new Observable -- and subscribes the Observer to this Observable.\n * In case the factory function returns a falsy value, then EMPTY is used as\n * Observable instead. Last but not least, an exception during the factory\n * function call is transferred to the Observer by calling `error`.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): ObservableInput} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n */\nexport function defer>(observableFactory: () => R): Observable> {\n return new Observable>((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferable to use this over `empty()`.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * ## Examples\n *\n * ### Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * ### Emit the number 7, then complete\n *\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n *\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInputTuple, ObservableInput } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nimport { AnyCatcher } from '../AnyCatcher';\n\n// forkJoin(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function forkJoin(arg: T): Observable;\n\n// forkJoin(null | undefined)\nexport function forkJoin(scheduler: null | undefined): Observable;\n\n// forkJoin([a, b, c])\nexport function forkJoin(sources: readonly []): Observable;\nexport function forkJoin(sources: readonly [...ObservableInputTuple]): Observable;\nexport function forkJoin(\n sources: readonly [...ObservableInputTuple],\n resultSelector: (...values: A) => R\n): Observable;\n\n// forkJoin(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin(...sources: [...ObservableInputTuple]): Observable;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin(\n ...sourcesAndResultSelector: [...ObservableInputTuple, (...values: A) => R]\n): Observable;\n\n// forkJoin({a, b, c})\nexport function forkJoin(sourcesObject: { [K in any]: never }): Observable;\nexport function forkJoin>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted;\n * complete immediately if an empty array is passed.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided (e.g. an empty array is passed),\n * then the resulting stream will complete immediately.\n *\n * `forkJoin` will wait for all passed observables to emit and complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, then the resulting\n * array will have `n` values, where the first value is the last one emitted by the first observable,\n * second value is the last one emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, then the resulting\n * objects will have the same keys as the dictionary passed, with their last values they have emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of the lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for the resulting array to have the same length as the number of input observables, whenever any of\n * the given observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete either,\n * unless at any point some other observable completes without emitting a value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all given observables\n * have to emit something at least once and complete.\n *\n * If any given observable errors at some point, `forkJoin` will error as well and immediately unsubscribe\n * from the other observables.\n *\n * Optionally `forkJoin` accepts a `resultSelector` function, that will be called with values which normally\n * would land in the emitted array. Whatever is returned by the `resultSelector`, will appear in the output\n * observable instead. This means that the default `resultSelector` can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that the `resultSelector` will be called only\n * when `forkJoin` is supposed to emit a result.\n *\n * ## Examples\n *\n * ### Use forkJoin with a dictionary of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000),\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * ### Use forkJoin with an array of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000),\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} args Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(...args: any[]): Observable {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n },\n () => remainingCompletions--,\n undefined,\n () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }\n )\n );\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from>(input: O): Observable>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from>(input: O, scheduler: SchedulerLike | undefined): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\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';\n\n// These constants are used to create handler registry functions using array mapping below.\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'] as const;\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'] as const;\nconst jqueryMethods = ['on', 'off'] as const;\n\nexport interface NodeStyleEventEmitter {\n addListener(eventName: string | symbol, handler: NodeEventHandler): this;\n removeListener(eventName: string | symbol, handler: NodeEventHandler): this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener(eventName: string, handler: NodeEventHandler): void | {};\n removeListener(eventName: string, handler: NodeEventHandler): void | {};\n}\n\n// Use handler types like those in @types/jquery. See:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/847731ba1d7fa6db6b911c0e43aa0afe596e7723/types/jquery/misc.d.ts#L6395\nexport interface JQueryStyleEventEmitter {\n on(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n off(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n}\n\nexport interface EventListenerObject {\n handleEvent(evt: E): void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | EventListenerObject | null,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: ((evt: E) => void) | EventListenerObject | null,\n options?: EventListenerOptions | boolean\n ): void;\n}\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\nexport function fromEvent(target: HasEventTargetAddRemove | ArrayLike>, eventName: string): Observable;\nexport function fromEvent(\n target: HasEventTargetAddRemove | ArrayLike>,\n eventName: string,\n resultSelector: (event: T) => R\n): Observable;\nexport function fromEvent(\n target: HasEventTargetAddRemove | ArrayLike>,\n eventName: string,\n options: EventListenerOptions\n): Observable;\nexport function fromEvent(\n target: HasEventTargetAddRemove | ArrayLike>,\n eventName: string,\n options: EventListenerOptions,\n resultSelector: (event: T) => R\n): Observable;\n\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike, eventName: string): Observable;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike, eventName: string): Observable;\nexport function fromEvent(\n target: NodeStyleEventEmitter | ArrayLike,\n eventName: string,\n resultSelector: (...args: any[]) => R\n): Observable;\n\nexport function fromEvent(\n target: NodeCompatibleEventEmitter | ArrayLike,\n eventName: string\n): Observable;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent(target: NodeCompatibleEventEmitter | ArrayLike, eventName: string): Observable;\nexport function fromEvent(\n target: NodeCompatibleEventEmitter | ArrayLike,\n eventName: string,\n resultSelector: (...args: any[]) => R\n): Observable;\n\nexport function fromEvent(\n target: JQueryStyleEventEmitter | ArrayLike>,\n eventName: string\n): Observable;\nexport function fromEvent(\n target: JQueryStyleEventEmitter | ArrayLike>,\n eventName: string,\n resultSelector: (value: T, ...args: any[]) => R\n): Observable;\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n */\nexport function fromEvent(\n target: any,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: (...args: any[]) => T\n): Observable {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options as EventListenerOptions).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n // Figure out our add and remove methods. In order to do this,\n // we are going to analyze the target in a preferred order, if\n // the target matches a given signature, we take the two \"add\" and \"remove\"\n // method names and apply them to a map to create opposite versions of the\n // same function. This is because they all operate in duplicate pairs,\n // `addListener(name, handler)`, `removeListener(name, handler)`, for example.\n // The call only differs by method name, as to whether or not you're adding or removing.\n const [add, remove] =\n // If it is an EventTarget, we need to use a slightly different method than the other two patterns.\n isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler: any) => target[methodName](eventName, handler, options as EventListenerOptions))\n : // In all other cases, the call pattern is identical with the exception of the method names.\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n\n // If add is falsy, it's because we didn't match a pattern above.\n // Check to see if it is an ArrayLike, because if it is, we want to\n // try to apply fromEvent to all of it's items. We do this check last,\n // because there are may be some types that are both ArrayLike *and* implement\n // event registry points, and we'd rather delegate to that when possible.\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget: any) => fromEvent(subTarget, eventName, options as EventListenerOptions))(\n innerFrom(target)\n ) as Observable;\n }\n }\n\n // If add is falsy and we made it here, it's because we didn't\n // match any valid target objects above.\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n\n return new Observable((subscriber) => {\n // The handler we are going to register. Forwards the event object, by itself, or\n // an array of arguments to the event handler, if there is more than one argument,\n // to the consumer.\n const handler = (...args: any[]) => subscriber.next(1 < args.length ? args : args[0]);\n // Do the work of adding the handler to the target.\n add(handler);\n // When we teardown, we want to remove the handler and free up memory.\n return () => remove!(handler);\n });\n}\n\n/**\n * Used to create `add` and `remove` functions to register and unregister event handlers\n * from a target in the most common handler pattern, where there are only two arguments.\n * (e.g. `on(name, fn)`, `off(name, fn)`, `addListener(name, fn)`, or `removeListener(name, fn)`)\n * @param target The target we're calling methods on\n * @param eventName The event name for the event we're creating register or unregister functions for\n */\nfunction toCommonHandlerRegistry(target: any, eventName: string) {\n return (methodName: string) => (handler: any) => target[methodName](eventName, handler);\n}\n\n/**\n * Checks to see if the target implements the required node-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isNodeStyleEventEmitter(target: any): target is NodeStyleEventEmitter {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\n/**\n * Checks to see if the target implements the required jQuery-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isJQueryStyleEventEmitter(target: any): target is JQueryStyleEventEmitter {\n return isFunction(target.on) && isFunction(target.off);\n}\n\n/**\n * Checks to see if the target implements the required EventTarget methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isEventTarget(target: any): target is HasEventTargetAddRemove {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { ObservableInput } from '../types';\n\n/**\n * Checks a boolean at subscription time, and chooses between one of two observable sources\n *\n * `iif` excepts a function that returns a boolean (the `condition` function), and two sources,\n * the `trueResult` and the `falseResult`, and returns an Observable.\n *\n * At the moment of subscription, the `condition` function is called. If the result is `true`, the\n * subscription will be to the source passed as the `trueResult`, otherwise, the subscription will be\n * to the source passed as the `falseResult`.\n *\n * If you need to check more than two options to choose between more than one observable, have a look at the {@link defer} creation method.\n *\n * ## Examples\n *\n * ### Change at runtime which Observable will be subscribed\n *\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n *\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param condition Condition which Observable should be chosen.\n * @param trueResult An Observable that will be subscribed if condition is true.\n * @param falseResult An Observable that will be subscribed if condition is false.\n * @return An observable that proxies to `trueResult` or `falseResult`, depending on the result of the `condition` function.\n */\nexport function iif(condition: () => boolean, trueResult: ObservableInput, falseResult: ObservableInput): Observable {\n return defer(() => (condition() ? trueResult : falseResult));\n}\n","import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ReadableStreamLike } from '../types';\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 { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom(input: ObservableInput): Observable {\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\n throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable(obj: any) {\n return new Observable((subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike(array: ArrayLike) {\n return new Observable((subscriber: Subscriber) => {\n // Loop over the array and emit each value. Note two things here:\n // 1. We're making sure that the subscriber is not closed on each loop.\n // This is so we don't continue looping over a very large array after\n // something like a `take`, `takeWhile`, or other synchronous unsubscription\n // has already unsubscribed.\n // 2. In this form, reentrant code can alter that array we're looping over.\n // This is a known issue, but considered an edge case. The alternative would\n // be to copy the array before executing the loop, but this has\n // performance implications.\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\n\nexport function fromPromise(promise: PromiseLike) {\n return new Observable((subscriber: Subscriber) => {\n promise\n .then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, reportUnhandledError);\n });\n}\n\nexport function fromIterable(iterable: Iterable) {\n return new Observable((subscriber: Subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\n\nexport function fromAsyncIterable(asyncIterable: AsyncIterable) {\n return new Observable((subscriber: Subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\n\nexport function fromReadableStreamLike(readableStream: ReadableStreamLike) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process(asyncIterable: AsyncIterable, subscriber: Subscriber) {\n for await (const value of asyncIterable) {\n subscriber.next(value);\n // A side-effect may have closed our subscriber,\n // check before the next iteration.\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n}\n","import { Observable } from '../Observable';\nimport { asyncScheduler } from '../scheduler/async';\nimport { SchedulerLike } from '../types';\nimport { timer } from './timer';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n */\nexport function interval(period = 0, scheduler: SchedulerLike = asyncScheduler): Observable {\n if (period < 0) {\n // We cannot schedule an interval in the past.\n period = 0;\n }\n\n return timer(period, period, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservableInputTuple, SchedulerLike } from '../types';\nimport { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function merge(...sources: [...ObservableInputTuple]): Observable;\nexport function merge(...sourcesAndConcurrency: [...ObservableInputTuple, number?]): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge(\n ...sourcesAndScheduler: [...ObservableInputTuple, SchedulerLike?]\n): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge(\n ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple, number?, SchedulerLike?]\n): Observable;\n\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n */\nexport function merge(...args: (ObservableInput | number | SchedulerLike)[]): Observable {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args as ObservableInput[];\n return !sources.length\n ? // No source provided\n EMPTY\n : sources.length === 1\n ? // One source? Just return it.\n innerFrom(sources[0])\n : // Merge all sources\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n * ### Emit the number 7, then never emit anything else (not even complete)\n * ```ts\n * import { NEVER } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * function info() {\n * console.log('Will not be called');\n * }\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe(x => console.log(x), info, info);\n *\n * ```\n *\n * @see {@link Observable}\n * @see {@link index/EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable(noop);\n\n/**\n * @deprecated Replaced with the {@link NEVER} constant. Will be removed in v8.\n */\nexport function never() {\n return NEVER;\n}\n","import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable;\nexport function of(value: undefined): Observable;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(...valuesAndScheduler: [...A, SchedulerLike]): Observable>;\n\nexport function of(): Observable;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of(): Observable;\nexport function of(value: T): Observable;\nexport function of(...values: A): Observable>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n */\nexport function of(...args: Array): Observable {\n const scheduler = popScheduler(args);\n return from(args as T[], scheduler);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, ObservableInputTuple } from '../types';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { Subscriber } from '../Subscriber';\n\nexport function race(inputs: [...ObservableInputTuple]): Observable;\nexport function race(...inputs: [...ObservableInputTuple]): Observable;\n\n/**\n * Returns an observable that mirrors the first source observable to emit an item.\n *\n * ![](race.png)\n *\n * `race` returns an observable, that when subscribed to, subscribes to all source observables immediately.\n * As soon as one of the source observables emits a value, the result unsubscribes from the other sources.\n * The resulting observable will forward all notifications, including error and completion, from the \"winning\"\n * source observable.\n *\n * If one of the used source observable throws an errors before a first notification\n * the race operator will also throw an error, no matter if another source observable\n * could potentially win the race.\n *\n * `race` can be useful for selecting the response from the fastest network connection for\n * HTTP or WebSockets. `race` can also be useful for switching observable context based on user\n * input.\n *\n * ## Example\n * ### Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { race, interval } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * race(obs3, obs1, obs2)\n * .subscribe(\n * winner => console.log(winner)\n * );\n *\n * // Outputs\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n */\nexport function race(...sources: (ObservableInput | ObservableInput[])[]): Observable {\n sources = argsOrArgArray(sources);\n // If only one source was passed, just return it. Otherwise return the race.\n return sources.length === 1 ? innerFrom(sources[0] as ObservableInput) : new Observable(raceInit(sources as ObservableInput[]));\n}\n\n/**\n * An observable initializer function for both the static version and the\n * operator version of race.\n * @param sources The sources to race\n */\nexport function raceInit(sources: ObservableInput[]) {\n return (subscriber: Subscriber) => {\n let subscriptions: Subscription[] = [];\n\n // Subscribe to all of the sources. Note that we are checking `subscriptions` here\n // Is is an array of all actively \"racing\" subscriptions, and it is `null` after the\n // race has been won. So, if we have racer that synchronously \"wins\", this loop will\n // stop before it subscribes to any more.\n for (let i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n subscriptions.push(\n innerFrom(sources[i] as ObservableInput).subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n if (subscriptions) {\n // We're still racing, but we won! So unsubscribe\n // all other subscriptions that we have, except this one.\n for (let s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null!;\n }\n subscriber.next(value);\n })\n )\n );\n }\n };\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerLike } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates an observable that will create an error instance and push it to the consumer as an error\n * immediately upon subscription.\n *\n * Just errors and does nothing else\n *\n * ![](throw.png)\n *\n * This creation function is useful for creating an observable that will create an error and error every\n * time it is subscribed to. Generally, inside of most operators when you might want to return an errored\n * observable, this is unnecessary. In most cases, such as in the inner return of {@link concatMap},\n * {@link mergeMap}, {@link defer}, and many others, you can simply throw the error, and RxJS will pick\n * that up and notify the consumer of the error.\n *\n * ## Example\n *\n * Create a simple observable that will create a new error with a timestamp and log it\n * and the message every time you subscribe to it.\n *\n * ```ts\n * import { throwError } from 'rxjs';\n *\n * let errorCount = 0;\n *\n * const errorWithTimestamp$ = throwError(() => {\n * const error: any = new Error(`This is error number ${++errorCount}`);\n * error.timestamp = Date.now();\n * return error;\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * // Logs the timestamp and a new error message each subscription;\n * ```\n *\n * ## Unnecessary usage\n *\n * Using `throwError` inside of an operator or creation function\n * with a callback, is usually not necessary:\n *\n * ```ts\n * import { throwError, timer, of } from 'rxjs';\n * import { concatMap } from 'rxjs/operators';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // This is probably overkill.\n * return throwError(() => new Error(`Invalid time ${ms}`));\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * You can just throw the error instead:\n *\n * ```ts\n * import { throwError, timer, of } from 'rxjs';\n * import { concatMap } from 'rxjs/operators';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // Cleaner and easier to read for most folks.\n * throw new Error(`Invalid time ${ms}`);\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * @param errorFactory A factory function that will create the error instance that is pushed.\n */\nexport function throwError(errorFactory: () => any): Observable;\n\n/**\n * Returns an observable that will error with the specified error immediately upon subscription.\n *\n * @param error The error instance to emit\n * @deprecated Support for passing an error value will be removed in v8. Instead, pass a factory function to `throwError(() => new Error('test'))`. This is\n * because it will create the error at the moment it should be created and capture a more appropriate stack trace. If\n * for some reason you need to create the error ahead of time, you can still do that: `const err = new Error('test'); throwError(() => err);`.\n */\nexport function throwError(error: any): Observable;\n\n/**\n * Notifies the consumer of an error using a given scheduler by scheduling it at delay `0` upon subscription.\n *\n * @param errorOrErrorFactory An error instance or error factory\n * @param scheduler A scheduler to use to schedule the error notification\n * @deprecated The `scheduler` parameter will be removed in v8.\n * Use `throwError` in combination with {@link observeOn}: `throwError(() => new Error('test')).pipe(observeOn(scheduler));`.\n * Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function throwError(errorOrErrorFactory: any, scheduler: SchedulerLike): Observable;\n\nexport function throwError(errorOrErrorFactory: any, scheduler?: SchedulerLike): Observable {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber: Subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init as any, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\n\n/**\n * Creates an observable that will wait for a specified time period, or exact date, before\n * emitting the number 0.\n *\n * Used to emit a notification after a delay.\n *\n * This observable is useful for creating delays in code, or racing against other values\n * for ad-hoc timeouts.\n *\n * The `delay` is specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Examples\n *\n * ### Wait 3 seconds and start another observable\n *\n * You might want to use `timer` to delay subscription to an\n * observable by a set amount of time. Here we use a timer with\n * {@link concatMapTo} or {@link concatMap} in order to wait\n * a few seconds and start a subscription to a source.\n *\n * ```ts\n * import { timer, of } from 'rxjs';\n * import { concatMapTo } from 'rxjs/operators';\n *\n * // This could be any observable\n * const source = of(1, 2, 3);\n *\n * const result = timer(3000).pipe(\n * concatMapTo(source)\n * )\n * .subscribe(console.log);\n * ```\n *\n * ### Take all of the values until the start of the next minute\n *\n * Using a `Date` as the trigger for the first emission, you can\n * do things like wait until midnight to fire an event, or in this case,\n * wait until a new minute starts (chosen so the example wouldn't take\n * too long to run) in order to stop watching a stream. Leveraging\n * {@link takeUntil}.\n *\n * ```ts\n * import { interval, timer } from 'rxjs';\n * import { takeUntil } from 'rxjs/operators';\n *\n * // Build a Date object that marks the\n * // next minute.\n * const currentDate = new Date();\n * const startOfNextMinute = new Date(\n * currentDate.getFullYear(),\n * currentDate.getMonth(),\n * currentDate.getDate(),\n * currentDate.getHours(),\n * currentDate.getMinutes() + 1,\n * )\n *\n * // This could be any observable stream\n * const source = interval(1000);\n *\n * const result = source.pipe(\n * takeUntil(timer(startOfNextMinute))\n * );\n *\n * result.subscribe(console.log);\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `dueTime`.\n *\n * @param due If a `number`, the amount of time in milliseconds to wait before emitting.\n * If a `Date`, the exact time at which to emit.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>;\n\n/**\n * Creates an observable that starts an interval after a specified delay, emitting incrementing numbers -- starting at `0` --\n * on each interval after words.\n *\n * The `delay` and `intervalDuration` are specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Example\n *\n * ### Start an interval that starts right away\n *\n * Since {@link index/interval} waits for the passed delay before starting,\n * sometimes that's not ideal. You may want to start an interval immediately.\n * `timer` works well for this. Here we have both side-by-side so you can\n * see them in comparison.\n *\n * Note that this observable will never complete.\n *\n * ```ts\n * import { timer, interval } from 'rxjs';\n *\n * timer(0, 1000).subscribe(n => console.log('timer', n));\n * interval(1000).subscribe(n => console.log('interval', n));\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `startDue`.\n * @param startDue If a `number`, is the time to wait before starting the interval.\n * If a `Date`, is the exact time at which to start the interval.\n * @param intervalDuration The delay between each value emitted in the interval. Passing a\n * negative number here will result in immediate completion after the first value is emitted, as though\n * no `intervalDuration` was passed at all.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable;\n\n/**\n * @deprecated The signature allowing `undefined` to be passed for `intervalDuration` will be removed in v8. Use the `timer(dueTime, scheduler?)` signature instead.\n */\nexport function timer(dueTime: number | Date, unused: undefined, scheduler?: SchedulerLike): Observable<0>;\n\nexport function timer(\n dueTime: number | Date = 0,\n intervalOrScheduler?: number | SchedulerLike,\n scheduler: SchedulerLike = asyncScheduler\n): Observable {\n // Since negative intervalDuration is treated as though no\n // interval was specified at all, we start with a negative number.\n let intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n // If we have a second argument, and it's a scheduler,\n // override the scheduler we had defaulted. Otherwise,\n // it must be an interval.\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n // Note that this *could* be negative, in which case\n // it's like not passing an intervalDuration at all.\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable((subscriber) => {\n // If a valid date is passed, calculate how long to wait before\n // executing the first value... otherwise, if it's a number just schedule\n // that many milliseconds (or scheduler-specified unit size) in the future.\n let due = isValidDate(dueTime) ? +dueTime - scheduler!.now() : dueTime;\n\n if (due < 0) {\n // Ensure we don't schedule in the future.\n due = 0;\n }\n\n // The incrementing value we emit.\n let n = 0;\n\n // Start the timer.\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n // Emit the next value and increment.\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n // If we have a interval after the initial timer,\n // reschedule with the period.\n this.schedule(undefined, intervalDuration);\n } else {\n // We didn't have an interval. So just complete.\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple } from '../types';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\n\nexport function zip(sources: [...ObservableInputTuple]): Observable;\nexport function zip(\n sources: [...ObservableInputTuple],\n resultSelector: (...values: A) => R\n): Observable;\nexport function zip(...sources: [...ObservableInputTuple]): Observable;\nexport function zip(\n ...sourcesAndResultSelector: [...ObservableInputTuple, (...values: A) => R]\n): Observable;\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n *\n * Combine age and name from different sources\n *\n * ```ts\n * import { zip, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * let age$ = of(27, 25, 29);\n * let name$ = of('Foo', 'Bar', 'Beer');\n * let isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev }))\n * )\n * .subscribe(x => console.log(x));\n *\n * // Outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n * @param sources\n * @return {Observable}\n */\nexport function zip(...args: unknown[]): Observable {\n const resultSelector = popResultSelector(args);\n\n const sources = argsOrArgArray(args) as Observable[];\n\n return sources.length\n ? new Observable((subscriber) => {\n // A collection of buffers of values from each source.\n // Keyed by the same index with which the sources were passed in.\n let buffers: unknown[][] = sources.map(() => []);\n\n // An array of flags of whether or not the sources have completed.\n // This is used to check to see if we should complete the result.\n // Keyed by the same index with which the sources were passed in.\n let completed = sources.map(() => false);\n\n // When everything is done, release the arrays above.\n subscriber.add(() => {\n buffers = completed = null!;\n });\n\n // Loop over our sources and subscribe to each one. The index `i` is\n // especially important here, because we use it in closures below to\n // access the related buffers and completion properties\n for (let sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n innerFrom(sources[sourceIndex]).subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n buffers[sourceIndex].push(value);\n // if every buffer has at least one value in it, then we\n // can shift out the oldest value from each buffer and emit\n // them as an array.\n if (buffers.every((buffer) => buffer.length)) {\n const result: any = buffers.map((buffer) => buffer.shift()!);\n // Emit the array. If theres' a result selector, use that.\n subscriber.next(resultSelector ? resultSelector(...result) : result);\n // If any one of the sources is both complete and has an empty buffer\n // then we complete the result. This is because we cannot possibly have\n // any more values to zip together.\n if (buffers.some((buffer, i) => !buffer.length && completed[i])) {\n subscriber.complete();\n }\n }\n },\n () => {\n // This source completed. Mark it as complete so we can check it later\n // if we have to.\n completed[sourceIndex] = true;\n // But, if this complete source has nothing in its buffer, then we\n // can complete the result, because we can't possibly have any more\n // values from this to zip together with the other values.\n !buffers[sourceIndex].length && subscriber.complete();\n }\n )\n );\n }\n\n // When everything is done, release the arrays above.\n return () => {\n buffers = completed = null!;\n };\n })\n : EMPTY;\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure teardown.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure teardown.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\n\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.png)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { audit } from 'rxjs/operators'\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function audit(durationSelector: (value: T) => ObservableInput): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue: T | null = null;\n let durationSubscriber: Subscriber | null = null;\n let isComplete = false;\n\n const endDuration = () => {\n durationSubscriber?.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe(\n (durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration))\n );\n }\n },\n () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }\n )\n );\n });\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { auditTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { Subscription } from '../Subscription';\nimport { innerFrom } from '../observable/innerFrom';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * \n * It only listens to the error channel and ignores notifications.\n * Handles errors from the source observable, and maps them to a new observable.\n * The error may also be rethrown, or a new error can be thrown to emit an error from the result.\n * \n *\n * ![](catch.png)\n *\n * This operator handles errors, but forwards along all other events to the resulting observable.\n * If the source observable terminates with an error, it will map that error to a new observable,\n * subscribe to it, and forward all of its events to the resulting observable.\n *\n * ## Examples\n * Continues with a different Observable when there's an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V')),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError, take } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throws a new error when the source Observable throws an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * }),\n * )\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @see {@link onErrorResumeNext}\n * @see {@link repeat}\n * @see {@link repeatWhen}\n * @see {@link retry }\n * @see {@link retryWhen}\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return A function that returns an Observable that originates from either\n * the source or the Observable returned by the `selector` function.\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null = null;\n let syncUnsub = false;\n let handledResult: Observable>;\n\n innerSub = source.subscribe(\n new OperatorSubscriber(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 } else {\n // We don't have an innerSub yet, that means the error was synchronous\n // because the subscribe call hasn't returned yet.\n syncUnsub = true;\n }\n })\n );\n\n if (syncUnsub) {\n // We have a synchronous error, we need to make sure to\n // teardown right away. This ensures that `finalize` is called\n // at the right time, and that teardown occurs at the expected\n // time between the source error and the subscription to the\n // next observable.\n innerSub.unsubscribe();\n innerSub = null;\n handledResult!.subscribe(subscriber);\n }\n });\n}\n","import { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.svg)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaustAll}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable emitting values from all the\n * inner Observables concatenated.\n */\nexport function concatAll>(): OperatorFunction> {\n return mergeAll(1);\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMap>(\n project: (value: T, index: number) => O\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * values from each projected inner Observable sequentially.\n */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { OperatorFunction, ObservableInput, ObservedValueOf, SubjectLike } from '../types';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { from } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\n\nexport interface ConnectConfig {\n /**\n * A factory function used to create the Subject through which the source\n * is multicast. By default this creates a {@link Subject}.\n */\n connector: () => SubjectLike;\n}\n\n/**\n * The default configuration for `connect`.\n */\nconst DEFAULT_CONFIG: ConnectConfig = {\n connector: () => new Subject(),\n};\n\n/**\n * Creates an observable by multicasting the source within a function that\n * allows the developer to define the usage of the multicast prior to connection.\n *\n * This is particularly useful if the observable source you wish to multicast could\n * be synchronous or asynchronous. This sets it apart from {@link share}, which, in the\n * case of totally synchronous sources will fail to share a single subscription with\n * multiple consumers, as by the time the subscription to the result of {@link share}\n * has returned, if the source is synchronous its internal reference count will jump from\n * 0 to 1 back to 0 and reset.\n *\n * To use `connect`, you provide a `selector` function that will give you\n * a multicast observable that is not yet connected. You then use that multicast observable\n * to create a resulting observable that, when subscribed, will set up your multicast. This is\n * generally, but not always, accomplished with {@link merge}.\n *\n * Note that using a {@link takeUntil} inside of `connect`'s `selector` _might_ mean you were looking\n * to use the {@link takeWhile} operator instead.\n *\n * When you subscribe to the result of `connect`, the `selector` function will be called. After\n * the `selector` function returns, the observable it returns will be subscribed to, _then_ the\n * multicast will be connected to the source.\n *\n * ### Example\n *\n * Sharing a totally synchronous observable\n *\n * ```ts\n * import { defer, merge, of } from 'rxjs';\n * import { tap, connect, filter, map } from 'rxjs/operators';\n *\n * const source$ = defer(() => {\n * console.log('subscription started');\n * return of(1, 2, 3, 4, 5).pipe(\n * tap(n => console.log(`source emitted ${n}`))\n * );\n * });\n *\n * source$.pipe(\n * // Notice in here we're merging 3 subscriptions to `shared$`.\n * connect((shared$) => merge(\n * shared$.pipe(map(n => `all ${n}`)),\n * shared$.pipe(filter(n => n % 2 === 0), map(n => `even ${n}`)),\n * shared$.pipe(filter(n => n % 2 === 1), map(n => `odd ${n}`)),\n * ))\n * )\n * .subscribe(console.log);\n *\n * // Expected output: (notice only one subscription)\n * \"subscription started\"\n * \"source emitted 1\"\n * \"all 1\"\n * \"odd 1\"\n * \"source emitted 2\"\n * \"all 2\"\n * \"even 2\"\n * \"source emitted 3\"\n * \"all 3\"\n * \"odd 3\"\n * \"source emitted 4\"\n * \"all 4\"\n * \"even 4\"\n * \"source emitted 5\"\n * \"all 5\"\n * \"odd 5\"\n * ```\n *\n * @param selector A function used to set up the multicast. Gives you a multicast observable\n * that is not yet connected. With that, you're expected to create and return\n * and Observable, that when subscribed to, will utilize the multicast observable.\n * After this function is executed -- and its return value subscribed to -- the\n * the operator will subscribe to the source, and the connection will be made.\n * @param config The configuration object for `connect`.\n */\nexport function connect>(\n selector: (shared: Observable) => O,\n config: ConnectConfig = DEFAULT_CONFIG\n): OperatorFunction> {\n const { connector } = config;\n return operate((source, subscriber) => {\n const subject = connector();\n from(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscribable } from '../types';\n\n/**\n * Used to convert a subscribable to an observable.\n *\n * Currently, this is only used within internals.\n *\n * TODO: Discuss ObservableInput supporting \"Subscribable\".\n * https://github.com/ReactiveX/rxjs/issues/5909\n *\n * @param subscribable A subscribable\n */\nexport function fromSubscribable(subscribable: Subscribable) {\n return new Observable((subscriber: Subscriber) => subscribable.subscribe(subscriber));\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * It's like {@link delay}, but passes only the most\n * recent notification from each burst of emissions.\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays notifications emitted by the source Observable, but drops\n * previous pending delayed emissions if a new notification arrives on the source\n * Observable. This operator keeps track of the most recent notification from the\n * source Observable, and emits that only when `dueTime` has passed\n * without any other notification appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous notification will be dropped\n * and will not be emitted and a new `dueTime` is scheduled.\n * If the completing event happens during `dueTime` the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during `dueTime` or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * notification to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { debounceTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified `dueTime`, and may drop some values\n * if they occur too frequently.\n */\nexport function debounceTime(dueTime: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let activeTask: Subscription | null = null;\n let lastValue: T | null = null;\n let lastTime: number | null = null;\n\n const emit = () => {\n if (activeTask) {\n // We have a value! Free up memory first, then emit the value.\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle(this: SchedulerAction) {\n // This is called `dueTime` after the first value\n // but we might have received new values during this window!\n\n const targetTime = lastTime! + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n // On that case, re-schedule to the new target\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n\n emit();\n }\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value: T) => {\n lastValue = value;\n lastTime = scheduler.now();\n\n // Only set up a task if it's not already up\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n },\n () => {\n // Source completed.\n // Emit any pending debounced values then complete\n emit();\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n () => {\n // Teardown.\n lastValue = activeTask = null;\n }\n )\n );\n });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * If the source Observable turns out to be empty, then\n * this operator will emit a default value.\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n * If no clicks happen in 5 seconds, then emit \"no clicks\"\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { defaultIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param defaultValue The default value used if the source\n * Observable is empty.\n * @return A function that returns an Observable that emits either the\n * specified `defaultValue` if the source Observable emits no items, or the\n * values emitted by the source Observable.\n */\nexport function defaultIfEmpty(defaultValue: R): OperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => {\n if (!hasValue) {\n subscriber.next(defaultValue!);\n }\n subscriber.complete();\n }\n )\n );\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.png)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n * Delay each click by one second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delayWhen}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {number|Date} due The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified timeout or Date.\n */\nexport function delay(due: number | Date, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\n\n/** @deprecated The `subscriptionDelay` parameter will be removed in v8. */\nexport function delayWhen(\n delayDurationSelector: (value: T, index: number) => Observable,\n subscriptionDelay: Observable\n): MonoTypeOperatorFunction;\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable): MonoTypeOperatorFunction;\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n * The completion of the notifier triggering the emission of the source value\n * is deprecated behavior and will be removed in future versions.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n * Delay each click by a random amount of time, between 0 and 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { delayWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(event => interval(Math.random() * 5000)),\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {function(value: T, index: number): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by an amount of time specified by the Observable\n * returned by `delayDurationSelector`.\n */\nexport function delayWhen(\n delayDurationSelector: (value: T, index: number) => Observable,\n subscriptionDelay?: Observable\n): MonoTypeOperatorFunction {\n if (subscriptionDelay) {\n // DEPRECATED PATH\n return (source: Observable) =>\n concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n\n return mergeMap((value, index) => delayDurationSelector(value, index).pipe(take(1), mapTo(value)));\n}\n","import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * ## Examples\n *\n * A simple example with numbers\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n * .pipe(\n * distinct()\n * )\n * .subscribe(x => console.log(x));\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * An example using a keySelector function\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'}\n * ).pipe(\n * distinct((p: Person) => p.name)\n * )\n * .subscribe(x => console.log(x));\n *\n * // Outputs\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * ```\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinct(keySelector?: (value: T) => K, flushes?: Observable): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n const distinctKeys = new Set();\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n const key = keySelector ? keySelector(value) : value;\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n })\n );\n\n flushes?.subscribe(new OperatorSubscriber(subscriber, () => distinctKeys.clear(), noop));\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Returns a result {@link Observable} that emits all values pushed by the source observable if they\n * are distinct in comparison to the last value the result observable emitted.\n *\n * 1. It will always emit the first value from the source.\n * 2. For all subsequent values pushed by the source, they will be compared to the previously emitted values\n * using the provided `comparator` or an `===` equality check.\n * 3. If the value pushed by the source is determined to be unequal by this check, that value is emitted and\n * becomes the new \"previously emitted value\" internally.\n *\n * ## Example\n *\n * A very basic example with no `comparator`. Note that `1` is emitted more than once,\n * because it's distinct in comparison to the _previously emitted_ value,\n * not in comparison to _all other emitted values_.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * of(1, 1, 1, 2, 2, 2, 1, 1, 3, 3).pipe(\n * distinctUntilChanged()\n * )\n * .subscribe(console.log);\n * // Logs: 1, 2, 1, 3\n * ```\n *\n * ## Example\n *\n * With a `comparator`, you can do custom comparisons. Let's say\n * you only want to emit a value when all of its components have\n * changed:\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * const totallyDifferentBuilds$ = of(\n * { engineVersion: '1.1.0', transmissionVersion: '1.2.0' },\n * { engineVersion: '1.1.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.5.0' },\n * { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ).pipe(\n * distinctUntilChanged((prev, curr) => {\n * return (\n * prev.engineVersion === curr.engineVersion ||\n * prev.transmissionVersion === curr.transmissionVersion\n * );\n * })\n * );\n *\n * totallyDifferentBuilds$.subscribe(console.log);\n *\n * // Logs:\n * // {engineVersion: \"1.1.0\", transmissionVersion: \"1.2.0\"}\n * // {engineVersion: \"1.3.0\", transmissionVersion: \"1.4.0\"}\n * // {engineVersion: \"2.0.0\", transmissionVersion: \"1.5.0\"}\n * ```\n *\n * ## Example\n *\n * You can also provide a custom `comparator` to check that emitted\n * changes are only in one direction. Let's say you only want to get\n * the next record temperature:\n *\n * ```ts\n * import { of } from \"rxjs\";\n * import { distinctUntilChanged } from \"rxjs/operators\";\n *\n * const temps$ = of(30, 31, 20, 34, 33, 29, 35, 20);\n *\n * const recordHighs$ = temps$.pipe(\n * distinctUntilChanged((prevHigh, temp) => {\n * // If the current temp is less than\n * // or the same as the previous record,\n * // the record hasn't changed.\n * return temp <= prevHigh;\n * })\n * );\n *\n * recordHighs$.subscribe(console.log);\n * // Logs: 30, 31, 34, 35\n * ```\n *\n * @param comparator A function used to compare the previous and current values for\n * equality. Defaults to a `===` check.\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinctUntilChanged(comparator?: (previous: T, current: T) => boolean): MonoTypeOperatorFunction;\n\n/**\n * Returns a result {@link Observable} that emits all values pushed by the source observable if they\n * are distinct in comparison to the last value the result observable emitted.\n *\n * 1. It will always emit the first value from the source.\n * 2. The `keySelector` will be run against all values, including the first value.\n * 3. For all values after the first, the selected key will be compared against the key selected from\n * the previously emitted value using the `comparator`.\n * 4. If the keys are determined to be unequal by this check, the value (not the key), is emitted\n * and the selected key from that value is saved for future comparisons against other keys.\n *\n * ## Example\n *\n * Selecting update events only when the `updatedBy` field shows\n * the account changed hands...\n *\n * ```ts\n * // A stream of updates to a given account\n * const accountUpdates$ = of(\n * { updatedBy: \"blesh\", data: [] },\n * { updatedBy: \"blesh\", data: [] },\n * { updatedBy: \"ncjamieson\", data: [] },\n * { updatedBy: \"ncjamieson\", data: [] },\n * { updatedBy: \"blesh\", data: [] }\n * );\n *\n * // We only want the events where it changed hands\n * const changedHands$ = accountUpdates$.pipe(\n * distinctUntilChanged(undefined, update => update.updatedBy)\n * );\n *\n * changedHands$.subscribe(console.log);\n * // Logs:\n * // {updatedBy: \"blesh\", data: Array[0]}\n * // {updatedBy: \"ncjamieson\", data: Array[0]}\n * // {updatedBy: \"blesh\", data: Array[0]}\n * ```\n *\n * @param comparator A function used to compare the previous and current keys for\n * equality. Defaults to a `===` check.\n * @param keySelector Used to select a key value to be passed to the `comparator`.\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinctUntilChanged(\n comparator: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K\n): MonoTypeOperatorFunction;\n\nexport function distinctUntilChanged(\n comparator?: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K = identity as (value: T) => K\n): MonoTypeOperatorFunction {\n // We've been allowing `null` do be passed as the `compare`, so we can't do\n // a default value for the parameter, because that will only work\n // for `undefined`.\n comparator = comparator ?? defaultCompare;\n\n return operate((source, subscriber) => {\n // The previous key, used to compare against keys selected\n // from new arrivals to determine \"distinctiveness\".\n let previousKey: K;\n // Whether or not this is the first value we've gotten.\n let first = true;\n\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n // We always call the key selector.\n const currentKey = keySelector(value);\n\n // If it's the first value, we always emit it.\n // Otherwise, we compare this key to the previous key, and\n // if the comparer returns false, we emit.\n if (first || !comparator!(previousKey, currentKey)) {\n // Update our state *before* we emit the value\n // as emission can be the source of re-entrant code\n // in functional libraries like this. We only really\n // need to do this if it's the first value, or if the\n // key we're tracking in previous needs to change.\n first = false;\n previousKey = currentKey;\n\n // Emit the value!\n subscriber.next(value);\n }\n })\n );\n });\n}\n\nfunction defaultCompare(a: any, b: any) {\n return a === b;\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilKeyChanged(key: keyof T): MonoTypeOperatorFunction;\nexport function distinctUntilKeyChanged(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n * An example comparing the name of persons\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n *of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilKeyChanged('name'),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n *of(\n * { age: 4, name: 'Foo1'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo2'},\n * { age: 6, name: 'Foo3'},\n * ).pipe(\n * distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values based on the key specified.\n */\nexport function distinctUntilKeyChanged(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction {\n return distinctUntilChanged((x: T, y: T) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n","import { OperatorFunction, ObservableInput, ObservedValueOf, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\n\n/* tslint:disable:max-line-length */\nexport function expand>(\n project: (value: T, index: number) => O,\n concurrent?: number,\n scheduler?: SchedulerLike\n): OperatorFunction>;\n/**\n * @deprecated The `scheduler` parameter will be removed in v8. If you need to schedule the inner subscription,\n * use `subscribeOn` within the projection function: `expand((value) => fn(value).pipe(subscribeOn(scheduler)))`.\n * Details: Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function expand>(\n project: (value: T, index: number) => O,\n concurrent: number | undefined,\n scheduler: SchedulerLike\n): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.\n *\n * ![](expand.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * ## Example\n * Start emitting the powers of two on every click, at most 10 of them\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { expand, mapTo, delay, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const powersOfTwo = clicks.pipe(\n * mapTo(1),\n * expand(x => of(2 * x).pipe(delay(1000))),\n * take(10),\n * );\n * powersOfTwo.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each projected inner Observable.\n * @return A function that returns an Observable that emits the source values\n * and also result of applying the projection function to each value emitted on\n * the output Observable and merging the results of the Observables obtained\n * from this transformation.\n */\nexport function expand>(\n project: (value: T, index: number) => O,\n concurrent = Infinity,\n scheduler?: SchedulerLike\n): OperatorFunction> {\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return operate((source, subscriber) =>\n mergeInternals(\n // General merge params\n source,\n subscriber,\n project,\n concurrent,\n\n // onBeforeNext\n undefined,\n\n // Expand-specific\n true, // Use expand path\n scheduler // Inner subscription scheduler\n )\n );\n}\n","import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function filter(predicate: BooleanConstructor): OperatorFunction>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const div = document.createElement('div');\n * div.style.cssText = `width: 200px;height: 200px;background: #09c;`;\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n // An index passed to our predicate function on each call.\n let index = 0;\n\n // Subscribe to the source, all errors and completions are\n // forwarded to the consumer.\n source.subscribe(\n // Call the predicate with the appropriate `this` context,\n // if the predicate returns `true`, then send the value\n // to the consumer.\n new OperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n );\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * The specified function will also be called when the subscriber explicitly unsubscribes.\n *\n * ## Examples\n * Execute callback function when the observable completes\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { take, finalize } from 'rxjs/operators';\n *\n * // emit value in sequence every 1 second\n * const source = interval(1000);\n * const example = source.pipe(\n * take(5), //take only the first 5 values\n * finalize(() => console.log('Sequence complete')) // Execute when the observable completes\n * )\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 'Sequence complete'\n * ```\n *\n * Execute callback function when the subscriber explicitly unsubscribes\n *\n * ```ts\n * import { interval, timer, noop } from 'rxjs';\n * import { finalize, tap } from 'rxjs/operators';\n *\n * const source = interval(100).pipe(\n * finalize(() => console.log('[finalize] Called')),\n * tap({\n * next: () => console.log('[next] Called'),\n * error: () => console.log('[error] Not called'),\n * complete: () => console.log('[tap complete] Not called')\n * })\n * );\n *\n * const sub = source.subscribe({\n * next: x => console.log(x),\n * error: noop,\n * complete: () => console.log('[complete] Not called')\n * });\n *\n * timer(150).subscribe(() => sub.unsubscribe());\n *\n * // results:\n * // '[next] Called'\n * // 0\n * // '[finalize] Called'\n * ```\n *\n * @param {function} callback Function to be called when source terminates.\n * @return A function that returns an Observable that mirrors the source, but\n * will call the specified function on termination.\n */\nexport function finalize(callback: () => void): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n // TODO: This try/finally was only added for `useDeprecatedSynchronousErrorHandling`.\n // REMOVE THIS WHEN THAT HOT GARBAGE IS REMOVED IN V8.\n try {\n source.subscribe(subscriber);\n } finally {\n subscriber.add(callback);\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\nexport function first(predicate?: null, defaultValue?: D): OperatorFunction;\nexport function first(predicate: BooleanConstructor): OperatorFunction>;\nexport function first(predicate: BooleanConstructor, defaultValue: D): OperatorFunction | D>;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue: D\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * Emits only the first value. Or emits only the first\n * value that passes some test.\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n * Emit only the first click that happens on the DOM\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * This is how `first()` is different from {@link take}(1) which completes instead.\n *\n * @param {function(value: T, index: number, source: Observable): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return A function that returns an Observable that emits the first item that\n * matches the condition.\n */\nexport function first(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) =>\n source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new EmptyError())\n );\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * The _IgnoreElements_ operator suppresses all of the items emitted by the source Observable,\n * but allows its termination notification (either `error` or `complete`) to pass through unchanged.\n *\n * If you do not care about the items being emitted by an Observable, but you do want to be notified\n * when it completes or when it terminates with an error, you can apply the `ignoreElements` operator\n * to the Observable, which will ensure that it will never call its observers’ `next` handlers.\n *\n * ## Examples\n * ```ts\n * import { of } from 'rxjs';\n * import { ignoreElements } from 'rxjs/operators';\n *\n * of('you', 'talking', 'to', 'me').pipe(\n * ignoreElements(),\n * )\n * .subscribe({\n * next: word => console.log(word),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n * // result:\n * // 'the end'\n * ```\n * @return A function that returns an empty Observable that only calls\n * `complete` or `error`, based on which one is called by the source\n * Observable.\n */\nexport function ignoreElements(): OperatorFunction {\n return operate((source, subscriber) => {\n source.subscribe(new OperatorSubscriber(subscriber, noop));\n });\n}\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\n\nexport function last(predicate: BooleanConstructor): OperatorFunction>;\nexport function last(predicate: BooleanConstructor, defaultValue: D): OperatorFunction | D>;\nexport function last(predicate?: null, defaultValue?: D): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * ![](last.png)\n *\n * It will throw an error if the source completes without notification or one that matches the predicate. It\n * returns the last value or if a predicate is provided last value that matches the predicate. It returns the\n * given default value if no notification is emitted or matches the predicate.\n *\n * ## Example\n * Last alphabet from the sequence.\n * ```ts\n * import { from } from 'rxjs';\n * import { last } from 'rxjs/operators';\n *\n * const source = from(['x', 'y', 'z']);\n * const example = source.pipe(last());\n * //output: \"Last alphabet: z\"\n * example.subscribe(val => console.log(`Last alphabet: ${val}`));\n * ```\n *\n * Default value when the value in the predicate is not matched.\n * ```ts\n * import { from } from 'rxjs';\n * import { last } from 'rxjs/operators';\n *\n * const source = from(['x', 'y', 'z']);\n * const example = source.pipe(last(char => char === 'a','not exist'));\n * //output: \"'a' is not exist.\"\n * example.subscribe(val => console.log(`'a' is ${val}.`));\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n * @see {@link skipWhile}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} [predicate] - The condition any source emitted item has to satisfy.\n * @param {any} [defaultValue] - An optional default value to provide if last\n * predicate isn't met or no values were emitted.\n * @return A function that returns an Observable that emits only the last item\n * satisfying the given condition from the source, or a NoSuchElementException\n * if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n */\nexport function last(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) =>\n source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n takeLast(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new EmptyError())\n );\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\nexport function map(project: (value: T, index: number) => R): OperatorFunction;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return operate((source, subscriber) => {\n // The index of the value from the source. Used with projection.\n let index = 0;\n // Subscribe to the source, all errors and completions are sent along\n // to the consumer.\n source.subscribe(\n new OperatorSubscriber(subscriber, (value: T) => {\n // Call the projection function with the appropriate this context,\n // and send the resulting value to the consumer.\n subscriber.next(project.call(thisArg, value, index++));\n })\n );\n });\n}\n","import { OperatorFunction } from '../types';\nimport { map } from './map';\n\nexport function mapTo(value: R): OperatorFunction;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function mapTo(value: R): OperatorFunction;\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * Like {@link map}, but it maps every source value to\n * the same output value every time.\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n * Map every click to the string 'Hi'\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param value The value to map each source value to.\n * @return A function that returns an Observable that emits the given `value`\n * every time the source Observable emits.\n */\nexport function mapTo(value: R): OperatorFunction {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Infinity] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll>(concurrent: number = Infinity): OperatorFunction> {\n return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals(\n source: Observable,\n subscriber: Subscriber,\n project: (value: T, index: number) => ObservableInput,\n concurrent: number,\n onBeforeNext?: (innerValue: R) => void,\n expand?: boolean,\n innerSubScheduler?: SchedulerLike,\n additionalTeardown?: () => void\n) {\n // Buffered values, in the event of going over our concurrency limit\n const buffer: T[] = [];\n // The number of active inner subscriptions.\n let active = 0;\n // An index to pass to our accumulator function\n let index = 0;\n // Whether or not the outer source has completed.\n let isComplete = false;\n\n /**\n * Checks to see if we can complete our result or not.\n */\n const checkComplete = () => {\n // If the outer has completed, and nothing is left in the buffer,\n // and we don't have any active inner subscriptions, then we can\n // Emit the state and complete.\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n const doInnerSub = (value: T) => {\n // If we're expanding, we need to emit the outer values and the inner values\n // as the inners will \"become outers\" in a way as they are recursively fed\n // back to the projection mechanism.\n expand && subscriber.next(value as any);\n\n // Increment the number of active subscriptions so we can track it\n // against our concurrency limit later.\n active++;\n\n // A flag used to show that the inner observable completed.\n // This is checked during finalization to see if we should\n // move to the next item in the buffer, if there is on.\n let innerComplete = false;\n\n // Start our inner subscription.\n innerFrom(project(value, index++)).subscribe(\n new OperatorSubscriber(\n subscriber,\n (innerValue) => {\n // `mergeScan` has additional handling here. For example\n // taking the inner value and updating state.\n onBeforeNext?.(innerValue);\n\n if (expand) {\n // If we're expanding, then just recurse back to our outer\n // handler. It will emit the value first thing.\n outerNext(innerValue as any);\n } else {\n // Otherwise, emit the inner value.\n subscriber.next(innerValue);\n }\n },\n () => {\n // Flag that we have completed, so we know to check the buffer\n // during finalization.\n innerComplete = true;\n },\n // Errors are passed to the destination.\n undefined,\n () => {\n // During finalization, if the inner completed (it wasn't errored or\n // cancelled), then we want to try the next item in the buffer if\n // there is one.\n if (innerComplete) {\n // We have to wrap this in a try/catch because it happens during\n // finalization, possibly asynchronously, and we want to pass\n // any errors that happen (like in a projection function) to\n // the outer Subscriber.\n try {\n // INNER SOURCE COMPLETE\n // Decrement the active count to ensure that the next time\n // we try to call `doInnerSub`, the number is accurate.\n active--;\n // If we have more values in the buffer, try to process those\n // Note that this call will increment `active` ahead of the\n // next conditional, if there were any more inner subscriptions\n // to start.\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift()!;\n // Particularly for `expand`, we need to check to see if a scheduler was provided\n // for when we want to start our inner subscription. Otherwise, we just start\n // are next inner subscription.\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n } else {\n doInnerSub(bufferedValue);\n }\n }\n // Check to see if we can complete, and complete if so.\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }\n )\n );\n };\n\n // Subscribe to our source observable.\n source.subscribe(\n new OperatorSubscriber(subscriber, outerNext, () => {\n // Outer completed, make a note of it, and check to see if we can complete everything.\n isComplete = true;\n checkComplete();\n })\n );\n\n // Additional teardown (for when the destination is torn down).\n // Other teardown is added implicitly via subscription above.\n return () => {\n additionalTeardown?.();\n };\n}\n","import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n concurrent?: number\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined,\n concurrent?: number\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction | R> {\n if (isFunction(resultSelector)) {\n // DEPRECATED PATH\n return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\n\n/**\n * An operator that creates a {@link ConnectableObservable}, that when connected,\n * with the `connect` method, will use the provided subject to multicast the values\n * from the source to all consumers.\n *\n * @param subject The subject to multicast through.\n * @return A function that returns a {@link ConnectableObservable}\n * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}.\n * If you're using {@link refCount} after `multicast`, use the {@link share} operator instead.\n * `multicast(subject), refCount()` is equivalent to\n * `share({ connector: () => subject, resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast(subject: Subject): UnaryFunction, ConnectableObservable>;\n\n/**\n * Because this is deprecated in favor of the {@link connect} operator, and was otherwise poorly documented,\n * rather than duplicate the effort of documenting the same behavior, please see documentation for the\n * {@link connect} operator.\n *\n * @param subject The subject used to multicast.\n * @param selector A setup function to setup the multicast\n * @return A function that returns an observable that mirrors the observable returned by the selector.\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `multicast(subject, selector)` is equivalent to\n * `connect(selector, { connector: () => subject })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast>(\n subject: Subject,\n selector: (shared: Observable) => O\n): OperatorFunction>;\n\n/**\n * An operator that creates a {@link ConnectableObservable}, that when connected,\n * with the `connect` method, will use the provided subject to multicast the values\n * from the source to all consumers.\n *\n * @param subjectFactory A factory that will be called to create the subject. Passing a function here\n * will cause the underlying subject to be \"reset\" on error, completion, or refCounted unsubscription of\n * the source.\n * @return A function that returns a {@link ConnectableObservable}\n * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}.\n * If you're using {@link refCount} after `multicast`, use the {@link share} operator instead.\n * `multicast(() => new BehaviorSubject('test')), refCount()` is equivalent to\n * `share({ connector: () => new BehaviorSubject('test') })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast(subjectFactory: () => Subject): UnaryFunction, ConnectableObservable>;\n\n/**\n * Because this is deprecated in favor of the {@link connect} operator, and was otherwise poorly documented,\n * rather than duplicate the effort of documenting the same behavior, please see documentation for the\n * {@link connect} operator.\n *\n * @param subjectFactory A factory that creates the subject used to multicast.\n * @param selector A function to setup the multicast and select the output.\n * @return A function that returns an observable that mirrors the observable returned by the selector.\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `multicast(subjectFactory, selector)` is equivalent to\n * `connect(selector, { connector: subjectFactory })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast>(\n subjectFactory: () => Subject,\n selector: (shared: Observable) => O\n): OperatorFunction>;\n\n/**\n * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the\n * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's\n * behaviors.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast(\n subjectOrSubjectFactory: Subject | (() => Subject),\n selector?: (source: Observable) => Observable\n): OperatorFunction {\n const subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : () => subjectOrSubjectFactory;\n\n if (isFunction(selector)) {\n // If a selector function is provided, then we're a \"normal\" operator that isn't\n // going to return a ConnectableObservable. We can use `connect` to do what we\n // need to do.\n return connect(selector, {\n connector: subjectFactory,\n });\n }\n\n return (source: Observable) => new ConnectableObservable(source, subjectFactory);\n}\n","/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint.\n *\n * ```ts\n * import { interval, animationFrameScheduler } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n )\n );\n });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return A function that returns an Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n */\nexport function pairwise(): OperatorFunction {\n return operate((source, subscriber) => {\n let prev: T;\n let hasPrev = false;\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n const p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n })\n );\n });\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { connect } from './connect';\n\n/**\n * Returns a connectable observable that, when connected, will multicast\n * all values through a single underlying {@link Subject} instance.\n *\n * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}.\n * `source.pipe(publish())` is equivalent to\n * `connectable(source, { connector: () => new Subject(), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publish`, use {@link share} operator instead.\n * `source.pipe(publish(), refCount())` is equivalent to\n * `source.pipe(share({ resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publish(): UnaryFunction, ConnectableObservable>;\n\n/**\n * Returns an observable, that when subscribed to, creates an underlying {@link Subject},\n * provides an observable view of it to a `selector` function, takes the observable result of\n * that selector function and subscribes to it, sending its values to the consumer, _then_ connects\n * the subject to the original source.\n *\n * @param selector A function used to setup multicasting prior to automatic connection.\n *\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `publish(selector)` is equivalent to `connect(selector)`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publish>(selector: (shared: Observable) => O): OperatorFunction>;\n\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * Makes a cold Observable hot\n *\n * ![](publish.png)\n *\n * ## Examples\n * Make source$ hot by applying publish operator, then merge each inner observable into a single one\n * and subscribe.\n * ```ts\n * import { of, zip, interval, merge } from \"rxjs\";\n * import { map, publish, tap } from \"rxjs/operators\";\n *\n * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)).pipe(\n * map(values => values[1])\n * );\n *\n * source$\n * .pipe(\n * publish(multicasted$ =>\n * merge(\n * multicasted$.pipe(tap(x => console.log('Stream 1:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 2:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 3:', x))),\n * )\n * )\n * )\n * .subscribe();\n *\n * // Results every two seconds\n * // Stream 1: 1\n * // Stream 2: 1\n * // Stream 3: 1\n * // ...\n * // Stream 1: 9\n * // Stream 2: 9\n * // Stream 3: 9\n * ```\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A function that returns a ConnectableObservable that upon connection\n * causes the source Observable to emit items to its Observers.\n * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the\n * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's\n * behaviors.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publish(selector?: OperatorFunction): MonoTypeOperatorFunction | OperatorFunction {\n return selector ? (source) => connect(selector)(source) : (source) => multicast(new Subject())(source);\n}\n","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the `multicast(() => new Subject())` operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { tap, publish, refCount } from 'rxjs/operators';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n * tap((num) => console.log(`refCount ${num}`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap((num) => console.log(`publish ${num}`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the publish operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @return A function that returns an Observable that automates the connection\n * to ConnectableObservable.\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n * @deprecated Replaced with the {@link share} operator. How `share` is used\n * will depend on the connectable observable you created just prior to the\n * `refCount` operator.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let connection: Subscription | null = null;\n\n (source as any)._refCount++;\n\n const refCounter = new OperatorSubscriber(subscriber, undefined, undefined, undefined, () => {\n if (!source || (source as any)._refCount <= 0 || 0 < --(source as any)._refCount) {\n connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n\n const sharedConnection = (source as any)._connection;\n const conn = connection;\n connection = null;\n\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n\n subscriber.unsubscribe();\n });\n\n source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n connection = (source as ConnectableObservable).connect();\n }\n });\n}\n","import { Subscription } from '../Subscription';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes, at most count times.\n *\n * Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.\n *\n * ![](repeat.png)\n *\n * Similar to {@link retry}, this operator repeats the stream of items emitted by the source for non error cases.\n * Repeat can be useful for creating observables that are meant to have some repeated pattern or rhythm.\n *\n * Note: `repeat(0)` returns an empty observable and `repeat()` will repeat forever\n *\n * ## Example\n * Repeat a message stream\n * ```ts\n * import { of } from 'rxjs';\n * import { repeat } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const example = source.pipe(repeat(3));\n * example.subscribe(x => console.log(x));\n *\n * // Results\n * // Repeat message\n * // Repeat message\n * // Repeat message\n * ```\n *\n * Repeat 3 values, 2 times\n * ```ts\n * import { interval } from 'rxjs';\n * import { repeat, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(take(3), repeat(2));\n * example.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return A function that returns an Observable that will resubscribe to the\n * source stream when the source stream completes, at most `count` times.\n */\nexport function repeat(count = Infinity): MonoTypeOperatorFunction {\n return count <= 0\n ? () => EMPTY\n : operate((source, subscriber) => {\n let soFar = 0;\n let innerSub: Subscription | null;\n const subscribeForRepeat = () => {\n let syncUnsub = false;\n innerSub = source.subscribe(\n new OperatorSubscriber(subscriber, undefined, () => {\n if (++soFar < count) {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n } else {\n syncUnsub = true;\n }\n } else {\n subscriber.complete();\n }\n })\n );\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n };\n subscribeForRepeat();\n });\n}\n","import { Observable } from '../Observable';\nimport { from } from '../observable/from';\nimport { take } from '../operators/take';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubjectLike } from '../types';\nimport { operate } from '../util/lift';\n\nexport interface ShareConfig {\n /**\n * The factory used to create the subject that will connect the source observable to\n * multicast consumers.\n */\n connector?: () => SubjectLike;\n /**\n * If true, the resulting observable will reset internal state on error from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"retried\" in the event of an error.\n * If false, when an error comes from the source it will push the error into the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent retries\n * or resubscriptions will resubscribe to that same subject. In all cases, RxJS subjects will emit the same error again, however\n * {@link ReplaySubject} will also push its buffered values before pushing the error.\n * It is also possible to pass a notifier factory returning an observable instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnError?: boolean | ((error: any) => Observable);\n /**\n * If true, the resulting observable will reset internal state on completion from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"repeated\" after it is done.\n * If false, when the source completes, it will push the completion through the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent repeats\n * or resubscriptions will resubscribe to that same subject.\n * It is also possible to pass a notifier factory returning an observable instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnComplete?: boolean | (() => Observable);\n /**\n * If true, when the number of subscribers to the resulting observable reaches zero due to those subscribers unsubscribing, the\n * internal state will be reset and the resulting observable will return to a \"cold\" state. This means that the next\n * time the resulting observable is subscribed to, a new subject will be created and the source will be subscribed to\n * again.\n * If false, when the number of subscribers to the resulting observable reaches zero due to unsubscription, the subject\n * will remain connected to the source, and new subscriptions to the result will be connected through that same subject.\n * It is also possible to pass a notifier factory returning an observable instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnRefCountZero?: boolean | (() => Observable);\n}\n\nexport function share(): MonoTypeOperatorFunction;\n\nexport function share(options: ShareConfig): MonoTypeOperatorFunction;\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * The subscription to the underlying source Observable can be reset (unsubscribe and resubscribe for new subscribers),\n * if the subscriber count to the shared observable drops to 0, or if the source Observable errors or completes. It is\n * possible to use notifier factories for the resets to allow for behaviors like conditional or delayed resets. Please\n * note that resetting on error or complete of the source Observable does not behave like a transparent retry or restart\n * of the source because the error or complete will be forwarded to all subscribers and their subscription will be\n * closed. Only new subscribers after a reset on error or complete happened will cause a fresh subscription to the\n * source. To achieve transparent retries or restarts pipe the source through appropriate operators before sharing.\n *\n * ![](share.png)\n *\n * ## Example\n * Generate new multicast Observable from the source Observable value\n * ```ts\n * import { interval } from 'rxjs';\n * import { share, map } from 'rxjs/operators';\n *\n * const source = interval(1000)\n * .pipe(\n * map((x: number) => {\n * console.log('Processing: ', x);\n * return x*x;\n * }),\n * share()\n * );\n *\n * source.subscribe(x => console.log('subscription 1: ', x));\n * source.subscribe(x => console.log('subscription 2: ', x));\n *\n * // Logs:\n * // Processing: 0\n * // subscription 1: 0\n * // subscription 2: 0\n * // Processing: 1\n * // subscription 1: 1\n * // subscription 2: 1\n * // Processing: 2\n * // subscription 1: 4\n * // subscription 2: 4\n * // Processing: 3\n * // subscription 1: 9\n * // subscription 2: 9\n * // ... and so on\n * ```\n *\n * ## Example with notifier factory: Delayed reset\n * ```ts\n * import { interval, timer } from 'rxjs';\n * import { share, take } from 'rxjs/operators';\n *\n * const source = interval(1000).pipe(take(3), share({ resetOnRefCountZero: () => timer(1000) }));\n *\n * const subscriptionOne = source.subscribe(x => console.log('subscription 1: ', x));\n * setTimeout(() => subscriptionOne.unsubscribe(), 1300);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 2: ', x)), 1700);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 3: ', x)), 5000);\n *\n * // Logs:\n * // subscription 1: 0\n * // (subscription 1 unsubscribes here)\n * // (subscription 2 subscribes here ~400ms later, source was not reset)\n * // subscription 2: 1\n * // subscription 2: 2\n * // (subscription 2 unsubscribes here)\n * // (subscription 3 subscribes here ~2000ms later, source did reset before)\n * // subscription 3: 0\n * // subscription 3: 1\n * // subscription 3: 2\n * ```\n *\n * @see {@link api/index/function/interval}\n * @see {@link map}\n *\n * @return A function that returns an Observable that mirrors the source.\n */\nexport function share(options: ShareConfig = {}): MonoTypeOperatorFunction {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n // It's necessary to use a wrapper here, as the _operator_ must be\n // referentially transparent. Otherwise, it cannot be used in calls to the\n // static `pipe` function - to create a partial pipeline.\n //\n // The _operator function_ - the function returned by the _operator_ - will\n // not be referentially transparent - as it shares its source - but the\n // _operator function_ is called when the complete pipeline is composed via a\n // call to a source observable's `pipe` method - not when the static `pipe`\n // function is called.\n return (wrapperSource) => {\n let connection: SafeSubscriber | null = null;\n let resetConnection: Subscription | null = null;\n let subject: SubjectLike | null = null;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n\n const cancelReset = () => {\n resetConnection?.unsubscribe();\n resetConnection = null;\n };\n // Used to reset the internal state to a \"cold\"\n // state, as though it had never been subscribed to.\n const reset = () => {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n // We need to capture the connection before\n // we reset (if we need to reset).\n const conn = connection;\n reset();\n conn?.unsubscribe();\n };\n\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n\n // Create the subject if we don't have one yet. Grab a local reference to\n // it as well, which avoids non-null assertations when using it and, if we\n // connect to it now, then error/complete need a reference after it was\n // reset.\n const dest = (subject = subject ?? connector());\n\n // Add the teardown directly to the subscriber - instead of returning it -\n // so that the handling of the subscriber's unsubscription will be wired\n // up _before_ the subscription to the source occurs. This is done so that\n // the assignment to the source connection's `closed` property will be seen\n // by synchronous firehose sources.\n subscriber.add(() => {\n refCount--;\n\n // If we're resetting on refCount === 0, and it's 0, we only want to do\n // that on \"unsubscribe\", really. Resetting on error or completion is a different\n // configuration.\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n\n // The following line adds the subscription to the subscriber passed.\n // Basically, `subscriber === dest.subscribe(subscriber)` is `true`.\n dest.subscribe(subscriber);\n\n if (!connection) {\n // We need to create a subscriber here - rather than pass an observer and\n // assign the returned subscription to connection - because it's possible\n // for reentrant subscriptions to the shared observable to occur and in\n // those situations we want connection to be already-assigned so that we\n // don't create another connection to the source.\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}\n\nfunction handleReset(\n reset: () => void,\n on: boolean | ((...args: T) => Observable),\n ...args: T\n): Subscription | null {\n if (on === true) {\n reset();\n\n return null;\n }\n\n if (on === false) {\n return null;\n }\n\n return on(...args)\n .pipe(take(1))\n .subscribe(() => reset());\n}\n","import { ReplaySubject } from '../ReplaySubject';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { share } from './share';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\nexport function shareReplay(config: ShareReplayConfig): MonoTypeOperatorFunction;\nexport function shareReplay(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplayed observable` forever,\n * but an errored source can be retried.\n *\n * ## Why use shareReplay?\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ![](shareReplay.png)\n *\n * ## Reference counting\n * As of RXJS version 6.4.0 a new overload signature was added to allow for manual control over what\n * happens when the operators internal reference counter drops to zero.\n * If `refCount` is true, the source will be unsubscribed from once the reference count drops to zero, i.e.\n * the inner `ReplaySubject` will be unsubscribed. All new subscribers will receive value emissions from a\n * new `ReplaySubject` which in turn will cause a new subscription to the source observable.\n * If `refCount` is false on the other hand, the source will not be unsubscribed meaning that the inner\n * `ReplaySubject` will still be subscribed to the source (and potentially run for ever).\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { shareReplay, take } from 'rxjs/operators';\n *\n * const obs$ = interval(1000);\n * const shared$ = obs$.pipe(\n * take(4),\n * shareReplay(3)\n * );\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * ```\n *\n * ## Example for refCount usage\n * ```ts\n * import { interval, Observable, defer } from 'rxjs';\n * import { shareReplay, take, tap, finalize } from 'rxjs/operators';\n *\n * const log = (source: Observable, name: string) => defer(() => {\n * console.log(`${name}: subscribed`);\n * return source.pipe(\n * tap({\n * next: value => console.log(`${name}: ${value}`),\n * complete: () => console.log(`${name}: complete`)\n * }),\n * finalize(() => console.log(`${name}: unsubscribed`))\n * );\n * });\n *\n * const obs$ = log(interval(1000), 'source');\n *\n * const shared$ = log(obs$.pipe(\n * shareReplay({bufferSize: 1, refCount: true }),\n * take(2),\n * ), 'shared');\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * // PRINTS:\n * // shared: subscribed <-- reference count = 1\n * // source: subscribed\n * // shared: subscribed <-- reference count = 2\n * // source: 0\n * // shared: 0\n * // sub A: 0\n * // shared: 0\n * // sub B: 0\n * // source: 1\n * // shared: 1\n * // sub A: 1\n * // shared: complete <-- take(2) completes the subscription for sub A\n * // shared: unsubscribed <-- reference count = 1\n * // shared: 1\n * // sub B: 1\n * // shared: complete <-- take(2) completes the subscription for sub B\n * // shared: unsubscribed <-- reference count = 0\n * // source: unsubscribed <-- replaySubject unsubscribes from source observable because the reference count dropped to 0 and refCount is true\n *\n * // In case of refCount being false, the unsubscribe is never called on the source and the source would keep on emitting, even if no subscribers\n * // are listening.\n * // source: 2\n * // source: 3\n * // source: 4\n * // ...\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param {Number} [bufferSize=Infinity] Maximum element count of the replay buffer.\n * @param {Number} [windowTime=Infinity] Maximum time length of the replay buffer in milliseconds.\n * @param {Scheduler} [scheduler] Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return A function that returns an Observable sequence that contains the\n * elements of a sequence produced by multicasting the source sequence within a\n * selector function.\n */\nexport function shareReplay(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction {\n let bufferSize: number;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n bufferSize = configOrBufferSize.bufferSize ?? Infinity;\n windowTime = configOrBufferSize.windowTime ?? Infinity;\n refCount = !!configOrBufferSize.refCount;\n scheduler = configOrBufferSize.scheduler;\n } else {\n bufferSize = configOrBufferSize ?? Infinity;\n }\n return share({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { filter } from './filter';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * Skips the values until the sent notifications are equal or less than provided skip count. It raises\n * an error if skip count is equal or more than the actual number of emits and source raises an error.\n *\n * ## Example\n * Skip the values before the emission\n * ```ts\n * import { interval } from 'rxjs';\n * import { skip } from 'rxjs/operators';\n *\n * //emit every half second\n * const source = interval(500);\n * //skip the first 10 emitted values\n * const example = source.pipe(skip(10));\n * //output: 10...11...12...13........\n * const subscribe = example.subscribe(val => console.log(val));\n * ```\n *\n * @see {@link last}\n * @see {@link skipWhile}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return A function that returns an Observable that skips the first `count`\n * values emitted by the source Observable.\n */\nexport function skip(count: number): MonoTypeOperatorFunction {\n return filter((_, index) => count <= index);\n}\n","import { Falsy, MonoTypeOperatorFunction, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\nexport function skipWhile(predicate: BooleanConstructor): OperatorFunction extends never ? never : T>;\nexport function skipWhile(predicate: (value: T, index: number) => true): OperatorFunction;\nexport function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction;\n\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * ![](skipWhile.png)\n *\n * Skips all the notifications with a truthy predicate. It will not skip the notifications when the predicate is falsy.\n * It can also be skipped using index. Once the predicate is true, it will not be called again.\n *\n * ## Example\n * Using Value: Skip some super heroes\n * ```ts\n * import { from } from 'rxjs';\n * import { skipWhile } from 'rxjs/operators';\n *\n * const source = from(['Green Arrow', 'SuperMan', 'Flash', 'SuperGirl', 'Black Canary'])\n * // Skip the heroes until SuperGirl\n * const example = source.pipe(skipWhile((hero) => hero !== 'SuperGirl'));\n * // output: SuperGirl, Black Canary\n * example.subscribe((femaleHero) => console.log(femaleHero));\n * ```\n * Using Index: Skip value from the array until index 5\n * ```ts\n * import { from } from 'rxjs';\n * import { skipWhile } from 'rxjs/operators';\n *\n * const source = from([1, 2, 3, 4, 5, 6, 7, 9, 10]);\n * const example = source.pipe(skipWhile((_, i) => i !== 5));\n * // output: 6, 7, 9, 10\n * example.subscribe((val) => console.log(val));\n * ```\n *\n * @see {@link last}\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return A function that returns an Observable that begins emitting items\n * emitted by the source Observable when the specified predicate becomes false.\n */\nexport function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let taking = false;\n let index = 0;\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => (taking || (taking = !predicate(value, index++))) && subscriber.next(value))\n );\n });\n}\n","import { concat } from '../observable/concat';\nimport { OperatorFunction, SchedulerLike, ValueFromArray } from '../types';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function startWith(value: null): OperatorFunction;\nexport function startWith(value: undefined): OperatorFunction;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function startWith(\n ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction>;\nexport function startWith(...values: A): OperatorFunction>;\n\n/**\n * Returns an observable that, at the moment of subscription, will synchronously emit all\n * values provided to this operator, then subscribe to the source and mirror all of its emissions\n * to subscribers.\n *\n * This is a useful way to know when subscription has occurred on an existing observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Emit a value when a timer starts.\n *\n * ```ts\n * import { timer } from 'rxjs';\n * import { startWith, map } from 'rxjs/operators';\n *\n * timer(1000)\n * .pipe(\n * map(() => 'timer emit'),\n * startWith('timer start')\n * )\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // \"timer start\"\n * // \"timer emit\"\n * ```\n *\n * @param values Items you want the modified Observable to emit first.\n * @return A function that returns an Observable that synchronously emits\n * provided values before subscribing to the source Observable.\n *\n * @see {@link endWith}\n * @see {@link finalize}\n * @see {@link concat}\n */\nexport function startWith(...values: D[]): OperatorFunction {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n // Here we can't pass `undefined` as a scheduler, because if we did, the\n // code inside of `concat` would be confused by the `undefined`, and treat it\n // like an invalid observable. So we have to split it two different ways.\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emited by Observable `a`:\n *\n * ```ts\n * import { of, merge, asyncScheduler } from 'rxjs';\n * import { subscribeOn } from 'rxjs/operators';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap>(\n project: (value: T, index: number) => O\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables.\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n * Generate new Observable according to source Observable values\n * ```typescript\n * import { of } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const switched = of(1, 2, 3).pipe(switchMap((x: number) => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // ... and so on\n * ```\n *\n * Restart an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap((ev) => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n return operate((source, subscriber) => {\n let innerSubscriber: Subscriber> | null = null;\n let index = 0;\n // Whether or not the source subscription has completed\n let isComplete = false;\n\n // We only complete the result if the source is complete AND we don't have an active inner subscription.\n // This is called both when the source completes and when the inners complete.\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n // Cancel the previous inner subscription if there was one\n innerSubscriber?.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n // Start the next inner subscription\n innerFrom(project(value, outerIndex)).subscribe(\n (innerSubscriber = new OperatorSubscriber(\n subscriber,\n // When we get a new inner value, next it through. Note that this is\n // handling the deprecate result selector here. This is because with this architecture\n // it ends up being smaller than using the map operator.\n (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n () => {\n // The inner has completed. Null out the inner subcriber to\n // free up memory and to signal that we have no inner subscription\n // currently.\n innerSubscriber = null!;\n checkComplete();\n }\n ))\n );\n },\n () => {\n isComplete = true;\n checkComplete();\n }\n )\n );\n });\n}\n","import { switchMap } from './switchMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function switchMapTo>(observable: O): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMapTo>(\n observable: O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMapTo>(\n observable: O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switchMap} in the output Observable.\n *\n * It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](switchMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * ## Example\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return A function that returns an Observable that emits items from the\n * given `innerObservable` (and optionally transformed through the deprecated\n * `resultSelector`) every time a value is emitted on the source Observable,\n * and taking only the values from the most recently projected inner\n * Observable.\n */\nexport function switchMapTo>(\n innerObservable: O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n return isFunction(resultSelector) ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * Takes the first `count` values from the source, then\n * completes.\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n * Take the first 5 seconds of an infinite 1-second interval Observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable, or all of the values from\n * the source if the source emits fewer than `count` values.\n */\nexport function take(count: number): MonoTypeOperatorFunction {\n return count <= 0\n ? // If we are taking no values, that's empty.\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n // Increment the number of values we have seen,\n // then check it against the allowed count to see\n // if we are still letting values through.\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count,\n // we need to complete. We have to do <= here,\n // because re-entrant code will increment `seen` twice.\n if (count <= seen) {\n subscriber.complete();\n }\n }\n })\n );\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Waits for the source to complete, then emits the last N values from the source,\n * as specified by the `count` argument.\n *\n * ![](takeLast.png)\n *\n * `takeLast` results in an observable that will hold values up to `count` values in memory,\n * until the source completes. It then pushes all values in memory to the consumer, in the\n * order they were received from the source, then notifies the consumer that it is\n * complete.\n *\n * If for some reason the source completes before the `count` supplied to `takeLast` is reached,\n * all values received until that point are emitted, and then completion is notified.\n *\n * **Warning**: Using `takeLast` with an observable that never completes will result\n * in an observable that never emits a value.\n *\n * ## Example\n *\n * Take the last 3 values of an Observable with many values\n *\n * ```ts\n * import { range } from 'rxjs';\n * import { takeLast } from 'rxjs/operators';\n *\n * const many = range(1, 100);\n * const lastThree = many.pipe(takeLast(3));\n * lastThree.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return A function that returns an Observable that emits at most the last\n * `count` values emitted by the source Observable.\n */\nexport function takeLast(count: number): MonoTypeOperatorFunction {\n return count <= 0\n ? () => EMPTY\n : operate((source, subscriber) => {\n // This buffer will hold the values we are going to emit\n // when the source completes. Since we only want to take the\n // last N values, we can't emit until we're sure we're not getting\n // any more values.\n let buffer: T[] = [];\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n // Add the most recent value onto the end of our buffer.\n buffer.push(value);\n // If our buffer is now larger than the number of values we\n // want to take, we remove the oldest value from the buffer.\n count < buffer.length && buffer.shift();\n },\n () => {\n // The source completed, we now know what are last values\n // are, emit them in the order they were received.\n for (const value of buffer) {\n subscriber.next(value);\n }\n subscriber.complete();\n },\n // Errors are passed through to the consumer\n undefined,\n () => {\n // During teardown release the values in our buffer.\n buffer = null!;\n }\n )\n );\n });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n * Tick every second until the first click happens\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { takeUntil } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil(notifier: ObservableInput): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(new OperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { OperatorFunction, MonoTypeOperatorFunction, Falsy } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\nexport function takeWhile(predicate: BooleanConstructor): OperatorFunction extends never ? never : T>;\nexport function takeWhile(\n predicate: BooleanConstructor,\n inclusive: false\n): OperatorFunction extends never ? never : T>;\nexport function takeWhile(predicate: BooleanConstructor, inclusive: true): MonoTypeOperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n * Emit click events only while the clientX property is greater than 200\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { takeWhile } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @param {boolean} inclusive When set to `true` the value that caused\n * `predicate` to return `false` will also be emitted.\n * @return A function that returns an Observable that emits values from the\n * source Observable so long as each value satisfies the condition defined by\n * the `predicate`, then completes.\n */\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive = false): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n })\n );\n });\n}\n","import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\nexport interface TapObserver extends Observer {\n subscribe: () => void;\n unsubscribe: () => void;\n finalize: () => void;\n}\n\nexport function tap(observer?: Partial>): MonoTypeOperatorFunction;\nexport function tap(next: (value: T) => void): MonoTypeOperatorFunction;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * Used when you want to affect outside state with a notification without altering the notification\n *\n * ![](tap.png)\n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Example\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit \"big\" or \"small\" depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { tap, map } from 'rxjs/operators';\n *\n * of(Math.random()).pipe(\n * tap(console.log),\n * map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * ## Example\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { tap } from 'rxjs/operators';\n *\n * const source = of(1, 2, 3, 4, 5)\n *\n * source.pipe(\n * tap(n => {\n * if (n > 3) {\n * throw new TypeError(`Value ${n} is greater than 3`)\n * }\n * })\n * )\n * .subscribe(console.log);\n * ```\n *\n * ## Example\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `\"X\"` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side-effect of logging to console.\n *\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { tap, map, concatMap, take } from 'rxjs/operators';\n *\n *\n * of(1, 2, 3).pipe(\n * concatMap(n => interval(1000).pipe(\n * take(Math.round(Math.random() * 10)),\n * map(() => 'X'),\n * tap({\n * complete: () => console.log(`Done with ${n}`)\n * })\n * ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link Observable#subscribe}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction {\n // We have to check to see not only if next is a function,\n // but if error or complete were passed. This is because someone\n // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n const tapObserver =\n isFunction(observerOrNext) || error || complete\n ? // tslint:disable-next-line: no-object-literal-type-assertion\n ({ next: observerOrNext as Exclude>>, error, complete } as Partial>)\n : observerOrNext;\n\n return tapObserver\n ? operate((source, subscriber) => {\n tapObserver.subscribe?.();\n let isUnsub = true;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n tapObserver.next?.(value);\n subscriber.next(value);\n },\n () => {\n isUnsub = false;\n tapObserver.complete?.();\n subscriber.complete();\n },\n (err) => {\n isUnsub = false;\n tapObserver.error?.(err);\n subscriber.error(err);\n },\n () => {\n if (isUnsub) {\n tapObserver.unsubscribe?.();\n }\n tapObserver.finalize?.();\n }\n )\n );\n })\n : // Tap was called with no valid tap observer or handler\n // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n // so we're going to just mirror the source.\n identity;\n}\n","import { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\nexport interface ThrottleConfig {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport const defaultThrottleConfig: ThrottleConfig = {\n leading: true,\n trailing: false,\n};\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](throttle.png)\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { throttle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return A function that returns an Observable that performs the throttle\n * operation to limit the rate of emissions from the source.\n */\nexport function throttle(\n durationSelector: (value: T) => ObservableInput,\n { leading, trailing }: ThrottleConfig = defaultThrottleConfig\n): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n let sendValue: T | null = null;\n let throttled: Subscription | null = null;\n let isComplete = false;\n\n const endThrottling = () => {\n throttled?.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n\n const cleanupThrottling = () => {\n throttled = null;\n isComplete && subscriber.complete();\n };\n\n const startThrottle = (value: T) =>\n (throttled = innerFrom(durationSelector(value)).subscribe(new OperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n\n const send = () => {\n if (hasValue) {\n // Ensure we clear out our value and hasValue flag\n // before we emit, otherwise reentrant code can cause\n // issues here.\n hasValue = false;\n const value = sendValue!;\n sendValue = null;\n // Emit the value.\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n // Regarding the presence of throttled.closed in the following\n // conditions, if a synchronous duration selector is specified - weird,\n // but legal - an already-closed subscription will be assigned to\n // throttled, so the subscription's closed property needs to be checked,\n // too.\n (value) => {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n },\n () => {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }\n )\n );\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { defaultThrottleConfig, throttle } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { timer } from '../observable/timer';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.\n *\n * ![](throttleTime.png)\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * #### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * #### Double Click\n *\n * The following example only emits clicks which happen within a subsequent\n * delay of 400ms of the previous click. This for example can emulate a double\n * click. It makes use of the `trailing` parameter of the throttle configuration.\n *\n * ```ts\n * import { fromEvent, asyncScheduler } from 'rxjs';\n * import { throttleTime, withLatestFrom } from 'rxjs/operators';\n *\n * // defaultThottleConfig = { leading: true, trailing: false }\n * const throttleConfig = {\n * leading: false,\n * trailing: true\n * }\n *\n * const click = fromEvent(document, 'click');\n * const doubleClick = click.pipe(\n * throttleTime(400, asyncScheduler, throttleConfig)\n * );\n *\n * doubleClick.subscribe((throttleValue: Event) => {\n * console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`);\n * });\n * ```\n *\n * If you enable the `leading` parameter in this example, the output would be the primary click and\n * the double click, but restricts additional clicks within 400ms.\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param scheduler The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling. Defaults to {@link asyncScheduler}.\n * @param config a configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return A function that returns an Observable that performs the throttle\n * operation to limit the rate of emissions from the source.\n */\nexport function throttleTime(\n duration: number,\n scheduler: SchedulerLike = asyncScheduler,\n config = defaultThrottleConfig\n): MonoTypeOperatorFunction {\n const duration$ = timer(duration, scheduler);\n return throttle(() => duration$, config);\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n * ```ts\n * import { fromEvent, timer } from 'rxjs';\n * import { throwIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(\n * () => new Error('the document was not clicked within 1 second')\n * ),\n * )\n * .subscribe({\n * next() { console.log('The button was clicked'); },\n * error(err) { console.error(err); }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n * @return A function that returns an Observable that throws an error if the\n * source Observable completed without emitting.\n */\nexport function throwIfEmpty(errorFactory: () => any = defaultErrorFactory): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))\n )\n );\n });\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { OperatorFunction, ObservableInputTuple } from '../types';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\n\nexport function withLatestFrom(...inputs: [...ObservableInputTuple]): OperatorFunction;\n\nexport function withLatestFrom(\n ...inputs: [...ObservableInputTuple, (...value: [T, ...O]) => R]\n): OperatorFunction;\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n * On every click event, emit an array with the latest timer event plus the click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { withLatestFrom } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return A function that returns an Observable of projected values from the\n * most recent values from each input Observable, or an array of the most\n * recent values from each input Observable.\n */\nexport function withLatestFrom(...inputs: any[]): OperatorFunction {\n const project = popResultSelector(inputs) as ((...args: any[]) => R) | undefined;\n\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n // An array of whether or not the other sources have emitted. Matched with them by index.\n // TODO: At somepoint, we should investigate the performance implications here, and look\n // into using a `Set()` and checking the `size` to see if we're ready.\n let hasValue = inputs.map(() => false);\n // Flipped true when we have at least one value from all other sources and\n // we are ready to start emitting values.\n let ready = false;\n\n // Other sources. Note that here we are not checking `subscriber.closed`,\n // this causes all inputs to be subscribed to, even if nothing can be emitted\n // from them. This is an important distinction because subscription constitutes\n // a side-effect.\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(\n new OperatorSubscriber(\n subscriber,\n (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n // If we're not ready yet, flag to show this observable has emitted.\n hasValue[i] = true;\n // Intentionally terse code.\n // If all of our other observables have emitted, set `ready` to `true`,\n // so we know we can start emitting values, then clean up the `hasValue` array,\n // because we don't need it anymore.\n (ready = hasValue.every(identity)) && (hasValue = null!);\n }\n },\n // Completing one of the other sources has\n // no bearing on the completion of our result.\n noop\n )\n );\n }\n\n // Source subscription\n source.subscribe(\n new OperatorSubscriber(subscriber, (value) => {\n if (ready) {\n // We have at least one value from the other sources. Go ahead and emit.\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n })\n );\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n return new Observable((subscriber) => {\n let iterator: Iterator;\n\n // Schedule the initial creation of the iterator from\n // the iterable. This is so the code in the iterable is\n // not called until the scheduled job fires.\n executeSchedule(subscriber, scheduler, () => {\n // Create the iterator.\n iterator = (input as any)[Symbol_iterator]();\n\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n let value: T;\n let done: boolean | undefined;\n try {\n // Pull the value out of the iterator\n ({ value, done } = iterator.next());\n } catch (err) {\n // We got an error while pulling from the iterator\n subscriber.error(err);\n return;\n }\n\n if (done) {\n // If it is \"done\" we just complete. This mimics the\n // behavior of JavaScript's `for..of` consumption of\n // iterables, which will not emit the value from an iterator\n // result of `{ done: true: value: 'here' }`.\n subscriber.complete();\n } else {\n // The iterable is not done, emit the value.\n subscriber.next(value);\n }\n },\n 0,\n true\n );\n });\n\n // During teardown, if we see this iterator has a `return` method,\n // then we know it is a Generator, and not just an Iterator. So we call\n // the `return()` function. This will ensure that any `finally { }` blocks\n // inside of the generator we can hit will be hit properly.\n return () => isFunction(iterator?.return) && iterator.return();\n });\n}\n","import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable(input: AsyncIterable, scheduler: SchedulerLike) {\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(\n subscriber,\n scheduler,\n () => {\n iterator.next().then((result) => {\n if (result.done) {\n // This will remove the subscriptions from\n // the parent subscription.\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n }\n });\n },\n 0,\n true\n );\n });\n });\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 { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\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';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable((subscriber) => {\n // The current array index.\n let i = 0;\n // Start iterating over the array like on a schedule.\n return scheduler.schedule(function () {\n if (i === input.length) {\n // If we have hit the end of the array like in the\n // previous job, we can complete.\n subscriber.complete();\n } else {\n // Otherwise let's next the value at the current index,\n // then increment our index.\n subscriber.next(input[i++]);\n // If the last emission didn't cause us to close the subscriber\n // (via take or some side effect), reschedule the job and we'll\n // make another pass.\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';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike(input: ReadableStreamLike, scheduler: SchedulerLike): Observable {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","type SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => number;\ntype ClearIntervalFunction = (handle: number) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(...args) {\n const { delegate } = intervalProvider;\n return (delegate?.setInterval || setInterval)(...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\n\nexport class AsyncAction extends Action {\n public id: any;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: any, delay: number = 0): any {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id: any, delay: number | null = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n intervalProvider.clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n let index = -1;\n action = action || actions.shift()!;\n const count = actions.length;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this._active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","let nextHandle = 1;\n// The promise needs to be created lazily otherwise it won't be patched by Zones\nlet resolved: Promise;\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nconst { setImmediate, clearImmediate } = Immediate;\n\ntype SetImmediateFunction = (handler: () => void, ...args: any[]) => number;\ntype ClearImmediateFunction = (handle: number) => void;\n\ninterface ImmediateProvider {\n setImmediate: SetImmediateFunction;\n clearImmediate: ClearImmediateFunction;\n delegate:\n | {\n setImmediate: SetImmediateFunction;\n clearImmediate: ClearImmediateFunction;\n }\n | undefined;\n}\n\nexport const immediateProvider: ImmediateProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return (delegate?.setImmediate || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return (delegate?.clearImmediate || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\n\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated Renamed to {@link asapScheduler}. Will be removed in v8.\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n let index = -1;\n action = action || actions.shift()!;\n const count = actions.length;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this._active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\nimport { immediateProvider } from './immediateProvider';\n\nexport class AsapAction extends AsyncAction {\n constructor(protected scheduler: AsapScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n","import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","type SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => number;\ntype ClearTimeoutFunction = (handle: number) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(...args) {\n const { delegate } = timeoutProvider;\n return (delegate?.setTimeout || setTimeout)(...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n","/** Symbol.observable or a string \"@@observable\". Used for interop */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\n\nexport interface EmptyError extends Error {}\n\nexport interface EmptyErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): EmptyError;\n}\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n * @see {@link firstValueFrom}\n * @see {@link lastValueFrom}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = createErrorClass((_super) => function EmptyErrorImpl(this: any) {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n","import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\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);\n","import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\n\n/**\n * Used in functions where either a list of arguments, a single array of arguments, or a\n * dictionary of arguments can be returned. Returns an object with an `args` property with\n * the arguments in an array, if it is a dictionary, it will also return the `keys` in another\n * property.\n */\nexport function argsArgArrayOrObject>(args: T[] | [O] | [T[]]): { args: T[]; keys: string[] | null } {\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\n return { args: args as T[], keys: null };\n}\n\nfunction isPOJO(obj: any): obj is object {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","const { isArray } = Array;\n\n/**\n * Used in operators and functions that accept either a list of arguments, or an array of arguments\n * as a single argument.\n */\nexport function argsOrArgArray(args: (T | T[])[]): T[] {\n return args.length === 1 && isArray(args[0]) ? args[0] : (args as T[]);\n}\n","/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\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: string[], values: any[]) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {} as any);\n}\n","import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\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 } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay: number,\n repeat: true\n): void;\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay?: number,\n repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay = 0,\n repeat = false\n): Subscription | void {\n const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction) {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n } else {\n this.unsubscribe();\n }\n }, delay);\n\n parentSubscription.add(scheduleSubscription);\n\n if (!repeat) {\n // Because user-land scheduler implementations are unlikely to properly reuse\n // Actions for repeat scheduling, we can't trust that the returned subscription\n // will control repeat subscription scenarios. So we're trying to avoid using them\n // incorrectly within this library.\n return scheduleSubscription;\n }\n}\n","export function identity(x: T): T {\n return x;\n}\n","export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');","import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n","/**\n * Checks to see if a value is not only a `Date` object,\n * but a *valid* `Date` object that can be converted to a\n * number. For example, `new Date('blah')` is indeed an\n * `instanceof Date`, however it cannot be converted to a\n * number.\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n","/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n","/** prettier */\nimport { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n // The !! is to ensure that this publicly exposed function returns\n // `false` if something like `null` or `0` is passed.\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n","import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an