{"version":3,"file":"7112840a-d44b61eeb33e15cbe33c.js","mappings":";yXAYA,SAASA,EAA2BC,EAAGC,GAAkB,IAAIC,EAAuB,oBAAXC,QAA0BH,EAAEG,OAAOC,WAAaJ,EAAE,cAAe,IAAKE,EAAI,CAAE,GAAIG,MAAMC,QAAQN,KAAOE,EAE9K,SAAqCF,EAAGO,GAAU,IAAKP,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAOQ,EAAkBR,EAAGO,GAAS,IAAIE,EAAIC,OAAOC,UAAUC,SAASC,KAAKb,GAAGc,MAAM,GAAI,GAAc,WAANL,GAAkBT,EAAEe,cAAaN,EAAIT,EAAEe,YAAYC,MAAM,GAAU,QAANP,GAAqB,QAANA,EAAa,OAAOJ,MAAMY,KAAKjB,GAAI,GAAU,cAANS,GAAqB,2CAA2CS,KAAKT,GAAI,OAAOD,EAAkBR,EAAGO,GAFnOY,CAA4BnB,KAAOC,GAAkBD,GAAyB,iBAAbA,EAAEoB,OAAqB,CAAMlB,IAAIF,EAAIE,GAAI,IAAImB,EAAI,EAAOC,EAAI,aAAiB,MAAO,CAAEC,EAAGD,EAAGb,EAAG,WAAe,OAAIY,GAAKrB,EAAEoB,OAAe,CAAEI,MAAM,GAAe,CAAEA,MAAM,EAAOC,MAAOzB,EAAEqB,OAAWK,EAAG,SAAWC,GAAS,MAAMA,GAAUC,EAAGN,GAAO,MAAM,IAAIO,UAAU,yIAA4I,IAA6CC,EAAzCC,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAET,EAAG,WAAerB,EAAKA,EAAGW,KAAKb,IAAOS,EAAG,WAAe,IAAIwB,EAAO/B,EAAGgC,OAAsC,OAA9BH,EAAmBE,EAAKT,KAAaS,GAASP,EAAG,SAAWS,GAASH,GAAS,EAAMF,EAAMK,GAAUP,EAAG,WAAe,IAAWG,GAAiC,MAAb7B,EAAGkC,QAAgBlC,EAAGkC,SAAY,QAAU,GAAIJ,EAAQ,MAAMF,KAIn+B,SAAStB,EAAkB6B,EAAKC,IAAkB,MAAPA,GAAeA,EAAMD,EAAIjB,UAAQkB,EAAMD,EAAIjB,QAAQ,IAAK,IAAIC,EAAI,EAAGkB,EAAO,IAAIlC,MAAMiC,GAAMjB,EAAIiB,EAAKjB,IAAOkB,EAAKlB,GAAKgB,EAAIhB,GAAM,OAAOkB,EAIhL,SAASC,EAAaC,GAAW,IAAIC,EAErC,WAAuC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQpC,UAAUqC,QAAQnC,KAAK8B,QAAQC,UAAUG,QAAS,IAAI,iBAAyB,EAAQ,MAAOrB,GAAK,OAAO,GAF9PuB,GAA6B,OAAO,WAAkC,IAAsCC,EAAlCC,GAAQ,OAAgBV,GAAkB,GAAIC,EAA2B,CAAE,IAAIU,GAAY,OAAgBC,MAAMtC,YAAamC,EAASP,QAAQC,UAAUO,EAAOG,UAAWF,QAAqBF,EAASC,EAAMI,MAAMF,KAAMC,WAAc,OAAO,OAA2BD,KAAMH,IAS5Z,IAAIM,EAAI,sBAuBJC,EAAoB,WACtB,SAASA,EAAK/B,IACZ,OAAgB2B,KAAMI,GAEtBJ,KAAKK,IAAMhC,EAyBb,OAtBA,OAAa+B,EAAM,CAAC,CAClBE,IAAK,kBACLlC,MAAO,WACL,OAAO,MAAQ4B,KAAKK,MAOrB,CACDC,IAAK,QACLlC,MAAO,WACL,OAAO4B,KAAKO,kBAAoB,OAASP,KAAKK,IAAM,mBAErD,CACDC,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOA,EAAEgC,MAAQL,KAAKK,QAInBD,EA7Be,GAkCxBA,EAAKI,gBAAkB,IAAIJ,EAAK,MAEhCA,EAAKK,mBAAqB,IAAIL,EAAK,0BAA2BA,EAAKM,YAAc,IAAIN,EAAK,mBAAoBA,EAAKO,UAAY,IAAIP,EAAK,aAkBxI,IAAIQ,EAAI,SAkBJC,EAAI,IAAI,KAAO,uBAEnB,SAASC,IACP,OAAOD,EAAEE,SAqBX,SAASC,EAAmB3C,GAC1B,GAAIwC,EAAEE,UAAY,WAAgB,CAChC,IAAK,IAAIE,EAAOhB,UAAUlC,OAAQmD,EAAI,IAAIlE,MAAMiE,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FD,EAAEC,EAAO,GAAKlB,UAAUkB,GAG1B,IAAI/D,EAAI8D,EAAEE,IAAIC,GACdR,EAAES,MAAMpB,MAAMW,EAAG,CAAC,cAAcU,OAAOX,EAAG,OAAOW,OAAOlD,IAAIkD,QAAO,OAAmBnE,MAI1F,SAASoE,EAAmBnD,GAC1B,GAAIwC,EAAEE,UAAY,WAAgB,CAChC,IAAK,IAAIU,EAAQxB,UAAUlC,OAAQmD,EAAI,IAAIlE,MAAMyE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACrGR,EAAEQ,EAAQ,GAAKzB,UAAUyB,GAG3B,IAAItE,EAAI8D,EAAEE,IAAIC,GACdR,EAAEc,MAAMzB,MAAMW,EAAG,CAAC,cAAcU,OAAOX,EAAG,OAAOW,OAAOlD,IAAIkD,QAAO,OAAmBnE,MAQ1F,SAASwE,EAAkBvD,GACzB,GAAIwC,EAAEE,UAAY,UAAe,CAC/B,IAAK,IAAIc,EAAQ5B,UAAUlC,OAAQmD,EAAI,IAAIlE,MAAM6E,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACrGZ,EAAEY,EAAQ,GAAK7B,UAAU6B,GAG3B,IAAI1E,EAAI8D,EAAEE,IAAIC,GACdR,EAAEkB,KAAK7B,MAAMW,EAAG,CAAC,cAAcU,OAAOX,EAAG,OAAOW,OAAOlD,IAAIkD,QAAO,OAAmBnE,MAQzF,SAASiE,EAAsBhD,GAC7B,GAAI,iBAAmBA,EAAG,OAAOA,EAEjC,IAmBE,OAAO,SAA8BA,GACnC,OAAO2D,KAAKC,UAAU5D,GADjB,CAELA,GACF,MAAO6C,GAEP,OAAO7C,GA8BX,SAAS6D,IACP,IAAI7D,EAAI4B,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,mBAGxEiB,EAAI,cAAcK,OAAOX,EAAG,iCAAmCvC,EAInE,MAAMmD,EAAmBN,GAAI,IAAIkB,MAAMlB,GAUzC,SAASmB,EAAqBhE,EAAG6C,GAC/B7C,GAAK6D,IAuBP,SAASI,EAAoBjE,EAC7B6C,GACE,OAAO7C,EAoBT,IAAIkE,EAAI,CAKNC,GAAI,KAGJC,UAAW,YAGXC,QAAS,UAQTC,iBAAkB,mBASlBC,kBAAmB,oBAGnBC,UAAW,YAMXC,eAAgB,iBAShBC,kBAAmB,oBAMnBvC,gBAAiB,kBAMjBwC,mBAAoB,qBAsBpBC,oBAAqB,sBASrBC,QAAS,UAiBTC,aAAc,eAGdC,cAAe,gBAMfC,SAAU,WASVC,YAAa,cAGbC,UAAW,aAITC,EAA8B,SAAUC,IAC1C,OAAUD,EAAgBC,GAE1B,IAAIC,EAASvE,EAAaqE,GAG1B,SAASA,EAITnF,EAIA6C,GACE,IAAIyC,EAUJ,OARA,OAAgB3D,KAAMwD,IAEtBG,EAAQD,EAAOlG,KAAKwC,KAAM3B,EAAG6C,IAAU0C,KAAOvF,EAAGsF,EAAME,QAAU3C,EAGjEyC,EAAMpG,SAAW,WACf,MAAO,GAAGgE,OAAOoC,EAAMhG,KAAM,YAAY4D,OAAOoC,EAAMC,KAAM,OAAOrC,OAAOoC,EAAME,UAE3EF,EAGT,OAAO,OAAaH,GA5BY,CA6BhC,MAmBEM,GAAkC,QAAa,SAASA,IAC1D,IAAIC,EAAS/D,MAEb,OAAgBA,KAAM8D,GAEtB9D,KAAKgE,QAAU,IAAIC,SAAQ,SAAU5F,EAAG6C,GACtC6C,EAAOG,QAAU7F,EAAG0F,EAAOI,OAASjD,QAqBpCkD,GAAoC,QAAa,SAASA,EAAqB/F,EAAG6C,IACpF,OAAgBlB,KAAMoE,GAEtBpE,KAAKqE,KAAOnD,EAAGlB,KAAKsE,KAAO,QAAStE,KAAKuE,QAAU,IAAIC,IAAOxE,KAAKuE,QAAQE,IAAI,gBAAiB,UAAUlD,OAAOlD,OAQ/GqG,EAAsD,WACxD,SAASA,KACP,OAAgB1E,KAAM0E,GAwBxB,OArBA,OAAaA,EAAwC,CAAC,CACpDpE,IAAK,WACLlC,MAAO,WACL,OAAO6F,QAAQC,QAAQ,QAExB,CACD5D,IAAK,kBACLlC,MAAO,cACN,CACDkC,IAAK,QACLlC,MAAO,SAAeC,EAAG6C,GAEvB7C,EAAEsG,kBAAiB,WACjB,OAAOzD,EAAEd,EAAKI,sBAGjB,CACDF,IAAK,WACLlC,MAAO,gBAGFsG,EA1BiD,GAkCtDE,EAAyD,WAC3D,SAASA,EAA0CvG,IACjD,OAAgB2B,KAAM4E,GAEtB5E,KAAK6E,MAAQxG,EAMb2B,KAAK8E,eAAiB,KA4BxB,OAzBA,OAAaF,EAA2C,CAAC,CACvDtE,IAAK,WACLlC,MAAO,WACL,OAAO6F,QAAQC,QAAQlE,KAAK6E,SAE7B,CACDvE,IAAK,kBACLlC,MAAO,cACN,CACDkC,IAAK,QACLlC,MAAO,SAAeC,EAAG6C,GACvB,IAAI6D,EAAS/E,KAEbA,KAAK8E,eAAiB5D,EACtB7C,EAAEsG,kBAAiB,WACjB,OAAOzD,EAAE6D,EAAOF,MAAMR,WAGzB,CACD/D,IAAK,WACLlC,MAAO,WACL4B,KAAK8E,eAAiB,SAInBF,EAtCoD,GAyCzDI,EAAyD,WAC3D,SAASA,EAA0C3G,IACjD,OAAgB2B,KAAMgF,GAEtBhF,KAAKkB,EAAI7C,EAET2B,KAAKiF,YAAc7E,EAAKI,gBAKxBR,KAAKhC,EAAI,EAAGgC,KAAKkF,cAAe,EAAIlF,KAAKmF,KAAO,KA0GlD,OAvGA,OAAaH,EAA2C,CAAC,CACvD1E,IAAK,QACLlC,MAAO,SAAeC,EAAG6C,GACvB,IAAIkE,EAASpF,KAET5C,EAAI4C,KAAKhC,EAETqH,EAAkC,SAAyChH,GAC7E,OAAO+G,EAAOpH,IAAMZ,GAAKA,EAAIgI,EAAOpH,EAAGkD,EAAE7C,IAAM4F,QAAQC,WAKrDoB,EAAI,IAAIxB,EAEZ9D,KAAKrD,EAAI,WACPyI,EAAOpH,IAAKoH,EAAOH,YAAcG,EAAOG,IAAKD,EAAEpB,UAAWoB,EAAI,IAAIxB,EAAsBzF,EAAEsG,kBAAiB,WACzG,OAAOU,EAAgCD,EAAOH,iBAIlD,IAAIO,EAA2B,WAC7B,IAAItE,EAAIoE,EACRjH,EAAEsG,kBAA+B,OAAgC,UAAyB,SAASc,IACjG,OAAO,UAAyB,SAAkBC,GAChD,OACE,OAAQA,EAASC,KAAOD,EAAS7G,MAC/B,KAAK,EAEH,OADA6G,EAAS7G,KAAO,EACTqC,EAAE8C,QAEX,KAAK,EAEH,OADA0B,EAAS7G,KAAO,EACTwG,EAAgCD,EAAOH,aAEhD,KAAK,EACL,IAAK,MACH,OAAOS,EAASE,UAGrBH,SAGHI,EAAyB,SAAgCxH,GAC3D2C,EAAmB,kCAAmC,iBAAkBoE,EAAOD,KAAO9G,EAAG+G,EAAOD,KAAKW,qBAAqBV,EAAOzI,GAAI6I,KAGvIxF,KAAKkB,EAAE6E,QAAO,SAAU1H,GACtB,OAAOwH,EAAuBxH,MAIhC2H,YAAW,WACT,IAAKZ,EAAOD,KAAM,CAChB,IAAIc,EAAMb,EAAOlE,EAAEgF,aAAa,CAC9BC,UAAU,IAGZF,EAAMJ,EAAuBI,IAC7BjF,EAAmB,kCAAmC,yBAA0BsE,EAAEpB,UAAWoB,EAAI,IAAIxB,MAEtG,GAAI0B,MAER,CACDlF,IAAK,WACLlC,MAAO,WACL,IAAIgI,EAASpG,KAKT3B,EAAI2B,KAAKhC,EACTkD,EAAIlB,KAAKkF,aACb,OAAOlF,KAAKkF,cAAe,EAAIlF,KAAKmF,KAAOnF,KAAKmF,KAAKkB,SAASnF,GAAGoF,MAAK,SAAUpF,GAC9E,OAGEkF,EAAOpI,IAAMK,GAAK2C,EAAmB,kCAAmC,yCAA0CoF,EAAOC,YAAcnF,GAAKmB,EAAqB,iBAAmBnB,EAAEqF,aAAc,IAAInC,EAAqBlD,EAAEqF,YAAaH,EAAOnB,cAAgB,QAElQhB,QAAQC,QAAQ,QAEtB,CACD5D,IAAK,kBACLlC,MAAO,WACL4B,KAAKkF,cAAe,IAErB,CACD5E,IAAK,WACLlC,MAAO,WACL4B,KAAKmF,MAAQnF,KAAKmF,KAAKqB,wBAAwBxG,KAAKrD,KAMrD,CACD2D,IAAK,IACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAKmF,MAAQnF,KAAKmF,KAAKsB,SAC/B,OAAOpE,EAAqB,OAAShE,GAAK,iBAAmBA,GAAI,IAAI+B,EAAK/B,OAIvE2G,EArHoD,GAgIzD0B,EAAyC,WAC3C,SAASA,EAA0BrI,EAAG6C,EAAG9D,IACvC,OAAgB4C,KAAM0G,GAEtB1G,KAAK2G,EAAItI,EAAG2B,KAAK4G,EAAI1F,EAAGlB,KAAK6G,EAAIzJ,EAAG4C,KAAKsE,KAAO,aAActE,KAAKqE,KAAOjE,EAAKM,YAAaV,KAAK8G,EAAI,IAAItC,IAuB3G,OAfA,OAAakC,EAA2B,CAAC,CACvCpG,IAAK,IACLlC,MAAO,WACL,OAAO4B,KAAK6G,EAAI7G,KAAK6G,IAAM,OAE5B,CACDvG,IAAK,UACLyG,IAAK,WACH/G,KAAK8G,EAAErC,IAAI,kBAAmBzE,KAAK2G,GAEnC,IAAItI,EAAI2B,KAAKgH,IACb,OAAO3I,GAAK2B,KAAK8G,EAAErC,IAAI,gBAAiBpG,GAAI2B,KAAK4G,GAAK5G,KAAK8G,EAAErC,IAAI,iCAAkCzE,KAAK4G,GAAI5G,KAAK8G,MAI9GJ,EA3BoC,GAoCzCO,EAA2D,WAC7D,SAASA,EAA4C5I,EAAG6C,EAAG9D,IACzD,OAAgB4C,KAAMiH,GAEtBjH,KAAK2G,EAAItI,EAAG2B,KAAK4G,EAAI1F,EAAGlB,KAAK6G,EAAIzJ,EAwBnC,OArBA,OAAa6J,EAA6C,CAAC,CACzD3G,IAAK,WACLlC,MAAO,WACL,OAAO6F,QAAQC,QAAQ,IAAIwC,EAA0B1G,KAAK2G,EAAG3G,KAAK4G,EAAG5G,KAAK6G,MAE3E,CACDvG,IAAK,QACLlC,MAAO,SAAeC,EAAG6C,GAEvB7C,EAAEsG,kBAAiB,WACjB,OAAOzD,EAAEd,EAAKM,kBAGjB,CACDJ,IAAK,WACLlC,MAAO,cACN,CACDkC,IAAK,kBACLlC,MAAO,gBAGF6I,EA5BsD,GA+B3DC,GAA6B,QAAa,SAASA,EAAc7I,IACnE,OAAgB2B,KAAMkH,GAEtBlH,KAAK5B,MAAQC,EAAG2B,KAAKsE,KAAO,WAAYtE,KAAKuE,QAAU,IAAIC,IAAOnG,GAAKA,EAAEN,OAAS,GAAKiC,KAAKuE,QAAQE,IAAI,sBAAuBzE,KAAK5B,UAGlI+I,EAAuD,WACzD,SAASA,EAAwC9I,IAC/C,OAAgB2B,KAAMmH,GAEtBnH,KAAKoH,EAAI/I,EAAG2B,KAAKkF,cAAe,EAAIlF,KAAKqH,SAAW,KAAMrH,KAAKsH,EAAI,KA6DrE,OA1DA,OAAaH,EAAyC,CAAC,CACrD7G,IAAK,QACLlC,MAAO,SAAeC,EAAG6C,GACvB,IAAIqG,EAASvH,KAETwH,EAAiB,SAAwBnJ,GAC3C,MAAQA,EAAEsD,OAASX,EAAmB,gCAAiC,0EAA0EO,OAAOlD,EAAEsD,MAAMkC,UAChK,IAAIzG,EAAIiB,EAAEwG,QAAU0C,EAAOD,EAC3B,OAAOC,EAAOD,EAAIjJ,EAAEwG,MAAO7D,EAAmB,gCAAiC,YAAYO,OAAOnE,EAAI,MAAQ,WAAY,YAAaA,EAAI8D,EAAE7C,EAAEwG,OAASZ,QAAQC,WAGlKlE,KAAKrD,EAAI,SAAUuE,GACjB7C,EAAEsG,kBAAiB,WACjB,OAAO6C,EAAetG,OAI1B,IAAIuG,EAA6B,SAAoCpJ,GACnE2C,EAAmB,gCAAiC,qBAAsBuG,EAAOF,SAAWhJ,EAAGkJ,EAAOF,SAASK,iBAAiBH,EAAO5K,IAGzIqD,KAAKoH,EAAErB,QAAO,SAAU1H,GACtB,OAAOoJ,EAA2BpJ,MAGpC2H,YAAW,WACT,IAAKuB,EAAOF,SAAU,CACpB,IAAIM,EAAMJ,EAAOH,EAAElB,aAAa,CAC9BC,UAAU,IAGZwB,EAAMF,EAA2BE,GACjC3G,EAAmB,gCAAiC,gCAErD,KAEJ,CACDV,IAAK,WACLlC,MAAO,WACL,IAAIwJ,EAAS5H,KAET3B,EAAI2B,KAAKkF,aACb,OAAOlF,KAAKkF,cAAe,EAAIlF,KAAKqH,SAAWrH,KAAKqH,SAAShB,SAAShI,GAAGiI,MAAK,SAAUjI,GACtF,OAAOA,GAAKgE,EAAqB,iBAAmBhE,EAAEwG,OAAQ+C,EAAON,EAAIjJ,EAAEwG,MAAO,IAAIqC,EAAc7I,EAAEwG,QAAU,QAC7GZ,QAAQC,QAAQ,QAEtB,CACD5D,IAAK,kBACLlC,MAAO,WACL4B,KAAKkF,cAAe,IAErB,CACD5E,IAAK,WACLlC,MAAO,WACL4B,KAAKqH,UAAYrH,KAAKqH,SAASQ,oBAAoB7H,KAAKrD,OAIrDwK,EAjEkD,GA6H3D,SAASW,EAAsBzJ,GAE7B,IAAI6C,EACJ,oBAAsB6G,OAASA,KAAKC,QAAUD,KAAKE,UAC/C7K,EAAI,IAAI8K,WAAW7J,GACvB,GAAI6C,GAAK,mBAAqBA,EAAEiH,gBAAiBjH,EAAEiH,gBAAgB/K,QACjE,IAAK,IAAIgL,EAAK,EAAGA,EAAK/J,EAAG+J,IACvBhL,EAAEgL,GAAMC,KAAKC,MAAM,IAAMD,KAAKE,UAElC,OAAOnL,EA2BT,IAAIoL,EAAgC,WAClC,SAASA,KACP,OAAgBxI,KAAMwI,GA0BxB,OAvBA,OAAaA,EAAkB,KAAM,CAAC,CACpClI,IAAK,QACLlC,MAAO,WAOL,IALA,IAAIC,EAAI,iEACJ6C,EAAImH,KAAKC,MAAM,IAAMjK,EAAEN,QAAUM,EAAEN,OAEnCX,EAAI,GAEDA,EAAEW,OAAS,IAGhB,IAFA,IAAIuH,EAAIwC,EAAsB,IAErB9J,EAAI,EAAGA,EAAIsH,EAAEvH,SAAUC,EAG9BZ,EAAEW,OAAS,IAAMuH,EAAEtH,GAAKkD,IAAM9D,GAAKiB,EAAEoK,OAAOnD,EAAEtH,GAAKK,EAAEN,SAIzD,OAAOX,MAIJoL,EA5B2B,GA+BpC,SAASE,EAA8BrK,EAAG6C,GACxC,OAAO7C,EAAI6C,GAAK,EAAI7C,EAAI6C,EAAI,EAAI,EAKlC,SAASyH,EAAsBtK,EAAG6C,EAAG9D,GACnC,OAAOiB,EAAEN,SAAWmD,EAAEnD,QAAUM,EAAEuK,OAAM,SAAUvK,EAAGiH,GACnD,OAAOlI,EAAEiB,EAAG6C,EAAEoE,OA+ClB,IAAIuD,EAAyB,WAY3B,SAASA,EAITxK,EAIA6C,GAGE,IAFA,OAAgBlB,KAAM6I,GAElB7I,KAAK8I,QAAUzK,EAAG2B,KAAK+I,YAAc7H,EAAGA,EAAI,EAAG,MAAM,IAAIsC,EAAejB,EAAEI,iBAAkB,uCAAyCzB,GACzI,GAAIA,GAAK,IAAK,MAAM,IAAIsC,EAAejB,EAAEI,iBAAkB,uCAAyCzB,GACpG,GAAI7C,GAAK,YAAa,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,mCAAqCtE,GAExG,GAAIA,GAAK,aAAc,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,mCAAqCtE,GA8H3G,OArHA,OAAawK,EAAW,CAAC,CACvBvI,IAAK,SACLlC,MASA,WACE,OAAO,IAAI4K,KAAKhJ,KAAKiJ,cAUtB,CACD3I,IAAK,WACLlC,MAAO,WACL,OAAO,IAAM4B,KAAK8I,QAAU9I,KAAK+I,YAAc,MAEhD,CACDzI,IAAK,aACLlC,MAAO,SAAoBC,GACzB,OAAO2B,KAAK8I,UAAYzK,EAAEyK,QAAUJ,EAA8B1I,KAAK+I,YAAa1K,EAAE0K,aAAeL,EAA8B1I,KAAK8I,QAASzK,EAAEyK,WASpJ,CACDxI,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOA,EAAEyK,UAAY9I,KAAK8I,SAAWzK,EAAE0K,cAAgB/I,KAAK+I,cAI7D,CACDzI,IAAK,WACLlC,MAAO,WACL,MAAO,qBAAuB4B,KAAK8I,QAAU,iBAAmB9I,KAAK+I,YAAc,MAIpF,CACDzI,IAAK,SACLlC,MAAO,WACL,MAAO,CACL0K,QAAS9I,KAAK8I,QACdC,YAAa/I,KAAK+I,eAQrB,CACDzI,IAAK,UACLlC,MAAO,WAQL,IAAIC,EAAI2B,KAAK8I,UAAW,YAGxB,OAAOI,OAAO7K,GAAG8K,SAAS,GAAI,KAAO,IAAMD,OAAOlJ,KAAK+I,aAAaI,SAAS,EAAG,QAEhF,CAAC,CACH7I,IAAK,MACLlC,MAAO,WACL,OAAOyK,EAAUO,WAAWJ,KAAKK,SAUlC,CACD/I,IAAK,WACLlC,MAAO,SAAkBC,GACvB,OAAOwK,EAAUO,WAAW/K,EAAEiL,aAW/B,CACDhJ,IAAK,aACLlC,MAAO,SAAoBC,GACzB,IAAI6C,EAAImH,KAAKC,MAAMjK,EAAI,KAEvB,OAAO,IAAIwK,EAAU3H,EADbmH,KAAKC,MAAM,KAAOjK,EAAI,IAAM6C,SAKjC2H,EAzJoB,GAkLzBU,EAA+B,WACjC,SAASA,EAAgBlL,IACvB,OAAgB2B,KAAMuJ,GAEtBvJ,KAAKwJ,UAAYnL,EAgDnB,OA7CA,OAAakL,EAAiB,CAAC,CAC7BjJ,IAAK,YACLlC,MAAO,SAAmBC,GACxB,OAAO2B,KAAKwJ,UAAUC,WAAWpL,EAAEmL,aAEpC,CACDlJ,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKwJ,UAAUE,QAAQrL,EAAEmL,aAIjC,CACDlJ,IAAK,iBACLlC,MAAO,WAEL,OAAO,IAAM4B,KAAKwJ,UAAUV,QAAU9I,KAAKwJ,UAAUT,YAAc,MAEpE,CACDzI,IAAK,WACLlC,MAAO,WACL,MAAO,mBAAqB4B,KAAKwJ,UAAUjM,WAAa,MAEzD,CACD+C,IAAK,cACLlC,MAAO,WACL,OAAO4B,KAAKwJ,aAEZ,CAAC,CACHlJ,IAAK,gBACLlC,MAAO,SAAuBC,GAC5B,OAAO,IAAIkL,EAAgBlL,KAE5B,CACDiC,IAAK,MACLlC,MAAO,WACL,OAAO,IAAImL,EAAgB,IAAIV,EAAU,EAAG,MAE7C,CACDvI,IAAK,MACLlC,MAAO,WACL,OAAO,IAAImL,EAAgB,IAAIV,EAAU,aAAc,gBAIpDU,EApD0B,GA4E/BI,EAAwB,WAC1B,SAASA,EAAStL,EAAG6C,EAAG9D,IACtB,OAAgB4C,KAAM2J,QAEtB,IAAWzI,EAAIA,EAAI,EAAIA,EAAI7C,EAAEN,QAAUmE,SAAQ,IAAW9E,EAAIA,EAAIiB,EAAEN,OAASmD,EAAI9D,EAAIiB,EAAEN,OAASmD,GAAKgB,IAAQlC,KAAK4J,SAAWvL,EAAG2B,KAAK6J,OAAS3I,EAAGlB,KAAKf,IAAM7B,EA6G9J,OA1GA,OAAauM,EAAU,CAAC,CACtBrJ,IAAK,SACLyG,IAAK,WACH,OAAO/G,KAAKf,MAEb,CACDqB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO,IAAMsL,EAASG,WAAW9J,KAAM3B,KAExC,CACDiC,IAAK,QACLlC,MAAO,SAAeC,GACpB,IAAI6C,EAAIlB,KAAK4J,SAASnM,MAAMuC,KAAK6J,OAAQ7J,KAAK+J,SAC9C,OAAO1L,aAAasL,EAAWtL,EAAE2L,SAAQ,SAAU3L,GACjD6C,EAAE+I,KAAK5L,MACJ6C,EAAE+I,KAAK5L,GAAI2B,KAAKT,UAAU2B,KAIhC,CACDZ,IAAK,QACLlC,MAAO,WACL,OAAO4B,KAAK6J,OAAS7J,KAAKjC,SAE3B,CACDuC,IAAK,WACLlC,MAAO,SAAkBC,GACvB,OAAOA,OAAI,IAAWA,EAAI,EAAIA,EAAG2B,KAAKT,UAAUS,KAAK4J,SAAU5J,KAAK6J,OAASxL,EAAG2B,KAAKjC,OAASM,KAE/F,CACDiC,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKT,UAAUS,KAAK4J,SAAU5J,KAAK6J,OAAQ7J,KAAKjC,OAAS,KAEjE,CACDuC,IAAK,eACLlC,MAAO,WACL,OAAO4B,KAAK4J,SAAS5J,KAAK6J,UAE3B,CACDvJ,IAAK,cACLlC,MAAO,WACL,OAAO4B,KAAK+G,IAAI/G,KAAKjC,OAAS,KAE/B,CACDuC,IAAK,MACLlC,MAAO,SAAaC,GAClB,OAAO2B,KAAK4J,SAAS5J,KAAK6J,OAASxL,KAEpC,CACDiC,IAAK,UACLlC,MAAO,WACL,OAAO,IAAM4B,KAAKjC,SAEnB,CACDuC,IAAK,aACLlC,MAAO,SAAoBC,GACzB,GAAIA,EAAEN,OAASiC,KAAKjC,OAAQ,OAAO,EAEnC,IAAK,IAAImD,EAAI,EAAGA,EAAIlB,KAAKjC,OAAQmD,IAC/B,GAAIlB,KAAK+G,IAAI7F,KAAO7C,EAAE0I,IAAI7F,GAAI,OAAO,EAGvC,OAAO,IAER,CACDZ,IAAK,sBACLlC,MAAO,SAA6BC,GAClC,GAAI2B,KAAKjC,OAAS,IAAMM,EAAEN,OAAQ,OAAO,EAEzC,IAAK,IAAImD,EAAI,EAAGA,EAAIlB,KAAKjC,OAAQmD,IAC/B,GAAIlB,KAAK+G,IAAI7F,KAAO7C,EAAE0I,IAAI7F,GAAI,OAAO,EAGvC,OAAO,IAER,CACDZ,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAK,IAAI6C,EAAIlB,KAAK6J,OAAQzM,EAAI4C,KAAK+J,QAAS7I,EAAI9D,EAAG8D,IACjD7C,EAAE2B,KAAK4J,SAAS1I,MAGnB,CACDZ,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAK4J,SAASnM,MAAMuC,KAAK6J,OAAQ7J,KAAK+J,YAE7C,CAAC,CACHzJ,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAG5B,IAFA,IAAI9D,EAAIiL,KAAK6B,IAAI7L,EAAEN,OAAQmD,EAAEnD,QAEpBuH,EAAI,EAAGA,EAAIlI,EAAGkI,IAAK,CAC1B,IAAI6E,EAAK9L,EAAE0I,IAAIzB,GACXtH,EAAIkD,EAAE6F,IAAIzB,GAEd,GAAI6E,EAAKnM,EAAG,OAAQ,EACpB,GAAImM,EAAKnM,EAAG,OAAO,EAGrB,OAAOK,EAAEN,OAASmD,EAAEnD,QAAU,EAAIM,EAAEN,OAASmD,EAAEnD,OAAS,EAAI,MAIzD4L,EAjHmB,GA2HxBS,GAA4B,SAAUC,IACxC,OAAUD,EAAcC,GAExB,IAAIC,EAAUnL,EAAaiL,GAE3B,SAASA,IAGP,OAFA,OAAgBpK,KAAMoK,GAEfE,EAAQpK,MAAMF,KAAMC,WAoE7B,OAjEA,OAAamK,EAAc,CAAC,CAC1B9J,IAAK,YACLlC,MAAO,SAAmBC,EAAG6C,EAAG9D,GAC9B,OAAO,IAAIgN,EAAa/L,EAAG6C,EAAG9D,KAE/B,CACDkD,IAAK,kBACLlC,MAAO,WAIL,OAAO4B,KAAKuK,UAAUC,KAAK,OAE5B,CACDlK,IAAK,WACLlC,MAAO,WACL,OAAO4B,KAAKyK,oBAQb,CACDnK,IAAK,qBACLlC,MAAO,WACL,OAAO4B,KAAKuK,UAAUnJ,IAAIsJ,oBAAoBF,KAAK,QAQnD,CAAC,CACHlK,IAAK,aACLlC,MAAO,WAML,IAFA,IAAI8C,EAAI,GAECyJ,EAAQ1K,UAAUlC,OAAQM,EAAI,IAAIrB,MAAM2N,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACjFvM,EAAEuM,GAAS3K,UAAU2K,GAGvB,IAAK,IAAIC,EAAK,EAAGC,EAAMzM,EAAGwM,EAAKC,EAAI/M,OAAQ8M,IAAM,CAC/C,IAAIzN,EAAI0N,EAAID,GACZ,GAAIzN,EAAE2N,QAAQ,OAAS,EAAG,MAAM,IAAIvH,EAAejB,EAAEI,iBAAkB,oBAAoBpB,OAAOnE,EAAG,0CAErG8D,EAAE+I,KAAK/J,MAAMgB,GAAG,OAAmB9D,EAAE4N,MAAM,KAAKC,QAAO,SAAU5M,GAC/D,OAAOA,EAAEN,OAAS,OAItB,OAAO,IAAIqM,EAAalJ,KAEzB,CACDZ,IAAK,YACLlC,MAAO,WACL,OAAO,IAAIgM,EAAa,QAIrBA,EA5EuB,CA6E9BT,GAEEuB,GAAI,2BAMJC,GAA2B,SAAUC,IACvC,OAAUD,EAAaC,GAEvB,IAAIC,EAAUlM,EAAagM,GAE3B,SAASA,IAGP,OAFA,OAAgBnL,KAAMmL,GAEfE,EAAQnL,MAAMF,KAAMC,WA8F7B,OA3FA,OAAakL,EAAa,CAAC,CACzB7K,IAAK,YACLlC,MAAO,SAAmBC,EAAG6C,EAAG9D,GAC9B,OAAO,IAAI+N,EAAY9M,EAAG6C,EAAG9D,KAO9B,CACDkD,IAAK,kBACLlC,MAAO,WACL,OAAO4B,KAAKuK,UAAUnJ,KAAI,SAAU/C,GAClC,OAAOA,EAAIA,EAAEiN,QAAQ,MAAO,QAAQA,QAAQ,KAAM,OAAQH,EAAYI,kBAAkBlN,KAAOA,EAAI,IAAMA,EAAI,KAAMA,KAClHmM,KAAK,OAET,CACDlK,IAAK,WACLlC,MAAO,WACL,OAAO4B,KAAKyK,oBAMb,CACDnK,IAAK,aACLlC,MAAO,WACL,OAAO,IAAM4B,KAAKjC,QAAU,aAAeiC,KAAK+G,IAAI,MAMpD,CAAC,CACHzG,IAAK,oBACLlC,MAAO,SAA2BC,GAChC,OAAO6M,GAAErN,KAAKQ,KAEf,CACDiC,IAAK,WACLlC,MAAO,WACL,OAAO,IAAI+M,EAAY,CAAC,eAazB,CACD7K,IAAK,mBACLlC,MAAO,SAA0BC,GAY/B,IAXA,IAAI6C,EAAI,GACJ9D,EAAI,GACJkI,EAAI,EAEJkG,EAA8B,WAChC,GAAI,IAAMpO,EAAEW,OAAQ,MAAM,IAAIyF,EAAejB,EAAEI,iBAAkB,uBAAuBpB,OAAOlD,EAAG,8EAClG6C,EAAE+I,KAAK7M,GAAIA,EAAI,IAGbY,GAAI,EAEDsH,EAAIjH,EAAEN,QAAS,CACpB,IAAI0N,EAAMpN,EAAEiH,GAEZ,GAAI,OAASmG,EAAK,CAChB,GAAInG,EAAI,IAAMjH,EAAEN,OAAQ,MAAM,IAAIyF,EAAejB,EAAEI,iBAAkB,uCAAyCtE,GAC9G,IAAIqN,EAAMrN,EAAEiH,EAAI,GAChB,GAAI,OAASoG,GAAO,MAAQA,GAAO,MAAQA,EAAK,MAAM,IAAIlI,EAAejB,EAAEI,iBAAkB,qCAAuCtE,GACpIjB,GAAKsO,EAAKpG,GAAK,MACV,MAAQmG,GAAOzN,GAAKA,EAAGsH,KAAO,MAAQmG,GAAOzN,GAAKZ,GAAKqO,EAAKnG,MAAQkG,IAA+BlG,KAG5G,GAAIkG,IAA+BxN,EAAG,MAAM,IAAIwF,EAAejB,EAAEI,iBAAkB,2BAA6BtE,GAChH,OAAO,IAAI8M,EAAYjK,KAExB,CACDZ,IAAK,YACLlC,MAAO,WACL,OAAO,IAAI+M,EAAY,QAIpBA,EAtGsB,CAuG7BxB,GAuBEgC,GAA2B,WAC7B,SAASA,EAAYtN,IACnB,OAAgB2B,KAAM2L,GAEtB3L,KAAK4L,KAAOvN,EA8Ed,OA3EA,OAAasN,EAAa,CAAC,CACzBrL,IAAK,kBACLyG,IAAK,WACH,OAAO/G,KAAK4L,KAAKC,UAAUC,gBAI5B,CACDxL,IAAK,kBACLlC,MAAO,SAAyBC,GAC9B,OAAO2B,KAAK4L,KAAK7N,QAAU,GAAKiC,KAAK4L,KAAK7E,IAAI/G,KAAK4L,KAAK7N,OAAS,KAAOM,IAIzE,CACDiC,IAAK,qBACLlC,MAAO,WACL,OAAO4B,KAAK4L,KAAK7E,IAAI/G,KAAK4L,KAAK7N,OAAS,KAIzC,CACDuC,IAAK,oBACLlC,MAAO,WACL,OAAO4B,KAAK4L,KAAKC,YAElB,CACDvL,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO,OAASA,GAAK,IAAM+L,GAAaN,WAAW9J,KAAK4L,KAAMvN,EAAEuN,QAEjE,CACDtL,IAAK,WACLlC,MAAO,WACL,OAAO4B,KAAK4L,KAAKrO,cAEjB,CAAC,CACH+C,IAAK,WACLlC,MAAO,SAAkBC,GACvB,OAAO,IAAIsN,EAAYvB,GAAa2B,WAAW1N,MAEhD,CACDiC,IAAK,WACLlC,MAAO,SAAkBC,GACvB,OAAO,IAAIsN,EAAYvB,GAAa2B,WAAW1N,GAAG2N,SAAS,MAE5D,CACD1L,IAAK,QACLlC,MAAO,WACL,OAAO,IAAIuN,EAAYvB,GAAa6B,eAErC,CACD3L,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAC5B,OAAOkJ,GAAaN,WAAWzL,EAAEuN,KAAM1K,EAAE0K,QAE1C,CACDtL,IAAK,gBACLlC,MAAO,SAAuBC,GAC5B,OAAOA,EAAEN,OAAS,GAAK,IASxB,CACDuC,IAAK,eACLlC,MAAO,SAAsBC,GAC3B,OAAO,IAAIsN,EAAY,IAAIvB,GAAa/L,EAAEZ,cAIvCkO,EAlFsB,GAuH3BO,IAA0B,QAAa,SAASA,EAKpD7N,EAEA6C,EAEA9D,EAEAkI,IACE,OAAgBtF,KAAMkM,GAEtBlM,KAAKmM,QAAU9N,EAAG2B,KAAKoM,gBAAkBlL,EAAGlB,KAAKqM,OAASjP,EAAG4C,KAAKsM,WAAahH,KAkDjF4G,GAAWK,YAAc,EAqDzB,SAASC,GAA8CnO,EAAG6C,GAOxD,IAAI9D,EAAIiB,EAAEoO,cAAc3D,QACpBxD,EAAIjH,EAAEoO,cAAc1D,YAAc,EAClC/K,EAAIuL,EAAgBmD,cAAc,MAAQpH,EAAI,IAAIuD,EAAUzL,EAAI,EAAG,GAAK,IAAIyL,EAAUzL,EAAGkI,IAC7F,OAAO,IAAIqH,GAAY3O,EAAG2N,GAAYiB,QAAS1L,GAKjD,SAAS2L,GAAqCxO,GAC5C,OAAO,IAAIsO,GAAYtO,EAAEyO,SAAUzO,EAAEiC,KAAM,GAQ7C,IAAIqM,GAA2B,WAC7B,SAASA,EAKTtO,EAKA6C,EAIA9D,IACE,OAAgB4C,KAAM2M,GAEtB3M,KAAK8M,SAAWzO,EAAG2B,KAAK+M,YAAc7L,EAAGlB,KAAKgN,eAAiB5P,EAmBjE,OAdA,OAAauP,EAAa,KAAM,CAAC,CAC/BrM,IAAK,MACLlC,MAAO,WACL,OAAO,IAAIuO,EAAYpD,EAAgBW,MAAOyB,GAAYiB,SAAU,KAIrE,CACDtM,IAAK,MACLlC,MAAO,WACL,OAAO,IAAIuO,EAAYpD,EAAgB0D,MAAOtB,GAAYiB,SAAU,OAIjED,EArCsB,GAwC/B,SAASO,GAAgC7O,EAAG6C,GAC1C,IAAI9D,EAAIiB,EAAEyO,SAASK,UAAUjM,EAAE4L,UAC/B,OAAO,IAAM1P,EAAIA,EAA+D,KAA1DA,EAAIuO,GAAY7B,WAAWzL,EAAE0O,YAAa7L,EAAE6L,cAAwB3P,EAAIsL,EAA8BrK,EAAE2O,eAAgB9L,EAAE8L,gBAoBlJ,IAAII,GAAI,4HAUJC,GAAsC,WACxC,SAASA,KACP,OAAgBrN,KAAMqN,GAEtBrN,KAAKsN,qBAAuB,GAiB9B,OAdA,OAAaD,EAAwB,CAAC,CACpC/M,IAAK,yBACLlC,MAAO,SAAgCC,GACrC2B,KAAKsN,qBAAqBrD,KAAK5L,KAEhC,CACDiC,IAAK,wBACLlC,MAAO,WACL4B,KAAKsN,qBAAqBtD,SAAQ,SAAU3L,GAC1C,OAAOA,WAKNgP,EArBiC,GAoD1C,SAASE,GAAmCC,GAC1C,OAAOC,GAAkCvN,MAAMF,KAAMC,WAkCvD,SAASwN,KAuBP,OAtBAA,IAAoC,OAAgC,UAAyB,SAASC,EAAUrP,GAC9G,OAAO,UAAyB,SAAoBsP,GAClD,OACE,OAAQA,EAAWhI,KAAOgI,EAAW9O,MACnC,KAAK,EACH,GAAMR,EAAEuF,OAASrB,EAAEU,qBAAuB5E,EAAEwF,UAAYuJ,GAAI,CAC1DO,EAAW9O,KAAO,EAClB,MAGF,MAAMR,EAER,KAAK,EACH2C,EAAmB,aAAc,mCAEnC,KAAK,EACL,IAAK,MACH,OAAO2M,EAAW/H,UAGvB8H,QAEoCxN,MAAMF,KAAMC,WAGvD,IAAI2N,GAAkC,WACpC,SAASA,EAAmBvP,GAC1B,IAAIwP,EAAS7N,MAEb,OAAgBA,KAAM4N,GAItB5N,KAAK8N,aAAe,KAAM9N,KAAK+N,cAAgB,KAC/C/N,KAAKH,YAAS,EAAQG,KAAK2B,WAAQ,EAAQ3B,KAAKgO,QAAS,EAEzDhO,KAAKiO,kBAAmB,EAAI5P,GAAE,SAAUA,GACtCwP,EAAOG,QAAS,EAAIH,EAAOhO,OAASxB,EAAGwP,EAAOC,cAE9CD,EAAOC,aAAazP,MACnB,SAAUA,GACXwP,EAAOG,QAAS,EAAIH,EAAOlM,MAAQtD,EAAGwP,EAAOE,eAAiBF,EAAOE,cAAc1P,MAmLvF,OA/KA,OAAauP,EAAoB,CAAC,CAChCtN,IAAK,QACLlC,MAAO,SAAgBC,GACrB,OAAO2B,KAAKnB,UAAK,EAAQR,KAE1B,CACDiC,IAAK,OACLlC,MAAO,SAAcC,EAAG6C,GACtB,IAAIgN,EAASlO,KAEb,OAAOA,KAAKiO,kBAAoB/L,IAAQlC,KAAKiO,kBAAmB,EAAIjO,KAAKgO,OAAShO,KAAK2B,MAAQ3B,KAAKmO,YAAYjN,EAAGlB,KAAK2B,OAAS3B,KAAKoO,YAAY/P,EAAG2B,KAAKH,QAAU,IAAI+N,GAAmB,SAAUxQ,EAAGkI,GACtM4I,EAAOJ,aAAe,SAAU5M,GAC9BgN,EAAOE,YAAY/P,EAAG6C,GAAGrC,KAAKzB,EAAGkI,IAChC4I,EAAOH,cAAgB,SAAU1P,GAClC6P,EAAOC,YAAYjN,EAAG7C,GAAGQ,KAAKzB,EAAGkI,SAItC,CACDhF,IAAK,YACLlC,MAAO,WACL,IAAIiQ,EAAUrO,KAEd,OAAO,IAAIiE,SAAQ,SAAU5F,EAAG6C,GAC9BmN,EAAQxP,KAAKR,EAAG6C,QAGnB,CACDZ,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,IACE,IAAI6C,EAAI7C,IACR,OAAO6C,aAAa0M,EAAqB1M,EAAI0M,EAAmB1J,QAAQhD,GACxE,MAAO7C,GACP,OAAOuP,EAAmBzJ,OAAO9F,MAGpC,CACDiC,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7B,OAAO7C,EAAI2B,KAAKsO,kBAAiB,WAC/B,OAAOjQ,EAAE6C,MACN0M,EAAmB1J,QAAQhD,KAEjC,CACDZ,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7B,OAAO7C,EAAI2B,KAAKsO,kBAAiB,WAC/B,OAAOjQ,EAAE6C,MACN0M,EAAmBzJ,OAAOjD,MAE/B,CAAC,CACHZ,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO,IAAIuP,GAAmB,SAAU1M,EAAG9D,GACzC8D,EAAE7C,QAGL,CACDiC,IAAK,SACLlC,MAAO,SAAgBC,GACrB,OAAO,IAAIuP,GAAmB,SAAU1M,EAAG9D,GACzCA,EAAEiB,QAGL,CACDiC,IAAK,UACLlC,MAAO,SAEPC,GACE,OAAO,IAAIuP,GAAmB,SAAU1M,EAAG9D,GACzC,IAAIkI,EAAI,EACJtH,EAAI,EACJE,GAAI,EACRG,EAAE2L,SAAQ,SAAU3L,KAChBiH,EAAGjH,EAAEQ,MAAK,aACRb,EAAGE,GAAKF,IAAMsH,GAAKpE,OACpB,SAAU7C,GACX,OAAOjB,EAAEiB,SAETH,GAAI,EAAIF,IAAMsH,GAAKpE,SAU1B,CACDZ,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAGIkQ,EAHArN,EAAI0M,EAAmB1J,SAAQ,GAE/BsK,EAAY9R,EAA2B2B,GAG3C,IACE,IAAIoQ,EAAQ,WACV,IAAIrR,EAAImR,EAAMnQ,MACd8C,EAAIA,EAAErC,MAAK,SAAUR,GACnB,OAAOA,EAAIuP,EAAmB1J,QAAQ7F,GAAKjB,QAI/C,IAAKoR,EAAUtQ,MAAOqQ,EAAQC,EAAUpR,KAAKe,MAC3CsQ,IAEF,MAAOhQ,GACP+P,EAAUnQ,EAAEI,GACZ,QACA+P,EAAUjQ,IAGZ,OAAO2C,IAER,CACDZ,IAAK,UACLlC,MAAO,SAAiBC,EAAG6C,GACzB,IAAIwN,EAAU1O,KAEV5C,EAAI,GACR,OAAOiB,EAAE2L,SAAQ,SAAU3L,EAAGiH,GAC5BlI,EAAE6M,KAAK/I,EAAE1D,KAAKkR,EAASrQ,EAAGiH,OACxBtF,KAAK2O,QAAQvR,KAMlB,CACDkD,IAAK,WACLlC,MAAO,SAAkBC,EAAG6C,GAC1B,OAAO,IAAI0M,GAAmB,SAAUxQ,EAAGkI,GAczC,IAbA,IAAItH,EAAIK,EAAEN,OACNG,EAAI,IAAIlB,MAAMgB,GACdrB,EAAI,EAEJiS,EAAS,SAAgBC,GAC3B,IAAIC,EAAID,EACR3N,EAAE7C,EAAEyQ,IAAIjQ,MAAK,SAAUR,GACrBH,EAAE4Q,GAAKzQ,IAAK1B,IAASqB,GAAKZ,EAAEc,MAC3B,SAAUG,GACX,OAAOiH,EAAEjH,OAIJwQ,EAAI,EAAGA,EAAI7Q,EAAG6Q,IACrBD,EAAOC,QAWZ,CACDvO,IAAK,UACLlC,MAAO,SAAiBC,EAAG6C,GACzB,OAAO,IAAI0M,GAAmB,SAAUxQ,EAAGkI,IAC3B,SAASyJ,KACrB,IAAO1Q,IAAM6C,IAAIrC,MAAK,WACpBkQ,MACCzJ,GAAKlI,IAGV2R,UAKCnB,EAnM6B,GA+NlCoB,GAA6C,WAC/C,SAASA,EAA8B3Q,EAAG6C,GACxC,IAAI+N,EAAUjP,MAEd,OAAgBA,KAAMgP,GAEtBhP,KAAKkP,OAAS7Q,EAAG2B,KAAKmP,YAAcjO,EAAGlB,KAAKoP,SAAU,EAItDpP,KAAKqP,EAAI,IAAIvL,EAAsB9D,KAAKmP,YAAYG,WAAa,WAC/DL,EAAQI,EAAEnL,WACTlE,KAAKmP,YAAYI,QAAU,WAC5BrO,EAAES,MAAQsN,EAAQI,EAAElL,OAAO,IAAIqL,GAAoCnR,EAAG6C,EAAES,QAAUsN,EAAQI,EAAEnL,WAC3FlE,KAAKmP,YAAYM,QAAU,SAAUvO,GACtC,IAAI9D,EAAIsS,GAAoCxO,EAAEyO,OAAOhO,OAErDsN,EAAQI,EAAElL,OAAO,IAAIqL,GAAoCnR,EAAGjB,KAkDhE,OA9CA,OAAa4R,EAA+B,CAAC,CAC3C1O,IAAK,IACLyG,IAAK,WACH,OAAO/G,KAAKqP,EAAErL,UAEf,CACD1D,IAAK,QACLlC,MAAO,SAAeC,GACpBA,GAAK2B,KAAKqP,EAAElL,OAAO9F,GAAI2B,KAAKoP,UAAYpO,EAAmB,WAAY,wBAAyB3C,EAAIA,EAAEwF,QAAU,0BAA2B7D,KAAKoP,SAAU,EAAIpP,KAAKmP,YAAYS,WAEhL,CACDtP,IAAK,IACLlC,MAAO,WAIL,IAAIC,EAAI2B,KAAKmP,YACbnP,KAAKoP,SAAW,mBAAqB/Q,EAAEwR,QAAUxR,EAAEwR,WAYpD,CACDvP,IAAK,QACLlC,MAAO,SAAeC,GACpB,IAAI6C,EAAIlB,KAAKmP,YAAYW,YAAYzR,GACrC,OAAO,IAAI0R,GAAwB7O,MAEnC,CAAC,CACHZ,IAAK,OACLlC,MAAO,SAAcC,EAAG6C,EAAG9D,EAAGkI,GAC5B,IACE,OAAO,IAAI0J,EAA8B9N,EAAG7C,EAAE8Q,YAAY7J,EAAGlI,IAC7D,MAAOiB,GACP,MAAM,IAAImR,GAAoCtO,EAAG7C,QAKhD2Q,EAnEwC,GA8E7CgB,GAAkC,WAUpC,SAASA,EAAmB3R,EAAG6C,EAAG9D,IAChC,OAAgB4C,KAAMgQ,GAEtBhQ,KAAKrC,KAAOU,EAAG2B,KAAKiQ,QAAU/O,EAAGlB,KAAKkQ,EAAI9S,EAK1C,OAAS4S,EAAmBpP,GAAE,YAAYY,EAAmB,gMAuFtD,IACD2O,EA5EAC,EAiQR,OAxQA,OAAaJ,EAAoB,CAAC,CAChC1P,IAAK,IACLlC,OAKMgS,GAAK,OAAgC,UAAyB,SAASC,EAAShS,GAClF,IAAIiS,EAAUtQ,KAEd,OAAO,UAAyB,SAAmBuQ,GACjD,OACE,OAAQA,EAAU5K,KAAO4K,EAAU1R,MACjC,KAAK,EAGH,GAFA0R,EAAUC,GAAKxQ,KAAKyQ,GAEhBF,EAAUC,GAAI,CAChBD,EAAU1R,KAAO,EACjB,MAMF,OAHAmC,EAAmB,WAAY,oBAAqBhB,KAAKrC,MAEzD4S,EAAU1R,KAAO,EACV,IAAIoF,SAAQ,SAAU/C,EAAG9D,GAM9B,IAAIkI,EAAIoL,UAAUC,KAAKL,EAAQ3S,KAAM2S,EAAQL,SAC7C3K,EAAEsL,UAAY,SAAUvS,GACtB,IAAIjB,EAAIiB,EAAEsR,OAAO9P,OACjBqB,EAAE9D,IACDkI,EAAEuL,UAAY,WACfzT,EAAE,IAAIoS,GAAoCnR,EAAG,sIAC5CiH,EAAEmK,QAAU,SAAUvO,GACvB,IAAIoE,EAAIpE,EAAEyO,OAAOhO,MACjB,iBAAmB2D,EAAE3H,KAAOP,EAAE,IAAIoG,EAAejB,EAAEU,oBAAqB,yVAA2V,sBAAwBqC,EAAE3H,KAAOP,EAAE,IAAIoG,EAAejB,EAAEU,oBAAqB,6KAA+KqC,IAAMlI,EAAE,IAAIoS,GAAoCnR,EAAGiH,KACjtBA,EAAEwL,gBAAkB,SAAUzS,GAC/B2C,EAAmB,WAAY,aAAesP,EAAQ3S,KAAO,mCAAoCU,EAAE0S,YAEnG,IAAI7P,EAAI7C,EAAEsR,OAAO9P,OAEjByQ,EAAQJ,EAAEc,EAAE9P,EAAGoE,EAAE6J,YAAa9Q,EAAE0S,WAAYT,EAAQL,SAASpR,MAAK,WAChEmC,EAAmB,WAAY,+BAAiCsP,EAAQL,QAAU,oBAK1F,KAAK,EACHjQ,KAAKyQ,GAAKF,EAAUU,KAEtB,KAAK,EAIH,OAHAjR,KAAKkR,IAAMlR,KAAKyQ,GAAGU,gBAAkB,SAAU9S,GAC7C,OAAOiS,EAAQY,EAAE7S,KAEZkS,EAAUa,OAAO,SAAUpR,KAAKyQ,IAEzC,KAAK,EACL,IAAK,MACH,OAAOF,EAAU3K,UAGtByK,EAAUrQ,UAGf,SAAWqR,GACT,OAAOjB,EAAGlQ,MAAMF,KAAMC,cAKzB,CACDK,IAAK,IACLlC,MAAO,SAAWC,GAChB2B,KAAKkR,EAAI7S,EAAG2B,KAAKyQ,KAAOzQ,KAAKyQ,GAAGU,gBAAkB,SAAUjQ,GAC1D,OAAO7C,EAAE6C,OAGZ,CACDZ,IAAK,iBACLlC,OACM+R,GAAkB,OAAgC,UAAyB,SAASmB,EAASjT,EAAG6C,EAAG9D,EAAGkI,GACxG,IAEItH,EAAGE,EAAGqT,EAAMC,EAAKC,EAFjBC,EAAU1R,KAId,OAAO,UAAyB,SAAmB2R,GACjD,OACE,OAAQA,EAAUhM,KAAOgM,EAAU9S,MACjC,KAAK,EACHb,EAAI,aAAekD,EACnBhD,EAAI,EAEN,KAAK,EAGH,QAFEA,EACFyT,EAAUhM,KAAO,EACVgM,EAAUC,cAA4B,UAAyB,SAASC,IAC7E,IAAI3Q,EAAGhD,EACP,OAAO,UAAyB,SAAmB4T,GACjD,OACE,OAAQA,EAAUnM,KAAOmM,EAAUjT,MACjC,KAAK,EAEH,OADAiT,EAAUjT,KAAO,EACV6S,EAAQK,EAAE1T,GAEnB,KAAK,EAaH,OAZAqT,EAAQjB,GAAKqB,EAAUb,KACvB/P,EAAI8N,GAA8B2B,KAAKe,EAAQjB,GAAIpS,EAAGL,EAAI,WAAa,YAAaZ,GAAIc,EAAIoH,EAAEpE,GAAGrC,MAAK,SAAUR,GAC9G,OAAO6C,EAAE8Q,IAAK3T,KACb4T,OAAM,SAAU5T,GACjB,OACE6C,EAAE0O,MAAMvR,GAAIuP,GAAmBzJ,OAAO9F,MAEvC6T,YAGHhU,EAAE+T,OAAM,eACRH,EAAUjT,KAAO,EACVqC,EAAEiR,EAEX,KAAK,EAEH,OADAL,EAAUtB,GAAKtS,EACR4T,EAAUV,OAAO,SAAU,CAChChE,EAAG0E,EAAUtB,KAGjB,KAAK,EACL,IAAK,MACH,OAAOsB,EAAUlM,UAGtBiM,KAnCwC,GAoCvC,KAAM,GAEd,KAAK,EAGH,GAAsB,iBAFtBN,EAAOI,EAAUnB,IAEgB,CAC/BmB,EAAU9S,KAAO,EACjB,MAGF,OAAO8S,EAAUP,OAAO,SAAUG,EAAKnE,GAEzC,KAAK,EACHuE,EAAU9S,KAAO,GACjB,MAEF,KAAK,GASH,GARA8S,EAAUhM,KAAO,GACjBgM,EAAUS,GAAKT,EAAiB,MAAE,GAClCH,EAAMG,EAAUS,GAAIX,EAAM,kBAAoBD,EAAI7T,MAAQO,EAAI,EAMxD8C,EAAmB,WAAY,iCAAkCwQ,EAAI3N,QAAS,YAAa4N,GAAMzR,KAAKqS,QAAUZ,EAAM,CAC1HE,EAAU9S,KAAO,GACjB,MAGF,OAAO8S,EAAUP,OAAO,SAAUnN,QAAQE,OAAOqN,IAEnD,KAAK,GACHG,EAAU9S,KAAO,EACjB,MAEF,KAAK,GACL,IAAK,MACH,OAAO8S,EAAU/L,UAGtB0L,EAAUtR,KAAM,CAAC,CAAC,EAAG,UAG1B,SAAwBsS,EAAKC,EAAKC,EAAKC,GACrC,OAAOtC,EAAgBjQ,MAAMF,KAAMC,cAKtC,CACDK,IAAK,QACLlC,MAAO,WACL4B,KAAKyQ,IAAMzQ,KAAKyQ,GAAG4B,QAASrS,KAAKyQ,QAAK,KAEtC,CAAC,CACHnQ,IAAK,SACLlC,MAAO,SAAiBC,GACtB,OAAO2C,EAAmB,WAAY,qBAAsB3C,GAAIqU,GAAsBC,OAAOjC,UAAUkC,eAAevU,IAAI6T,cAI3H,CACD5R,IAAK,IACLlC,MAAO,WACL,KAAK,UAAwB,OAAO,EACpC,GAAI4R,EAAmB9E,IAAK,OAAO,EAQnC,IAAI7M,GAAI,UACJ6C,EAAI8O,EAAmBpP,EAAEvC,GACzBjB,EAAI,EAAI8D,GAAKA,EAAI,GACjBoE,EAAI0K,EAAmB5C,EAAE/O,GACzBL,EAAI,EAAIsH,GAAKA,EAAI,IAUrB,QAASjH,EAAE0M,QAAQ,SAAW,GAAK1M,EAAE0M,QAAQ,YAAc,GAAK1M,EAAE0M,QAAQ,SAAW,GAAK3N,GAAKY,KAOhG,CACDsC,IAAK,IACLlC,MAAO,WACL,IAAIC,EACJ,MAAO,oBAAsB0Q,SAAW,SAAW,QAAU1Q,EAAI0Q,QAAQ8D,qBAAkB,IAAWxU,OAAI,EAASA,EAAEJ,KAItH,CACDqC,IAAK,IACLlC,MAAO,SAAWC,EAAG6C,GACnB,OAAO7C,EAAEyU,MAAM5R,KAKhB,CACDZ,IAAK,IACLlC,MAAO,SAAWC,GAChB,IAAI6C,EAAI7C,EAAE0U,MAAM,mCACZ3V,EAAI8D,EAAIA,EAAE,GAAG8J,MAAM,KAAKvN,MAAM,EAAG,GAAG+M,KAAK,KAAO,KACpD,OAAOwI,OAAO5V,KAKf,CACDkD,IAAK,IACLlC,MAAO,SAAWC,GAChB,IAAI6C,EAAI7C,EAAE0U,MAAM,qBACZ3V,EAAI8D,EAAIA,EAAE,GAAG8J,MAAM,KAAKvN,MAAM,EAAG,GAAG+M,KAAK,KAAO,KACpD,OAAOwI,OAAO5V,OAIX4S,EA/R6B,GAwSlCiD,GAA6C,WAC/C,SAASA,EAA8B5U,IACrC,OAAgB2B,KAAMiT,GAEtBjT,KAAKkT,EAAI7U,EAAG2B,KAAKmT,GAAI,EAAInT,KAAKoT,EAAI,KAkDpC,OA/CA,OAAaH,EAA+B,CAAC,CAC3C3S,IAAK,SACLyG,IAAK,WACH,OAAO/G,KAAKmT,IAEb,CACD7S,IAAK,IACLyG,IAAK,WACH,OAAO/G,KAAKoT,IAEb,CACD9S,IAAK,SACLmE,IAAK,SAAapG,GAChB2B,KAAKkT,EAAI7U,IAMV,CACDiC,IAAK,OACLlC,MAAO,WACL4B,KAAKmT,GAAI,IAOV,CACD7S,IAAK,IACLlC,MAAO,SAAWC,GAChB2B,KAAKoT,EAAI/U,IAQV,CACDiC,IAAK,SACLlC,MAAO,WACL,OAAOsU,GAAsB1S,KAAKkT,EAAEG,cAIjCJ,EAtDwC,GA2D7CzD,GAAmD,SAAU8D,IAC/D,OAAU9D,EAAqC8D,GAE/C,IAAIC,EAAUpU,EAAaqQ,GAE3B,SAASA,EAAoCnR,EAAG6C,GAC9C,IAAIsS,EAKJ,OAHA,OAAgBxT,KAAMwP,IAEtBgE,EAAUD,EAAQ/V,KAAKwC,KAAMuC,EAAEe,YAAa,0BAA0B/B,OAAOlD,EAAG,cAAckD,OAAOL,KAAavD,KAAO,4BAClH6V,EAGT,OAAO,OAAahE,GAdiC,CAerDhM,GAIF,SAASiQ,GAAsCpV,GAG7C,MAAO,8BAAgCA,EAAEV,KAc3C,IAAIoS,GAAuC,WACzC,SAASA,EAAwB1R,IAC/B,OAAgB2B,KAAM+P,GAEtB/P,KAAK8S,MAAQzU,EAiNf,OA9MA,OAAa0R,EAAyB,CAAC,CACrCzP,IAAK,MACLlC,MAAO,SAAaC,EAAG6C,GACrB,IAAI9D,EACJ,YAAO,IAAW8D,GAAKF,EAAmB,WAAY,MAAOhB,KAAK8S,MAAMnV,KAAMU,EAAG6C,GAAI9D,EAAI4C,KAAK8S,MAAMY,IAAIxS,EAAG7C,KAAO2C,EAAmB,WAAY,MAAOhB,KAAK8S,MAAMnV,KAAM,aAAcU,GAAIjB,EAAI4C,KAAK8S,MAAMY,IAAIrV,IAAKqU,GAAsBtV,KAU1O,CACDkD,IAAK,MACLlC,MAAO,SAAaC,GAGlB,OAFA2C,EAAmB,WAAY,MAAOhB,KAAK8S,MAAMnV,KAAMU,EAAGA,GAEnDqU,GAAsB1S,KAAK8S,MAAMa,IAAItV,MAU7C,CACDiC,IAAK,MACLlC,MAAO,SAAaC,GAClB,IAAIuV,EAAU5T,KAId,OAAO0S,GAAsB1S,KAAK8S,MAAM/L,IAAI1I,IAAIQ,MAAK,SAAUqC,GAC7D,YACE,IAAWA,IAAMA,EAAI,MAAOF,EAAmB,WAAY,MAAO4S,EAAQd,MAAMnV,KAAMU,EAAG6C,GAAIA,OAIlG,CACDZ,IAAK,SACLlC,MAAO,SAAiBC,GAGtB,OAFA2C,EAAmB,WAAY,SAAUhB,KAAK8S,MAAMnV,KAAMU,GAEnDqU,GAAsB1S,KAAK8S,MAAMO,OAAOhV,MAShD,CACDiC,IAAK,QACLlC,MAAO,WAGL,OAFA4C,EAAmB,WAAY,QAAShB,KAAK8S,MAAMnV,MAE5C+U,GAAsB1S,KAAK8S,MAAMe,WAEzC,CACDvT,IAAK,IACLlC,MAAO,SAAWC,EAAG6C,GACnB,IAAI9D,EAAI4C,KAAK8T,QAAQzV,EAAG6C,GACpBoE,EAAIlI,EAAE2W,MAAQ/T,KAAK8S,MAAMiB,MAAM3W,EAAE2W,OAAS/T,KAAK8S,MAGnD,GAAI,mBAAqBxN,EAAE0O,OAAQ,CACjC,IAAIC,EAAM3O,EAAE0O,OAAO5W,EAAE8W,OAErB,OAAO,IAAItG,IAAmB,SAAU1M,EAAG9D,GACzC6W,EAAIxE,QAAU,SAAUpR,GACtBjB,EAAEiB,EAAEsR,OAAOhO,QACVsS,EAAIrD,UAAY,SAAUvS,GAC3B6C,EAAE7C,EAAEsR,OAAO9P,YAMf,IAAIsU,EAAMnU,KAAKoU,OAAOhX,GAClBiX,EAAM,GAEV,OAAOrU,KAAKsU,EAAEH,GAAK,SAAU9V,EAAGjB,GAC9BiX,EAAIpK,KAAK7M,MACRyB,MAAK,WACN,OAAOwV,OASZ,CACD/T,IAAK,IACLlC,MAAO,SAAWC,EAAG6C,GACnB,IAAI9D,EAAI4C,KAAK8S,MAAMkB,OAAO3V,EAAG,OAAS6C,OAAI,EAASA,GACnD,OAAO,IAAI0M,IAAmB,SAAUvP,EAAG6C,GACzC9D,EAAEqS,QAAU,SAAUpR,GACpB6C,EAAE7C,EAAEsR,OAAOhO,QACVvE,EAAEwT,UAAY,SAAU1P,GACzB7C,EAAE6C,EAAEyO,OAAO9P,cAIhB,CACDS,IAAK,IACLlC,MAAO,SAAWC,EAAG6C,GACnBF,EAAmB,WAAY,aAAchB,KAAK8S,MAAMnV,MAExD,IAAIP,EAAI4C,KAAK8T,QAAQzV,EAAG6C,GACxB9D,EAAEmX,GAAI,EACN,IAAIjP,EAAItF,KAAKoU,OAAOhX,GACpB,OAAO4C,KAAKsU,EAAEhP,GAAG,SAAUjH,EAAG6C,EAAG9D,GAC/B,OAAOA,EAAEiW,cAGZ,CACD/S,IAAK,IACLlC,MAAO,SAAWC,EAAG6C,GACnB,IAAI9D,EACJ8D,EAAI9D,EAAIiB,GAAKjB,EAAI,GAAI8D,EAAI7C,GACzB,IAAIiH,EAAItF,KAAKoU,OAAOhX,GACpB,OAAO4C,KAAKsU,EAAEhP,EAAGpE,KAWlB,CACDZ,IAAK,IACLlC,MAAO,SAAWC,GAChB,IAAI6C,EAAIlB,KAAKoU,OAAO,IACpB,OAAO,IAAIxG,IAAmB,SAAUxQ,EAAGkI,GACzCpE,EAAEuO,QAAU,SAAUpR,GACpB,IAAI6C,EAAIwO,GAAoCrR,EAAEsR,OAAOhO,OAErD2D,EAAEpE,IACDA,EAAE0P,UAAY,SAAU1P,GACzB,IAAIoE,EAAIpE,EAAEyO,OAAO9P,OACjByF,EAAIjH,EAAEiH,EAAEkP,WAAYlP,EAAElH,OAAOS,MAAK,SAAUR,GAC1CA,EAAIiH,EAAEmP,WAAarX,OAChBA,UAIV,CACDkD,IAAK,IACLlC,MAAO,SAAWC,EAAG6C,GACnB,IAAI9D,EAAI,GACR,OAAO,IAAIwQ,IAAmB,SAAUtI,EAAGtH,GACzCK,EAAEoR,QAAU,SAAUpR,GACpBL,EAAEK,EAAEsR,OAAOhO,QACVtD,EAAEuS,UAAY,SAAUvS,GACzB,IAAIL,EAAIK,EAAEsR,OAAO9P,OACjB,GAAK7B,EAAL,CACA,IAAIE,EAAI,IAAI+U,GAA8BjV,GACtCrB,EAAIuE,EAAElD,EAAEwW,WAAYxW,EAAEI,MAAOF,GAEjC,GAAIvB,aAAaiR,GAAoB,CACnC,IAAI8G,EAAM/X,EAAEsV,OAAM,SAAU5T,GAC1B,OAAOH,EAAEC,OAAQyP,GAAmBzJ,OAAO9F,MAG7CjB,EAAE6M,KAAKyK,GAGTxW,EAAE8P,OAAS1I,IAAM,OAASpH,EAAEyW,EAAI3W,EAAEyW,WAAazW,EAAEyW,SAASvW,EAAEyW,QAZxCrP,QAcrBzG,MAAK,WACN,OAAO+O,GAAmBe,QAAQvR,QAGrC,CACDkD,IAAK,UACLlC,MAAO,SAAiBC,EAAG6C,GACzB,IAAI9D,EACJ,YAAO,IAAWiB,IAAM,iBAAmBA,EAAIjB,EAAIiB,EAAI6C,EAAI7C,GAAI,CAC7D0V,MAAO3W,EACP8W,MAAOhT,KAGV,CACDZ,IAAK,SACLlC,MAAO,SAAgBC,GACrB,IAAI6C,EAAI,OAER,GAAI7C,EAAEuW,UAAY1T,EAAI,QAAS7C,EAAE0V,MAAO,CACtC,IAAI3W,EAAI4C,KAAK8S,MAAMiB,MAAM1V,EAAE0V,OAC3B,OAAO1V,EAAEkW,EAAInX,EAAEyX,cAAcxW,EAAE6V,MAAOhT,GAAK9D,EAAE0X,WAAWzW,EAAE6V,MAAOhT,GAGnE,OAAOlB,KAAK8S,MAAMgC,WAAWzW,EAAE6V,MAAOhT,OAInC6O,EArNkC,GA6N3C,SAAS2C,GAAsBrU,GAC7B,OAAO,IAAIuP,IAAmB,SAAU1M,EAAG9D,GACzCiB,EAAEuS,UAAY,SAAUvS,GACtB,IAAIjB,EAAIiB,EAAEsR,OAAO9P,OACjBqB,EAAE9D,IACDiB,EAAEoR,QAAU,SAAUpR,GACvB,IAAI6C,EAAIwO,GAAoCrR,EAAEsR,OAAOhO,OAErDvE,EAAE8D,OAMR,IAAIjD,IAAI,EAER,SAASyR,GAAoCrR,GAC3C,IAAI6C,EAAI8O,GAAmBpP,GAAE,WAE7B,GAAIM,GAAK,MAAQA,EAAI,GAAI,CACvB,IAAI6T,EAAM,mEAEV,GAAI1W,EAAEwF,QAAQkH,QAAQgK,IAAQ,EAAG,CAE/B,IAAIC,EAAM,IAAIxR,EAAe,WAAY,6CAA6CjC,OAAOwT,EAAK,gJAElG,OAAO9W,KAAMA,IAAI,EAEjB+H,YAAW,WACT,MAAMgP,IACL,IAAKA,GAIZ,OAAO3W,EAKT,IA0NI4W,GAAwC,WAC1C,SAASA,EAAyB5W,EAAG6C,GACnC,IAAIgU,EAAUlV,MAEd,OAAgBA,KAAMiV,GAEtBjV,KAAKmV,cAAgB9W,EAAG6C,IAAMA,EAAEkU,sBAAwB,SAAU/W,GAChE,OAAO6W,EAAQG,GAAGhX,IACjB2B,KAAKsV,GAAK,SAAUjX,GACrB,OAAO6C,EAAEqU,oBAAoBlX,KAiBjC,OAbA,OAAa4W,EAA0B,CAAC,CACtC3U,IAAK,KACLlC,MAAO,SAAYC,GACjB,OAAO2B,KAAKmV,cAAgB9M,KAAK4E,IAAI5O,EAAG2B,KAAKmV,eAAgBnV,KAAKmV,gBAEnE,CACD7U,IAAK,OACLlC,MAAO,WACL,IAAIC,IAAM2B,KAAKmV,cACf,OAAOnV,KAAKsV,IAAMtV,KAAKsV,GAAGjX,GAAIA,MAI3B4W,EA1BmC,GAkC5C,SAASO,GAA4BnX,GACnC,OAAO,MAAQA,EAKjB,SAASoX,GAAyBpX,GAGhC,OAAO,IAAMA,GAAK,EAAIA,IAAK,IAQ7B,SAASqX,GAAcrX,GACrB,MAAO,iBAAmBA,GAAK2U,OAAO2C,UAAUtX,KAAOoX,GAAyBpX,IAAMA,GAAK2U,OAAO4C,kBAAoBvX,GAAK2U,OAAO6C,iBAvBpIZ,GAAyBa,IAAM,EAmN/B,IAeIC,GAAI,CAAC,iBAAkB,YAAa,oBAAqB,kBAAmB,UAAW,QAAS,eAAgB,mBAAmBxU,OAAO,CAAC,mBAAmBA,OAAO,CAAC,yBAAyBA,OAAO,CAAC,sBAAsBA,OAAO,CAAC,UAAW,iBAEhPyU,IADI,GAAGzU,QAAO,OAAmBwU,IAAI,CAAC,qBAClC,CAAC,iBAAkB,YAAa,oBAAqB,qBAAsB,UAAW,QAAS,eAAgB,kBAAmB,iBAAkB,uBAAwB,oBAAqB,UAAW,eAAgB,qBAChOE,GAAID,GACA,GAAGzU,OAAO0U,GAAG,CAAC,qBAAsB,aAAc,iBA0D1D,SAASC,GAAqB7X,GAC5B,IAAI6C,EAAI,EAER,IAAK,IAAI9D,KAAKiB,EACZhB,OAAOC,UAAU6Y,eAAe3Y,KAAKa,EAAGjB,IAAM8D,IAGhD,OAAOA,EAGT,SAASkV,GAAS/X,EAAG6C,GACnB,IAAK,IAAI9D,KAAKiB,EACZhB,OAAOC,UAAU6Y,eAAe3Y,KAAKa,EAAGjB,IAAM8D,EAAE9D,EAAGiB,EAAEjB,IAIzD,SAASiZ,GAAShY,GAChB,IAAK,IAAI6C,KAAK7C,EACZ,GAAIhB,OAAOC,UAAU6Y,eAAe3Y,KAAKa,EAAG6C,GAAI,OAAO,EAGzD,OAAO,EAsBT,IAAIoV,GAAyB,WAC3B,SAASA,EAAUjY,EAAG6C,IACpB,OAAgBlB,KAAMsW,GAEtBtW,KAAK8J,WAAazL,EAAG2B,KAAKuW,KAAOrV,GAAKsV,GAASC,MAgIjD,OA5HA,OAAaH,EAAW,CAAC,CACvBhW,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,GACxB,OAAO,IAAIoV,EAAUtW,KAAK8J,WAAY9J,KAAKuW,KAAKG,OAAOrY,EAAG6C,EAAGlB,KAAK8J,YAAY6M,KAAK,KAAM,KAAMH,GAASI,MAAO,KAAM,SAGtH,CACDtW,IAAK,SACLlC,MAAO,SAAgBC,GACrB,OAAO,IAAIiY,EAAUtW,KAAK8J,WAAY9J,KAAKuW,KAAKM,OAAOxY,EAAG2B,KAAK8J,YAAY6M,KAAK,KAAM,KAAMH,GAASI,MAAO,KAAM,SAGnH,CACDtW,IAAK,MACLlC,MAAO,SAAaC,GAGlB,IAFA,IAAI6C,EAAIlB,KAAKuW,MAELrV,EAAE4V,WAAY,CACpB,IAAI1Z,EAAI4C,KAAK8J,WAAWzL,EAAG6C,EAAEZ,KAC7B,GAAI,IAAMlD,EAAG,OAAO8D,EAAE9C,MACtBhB,EAAI,EAAI8D,EAAIA,EAAE6V,KAAO3Z,EAAI,IAAM8D,EAAIA,EAAE8V,OAGvC,OAAO,OAIR,CACD1W,IAAK,UACLlC,MAAO,SAAiBC,GAKtB,IAHA,IAAI6C,EAAI,EACJ9D,EAAI4C,KAAKuW,MAELnZ,EAAE0Z,WAAY,CACpB,IAAIxR,EAAItF,KAAK8J,WAAWzL,EAAGjB,EAAEkD,KAC7B,GAAI,IAAMgF,EAAG,OAAOpE,EAAI9D,EAAE2Z,KAAKE,KAC/B3R,EAAI,EAAIlI,EAAIA,EAAE2Z,MACd7V,GAAK9D,EAAE2Z,KAAKE,KAAO,EAAG7Z,EAAIA,EAAE4Z,OAI9B,OAAQ,IAET,CACD1W,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKuW,KAAKO,YAGlB,CACDxW,IAAK,OACLyG,IAAK,WACH,OAAO/G,KAAKuW,KAAKU,OAGlB,CACD3W,IAAK,SACLlC,MAAO,WACL,OAAO4B,KAAKuW,KAAKW,WAGlB,CACD5W,IAAK,SACLlC,MAAO,WACL,OAAO4B,KAAKuW,KAAKY,WAMlB,CACD7W,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO2B,KAAKuW,KAAKa,iBAAiB/Y,KAEnC,CACDiC,IAAK,UACLlC,MAAO,SAAiBC,GACtB2B,KAAKoX,kBAAiB,SAAUlW,EAAG9D,GACjC,OAAOiB,EAAE6C,EAAG9D,IAAI,OAGnB,CACDkD,IAAK,WACLlC,MAAO,WACL,IAAIC,EAAI,GACR,OAAO2B,KAAKoX,kBAAiB,SAAUlW,EAAG9D,GACxC,OAAOiB,EAAE4L,KAAK,GAAG1I,OAAOL,EAAG,KAAKK,OAAOnE,KAAK,KAC1C,IAAImE,OAAOlD,EAAEmM,KAAK,MAAO,OAO9B,CACDlK,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO2B,KAAKuW,KAAKc,iBAAiBhZ,KAGnC,CACDiC,IAAK,cACLlC,MAAO,WACL,OAAO,IAAIkZ,GAAkBtX,KAAKuW,KAAM,KAAMvW,KAAK8J,YAAY,KAEhE,CACDxJ,IAAK,kBACLlC,MAAO,SAAyBC,GAC9B,OAAO,IAAIiZ,GAAkBtX,KAAKuW,KAAMlY,EAAG2B,KAAK8J,YAAY,KAE7D,CACDxJ,IAAK,qBACLlC,MAAO,WACL,OAAO,IAAIkZ,GAAkBtX,KAAKuW,KAAM,KAAMvW,KAAK8J,YAAY,KAEhE,CACDxJ,IAAK,yBACLlC,MAAO,SAAgCC,GACrC,OAAO,IAAIiZ,GAAkBtX,KAAKuW,KAAMlY,EAAG2B,KAAK8J,YAAY,OAIzDwM,EApIoB,GAyIzBgB,GAAiC,WACnC,SAASA,EAAkBjZ,EAAG6C,EAAG9D,EAAGkI,IAClC,OAAgBtF,KAAMsX,GAEtBtX,KAAKuX,UAAYjS,EAAGtF,KAAKwX,UAAY,GAGrC,IAFA,IAAIxZ,EAAI,GAEAK,EAAEyY,WACR,GAAI9Y,EAAIkD,EAAI9D,EAAEiB,EAAEiC,IAAKY,GAAK,EAC1BA,GAAKoE,IAAMtH,IAAM,GAAIA,EAAI,EACvBK,EAAI2B,KAAKuX,UAAYlZ,EAAE0Y,KAAO1Y,EAAE2Y,UAAW,CAC3C,GAAI,IAAMhZ,EAAG,CAGXgC,KAAKwX,UAAUvN,KAAK5L,GACpB,MAKF2B,KAAKwX,UAAUvN,KAAK5L,GAAIA,EAAI2B,KAAKuX,UAAYlZ,EAAE2Y,MAAQ3Y,EAAE0Y,MAqC/D,OAhCA,OAAaO,EAAmB,CAAC,CAC/BhX,IAAK,UACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAKwX,UAAUC,MACnBvW,EAAI,CACNZ,IAAKjC,EAAEiC,IACPlC,MAAOC,EAAED,OAEX,GAAI4B,KAAKuX,UAAW,IAAKlZ,EAAIA,EAAE0Y,MAAO1Y,EAAEyY,WACtC9W,KAAKwX,UAAUvN,KAAK5L,GAAIA,EAAIA,EAAE2Y,WACzB,IAAK3Y,EAAIA,EAAE2Y,OAAQ3Y,EAAEyY,WAC1B9W,KAAKwX,UAAUvN,KAAK5L,GAAIA,EAAIA,EAAE0Y,KAEhC,OAAO7V,IAER,CACDZ,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKwX,UAAUzZ,OAAS,IAEhC,CACDuC,IAAK,OACLlC,MAAO,WACL,GAAI,IAAM4B,KAAKwX,UAAUzZ,OAAQ,OAAO,KACxC,IAAIM,EAAI2B,KAAKwX,UAAUxX,KAAKwX,UAAUzZ,OAAS,GAC/C,MAAO,CACLuC,IAAKjC,EAAEiC,IACPlC,MAAOC,EAAED,WAKRkZ,EAzD4B,GA8DjCd,GAAwB,WAC1B,SAASA,EAASnY,EAAG6C,EAAG9D,EAAGkI,EAAGtH,IAC5B,OAAgBgC,KAAMwW,GAEtBxW,KAAKM,IAAMjC,EAAG2B,KAAK5B,MAAQ8C,EAAGlB,KAAK0X,MAAQ,MAAQta,EAAIA,EAAIoZ,EAASmB,IAAK3X,KAAK+W,KAAO,MAAQzR,EAAIA,EAAIkR,EAASC,MAAOzW,KAAKgX,MAAQ,MAAQhZ,EAAIA,EAAIwY,EAASC,MAAOzW,KAAKiX,KAAOjX,KAAK+W,KAAKE,KAAO,EAAIjX,KAAKgX,MAAMC,KAgJhN,OA5IA,OAAaT,EAAU,CAAC,CACtBlW,IAAK,OACLlC,MAAO,SAAcC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAC/B,OAAO,IAAIwY,EAAS,MAAQnY,EAAIA,EAAI2B,KAAKM,IAAK,MAAQY,EAAIA,EAAIlB,KAAK5B,MAAO,MAAQhB,EAAIA,EAAI4C,KAAK0X,MAAO,MAAQpS,EAAIA,EAAItF,KAAK+W,KAAM,MAAQ/Y,EAAIA,EAAIgC,KAAKgX,SAEvJ,CACD1W,IAAK,UACLlC,MAAO,WACL,OAAO,IAMR,CACDkC,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO2B,KAAK+W,KAAKK,iBAAiB/Y,IAAMA,EAAE2B,KAAKM,IAAKN,KAAK5B,QAAU4B,KAAKgX,MAAMI,iBAAiB/Y,KAMhG,CACDiC,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO2B,KAAKgX,MAAMK,iBAAiBhZ,IAAMA,EAAE2B,KAAKM,IAAKN,KAAK5B,QAAU4B,KAAK+W,KAAKM,iBAAiBhZ,KAGhG,CACDiC,IAAK,MACLlC,MAAO,WACL,OAAO4B,KAAK+W,KAAKD,UAAY9W,KAAOA,KAAK+W,KAAK7M,QAG/C,CACD5J,IAAK,SACLlC,MAAO,WACL,OAAO4B,KAAKkK,MAAM5J,MAGnB,CACDA,IAAK,SACLlC,MAAO,WACL,OAAO4B,KAAKgX,MAAMF,UAAY9W,KAAKM,IAAMN,KAAKgX,MAAMG,WAGrD,CACD7W,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,EAAG9D,GAC3B,IAAIkI,EAAItF,KACJhC,EAAIZ,EAAEiB,EAAGiH,EAAEhF,KACf,OAAOgF,EAAItH,EAAI,EAAIsH,EAAEqR,KAAK,KAAM,KAAM,KAAMrR,EAAEyR,KAAKL,OAAOrY,EAAG6C,EAAG9D,GAAI,MAAQ,IAAMY,EAAIsH,EAAEqR,KAAK,KAAMzV,EAAG,KAAM,KAAM,MAAQoE,EAAEqR,KAAK,KAAM,KAAM,KAAM,KAAMrR,EAAE0R,MAAMN,OAAOrY,EAAG6C,EAAG9D,KAAOwa,UAEtL,CACDtX,IAAK,YACLlC,MAAO,WACL,GAAI4B,KAAK+W,KAAKD,UAAW,OAAON,EAASC,MACzC,IAAIpY,EAAI2B,KACR,OAAO3B,EAAE0Y,KAAKc,SAAWxZ,EAAE0Y,KAAKA,KAAKc,UAAYxZ,EAAIA,EAAEyZ,gBAAgBzZ,EAAIA,EAAEsY,KAAK,KAAM,KAAM,KAAMtY,EAAE0Y,KAAKgB,YAAa,OAASH,UAGlI,CACDtX,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,GACxB,IAAI9D,EACAkI,EAAItF,KACR,GAAIkB,EAAE7C,EAAGiH,EAAEhF,KAAO,EAAGgF,EAAEyR,KAAKD,WAAaxR,EAAEyR,KAAKc,SAAWvS,EAAEyR,KAAKA,KAAKc,UAAYvS,EAAIA,EAAEwS,eAAgBxS,EAAIA,EAAEqR,KAAK,KAAM,KAAM,KAAMrR,EAAEyR,KAAKF,OAAOxY,EAAG6C,GAAI,UAAW,CACpK,GAAIoE,EAAEyR,KAAKc,UAAYvS,EAAIA,EAAE0S,eAAgB1S,EAAE0R,MAAMF,WAAaxR,EAAE0R,MAAMa,SAAWvS,EAAE0R,MAAMD,KAAKc,UAAYvS,EAAIA,EAAE2S,gBAAiB,IAAM/W,EAAE7C,EAAGiH,EAAEhF,KAAM,CACtJ,GAAIgF,EAAE0R,MAAMF,UAAW,OAAON,EAASC,MACvCrZ,EAAIkI,EAAE0R,MAAM9M,MAAO5E,EAAIA,EAAEqR,KAAKvZ,EAAEkD,IAAKlD,EAAEgB,MAAO,KAAM,KAAMkH,EAAE0R,MAAMe,aAGpEzS,EAAIA,EAAEqR,KAAK,KAAM,KAAM,KAAM,KAAMrR,EAAE0R,MAAMH,OAAOxY,EAAG6C,IAEvD,OAAOoE,EAAEsS,UAEV,CACDtX,IAAK,QACLlC,MAAO,WACL,OAAO4B,KAAK0X,QAGb,CACDpX,IAAK,QACLlC,MAAO,WACL,IAAIC,EAAI2B,KACR,OAAO3B,EAAE2Y,MAAMa,UAAYxZ,EAAE0Y,KAAKc,UAAYxZ,EAAIA,EAAE6Z,cAAe7Z,EAAE0Y,KAAKc,SAAWxZ,EAAE0Y,KAAKA,KAAKc,UAAYxZ,EAAIA,EAAE2Z,eAAgB3Z,EAAE0Y,KAAKc,SAAWxZ,EAAE2Y,MAAMa,UAAYxZ,EAAIA,EAAE8Z,aAAc9Z,IAE9L,CACDiC,IAAK,cACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAKmY,YACb,OAAO9Z,EAAE2Y,MAAMD,KAAKc,UAA2FxZ,GAApBA,GAA3DA,EAAIA,EAAEsY,KAAK,KAAM,KAAM,KAAM,KAAMtY,EAAE2Y,MAAMgB,gBAAsBE,cAAoBC,aAAc9Z,IAEpI,CACDiC,IAAK,eACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAKmY,YACb,OAAO9Z,EAAE0Y,KAAKA,KAAKc,UAAiCxZ,GAArBA,EAAIA,EAAE2Z,eAAqBG,aAAc9Z,IAEzE,CACDiC,IAAK,aACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAK2W,KAAK,KAAM,KAAMH,EAASmB,IAAK,KAAM3X,KAAKgX,MAAMD,MAC7D,OAAO/W,KAAKgX,MAAML,KAAK,KAAM,KAAM3W,KAAK0X,MAAOrZ,EAAG,QAEnD,CACDiC,IAAK,cACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAK2W,KAAK,KAAM,KAAMH,EAASmB,IAAK3X,KAAK+W,KAAKC,MAAO,MAC7D,OAAOhX,KAAK+W,KAAKJ,KAAK,KAAM,KAAM3W,KAAK0X,MAAO,KAAMrZ,KAErD,CACDiC,IAAK,YACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAK+W,KAAKJ,KAAK,KAAM,MAAO3W,KAAK+W,KAAKW,MAAO,KAAM,MACvDxW,EAAIlB,KAAKgX,MAAML,KAAK,KAAM,MAAO3W,KAAKgX,MAAMU,MAAO,KAAM,MAC7D,OAAO1X,KAAK2W,KAAK,KAAM,MAAO3W,KAAK0X,MAAOrZ,EAAG6C,KAG9C,CACDZ,IAAK,gBACLlC,MAAO,WACL,IAAIC,EAAI2B,KAAKoY,QACb,OAAO/P,KAAKgQ,IAAI,EAAGha,IAAM2B,KAAKiX,KAAO,IAItC,CACD3W,IAAK,QACLlC,MAAO,WACL,GAAI4B,KAAK6X,SAAW7X,KAAK+W,KAAKc,QAAS,MAAM3V,IAC7C,GAAIlC,KAAKgX,MAAMa,QAAS,MAAM3V,IAC9B,IAAI7D,EAAI2B,KAAK+W,KAAKqB,QAClB,GAAI/Z,IAAM2B,KAAKgX,MAAMoB,QAAS,MAAMlW,IACpC,OAAO7D,GAAK2B,KAAK6X,QAAU,EAAI,OAI5BrB,EApJmB,GA0J5BA,GAASC,MAAQ,KAAMD,GAASmB,KAAM,EAAInB,GAASI,OAAQ,EAE3DJ,GAASC,MAAQ,IAGjB,WACE,SAAS6B,KACP,OAAgBtY,KAAMsY,GAEtBtY,KAAKiX,KAAO,EAyFd,OAtFA,OAAaqB,EAAe,CAAC,CAC3BhY,IAAK,MACLyG,IAAK,WACH,MAAM7E,MAEP,CACD5B,IAAK,QACLyG,IAAK,WACH,MAAM7E,MAEP,CACD5B,IAAK,QACLyG,IAAK,WACH,MAAM7E,MAEP,CACD5B,IAAK,OACLyG,IAAK,WACH,MAAM7E,MAEP,CACD5B,IAAK,QACLyG,IAAK,WACH,MAAM7E,MAGP,CACD5B,IAAK,OACLlC,MAAO,SAAcC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAC/B,OAAOgC,OAGR,CACDM,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,EAAG9D,GAC3B,OAAO,IAAIoZ,GAASnY,EAAG6C,KAGxB,CACDZ,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,GACxB,OAAOlB,OAER,CACDM,IAAK,UACLlC,MAAO,WACL,OAAO,IAER,CACDkC,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO,IAER,CACDiC,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO,IAER,CACDiC,IAAK,SACLlC,MAAO,WACL,OAAO,OAER,CACDkC,IAAK,SACLlC,MAAO,WACL,OAAO,OAER,CACDkC,IAAK,QACLlC,MAAO,WACL,OAAO,IAGR,CACDkC,IAAK,gBACLlC,MAAO,WACL,OAAO,IAER,CACDkC,IAAK,QACLlC,MAAO,WACL,OAAO,MAIJka,EAhGY,IA2HrB,IAAIC,GAAyB,WAC3B,SAASA,EAAUla,IACjB,OAAgB2B,KAAMuY,GAEtBvY,KAAK8J,WAAazL,EAAG2B,KAAKwY,KAAO,IAAIlC,GAAUtW,KAAK8J,YAqJtD,OAlJA,OAAayO,EAAW,CAAC,CACvBjY,IAAK,MACLlC,MAAO,SAAaC,GAClB,OAAO,OAAS2B,KAAKwY,KAAKzR,IAAI1I,KAE/B,CACDiC,IAAK,QACLlC,MAAO,WACL,OAAO4B,KAAKwY,KAAKtB,WAElB,CACD5W,IAAK,OACLlC,MAAO,WACL,OAAO4B,KAAKwY,KAAKrB,WAElB,CACD7W,IAAK,OACLyG,IAAK,WACH,OAAO/G,KAAKwY,KAAKvB,OAElB,CACD3W,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKwY,KAAKzN,QAAQ1M,KAI1B,CACDiC,IAAK,UACLlC,MAAO,SAAiBC,GACtB2B,KAAKwY,KAAKpB,kBAAiB,SAAUlW,EAAG9D,GACtC,OAAOiB,EAAE6C,IAAI,OAKhB,CACDZ,IAAK,iBACLlC,MAAO,SAAwBC,EAAG6C,GAGhC,IAFA,IAAI9D,EAAI4C,KAAKwY,KAAKC,gBAAgBpa,EAAE,IAE7BjB,EAAEsb,WAAY,CACnB,IAAIpT,EAAIlI,EAAEub,UACV,GAAI3Y,KAAK8J,WAAWxE,EAAEhF,IAAKjC,EAAE,KAAO,EAAG,OACvC6C,EAAEoE,EAAEhF,QAOP,CACDA,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAC9B,IAAI9D,EAEJ,IAAKA,OAAI,IAAW8D,EAAIlB,KAAKwY,KAAKC,gBAAgBvX,GAAKlB,KAAKwY,KAAKI,cAAexb,EAAEsb,WAChF,IAAKra,EAAEjB,EAAEub,UAAUrY,KAAM,SAK5B,CACDA,IAAK,oBACLlC,MAAO,SAA2BC,GAChC,IAAI6C,EAAIlB,KAAKwY,KAAKC,gBAAgBpa,GAClC,OAAO6C,EAAEwX,UAAYxX,EAAEyX,UAAUrY,IAAM,OAExC,CACDA,IAAK,cACLlC,MAAO,WACL,OAAO,IAAIya,GAAkB7Y,KAAKwY,KAAKI,iBAExC,CACDtY,IAAK,kBACLlC,MAAO,SAAyBC,GAC9B,OAAO,IAAIwa,GAAkB7Y,KAAKwY,KAAKC,gBAAgBpa,MAIxD,CACDiC,IAAK,MACLlC,MAAO,SAAaC,GAClB,OAAO2B,KAAK2W,KAAK3W,KAAKwY,KAAK3B,OAAOxY,GAAGqY,OAAOrY,GAAG,MAIhD,CACDiC,IAAK,SACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAK8Y,IAAIza,GAAK2B,KAAK2W,KAAK3W,KAAKwY,KAAK3B,OAAOxY,IAAM2B,OAEvD,CACDM,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKwY,KAAK1B,YAElB,CACDxW,IAAK,YACLlC,MAAO,SAAmBC,GACxB,IAAI6C,EAAIlB,KAER,OAAOkB,EAAE+V,KAAO5Y,EAAE4Y,OAAS/V,EAAI7C,EAAGA,EAAI2B,MAAO3B,EAAE2L,SAAQ,SAAU3L,GAC/D6C,EAAIA,EAAEyS,IAAItV,MACR6C,IAEL,CACDZ,IAAK,UACLlC,MAAO,SAAiBC,GACtB,KAAMA,aAAaka,GAAY,OAAO,EACtC,GAAIvY,KAAKiX,OAAS5Y,EAAE4Y,KAAM,OAAO,EAIjC,IAHA,IAAI/V,EAAIlB,KAAKwY,KAAKI,cACdxb,EAAIiB,EAAEma,KAAKI,cAER1X,EAAEwX,WAAY,CACnB,IAAIK,EAAM7X,EAAEyX,UAAUrY,IAClBgF,EAAIlI,EAAEub,UAAUrY,IACpB,GAAI,IAAMN,KAAK8J,WAAWiP,EAAKzT,GAAI,OAAO,EAG5C,OAAO,IAER,CACDhF,IAAK,UACLlC,MAAO,WACL,IAAIC,EAAI,GACR,OAAO2B,KAAKgK,SAAQ,SAAU9I,GAC5B7C,EAAE4L,KAAK/I,MACL7C,IAEL,CACDiC,IAAK,WACLlC,MAAO,WACL,IAAIC,EAAI,GACR,OAAO2B,KAAKgK,SAAQ,SAAU9I,GAC5B,OAAO7C,EAAE4L,KAAK/I,MACZ,aAAe7C,EAAEd,WAAa,MAEnC,CACD+C,IAAK,OACLlC,MAAO,SAAcC,GACnB,IAAI6C,EAAI,IAAIqX,EAAUvY,KAAK8J,YAC3B,OAAO5I,EAAEsX,KAAOna,EAAG6C,MAIhBqX,EAzJoB,GA4JzBM,GAAiC,WACnC,SAASA,EAAkBxa,IACzB,OAAgB2B,KAAM6Y,GAEtB7Y,KAAKgZ,KAAO3a,EAed,OAZA,OAAawa,EAAmB,CAAC,CAC/BvY,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKgZ,KAAKL,UAAUrY,MAE5B,CACDA,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKgZ,KAAKN,cAIdG,EAnB4B,GA4ErC,IAAII,GAAyB,WAC3B,SAASA,EAAU5a,IACjB,OAAgB2B,KAAMiZ,GAEtBjZ,KAAKqM,OAAShO,EAEdA,EAAE6a,KAAK/N,GAAYrB,YAmFrB,OAhFA,OAAamP,EAAW,CAAC,CACvB3Y,IAAK,YACLlC,MAKA,SAAmBC,GACjB,IAGI8a,EAHAjY,EAAI,IAAIqX,GAAUpN,GAAYrB,YAE9BsP,EAAa1c,EAA2BsD,KAAKqM,QAGjD,IACE,IAAK+M,EAAWlb,MAAOib,EAASC,EAAWhc,KAAKe,MAAO,CACrD,IAAIkb,EAAOF,EAAO/a,MAClB8C,EAAIA,EAAEyS,IAAI0F,IAEZ,MAAO5a,GACP2a,EAAW/a,EAAEI,GACb,QACA2a,EAAW7a,IAGb,IACI+a,EADAC,EAAa7c,EAA2B2B,GAG5C,IACE,IAAKkb,EAAWrb,MAAOob,EAASC,EAAWnc,KAAKe,MAAO,CACrD,IAAIf,EAAIkc,EAAOlb,MACf8C,EAAIA,EAAEyS,IAAIvW,IAEZ,MAAOqB,GACP8a,EAAWlb,EAAEI,GACb,QACA8a,EAAWhb,IAGb,OAAO,IAAI0a,EAAU/X,EAAEqJ,aASxB,CACDjK,IAAK,SACLlC,MAAO,SAAgBC,GACrB,IACImb,EADAC,EAAa/c,EAA2BsD,KAAKqM,QAGjD,IACE,IAAKoN,EAAWvb,MAAOsb,EAASC,EAAWrc,KAAKe,MAAO,CAErD,GADQqb,EAAOpb,MACTsb,WAAWrb,GAAI,OAAO,GAE9B,MAAOI,GACPgb,EAAWpb,EAAEI,GACb,QACAgb,EAAWlb,IAGb,OAAO,IAER,CACD+B,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOsK,EAAsB3I,KAAKqM,OAAQhO,EAAEgO,QAAQ,SAAUhO,EAAG6C,GAC/D,OAAO7C,EAAEqL,QAAQxI,SAGnB,CAAC,CACHZ,IAAK,QACLlC,MAAO,WACL,OAAO,IAAI6a,EAAU,QAIlBA,EAzFoB,GAiHzBU,GAA2C,SAAUC,IACvD,OAAUD,EAA6BC,GAEvC,IAAIC,EAAU1a,EAAawa,GAE3B,SAASA,IACP,IAAIG,EAKJ,OAHA,OAAgB9Z,KAAM2Z,IAEtBG,EAAUD,EAAQ3Z,MAAMF,KAAMC,YAAoBtC,KAAO,oBAClDmc,EAGT,OAAO,OAAaH,GAdyB,EAe/B,OAAiBvX,QAsDjC,IAAI2X,GAA0B,SAAUC,GACtC,SAASD,EAAW1b,IAClB,OAAgB2B,KAAM+Z,GAEtB/Z,KAAKia,aAAe5b,EAuHtB,OApHA,OAAa0b,EAAY,CAAC,CACxBzZ,IAAK0Z,EACL5b,MAAO,WACL,IAAI8b,EAAUla,KAEV3B,EAAI,EACR,MAAO,CACLQ,KAAM,WACJ,OAAOR,EAAI6b,EAAQD,aAAalc,OAAS,CACvCK,MAAO8b,EAAQD,aAAaE,WAAW9b,KACvCF,MAAM,GACJ,CACFC,WAAO,EACPD,MAAM,OAKb,CACDmC,IAAK,WACLlC,MAAO,WACL,OAAuCC,EAErC2B,KAAKia,aADEG,KAAK/b,GADP,IAAgCA,IAIxC,CACDiC,IAAK,eACLlC,MAAO,WACL,OAAO,SAA8CC,GAGnD,IAFA,IAAI6C,EAAI,IAAIgH,WAAW7J,EAAEN,QAEhBX,EAAI,EAAGA,EAAIiB,EAAEN,OAAQX,IAC5B8D,EAAE9D,GAAKiB,EAAE8b,WAAW/c,GAGtB,OAAO8D,EAPF,CA0BNlB,KAAKia,gBAEP,CACD3Z,IAAK,sBACLlC,MAAO,WACL,OAAO,EAAI4B,KAAKia,aAAalc,SAE9B,CACDuC,IAAK,YACLlC,MAAO,SAAmBC,GACxB,OAAOqK,EAA8B1I,KAAKia,aAAc5b,EAAE4b,gBAE3D,CACD3Z,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKia,eAAiB5b,EAAE4b,gBAE/B,CAAC,CACH3Z,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,IAAI6C,EAAI,SAAgC7C,GACtC,IACE,OAAOgc,KAAKhc,GACZ,MAAOA,GAIP,KAAM,oBAAsBic,cAAgBjc,aAAaic,aAAe,IAAIX,GAA4B,0BAA4Btb,GAAKA,GAPrI,CAWPA,GAED,OAAO,IAAI0b,EAAW7Y,KAEvB,CACDZ,IAAK,iBACLlC,MAAO,SAAwBC,GAG7B,IAAI6C,EAIJ,SAA8C7C,GAG5C,IAFA,IAAI6C,EAAI,GAEC9D,EAAI,EAAGA,EAAIiB,EAAEN,SAAUX,EAC9B8D,GAAKgI,OAAOqR,aAAalc,EAAEjB,IAG7B,OAAO8D,EAPT,CAYC7C,GAED,OAAO,IAAI0b,EAAW7Y,OAInB6Y,EA3HqB,CA4H5Bjd,OAAOC,UAETgd,GAAWS,kBAAoB,IAAIT,GAAW,IAC9C,IAAIU,GAAK,IAAIC,OAAO,iDAMpB,SAASC,GAA6Btc,GAIpC,GAAIgE,IAAuBhE,GAAI,iBAAmBA,EAAG,CAInD,IAAI6C,EAAI,EACJ9D,EAAIqd,GAAGG,KAAKvc,GAEhB,GAAIgE,IAAuBjF,GAAIA,EAAE,GAAI,CAEnC,IAAIyd,EAAOzd,EAAE,GACbyd,GAAQA,EAAO,aAAaC,OAAO,EAAG,GAAI5Z,EAAI8R,OAAO6H,GAIvD,IAAIvV,EAAI,IAAI0D,KAAK3K,GACjB,MAAO,CACLyK,QAAST,KAAKC,MAAMhD,EAAEgE,UAAY,KAClCyR,MAAO7Z,GAIX,MAAO,CACL4H,QAASkS,GAA0B3c,EAAEyK,SACrCiS,MAAOC,GAA0B3c,EAAE0c,QASvC,SAASC,GAA0B3c,GAEjC,MAAO,iBAAmBA,EAAIA,EAAI,iBAAmBA,EAAI2U,OAAO3U,GAAK,EAKvE,SAAS4c,GAA8B5c,GACrC,MAAO,iBAAmBA,EAAI0b,GAAWmB,iBAAiB7c,GAAK0b,GAAWoB,eAAe9c,GAuC3F,SAAS+c,GAA4B/c,GACnC,IAAI6C,EAAG9D,EACP,MAAO,sBAAwB,QAAUA,IAAM,QAAU8D,EAAI,MAAQ7C,OAAI,EAASA,EAAEgd,gBAAa,IAAWna,OAAI,EAASA,EAAEmL,SAAW,IAAIiP,gBAAa,IAAWle,OAAI,EAASA,EAAEme,aAcnL,SAASC,GAA2Bnd,GAClC,IAAI6C,EAAI7C,EAAEgd,SAAShP,OAAOoP,mBAC1B,OAAOL,GAA4Bla,GAAKsa,GAA2Bta,GAAKA,EAO1E,SAASwa,GAA4Brd,GACnC,IAAI6C,EAAIyZ,GAA6Btc,EAAEgd,SAAShP,OAAOsP,qBAAqBC,gBAE5E,OAAO,IAAI/S,EAAU3H,EAAE4H,QAAS5H,EAAE6Z,OAoBpC,IAAIc,IAA4B,QAmBhC,SAASA,EAAaxd,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,EAAGvB,EAAGkS,EAAGC,IAC5C,OAAgB9O,KAAM6b,GAEtB7b,KAAK8b,WAAazd,EAAG2B,KAAK+b,MAAQ7a,EAAGlB,KAAKgc,eAAiB5e,EAAG4C,KAAKic,KAAO3W,EAAGtF,KAAKkc,IAAMle,EAAGgC,KAAKmc,iBAAmBje,EAAG8B,KAAKoc,sBAAwBzf,EAAGqD,KAAKqc,mBAAqBxN,EAAG7O,KAAKsc,gBAAkBxN,KAUxMyN,GAA0B,WAC5B,SAASA,EAAWle,EAAG6C,IACrB,OAAgBlB,KAAMuc,GAEtBvc,KAAKwc,UAAYne,EAAG2B,KAAKyc,SAAWvb,GAAK,YAoB3C,OAjBA,OAAaqb,EAAY,CAAC,CACxBjc,IAAK,oBACLyG,IAAK,WACH,MAAO,cAAgB/G,KAAKyc,WAE7B,CACDnc,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOA,aAAake,GAAcle,EAAEme,YAAcxc,KAAKwc,WAAane,EAAEoe,WAAazc,KAAKyc,YAExF,CAAC,CACHnc,IAAK,QACLlC,MAAO,WACL,OAAO,IAAIme,EAAW,GAAI,QAIvBA,EAxBqB,GA4C1BG,GAAK,CACPrB,SAAU,CACRhP,OAAQ,CACNiP,SAAU,CACRC,YAAa,cAUrB,SAASoB,GAAoBte,GAC3B,MAAO,cAAeA,EAAI,EAExB,iBAAkBA,EAAI,EAEtB,iBAAkBA,GAAK,gBAAiBA,EAAI,EAE5C,mBAAoBA,EAAI,EAExB,gBAAiBA,EAAI,EAErB,eAAgBA,EAAI,EAEpB,mBAAoBA,EAAI,EAExB,kBAAmBA,EAAI,EAEvB,eAAgBA,EAAI,EAEpB,aAAcA,EAAI+c,GAA4B/c,GAAK,EAEnDue,GAAqBve,GAAK,iBAE1B,GAEA6D,IAKJ,SAAS2a,GAAsBxe,EAAG6C,GAChC,GAAI7C,IAAM6C,EAAG,OAAO,EAEpB,IAAI9D,EAAIuf,GAAoBte,GAE5B,GAAIjB,IAAMuf,GAAoBzb,GAAI,OAAO,EAEzC,OAAQ9D,GACN,KAAK,EAGL,KAAK,iBAGH,OAAO,EAET,KAAK,EAGH,OAAOiB,EAAEye,eAAiB5b,EAAE4b,aAE9B,KAAK,EAGH,OAAOpB,GAA4Brd,GAAGqL,QAAQgS,GAA4Bxa,IAE5E,KAAK,EAGH,OAAO,SAAmC7C,EAAG6C,GAC3C,GAAI,iBAAmB7C,EAAEud,gBAAkB,iBAAmB1a,EAAE0a,gBAAkBvd,EAAEud,eAAe7d,SAAWmD,EAAE0a,eAAe7d,OAC7H,OAAOM,EAAEud,iBAAmB1a,EAAE0a,eAEhC,IAAIxe,EAAIud,GAA6Btc,EAAEud,gBACnCtW,EAAIqV,GAA6BzZ,EAAE0a,gBAEvC,OAAOxe,EAAE0L,UAAYxD,EAAEwD,SAAW1L,EAAE2d,QAAUzV,EAAEyV,MAP3C,CAQL1c,EAAG6C,GAEP,KAAK,EAGH,OAAO7C,EAAEkd,cAAgBra,EAAEqa,YAE7B,KAAK,EAGH,OAAO,SAA8Bld,EAAG6C,GACtC,OAAO+Z,GAA8B5c,EAAE0e,YAAYrT,QAAQuR,GAA8B/Z,EAAE6b,aADtF,CAEL1e,EAAG6C,GAEP,KAAK,EAGH,OAAO7C,EAAE2e,iBAAmB9b,EAAE8b,eAEhC,KAAK,EAGH,OAAO,SAAkC3e,EAAG6C,GAC1C,OAAO8Z,GAA0B3c,EAAE4e,cAAcC,YAAclC,GAA0B9Z,EAAE+b,cAAcC,WAAalC,GAA0B3c,EAAE4e,cAAcE,aAAenC,GAA0B9Z,EAAE+b,cAAcE,WADpN,CAEL9e,EAAG6C,GAEP,KAAK,EAGH,OAAO,SAAgC7C,EAAG6C,GACxC,GAAI,iBAAkB7C,GAAK,iBAAkB6C,EAAG,OAAO8Z,GAA0B3c,EAAE+e,gBAAkBpC,GAA0B9Z,EAAEkc,cAEjI,GAAI,gBAAiB/e,GAAK,gBAAiB6C,EAAG,CAC5C,IAAImc,EAAMrC,GAA0B3c,EAAEif,aAClChY,EAAI0V,GAA0B9Z,EAAEoc,aAEpC,OAAOD,IAAQ/X,EAAImQ,GAAyB4H,KAAS5H,GAAyBnQ,GAAKiY,MAAMF,IAAQE,MAAMjY,GAGzG,OAAO,EAVF,CAWLjH,EAAG6C,GAEP,KAAK,EAGH,OAAOyH,EAAsBtK,EAAEmf,WAAWC,QAAU,GAAIvc,EAAEsc,WAAWC,QAAU,GAAIZ,IAErF,KAAK,GAGH,OAAO,SAAgCxe,EAAG6C,GACxC,IAAI9D,EAAIiB,EAAEgd,SAAShP,QAAU,GACzB/G,EAAIpE,EAAEma,SAAShP,QAAU,GAC7B,GAAI6J,GAAqB9Y,KAAO8Y,GAAqB5Q,GAAI,OAAO,EAEhE,IAAK,IAAIoY,KAAQtgB,EACf,GAAIA,EAAE+Y,eAAeuH,UAAU,IAAWpY,EAAEoY,KAAUb,GAAsBzf,EAAEsgB,GAAOpY,EAAEoY,KAAS,OAAO,EAGzG,OAAO,EATF,CAYNrf,EAAG6C,GAEN,QACE,OAAOgB,KAIb,SAASyb,GAA6Btf,EAAG6C,GACvC,YAAO,KAAY7C,EAAEof,QAAU,IAAIG,MAAK,SAAUvf,GAChD,OAAOwe,GAAsBxe,EAAG6C,MAIpC,SAAS2c,GAAuBxf,EAAG6C,GACjC,GAAI7C,IAAM6C,EAAG,OAAO,EAEpB,IAAI9D,EAAIuf,GAAoBte,GACxBiH,EAAIqX,GAAoBzb,GAE5B,GAAI9D,IAAMkI,EAAG,OAAOoD,EAA8BtL,EAAGkI,GAErD,OAAQlI,GACN,KAAK,EAGL,KAAK,iBAGH,OAAO,EAET,KAAK,EAGH,OAAOsL,EAA8BrK,EAAEye,aAAc5b,EAAE4b,cAEzD,KAAK,EAGH,OAAO,SAAkCze,EAAG6C,GAC1C,IAAI9D,EAAI4d,GAA0B3c,EAAE+e,cAAgB/e,EAAEif,aAClDhY,EAAI0V,GAA0B9Z,EAAEkc,cAAgBlc,EAAEoc,aAEtD,OAAOlgB,EAAIkI,GAAK,EAAIlI,EAAIkI,EAAI,EAAIlI,IAAMkI,EAAI,EAC1CiY,MAAMngB,GAAKmgB,MAAMjY,GAAK,GAAK,EAAI,EAL1B,CAMLjH,EAAG6C,GAEP,KAAK,EAGH,OAAO4c,GAA4Bzf,EAAEud,eAAgB1a,EAAE0a,gBAEzD,KAAK,EAGH,OAAOkC,GAA4BpC,GAA4Brd,GAAIqd,GAA4Bxa,IAEjG,KAAK,EAGH,OAAOwH,EAA8BrK,EAAEkd,YAAara,EAAEqa,aAExD,KAAK,EAGH,OAAO,SAAgCld,EAAG6C,GACxC,IAAI9D,EAAI6d,GAA8B5c,GAClCiH,EAAI2V,GAA8B/Z,GAEtC,OAAO9D,EAAE+P,UAAU7H,GAJd,CAKLjH,EAAE0e,WAAY7b,EAAE6b,YAEpB,KAAK,EAGH,OAAO,SAAqC1e,EAAG6C,GAI7C,IAHA,IAAI9D,EAAIiB,EAAE2M,MAAM,KACZ1F,EAAIpE,EAAE8J,MAAM,KAEP+S,EAAO,EAAGA,EAAO3gB,EAAEW,QAAUggB,EAAOzY,EAAEvH,OAAQggB,IAAQ,CAC7D,IAAIC,EAAMtV,EAA8BtL,EAAE2gB,GAAOzY,EAAEyY,IAEnD,GAAI,IAAMC,EAAK,OAAOA,EAGxB,OAAOtV,EAA8BtL,EAAEW,OAAQuH,EAAEvH,QAV5C,CAWLM,EAAE2e,eAAgB9b,EAAE8b,gBAExB,KAAK,EAGH,OAAO,SAAoC3e,EAAG6C,GAC5C,IAAI9D,EAAIsL,EAA8BsS,GAA0B3c,EAAE6e,UAAWlC,GAA0B9Z,EAAEgc,WAEzG,OAAI,IAAM9f,EAAUA,EACbsL,EAA8BsS,GAA0B3c,EAAE8e,WAAYnC,GAA0B9Z,EAAEic,YAJpG,CAKL9e,EAAE4e,cAAe/b,EAAE+b,eAEvB,KAAK,EAGH,OAAO,SAAiC5e,EAAG6C,GAIzC,IAHA,IAAI9D,EAAIiB,EAAEof,QAAU,GAChBnY,EAAIpE,EAAEuc,QAAU,GAEXQ,EAAO,EAAGA,EAAO7gB,EAAEW,QAAUkgB,EAAO3Y,EAAEvH,SAAUkgB,EAAM,CAC7D,IAAIC,EAAOL,GAAuBzgB,EAAE6gB,GAAO3Y,EAAE2Y,IAE7C,GAAIC,EAAM,OAAOA,EAGnB,OAAOxV,EAA8BtL,EAAEW,OAAQuH,EAAEvH,QAV5C,CAWLM,EAAEmf,WAAYtc,EAAEsc,YAEpB,KAAK,GAGH,OAAO,SAA+Bnf,EAAG6C,GACvC,GAAI7C,IAAMqe,GAAGrB,UAAYna,IAAMwb,GAAGrB,SAAU,OAAO,EACnD,GAAIhd,IAAMqe,GAAGrB,SAAU,OAAO,EAC9B,GAAIna,IAAMwb,GAAGrB,SAAU,OAAQ,EAC/B,IAAIje,EAAIiB,EAAEgO,QAAU,GAChB/G,EAAIjI,OAAO8gB,KAAK/gB,GAChBY,EAAIkD,EAAEmL,QAAU,GAChBnO,EAAIb,OAAO8gB,KAAKngB,GAKpBsH,EAAE4T,OAAQhb,EAAEgb,OAEZ,IAAK,IAAIkF,EAAO,EAAGA,EAAO9Y,EAAEvH,QAAUqgB,EAAOlgB,EAAEH,SAAUqgB,EAAM,CAC7D,IAAIC,EAAO3V,EAA8BpD,EAAE8Y,GAAOlgB,EAAEkgB,IAEpD,GAAI,IAAMC,EAAM,OAAOA,EAEvB,IAAI1hB,EAAIkhB,GAAuBzgB,EAAEkI,EAAE8Y,IAAQpgB,EAAEE,EAAEkgB,KAE/C,GAAI,IAAMzhB,EAAG,OAAOA,EAGtB,OAAO+L,EAA8BpD,EAAEvH,OAAQG,EAAEH,QAxB5C,CA8BNM,EAAEgd,SAAUna,EAAEma,UAEjB,QACE,MAAMnZ,KAIZ,SAAS4b,GAA4Bzf,EAAG6C,GACtC,GAAI,iBAAmB7C,GAAK,iBAAmB6C,GAAK7C,EAAEN,SAAWmD,EAAEnD,OAAQ,OAAO2K,EAA8BrK,EAAG6C,GAEnH,IAAI9D,EAAIud,GAA6Btc,GACjCiH,EAAIqV,GAA6BzZ,GACjClD,EAAI0K,EAA8BtL,EAAE0L,QAASxD,EAAEwD,SAEnD,OAAO,IAAM9K,EAAIA,EAAI0K,EAA8BtL,EAAE2d,MAAOzV,EAAEyV,OAGhE,SAASuD,GAAYjgB,GACnB,OAAOkgB,GAAwBlgB,GAGjC,SAASkgB,GAAwBlgB,GAC/B,MAAO,cAAeA,EAAI,OAAS,iBAAkBA,EAAI,GAAKA,EAAEye,aAAe,iBAAkBze,EAAI,GAAKA,EAAE+e,aAAe,gBAAiB/e,EAAI,GAAKA,EAAEif,YAAc,mBAAoBjf,EAAI,SAAqCA,GAChO,IAAI6C,EAAIyZ,GAA6Btc,GAErC,MAAO,QAAQkD,OAAOL,EAAE4H,QAAS,KAAKvH,OAAOL,EAAE6Z,MAAO,KAHqI,CAI3L1c,EAAEud,gBAAkB,gBAAiBvd,EAAIA,EAAEkd,YAAc,eAAgBld,EAAI,SAAsCA,GACnH,OAAO4c,GAA8B5c,GAAGmgB,WADqC,CAE7EngB,EAAE0e,YAAc,mBAAoB1e,EAAI,SAAqCA,GAC7E,OAAOsN,GAAY8S,SAASpgB,GAAGd,WADS,CAExCc,EAAE2e,gBAAkB,kBAAmB3e,EAAI,SAAoCA,GAC/E,MAAO,OAAOkD,OAAOlD,EAAE6e,SAAU,KAAK3b,OAAOlD,EAAE8e,UAAW,KADf,CAE3C9e,EAAE4e,eAAiB,eAAgB5e,EAAI,SAAiCA,GACxE,IAIIqgB,EAJAxd,EAAI,IACJ9D,GAAI,EAEJuhB,EAAajiB,EAA2B2B,EAAEof,QAAU,IAGxD,IACE,IAAKkB,EAAWzgB,MAAOwgB,EAASC,EAAWvhB,KAAKe,MAAO,CACrD,IAAImH,EAAIoZ,EAAOtgB,MACfhB,EAAIA,GAAI,EAAK8D,GAAK,IAAKA,GAAKqd,GAAwBjZ,IAEtD,MAAO7G,GACPkgB,EAAWtgB,EAAEI,GACb,QACAkgB,EAAWpgB,IAGb,OAAO2C,EAAI,IAlB4B,CA2BxC7C,EAAEmf,YAAc,aAAcnf,EAAI,SAA+BA,GAGhE,IAKIugB,EAJAxhB,EAAI,IACJkI,GAAI,EAEJuZ,EAAaniB,EAJTW,OAAO8gB,KAAK9f,EAAEgO,QAAU,IAAI6M,QAOpC,IACE,IAAK2F,EAAW3gB,MAAO0gB,EAASC,EAAWzhB,KAAKe,MAAO,CACrD,IAAIH,EAAI4gB,EAAOxgB,MACfkH,EAAIA,GAAI,EAAKlI,GAAK,IAAKA,GAAK,GAAGmE,OAAOvD,EAAG,KAAKuD,OAAOgd,GAAwBlgB,EAAEgO,OAAOrO,MAExF,MAAOS,GACPogB,EAAWxgB,EAAEI,GACb,QACAogB,EAAWtgB,IAGb,OAAOnB,EAAI,IArBsB,CAsBjCiB,EAAEgd,UAAYnZ,IAsFlB,SAASyT,GAAUtX,GACjB,QAASA,GAAK,iBAAkBA,EAOlC,SAASpB,GAAQoB,GACf,QAASA,GAAK,eAAgBA,EAiBhC,SAASygB,GAAqBzgB,GAC5B,QAASA,GAAK,aAAcA,EAK9B,SAAS0gB,GAAoB1gB,GAC3B,GAAIA,EAAE4e,cAAe,MAAO,CAC1BA,cAAe5f,OAAO2hB,OAAO,GAAI3gB,EAAE4e,gBAErC,GAAI5e,EAAEud,gBAAkB,iBAAmBvd,EAAEud,eAAgB,MAAO,CAClEA,eAAgBve,OAAO2hB,OAAO,GAAI3gB,EAAEud,iBAGtC,GAAIvd,EAAEgd,SAAU,CACd,IAAIna,EAAI,CACNma,SAAU,CACRhP,OAAQ,KAGZ,OAAO+J,GAAS/X,EAAEgd,SAAShP,QAAQ,SAAUhO,EAAGjB,GAC9C,OAAO8D,EAAEma,SAAShP,OAAOhO,GAAK0gB,GAAoB3hB,MAChD8D,EAGN,GAAI7C,EAAEmf,WAAY,CAOhB,IANA,IAAIyB,EAAO,CACTzB,WAAY,CACVC,OAAQ,KAIHrgB,EAAI,EAAGA,GAAKiB,EAAEmf,WAAWC,QAAU,IAAI1f,SAAUX,EACxD6hB,EAAKzB,WAAWC,OAAOrgB,GAAK2hB,GAAoB1gB,EAAEmf,WAAWC,OAAOrgB,IAGtE,OAAO6hB,EAGT,OAAO5hB,OAAO2hB,OAAO,GAAI3gB,GAK3B,SAASue,GAAqBve,GAC5B,MAAO,eAAiBA,EAAEgd,UAAY,IAAIhP,QAAU,IAAIiP,UAAY,IAAIC,YA2F1E,IAAI2D,GAA2B,WAC7B,SAASA,EAAY7gB,IACnB,OAAgB2B,KAAMkf,GAEtBlf,KAAK5B,MAAQC,EAiJf,OA9IA,OAAa6gB,EAAa,CAAC,CACzB5e,IAAK,QACLlC,MAOA,SAAeC,GACb,GAAIA,EAAEyY,UAAW,OAAO9W,KAAK5B,MAI3B,IAFA,IAAI8C,EAAIlB,KAAK5B,MAEJhB,EAAI,EAAGA,EAAIiB,EAAEN,OAAS,IAAKX,EAClC,IAA8C0hB,GAA1C5d,GAAKA,EAAEma,SAAShP,QAAU,IAAIhO,EAAE0I,IAAI3J,KAA+B,OAAO,KAGhF,OAAO8D,GAAKA,EAAEma,SAAShP,QAAU,IAAIhO,EAAEyN,iBAAqB,OAU/D,CACDxL,IAAK,MACLlC,MAAO,SAAaC,EAAG6C,GACrBlB,KAAKmf,aAAa9gB,EAAEwN,WAAWxN,EAAEyN,eAAiBiT,GAAoB7d,KAQvE,CACDZ,IAAK,SACLlC,MAAO,SAAgBC,GACrB,IAAI+gB,EAAUpf,KAEVkB,EAAIiK,GAAYc,YAChB7O,EAAI,GACJkI,EAAI,GACRjH,EAAE2L,SAAQ,SAAU3L,EAAGL,GACrB,IAAKkD,EAAEme,oBAAoBrhB,GAAI,CAE7B,IAAIshB,EAAOF,EAAQD,aAAaje,GAEhCke,EAAQG,aAAaD,EAAMliB,EAAGkI,GAAIlI,EAAI,GAAIkI,EAAI,GAAIpE,EAAIlD,EAAE6N,UAG1DxN,EAAIjB,EAAEY,EAAE8N,eAAiBiT,GAAoB1gB,GAAKiH,EAAE2E,KAAKjM,EAAE8N,kBAE7D,IAAI9N,EAAIgC,KAAKmf,aAAaje,GAC1BlB,KAAKuf,aAAavhB,EAAGZ,EAAGkI,KASzB,CACDhF,IAAK,SACLlC,MAAO,SAAiBC,GACtB,IAAI6C,EAAIlB,KAAKwf,MAAMnhB,EAAEwN,WACrBiT,GAAqB5d,IAAMA,EAAEma,SAAShP,eAAiBnL,EAAEma,SAAShP,OAAOhO,EAAEyN,iBAE5E,CACDxL,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOwe,GAAsB7c,KAAK5B,MAAOC,EAAED,SAO5C,CACDkC,IAAK,eACLlC,MAAO,SAAsBC,GAC3B,IAAI6C,EAAIlB,KAAK5B,MACb8C,EAAEma,SAAShP,SAAWnL,EAAEma,SAAW,CACjChP,OAAQ,KAGV,IAAK,IAAIjP,EAAI,EAAGA,EAAIiB,EAAEN,SAAUX,EAAG,CACjC,IAAIkI,EAAIpE,EAAEma,SAAShP,OAAOhO,EAAE0I,IAAI3J,IAChC0hB,GAAqBxZ,IAAMA,EAAE+V,SAAShP,SAAW/G,EAAI,CACnD+V,SAAU,CACRhP,OAAQ,KAETnL,EAAEma,SAAShP,OAAOhO,EAAE0I,IAAI3J,IAAMkI,GAAIpE,EAAIoE,EAG3C,OAAOpE,EAAEma,SAAShP,SAOnB,CACD/L,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,EAAG9D,GACjCgZ,GAASlV,GAAG,SAAUA,EAAG9D,GACvB,OAAOiB,EAAE6C,GAAK9D,KAGhB,IACIqiB,EADAC,EAAahjB,EAA2BU,GAG5C,IACE,IAAKsiB,EAAWxhB,MAAOuhB,EAASC,EAAWtiB,KAAKe,MAAO,CACrD,IAAIwhB,EAAOF,EAAOrhB,aACXC,EAAEshB,IAEX,MAAOlhB,GACPihB,EAAWrhB,EAAEI,GACb,QACAihB,EAAWnhB,OAGd,CACD+B,IAAK,QACLlC,MAAO,WACL,OAAO,IAAI8gB,EAAYH,GAAoB/e,KAAK5B,WAEhD,CAAC,CACHkC,IAAK,QACLlC,MAAO,WACL,OAAO,IAAI8gB,EAAY,CACrB7D,SAAU,SAKT6D,EArJsB,GA4J/B,SAASU,GAA2BvhB,GAClC,IAAI6C,EAAI,GACR,OAAOkV,GAAS/X,EAAEgO,QAAQ,SAAUhO,EAAGjB,GACrC,IAAIkI,EAAI,IAAI6F,GAAY,CAAC9M,IAEzB,GAAIygB,GAAqB1hB,GAAI,CAC3B,IAAIyiB,EAAOD,GAA2BxiB,EAAEie,UAAUhP,OAElD,GAAI,IAAMwT,EAAK9hB,OACbmD,EAAE+I,KAAK3E,OAAQ,CAGf,IACIwa,EADAC,EAAarjB,EAA2BmjB,GAG5C,IACE,IAAKE,EAAW7hB,MAAO4hB,EAASC,EAAW3iB,KAAKe,MAAO,CACrD,IAAI6hB,EAAMF,EAAO1hB,MACjB8C,EAAE+I,KAAK3E,EAAE2a,MAAMD,KAEjB,MAAOvhB,GACPshB,EAAW1hB,EAAEI,GACb,QACAshB,EAAWxhB,WAKf2C,EAAE+I,KAAK3E,MACP,IAAI2T,GAAU/X,GA+BpB,IAAIgf,GAA+B,WACjC,SAASA,EAAgB7hB,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,EAAGvB,IACzC,OAAgBqD,KAAMkgB,GAEtBlgB,KAAKM,IAAMjC,EAAG2B,KAAKmgB,aAAejf,EAAGlB,KAAKiQ,QAAU7S,EAAG4C,KAAK8M,SAAWxH,EAAGtF,KAAKogB,WAAapiB,EAAGgC,KAAKwY,KAAOta,EAAG8B,KAAKqgB,cAAgB1jB,EAwNrI,OAhNA,OAAaujB,EAAiB,CAAC,CAC7B5f,IAAK,yBACLlC,MAKA,SAAgCC,EAAG6C,GAMjC,OAAQlB,KAAKogB,WAAW1W,QAAQH,EAAgBW,QAAU,IAEtDlK,KAAKmgB,cAAgB,IAErBngB,KAAKmgB,eAAiBngB,KAAKogB,WAAa/hB,GAAI2B,KAAKiQ,QAAU5R,EAAG2B,KAAKmgB,aAAe,EAEpFngB,KAAKwY,KAAOtX,EAAGlB,KAAKqgB,cAAgB,EAEpCrgB,OAOH,CACDM,IAAK,sBACLlC,MAAO,SAA6BC,GAClC,OAAO2B,KAAKiQ,QAAU5R,EAAG2B,KAAKmgB,aAAe,EAE3CngB,KAAKwY,KAAO0G,GAAYtS,QAAS5M,KAAKqgB,cAAgB,EAEtDrgB,OAQH,CACDM,IAAK,2BACLlC,MAAO,SAAkCC,GACvC,OAAO2B,KAAKiQ,QAAU5R,EAAG2B,KAAKmgB,aAAe,EAE3CngB,KAAKwY,KAAO0G,GAAYtS,QAAS5M,KAAKqgB,cAAgB,EAEtDrgB,OAEH,CACDM,IAAK,2BACLlC,MAAO,WACL,OAAO4B,KAAKqgB,cAAgB,EAE1BrgB,OAEH,CACDM,IAAK,uBACLlC,MAAO,WACL,OAAO4B,KAAKqgB,cAAgB,EAE1BrgB,KAAKiQ,QAAU1G,EAAgBW,MAAOlK,OAEzC,CACDM,IAAK,cACLlC,MAAO,SAAqBC,GAC1B,OAAO2B,KAAK8M,SAAWzO,EAAG2B,OAE3B,CACDM,IAAK,oBACLyG,IAAK,WACH,OAAO,IAEH/G,KAAKqgB,gBAEV,CACD/f,IAAK,wBACLyG,IAAK,WACH,OAAO,IAEH/G,KAAKqgB,gBAEV,CACD/f,IAAK,mBACLyG,IAAK,WACH,OAAO/G,KAAKsgB,mBAAqBtgB,KAAKugB,wBAEvC,CACDjgB,IAAK,kBACLlC,MAAO,WACL,OAAO,IAEH4B,KAAKmgB,eAEV,CACD7f,IAAK,kBACLlC,MAAO,WACL,OAAO,IAEH4B,KAAKmgB,eAEV,CACD7f,IAAK,eACLlC,MAAO,WACL,OAAO,IAEH4B,KAAKmgB,eAEV,CACD7f,IAAK,oBACLlC,MAAO,WACL,OAAO,IAEH4B,KAAKmgB,eAEV,CACD7f,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOA,aAAa6hB,GAAmBlgB,KAAKM,IAAIoJ,QAAQrL,EAAEiC,MAAQN,KAAKiQ,QAAQvG,QAAQrL,EAAE4R,UAAYjQ,KAAKmgB,eAAiB9hB,EAAE8hB,cAAgBngB,KAAKqgB,gBAAkBhiB,EAAEgiB,eAAiBrgB,KAAKwY,KAAK9O,QAAQrL,EAAEma,QAE5M,CACDlY,IAAK,cACLlC,MAAO,WACL,OAAO,IAAI8hB,EAAgBlgB,KAAKM,IAAKN,KAAKmgB,aAAcngB,KAAKiQ,QAASjQ,KAAK8M,SAAU9M,KAAKogB,WAAYpgB,KAAKwY,KAAKgI,QAASxgB,KAAKqgB,iBAE/H,CACD/f,IAAK,WACLlC,MAAO,WACL,MAAO,YAAYmD,OAAOvB,KAAKM,IAAK,MAAMiB,OAAOvB,KAAKiQ,QAAS,MAAM1O,OAAOS,KAAKC,UAAUjC,KAAKwY,KAAKpa,OAAQ,mBAAmBmD,OAAOvB,KAAKogB,WAAY,uBAAuB7e,OAAOvB,KAAKmgB,aAAc,wBAAwB5e,OAAOvB,KAAKqgB,cAAe,SAE5P,CAAC,CACH/f,IAAK,qBACLlC,MAAO,SAA4BC,GACjC,OAAO,IAAI6hB,EAAgB7hB,EAAG,EAI9BkL,EAAgBW,MAEhBX,EAAgBW,MAEhBX,EAAgBW,MAAOgV,GAAYtS,QAAS,KAS7C,CACDtM,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,EAAG9D,EAAGkI,GACxC,OAAO,IAAI4a,EAAgB7hB,EAAG,EAI9B6C,EAEAqI,EAAgBW,MAEhB9M,EAAGkI,EAAG,KAMP,CACDhF,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,GAC/B,OAAO,IAAIgf,EAAgB7hB,EAAG,EAI9B6C,EAEAqI,EAAgBW,MAEhBX,EAAgBW,MAAOgV,GAAYtS,QAAS,KAU7C,CACDtM,IAAK,qBACLlC,MAAO,SAA4BC,EAAG6C,GACpC,OAAO,IAAIgf,EAAgB7hB,EAAG,EAI9B6C,EAEAqI,EAAgBW,MAEhBX,EAAgBW,MAAOgV,GAAYtS,QAAS,OAMzCsT,EA5N0B,GAoQ/BO,IAAqB,QAAa,SAASA,EAAMpiB,EAAG6C,IACtD,OAAgBlB,KAAMygB,GAEtBzgB,KAAK0gB,SAAWriB,EAAG2B,KAAK2gB,UAAYzf,KAGtC,SAAS0f,GAAiCviB,EAAG6C,EAAG9D,GAG9C,IAFA,IAAIkI,EAAI,EAECtH,EAAI,EAAGA,EAAIK,EAAEqiB,SAAS3iB,OAAQC,IAAK,CAC1C,IAAIE,EAAIgD,EAAElD,GACNrB,EAAI0B,EAAEqiB,SAAS1iB,GAInB,GAH0BsH,EAAtBpH,EAAEshB,MAAMqB,aAAkBlV,GAAY7B,WAAW6B,GAAY8S,SAAS9hB,EAAEqgB,gBAAiB5f,EAAEkD,KACzFud,GAAuBlhB,EAAGS,EAAEob,KAAKgH,MAAMthB,EAAEshB,QAE3C,SAEAthB,EAAE4iB,MAAQxb,IAAM,GAAI,IAAMA,EAAG,MAGnC,OAAOA,EAQT,SAASyb,GAAsB1iB,EAAG6C,GAChC,GAAI,OAAS7C,EAAG,OAAO,OAAS6C,EAChC,GAAI,OAASA,EAAG,OAAO,EACvB,GAAI7C,EAAEsiB,YAAczf,EAAEyf,WAAatiB,EAAEqiB,SAAS3iB,SAAWmD,EAAEwf,SAAS3iB,OAAQ,OAAO,EAEnF,IAAK,IAAIX,EAAI,EAAGA,EAAIiB,EAAEqiB,SAAS3iB,OAAQX,IACrC,IAAKyf,GAAsBxe,EAAEqiB,SAAStjB,GAAI8D,EAAEwf,SAAStjB,IAAK,OAAO,EAGnE,OAAO,EAwBT,IAAI4jB,IAAuB,QAAa,SAASA,EAAQ3iB,GACvD,IAAI6C,EAAIjB,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,OAE5E,OAAgBD,KAAMghB,GAEtBhhB,KAAKwf,MAAQnhB,EAAG2B,KAAK8gB,IAAM5f,KAG7B,SAAS+f,GAAwB5iB,EAAG6C,GAClC,OAAO7C,EAAEyiB,MAAQ5f,EAAE4f,KAAOziB,EAAEmhB,MAAM9V,QAAQxI,EAAEse,OAoB9C,IAAI0B,IAAsB,QAAa,SAASA,KAC9C,OAAgBlhB,KAAMkhB,MAGpBC,GAA2B,SAAUC,IACvC,OAAUD,EAAaC,GAEvB,IAAIC,EAAUliB,EAAagiB,GAE3B,SAASA,EAAY9iB,EAAG6C,EAAG9D,GACzB,IAAIkkB,EAKJ,OAHA,OAAgBthB,KAAMmhB,IAEtBG,EAAUD,EAAQ7jB,KAAKwC,OAAewf,MAAQnhB,EAAGijB,EAAQC,GAAKrgB,EAAGogB,EAAQljB,MAAQhB,EAC1EkkB,EA2GT,OApGA,OAAaH,EAAa,CAAC,CACzB7gB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAI6C,EAAI7C,EAAEma,KAAKgH,MAAMxf,KAAKwf,OAE1B,MAAO,OAEHxf,KAAKuhB,GAAK,OAASrgB,GAAKlB,KAAKwhB,kBAAkB3D,GAAuB3c,EAAGlB,KAAK5B,QAAU,OAAS8C,GAAKyb,GAAoB3c,KAAK5B,SAAWue,GAAoBzb,IAAMlB,KAAKwhB,kBAAkB3D,GAAuB3c,EAAGlB,KAAK5B,UAE/N,CACDkC,IAAK,oBACLlC,MAAO,SAA2BC,GAChC,OAAQ2B,KAAKuhB,IACX,IAAK,IAGH,OAAOljB,EAAI,EAEb,IAAK,KAGH,OAAOA,GAAK,EAEd,IAAK,KAGH,OAAO,IAAMA,EAEf,IAAK,KAGH,OAAO,IAAMA,EAEf,IAAK,IAGH,OAAOA,EAAI,EAEb,IAAK,KAGH,OAAOA,GAAK,EAEd,QACE,OAAO6D,OAGZ,CACD5B,IAAK,eACLlC,MAAO,WACL,MAAO,CAAC,IAEN,KAEA,IAEA,KAEA,KAEA,UAEA2M,QAAQ/K,KAAKuhB,KAAO,IAEvB,CACDjhB,IAAK,sBACLlC,MAAO,WACL,MAAO,CAAC4B,QAET,CACDM,IAAK,aACLlC,MAAO,WACL,MAAO,CAAC4B,SAER,CAAC,CACHM,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,EAAG9D,GAC3B,OAAOiB,EAAEwiB,aAAe,OAEpB3f,GAAK,WAELA,EAAIlB,KAAKyhB,uBAAuBpjB,EAAG6C,EAAG9D,GAAK,IAAIskB,GAAyBrjB,EAAG6C,EAAG9D,GAAK,mBAEnF8D,EAAI,IAAIygB,GAA8BtjB,EAAGjB,GAAK,OAE9C8D,EAAI,IAAI0gB,GAAmBvjB,EAAGjB,GAAK,WAEnC8D,EAAI,IAAI2gB,GAAsBxjB,EAAGjB,GAAK,uBAEtC8D,EAAI,IAAI4gB,GAAiCzjB,EAAGjB,GAAK,IAAI+jB,EAAY9iB,EAAG6C,EAAG9D,KAE5E,CACDkD,IAAK,yBACLlC,MAAO,SAAgCC,EAAG6C,EAAG9D,GAC3C,MAAO,OAEH8D,EAAI,IAAI6gB,GAA2B1jB,EAAGjB,GAAK,IAAI4kB,GAA8B3jB,EAAGjB,OAIjF+jB,EAtHsB,CAuH7BD,IAEEe,GAA+B,SAAUC,IAC3C,OAAUD,EAAiBC,GAE3B,IAAIC,EAAUhjB,EAAa8iB,GAE3B,SAASA,EAAgB5jB,EAAG6C,GAC1B,IAAIkhB,EAKJ,OAHA,OAAgBpiB,KAAMiiB,IAEtBG,EAAUD,EAAQ3kB,KAAKwC,OAAeqiB,QAAUhkB,EAAG+jB,EAAQb,GAAKrgB,EAAGkhB,EAAQE,GAAK,KACzEF,EAoCT,OA7BA,OAAaH,EAAiB,CAAC,CAC7B3hB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOkkB,GAAuCviB,WAAQ,IAAWA,KAAKqiB,QAAQzE,MAAK,SAAU1c,GAC3F,OAAQA,EAAEshB,QAAQnkB,WACf,IAAW2B,KAAKqiB,QAAQzE,MAAK,SAAU1c,GAC1C,OAAOA,EAAEshB,QAAQnkB,QAGpB,CACDiC,IAAK,sBACLlC,MAAO,WACL,OAAO,OAAS4B,KAAKsiB,KAAOtiB,KAAKsiB,GAAKtiB,KAAKqiB,QAAQI,QAAO,SAAUpkB,EAAG6C,GACrE,OAAO7C,EAAEkD,OAAOL,EAAEwhB,yBACjB,KAAM1iB,KAAKsiB,KAGf,CACDhiB,IAAK,aACLlC,MAAO,WACL,OAAOf,OAAO2hB,OAAO,GAAIhf,KAAKqiB,YAE9B,CAAC,CACH/hB,IAAK,SACLlC,MAAO,SAAgBC,EAAG6C,GACxB,OAAO,IAAI+gB,EAAgB5jB,EAAG6C,OAI3B+gB,EA/C0B,CAgDjCf,IAEF,SAASqB,GAAuClkB,GAC9C,MAAO,QAEHA,EAAEkjB,GAaR,SAASoB,GAA2CtkB,GAClD,OAAOukB,GAAgCvkB,IAAMkkB,GAAuClkB,GAOtF,SAASukB,GAAgCvkB,GACvC,IACIwkB,EADAC,EAAapmB,EAA2B2B,EAAEgkB,SAG9C,IACE,IAAKS,EAAW5kB,MAAO2kB,EAASC,EAAW1lB,KAAKe,MAAO,CAErD,GADQ0kB,EAAOzkB,iBACE6jB,GAAiB,OAAO,GAE3C,MAAOxjB,GACPqkB,EAAWzkB,EAAEI,GACb,QACAqkB,EAAWvkB,IAGb,OAAO,EAGT,SAASwkB,GAAyB1kB,GAChC,GAAIA,aAAa8iB,GAGf,OAAO9iB,EAAEmhB,MAAM/U,kBAAoBpM,EAAEkjB,GAAGhkB,WAAa+gB,GAAYjgB,EAAED,OACrE,GAAIukB,GAA2CtkB,GAM7C,OAAOA,EAAEgkB,QAAQjhB,KAAI,SAAU/C,GAC7B,OAAO0kB,GAAyB1kB,MAC/BmM,KAAK,KAGR,IAAItJ,EAAI7C,EAAEgkB,QAAQjhB,KAAI,SAAU/C,GAC9B,OAAO0kB,GAAyB1kB,MAC/BmM,KAAK,KACR,MAAO,GAAGjJ,OAAOlD,EAAEkjB,GAAI,KAAKhgB,OAAOL,EAAG,KAI1C,SAAS8hB,GAAuB3kB,EAAG6C,GACjC,OAAO7C,aAAa8iB,GAAc,SAAqC9iB,EAAG6C,GACxE,OAAOA,aAAaigB,IAAe9iB,EAAEkjB,KAAOrgB,EAAEqgB,IAAMljB,EAAEmhB,MAAM9V,QAAQxI,EAAEse,QAAU3C,GAAsBxe,EAAED,MAAO8C,EAAE9C,OADjF,CAEhCC,EAAG6C,GAAK7C,aAAa4jB,GAAkB,SAAyC5jB,EAAG6C,GACnF,OAAIA,aAAa+gB,IAAmB5jB,EAAEkjB,KAAOrgB,EAAEqgB,IAAMljB,EAAEgkB,QAAQtkB,SAAWmD,EAAEmhB,QAAQtkB,QAC3EM,EAAEgkB,QAAQI,QAAO,SAAUpkB,EAAGjB,EAAGkI,GACtC,OAAOjH,GAAK2kB,GAAuB5lB,EAAG8D,EAAEmhB,QAAQ/c,OAC/C,GAJkC,CAaxCjH,EAAG6C,QAAUgB,IAUhB,SAAS+gB,GAA0B5kB,GACjC,OAAOA,aAAa8iB,GAAc,SAAwC9iB,GACxE,MAAO,GAAGkD,OAAOlD,EAAEmhB,MAAM/U,kBAAmB,KAAKlJ,OAAOlD,EAAEkjB,GAAI,KAAKhgB,OAAO+c,GAAYjgB,EAAED,QADxD,CAIjCC,GAAKA,aAAa4jB,GAAkB,SAA4C5jB,GAC/E,OAAOA,EAAEkjB,GAAGhkB,WAAa,KAAOc,EAAE6kB,aAAa9hB,IAAI6hB,IAA2BzY,KAAK,MAAQ,IADxD,CAEnCnM,GAAK,SAGT,IAAIqjB,GAAwC,SAAUyB,IACpD,OAAUzB,EAA0ByB,GAEpC,IAAIC,EAAUjkB,EAAauiB,GAE3B,SAASA,EAAyBrjB,EAAG6C,EAAG9D,GACtC,IAAIimB,EAKJ,OAHA,OAAgBrjB,KAAM0hB,IAEtB2B,EAAUD,EAAQ5lB,KAAKwC,KAAM3B,EAAG6C,EAAG9D,IAAYkD,IAAMqL,GAAY8S,SAASrhB,EAAE4f,gBACrEqG,EAWT,OARA,OAAa3B,EAA0B,CAAC,CACtCphB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAI6C,EAAIyK,GAAY7B,WAAWzL,EAAEiC,IAAKN,KAAKM,KAC3C,OAAON,KAAKwhB,kBAAkBtgB,OAI3BwgB,EAtBmC,CAuB1CP,IAIEY,GAA0C,SAAUuB,IACtD,OAAUvB,EAA4BuB,GAEtC,IAAIC,EAAWpkB,EAAa4iB,GAE5B,SAASA,EAA2B1jB,EAAG6C,GACrC,IAAIsiB,EASJ,OAPA,OAAgBxjB,KAAM+hB,IAEtByB,EAAUD,EAAS/lB,KAAKwC,KAAM3B,EAAG,KAE/B6C,IAAYid,KAAOsF,GAA4C,KAE/DviB,GACKsiB,EAYT,OATA,OAAazB,EAA4B,CAAC,CACxCzhB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKme,KAAKuF,MAAK,SAAUxiB,GAC9B,OAAOA,EAAEwI,QAAQrL,EAAEiC,YAKlByhB,EA3BqC,CA4B5CZ,IAIEa,GAA6C,SAAU2B,IACzD,OAAU3B,EAA+B2B,GAEzC,IAAIC,EAAWzkB,EAAa6iB,GAE5B,SAASA,EAA8B3jB,EAAG6C,GACxC,IAAI2iB,EASJ,OAPA,OAAgB7jB,KAAMgiB,IAEtB6B,EAAUD,EAASpmB,KAAKwC,KAAM3B,EAAG,SAE/B6C,IAAYid,KAAOsF,GAA4C,SAE/DviB,GACK2iB,EAYT,OATA,OAAa7B,EAA+B,CAAC,CAC3C1hB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAQ2B,KAAKme,KAAKuF,MAAK,SAAUxiB,GAC/B,OAAOA,EAAEwI,QAAQrL,EAAEiC,YAKlB0hB,EA3BwC,CA4B/Cb,IAEF,SAASsC,GAA4CplB,EAAG6C,GACtD,IAAI9D,EACJ,QAAS,QAAUA,EAAI8D,EAAEsc,kBAAe,IAAWpgB,OAAI,EAASA,EAAEqgB,SAAW,IAAIrc,KAAI,SAAU/C,GAC7F,OAAOsN,GAAY8S,SAASpgB,EAAE2e,mBAMlC,IAAI2E,GAA6C,SAAUmC,IACzD,OAAUnC,EAA+BmC,GAEzC,IAAIC,EAAW5kB,EAAawiB,GAE5B,SAASA,EAA8BtjB,EAAG6C,GAGxC,OAFA,OAAgBlB,KAAM2hB,GAEfoC,EAASvmB,KAAKwC,KAAM3B,EAAG,iBAE5B6C,GAWJ,OARA,OAAaygB,EAA+B,CAAC,CAC3CrhB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAI6C,EAAI7C,EAAEma,KAAKgH,MAAMxf,KAAKwf,OAC1B,OAAOviB,GAAQiE,IAAMyc,GAA6Bzc,EAAEsc,WAAYxd,KAAK5B,WAIlEujB,EArBwC,CAsB/CR,IAIES,GAAkC,SAAUoC,IAC9C,OAAUpC,EAAoBoC,GAE9B,IAAIC,EAAW9kB,EAAayiB,GAE5B,SAASA,EAAmBvjB,EAAG6C,GAG7B,OAFA,OAAgBlB,KAAM4hB,GAEfqC,EAASzmB,KAAKwC,KAAM3B,EAAG,KAE5B6C,GAWJ,OARA,OAAa0gB,EAAoB,CAAC,CAChCthB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAI6C,EAAI7C,EAAEma,KAAKgH,MAAMxf,KAAKwf,OAC1B,OAAO,OAASte,GAAKyc,GAA6B3d,KAAK5B,MAAMof,WAAYtc,OAItE0gB,EArB6B,CAsBpCT,IAIEU,GAAqC,SAAUqC,IACjD,OAAUrC,EAAuBqC,GAEjC,IAAIC,EAAWhlB,EAAa0iB,GAE5B,SAASA,EAAsBxjB,EAAG6C,GAGhC,OAFA,OAAgBlB,KAAM6hB,GAEfsC,EAAS3mB,KAAKwC,KAAM3B,EAAG,SAE5B6C,GAcJ,OAXA,OAAa2gB,EAAuB,CAAC,CACnCvhB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,GAAIsf,GAA6B3d,KAAK5B,MAAMof,WAAY,CACtD4G,UAAW,eACT,OAAO,EACX,IAAIljB,EAAI7C,EAAEma,KAAKgH,MAAMxf,KAAKwf,OAC1B,OAAO,OAASte,IAAMyc,GAA6B3d,KAAK5B,MAAMof,WAAYtc,OAIvE2gB,EAxBgC,CAyBvCV,IAIEW,GAAgD,SAAUuC,IAC5D,OAAUvC,EAAkCuC,GAE5C,IAAIC,EAAWnlB,EAAa2iB,GAE5B,SAASA,EAAiCzjB,EAAG6C,GAG3C,OAFA,OAAgBlB,KAAM8hB,GAEfwC,EAAS9mB,KAAKwC,KAAM3B,EAAG,qBAE5B6C,GAeJ,OAZA,OAAa4gB,EAAkC,CAAC,CAC9CxhB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAIkmB,EAAUvkB,KAEVkB,EAAI7C,EAAEma,KAAKgH,MAAMxf,KAAKwf,OAC1B,SAAUviB,GAAQiE,KAAOA,EAAEsc,WAAWC,SAAWvc,EAAEsc,WAAWC,OAAOiG,MAAK,SAAUrlB,GAClF,OAAOsf,GAA6B4G,EAAQnmB,MAAMof,WAAYnf,UAK7DyjB,EAzB2C,CA0BlDX,IAoBEqD,IAAoC,QAAa,SAASA,EAAqBnmB,GACjF,IAAI6C,EAAIjB,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxE7C,EAAI6C,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEqF,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEjC,EAAIiC,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxE/B,EAAI+B,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxEtD,EAAIsD,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,MAE5E,OAAgBD,KAAMwkB,GAEtBxkB,KAAK4L,KAAOvN,EAAG2B,KAAKoM,gBAAkBlL,EAAGlB,KAAKykB,QAAUrnB,EAAG4C,KAAKqiB,QAAU/c,EAAGtF,KAAK+J,MAAQ/L,EAAGgC,KAAK0kB,QAAUxmB,EAAG8B,KAAK2kB,MAAQhoB,EAAGqD,KAAK4kB,GAAK,QAY3I,SAASC,GAAoBxmB,GAC3B,IAAI6C,EAAIjB,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxE7C,EAAI6C,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEqF,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEjC,EAAIiC,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxE/B,EAAI+B,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxEtD,EAAIsD,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KAC5E,OAAO,IAAIukB,GAAqBnmB,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,EAAGvB,GAGpD,SAASmoB,GAAyBzmB,GAChC,IAAI6C,EAAIoB,EAAoBjE,GAE5B,GAAI,OAAS6C,EAAE0jB,GAAI,CACjB,IAAIG,EAAO7jB,EAAE0K,KAAKnB,kBAElB,OAASvJ,EAAEkL,kBAAoB2Y,GAAQ,OAAS7jB,EAAEkL,iBAAkB2Y,GAAQ,MAAOA,GAAQ7jB,EAAEmhB,QAAQjhB,KAAI,SAAU/C,GACjH,OAAO0kB,GAAyB1kB,MAC/BmM,KAAK,KAAMua,GAAQ,OAAQA,GAAQ7jB,EAAEujB,QAAQrjB,KAAI,SAAU/C,GAC5D,OAAO,SAAmCA,GAExC,OAAOA,EAAEmhB,MAAM/U,kBAAoBpM,EAAEyiB,IAFhC,CAGLziB,MACDmM,KAAK,KAAMgL,GAA4BtU,EAAE6I,SAAWgb,GAAQ,MAAOA,GAAQ7jB,EAAE6I,OAAQ7I,EAAEwjB,UAAYK,GAAQ,OAAQA,GAAQ7jB,EAAEwjB,QAAQ/D,UAAY,KAAO,KAAMoE,GAAQ7jB,EAAEwjB,QAAQhE,SAAStf,KAAI,SAAU/C,GACxM,OAAOigB,GAAYjgB,MAClBmM,KAAK,MAAOtJ,EAAEyjB,QAAUI,GAAQ,OAAQA,GAAQ7jB,EAAEyjB,MAAMhE,UAAY,KAAO,KAAMoE,GAAQ7jB,EAAEyjB,MAAMjE,SAAStf,KAAI,SAAU/C,GACzH,OAAOigB,GAAYjgB,MAClBmM,KAAK,MAAOtJ,EAAE0jB,GAAKG,EAGxB,OAAO7jB,EAAE0jB,GAGX,SAASI,GAAuB3mB,EAAG6C,GACjC,GAAI7C,EAAE0L,QAAU7I,EAAE6I,MAAO,OAAO,EAChC,GAAI1L,EAAEomB,QAAQ1mB,SAAWmD,EAAEujB,QAAQ1mB,OAAQ,OAAO,EAElD,IAAK,IAAIX,EAAI,EAAGA,EAAIiB,EAAEomB,QAAQ1mB,OAAQX,IACpC,IAAK6jB,GAAwB5iB,EAAEomB,QAAQrnB,GAAI8D,EAAEujB,QAAQrnB,IAAK,OAAO,EAGnE,GAAIiB,EAAEgkB,QAAQtkB,SAAWmD,EAAEmhB,QAAQtkB,OAAQ,OAAO,EAElD,IAAK,IAAIknB,EAAM,EAAGA,EAAM5mB,EAAEgkB,QAAQtkB,OAAQknB,IACxC,IAAKjC,GAAuB3kB,EAAEgkB,QAAQ4C,GAAM/jB,EAAEmhB,QAAQ4C,IAAO,OAAO,EAGtE,OAAO5mB,EAAE+N,kBAAoBlL,EAAEkL,mBAAqB/N,EAAEuN,KAAKlC,QAAQxI,EAAE0K,SAAWmV,GAAsB1iB,EAAEqmB,QAASxjB,EAAEwjB,UAAY3D,GAAsB1iB,EAAEsmB,MAAOzjB,EAAEyjB,OAuOlK,IAAIO,IAAmC,QAKvC,SAASA,EAAoB7mB,GAC3B,IAAI6C,EAAIjB,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxE7C,EAAI6C,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEqF,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEjC,EAAIiC,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KACxE/B,EAAI+B,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,IACxEtD,EAAIsD,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KAExE4O,EAAI5O,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,MAE5E,OAAgBD,KAAMklB,GAEtBllB,KAAK4L,KAAOvN,EAAG2B,KAAKoM,gBAAkBlL,EAAGlB,KAAKmlB,gBAAkB/nB,EAAG4C,KAAKqiB,QAAU/c,EAAGtF,KAAK+J,MAAQ/L,EAAGgC,KAAKolB,UAAYlnB,EAAG8B,KAAK0kB,QAAU/nB,EAAGqD,KAAK2kB,MAAQ9V,EAAG7O,KAAKqlB,GAAK,KAErKrlB,KAAKslB,GAAK,KAIVtlB,KAAKulB,GAAK,KAAMvlB,KAAK0kB,QAAS1kB,KAAK2kB,SAKrC,SAASa,GAAmBnnB,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,EAAGvB,EAAGkS,GAC/C,OAAO,IAAIqW,GAAoB7mB,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,EAAGvB,EAAGkS,GAKtD,SAAS4W,GAA0BpnB,GACjC,OAAO,IAAI6mB,GAAoB7mB,GAejC,SAASqnB,GAAmCrnB,GAC1C,OAAO,IAAMA,EAAEgkB,QAAQtkB,QAAU,OAASM,EAAE0L,OAAS,MAAQ1L,EAAEqmB,SAAW,MAAQrmB,EAAEsmB,QAAU,IAAMtmB,EAAE8mB,gBAAgBpnB,QAAU,IAAMM,EAAE8mB,gBAAgBpnB,QAAUM,EAAE8mB,gBAAgB,GAAG3F,MAAMqB,cAS/L,SAAS8E,GAAiCtnB,GACxC,OAAO,OAASA,EAAE+N,gBAWpB,SAASwZ,GAAiCvnB,GACxC,IAAI6C,EAAIoB,EAAoBjE,GAE5B,GAAI,OAAS6C,EAAEmkB,GAAI,CACjBnkB,EAAEmkB,GAAK,GAEP,IAIIQ,EAJAC,EAAO,IAAIC,IAGXC,EAActpB,EAA2BwE,EAAEikB,iBAG/C,IACE,IAAKa,EAAY9nB,MAAO2nB,EAAUG,EAAY5oB,KAAKe,MAAO,CACxD,IAAI8nB,EAAMJ,EAAQznB,MAClB8C,EAAEmkB,GAAGpb,KAAKgc,GAAMH,EAAKnS,IAAIsS,EAAIzG,MAAM/U,oBAGrC,MAAOhM,GACPunB,EAAY3nB,EAAEI,GACd,QACAunB,EAAYznB,IAGd,IAAInB,EAAI8D,EAAEikB,gBAAgBpnB,OAAS,EAAImD,EAAEikB,gBAAgBjkB,EAAEikB,gBAAgBpnB,OAAS,GAAG+iB,IAAM,MAGzFxb,EAAI,SAA6CjH,GACnD,IAAI6C,EAAI,IAAIqX,GAAUpN,GAAYrB,YAClC,OAAOzL,EAAEgkB,QAAQrY,SAAQ,SAAU3L,GACjCA,EAAEqkB,sBAAsB1Y,SAAQ,SAAU3L,GACxCA,EAAE6nB,iBAAmBhlB,EAAIA,EAAEyS,IAAItV,EAAEmhB,cAEjCte,EANE,CAYPA,GAODoE,EAAE0E,SAAQ,SAAU1E,GAClBwgB,EAAKhN,IAAIxT,EAAEmF,oBAAsBnF,EAAEub,cAAgB3f,EAAEmkB,GAAGpb,KAAK,IAAI+W,GAAQ1b,EAAGlI,OAE9E0oB,EAAKhN,IAAI3N,GAAYgb,WAAW1b,oBAAsBvJ,EAAEmkB,GAAGpb,KAAK,IAAI+W,GAAQ7V,GAAYgb,WAAY/oB,IAGtG,OAAO8D,EAAEmkB,GAOX,SAASe,GAAwB/nB,GAC/B,IAAI6C,EAAIoB,EAAoBjE,GAE5B,OAAO6C,EAAEokB,KAAOpkB,EAAEokB,GAAKe,GAAyBnlB,EAAG0kB,GAAiCvnB,KAAM6C,EAAEokB,GAU9F,SAASe,GAAyBhoB,EAAG6C,GACnC,GAAI,MAEA7C,EAAE+mB,UAAW,OAAOP,GAAoBxmB,EAAEuN,KAAMvN,EAAE+N,gBAAiBlL,EAAG7C,EAAEgkB,QAAShkB,EAAE0L,MAAO1L,EAAEqmB,QAASrmB,EAAEsmB,OAGzGzjB,EAAIA,EAAEE,KAAI,SAAU/C,GAClB,IAAI6C,EAAI,SAEJ7C,EAAEyiB,IAAM,MAEV,OAGF,OAAO,IAAIE,GAAQ3iB,EAAEmhB,MAAOte,MAG9B,IAAI9D,EAAIiB,EAAEsmB,MAAQ,IAAIlE,GAAMpiB,EAAEsmB,MAAMjE,SAAUriB,EAAEsmB,MAAMhE,WAAa,KAC/Drb,EAAIjH,EAAEqmB,QAAU,IAAIjE,GAAMpiB,EAAEqmB,QAAQhE,SAAUriB,EAAEqmB,QAAQ/D,WAAa,KAEzE,OAAOkE,GAAoBxmB,EAAEuN,KAAMvN,EAAE+N,gBAAiBlL,EAAG7C,EAAEgkB,QAAShkB,EAAE0L,MAAO3M,EAAGkI,GASpF,SAASghB,GAAyBjoB,EAAG6C,EAAG9D,GACtC,OAAO,IAAI8nB,GAAoB7mB,EAAEuN,KAAMvN,EAAE+N,gBAAiB/N,EAAE8mB,gBAAgB1nB,QAASY,EAAEgkB,QAAQ5kB,QAASyD,EAAG9D,EAAGiB,EAAEqmB,QAASrmB,EAAEsmB,OAG7H,SAAS4B,GAAsBloB,EAAG6C,GAChC,OAAO8jB,GAAuBoB,GAAwB/nB,GAAI+nB,GAAwBllB,KAAO7C,EAAE+mB,YAAclkB,EAAEkkB,UAM7G,SAASoB,GAAwBnoB,GAC/B,MAAO,GAAGkD,OAAOujB,GAAyBsB,GAAwB/nB,IAAK,QAAQkD,OAAOlD,EAAE+mB,WAG1F,SAASqB,GAAyBpoB,GAChC,MAAO,gBAAgBkD,OAAO,SAAmClD,GAC/D,IAAI6C,EAAI7C,EAAEuN,KAAKnB,kBACf,OAAO,OAASpM,EAAE+N,kBAAoBlL,GAAK,oBAAsB7C,EAAE+N,iBAAkB/N,EAAEgkB,QAAQtkB,OAAS,IAAMmD,GAAK,eAAeK,OAAOlD,EAAEgkB,QAAQjhB,KAAI,SAAU/C,GAC/J,OAAO4kB,GAA0B5kB,MAChCmM,KAAK,MAAO,MAAOgL,GAA4BnX,EAAE0L,SAAW7I,GAAK,YAAc7C,EAAE0L,OAAQ1L,EAAEomB,QAAQ1mB,OAAS,IAAMmD,GAAK,eAAeK,OAAOlD,EAAEomB,QAAQrjB,KAAI,SAAU/C,GACtK,OAAO,SAAoCA,GACzC,MAAO,GAAGkD,OAAOlD,EAAEmhB,MAAM/U,kBAAmB,MAAMlJ,OAAOlD,EAAEyiB,IAAK,KAD3D,CAELziB,MACDmM,KAAK,MAAO,MAAOnM,EAAEqmB,UAAYxjB,GAAK,cAAeA,GAAK7C,EAAEqmB,QAAQ/D,UAAY,KAAO,KAAMzf,GAAK7C,EAAEqmB,QAAQhE,SAAStf,KAAI,SAAU/C,GACpI,OAAOigB,GAAYjgB,MAClBmM,KAAK,MAAOnM,EAAEsmB,QAAUzjB,GAAK,YAAaA,GAAK7C,EAAEsmB,MAAMhE,UAAY,KAAO,KAAMzf,GAAK7C,EAAEsmB,MAAMjE,SAAStf,KAAI,SAAU/C,GACrH,OAAOigB,GAAYjgB,MAClBmM,KAAK,MAAO,UAAUjJ,OAAOL,EAAG,KAZP,CAa5BklB,GAAwB/nB,IAAK,gBAAgBkD,OAAOlD,EAAE+mB,UAAW,KAKrE,SAASsB,GAAuBroB,EAAG6C,GACjC,OAAOA,EAAEylB,mBAAqB,SAAsDtoB,EAAG6C,GACrF,IAAI9D,EAAI8D,EAAEZ,IAAIsL,KACd,OAAO,OAASvN,EAAE+N,gBAAkBlL,EAAEZ,IAAIsmB,gBAAgBvoB,EAAE+N,kBAAoB/N,EAAEuN,KAAK8N,WAAWtc,GAAKuO,GAAYkb,cAAcxoB,EAAEuN,MAAQvN,EAAEuN,KAAKlC,QAAQtM,GAAKiB,EAAEuN,KAAKyT,oBAAoBjiB,GAF9J,CAQ7BiB,EAAG6C,IAAM,SAAuC7C,EAAG6C,GAOlD,IACI4lB,EADAC,EAAcrqB,EAA2BkpB,GAAiCvnB,IAG9E,IACE,IAAK0oB,EAAY7oB,MAAO4oB,EAAUC,EAAY3pB,KAAKe,MAAO,CACxD,IAAIf,EAAI0pB,EAAQ1oB,MAEhB,IAAKhB,EAAEoiB,MAAMqB,cAAgB,OAAS3f,EAAEsX,KAAKgH,MAAMpiB,EAAEoiB,OAAQ,OAAO,GAEtE,MAAO/gB,GACPsoB,EAAY1oB,EAAEI,GACd,QACAsoB,EAAYxoB,IAGd,OAAO,EAtBC,CAuBRF,EAAG6C,IAAM,SAAuC7C,EAAG6C,GACnD,IACI8lB,EADAC,EAAcvqB,EAA2B2B,EAAEgkB,SAG/C,IACE,IAAK4E,EAAY/oB,MAAO8oB,EAAUC,EAAY7pB,KAAKe,MAAO,CAExD,IADQ6oB,EAAQ5oB,MACTokB,QAAQthB,GAAI,OAAO,GAE5B,MAAOzC,GACPwoB,EAAY5oB,EAAEI,GACd,QACAwoB,EAAY1oB,IAGd,OAAO,EAfE,CAkBVF,EAAG6C,IAAM,SAAsC7C,EAAG6C,GACjD,QAAI7C,EAAEqmB,UAKN,SAA4CrmB,EAAG6C,EAAG9D,GAChD,IAAIkI,EAAIsb,GAAiCviB,EAAG6C,EAAG9D,GAE/C,OAAOiB,EAAEsiB,UAAYrb,GAAK,EAAIA,EAAI,EAHpC,CAIEjH,EAAEqmB,QAASkB,GAAiCvnB,GAAI6C,OAC9C7C,EAAEsmB,QAAU,SAA2CtmB,EAAG6C,EAAG9D,GAC/D,IAAIkI,EAAIsb,GAAiCviB,EAAG6C,EAAG9D,GAE/C,OAAOiB,EAAEsiB,UAAYrb,GAAK,EAAIA,EAAI,EAHpB,CAIdjH,EAAEsmB,MAAOiB,GAAiCvnB,GAAI6C,IAfxC,CAwBT7C,EAAG6C,GAYN,SAASgmB,GAA6B7oB,GACpC,OAAO,SAAU6C,EAAG9D,GAClB,IAGI+pB,EAHA7hB,GAAI,EAEJ8hB,EAAc1qB,EAA2BkpB,GAAiCvnB,IAG9E,IACE,IAAK+oB,EAAYlpB,MAAOipB,EAAUC,EAAYhqB,KAAKe,MAAO,CACxD,IAAIH,EAAImpB,EAAQ/oB,MAEZipB,EAAOC,GAAsBtpB,EAAGkD,EAAG9D,GAEvC,GAAI,IAAMiqB,EAAM,OAAOA,EACvB/hB,EAAIA,GAAKtH,EAAEwhB,MAAMqB,cAEnB,MAAOpiB,GACP2oB,EAAY/oB,EAAEI,GACd,QACA2oB,EAAY7oB,IAGd,OAAO,GAIX,SAAS+oB,GAAsBjpB,EAAG6C,EAAG9D,GACnC,IAAIkI,EAAIjH,EAAEmhB,MAAMqB,aAAelV,GAAY7B,WAAW5I,EAAEZ,IAAKlD,EAAEkD,KAAO,SAA2CjC,EAAG6C,EAAG9D,GACrH,IAAIkI,EAAIpE,EAAEsX,KAAKgH,MAAMnhB,GACjBL,EAAIZ,EAAEob,KAAKgH,MAAMnhB,GACrB,OAAO,OAASiH,GAAK,OAAStH,EAAI6f,GAAuBvY,EAAGtH,GAAKkE,IAHG,CAIpE7D,EAAEmhB,MAAOte,EAAG9D,GAEd,OAAQiB,EAAEyiB,KACR,IAAK,MAGH,OAAOxb,EAET,IAAK,OAGH,OAAQ,EAAIA,EAEd,QACE,OAAOpD,KA4Bb,IAAIqlB,GAAyB,WAC3B,SAASA,EAAUlpB,EAAG6C,IACpB,OAAgBlB,KAAMunB,GAEtBvnB,KAAKwnB,SAAWnpB,EAAG2B,KAAKynB,SAAWvmB,EAOnClB,KAAK0nB,MAAQ,GAEb1nB,KAAK2nB,UAAY,EAsGnB,OAjGA,OAAaJ,EAAW,CAAC,CACvBjnB,IAAK,MACLlC,MAAO,SAAaC,GAClB,IAAI6C,EAAIlB,KAAKwnB,SAASnpB,GAClBjB,EAAI4C,KAAK0nB,MAAMxmB,GAEnB,QAAI,IAAW9D,EAAG,CAChB,IACIwqB,EADAC,EAAcnrB,EAA2BU,GAG7C,IACE,IAAKyqB,EAAY3pB,MAAO0pB,EAAUC,EAAYzqB,KAAKe,MAAO,CACxD,IAAI2pB,GAAgB,OAAeF,EAAQxpB,MAAO,GAC9C2pB,EAAOD,EAAc,GACrBxiB,EAAIwiB,EAAc,GAEtB,GAAI9nB,KAAKynB,SAASM,EAAM1pB,GAAI,OAAOiH,GAErC,MAAO7G,GACPopB,EAAYxpB,EAAEI,GACd,QACAopB,EAAYtpB,QAIjB,CACD+B,IAAK,MACLlC,MAAO,SAAaC,GAClB,YAAO,IAAW2B,KAAK+G,IAAI1I,KAI5B,CACDiC,IAAK,MACLlC,MAAO,SAAaC,EAAG6C,GACrB,IAAI9D,EAAI4C,KAAKwnB,SAASnpB,GAClBiH,EAAItF,KAAK0nB,MAAMtqB,GACnB,QAAI,IAAWkI,EAAG,OAAOtF,KAAK0nB,MAAMtqB,GAAK,CAAC,CAACiB,EAAG6C,SAAUlB,KAAK2nB,YAE7D,IAAK,IAAIK,EAAM,EAAGA,EAAM1iB,EAAEvH,OAAQiqB,IAChC,GAAIhoB,KAAKynB,SAASniB,EAAE0iB,GAAK,GAAI3pB,GAC3B,YAAaiH,EAAE0iB,GAAO,CAAC3pB,EAAG6C,IAG9BoE,EAAE2E,KAAK,CAAC5L,EAAG6C,IAAKlB,KAAK2nB,cAMtB,CACDrnB,IAAK,SACLlC,MAAO,SAAiBC,GACtB,IAAI6C,EAAIlB,KAAKwnB,SAASnpB,GAClBjB,EAAI4C,KAAK0nB,MAAMxmB,GACnB,QAAI,IAAW9D,EAAG,OAAO,EAEzB,IAAK,IAAIkI,EAAI,EAAGA,EAAIlI,EAAEW,OAAQuH,IAC5B,GAAItF,KAAKynB,SAASrqB,EAAEkI,GAAG,GAAIjH,GAAI,OAAO,IAAMjB,EAAEW,cAAgBiC,KAAK0nB,MAAMxmB,GAAK9D,EAAE6qB,OAAO3iB,EAAG,GAAItF,KAAK2nB,aAAa,EAGlH,OAAO,IAER,CACDrnB,IAAK,UACLlC,MAAO,SAAiBC,GACtB+X,GAASpW,KAAK0nB,OAAO,SAAUxmB,EAAG9D,GAChC,IACI8qB,EADAC,EAAczrB,EAA2BU,GAG7C,IACE,IAAK+qB,EAAYjqB,MAAOgqB,EAAUC,EAAY/qB,KAAKe,MAAO,CACxD,IAAIiqB,GAAgB,OAAeF,EAAQ9pB,MAAO,GAC9CiqB,EAAOD,EAAc,GACrB9iB,EAAI8iB,EAAc,GAEtB/pB,EAAEgqB,EAAM/iB,IAEV,MAAO7G,GACP0pB,EAAY9pB,EAAEI,GACd,QACA0pB,EAAY5pB,UAIjB,CACD+B,IAAK,UACLlC,MAAO,WACL,OAAOiY,GAASrW,KAAK0nB,SAEtB,CACDpnB,IAAK,OACLlC,MAAO,WACL,OAAO4B,KAAK2nB,cAITJ,EAnHoB,GAuIzBe,GAAK,IAAIhS,GAAU3K,GAAY7B,YAEnC,SAASye,KACP,OAAOD,GAGT,IAAIE,GAAK,IAAIlS,GAAU3K,GAAY7B,YAEnC,SAAS2e,KAGP,IAFA,IAAIvnB,EAAIsnB,GAECE,EAAQzoB,UAAUlC,OAAQM,EAAI,IAAIrB,MAAM0rB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACjFtqB,EAAEsqB,GAAS1oB,UAAU0oB,GAGvB,IAAK,IAAIC,EAAM,EAAGC,EAAOxqB,EAAGuqB,EAAMC,EAAK9qB,OAAQ6qB,IAAO,CACpD,IAAIxrB,EAAIyrB,EAAKD,GACb1nB,EAAIA,EAAEwV,OAAOtZ,EAAEkD,IAAKlD,GAGtB,OAAO8D,EAGT,SAAS4nB,GAAmDzqB,GAC1D,IAAI6C,EAAIsnB,GACR,OAAOnqB,EAAE2L,SAAQ,SAAU3L,EAAGjB,GAC5B,OAAO8D,EAAIA,EAAEwV,OAAOrY,EAAGjB,EAAE2rB,sBACvB7nB,EAGN,SAAS8nB,KACP,OAAOC,KAGT,SAASC,KACP,OAAOD,KAGT,SAASA,KACP,OAAO,IAAI1B,IAAU,SAAUlpB,GAC7B,OAAOA,EAAEd,cACR,SAAUc,EAAG6C,GACd,OAAO7C,EAAEqL,QAAQxI,MAIrB,IAAImU,GAAK,IAAIiB,GAAU3K,GAAY7B,YAC/BwL,GAAK,IAAIiD,GAAU5M,GAAY7B,YAEnC,SAASqf,KAGP,IAFA,IAAIjoB,EAAIoU,GAEC8T,EAAQnpB,UAAUlC,OAAQM,EAAI,IAAIrB,MAAMosB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACjFhrB,EAAEgrB,GAASppB,UAAUopB,GAGvB,IAAK,IAAIC,EAAM,EAAGC,EAAOlrB,EAAGirB,EAAMC,EAAKxrB,OAAQurB,IAAO,CACpD,IAAIlsB,EAAImsB,EAAKD,GACbpoB,EAAIA,EAAEyS,IAAIvW,GAGZ,OAAO8D,EAGT,IAAI4U,GAAK,IAAIyC,GAAU7P,GAEvB,SAAS8gB,KACP,OAAO1T,GAyBT,SAAS2T,GAAmBprB,EAAG6C,GAC7B,GAAI7C,EAAEqrB,cAAe,CACnB,GAAInM,MAAMrc,GAAI,MAAO,CACnBoc,YAAa,OAEf,GAAIpc,IAAM,IAAO,MAAO,CACtBoc,YAAa,YAEf,GAAIpc,KAAM,IAAQ,MAAO,CACvBoc,YAAa,aAIjB,MAAO,CACLA,YAAa7H,GAAyBvU,GAAK,KAAOA,GAQtD,SAASyoB,GAAoBtrB,GAC3B,MAAO,CACL+e,aAAc,GAAK/e,GAUvB,SAASurB,GAASvrB,EAAG6C,GACnB,OAAOwU,GAAcxU,GAAKyoB,GAAoBzoB,GAAKuoB,GAAmBprB,EAAG6C,GAsB3E,IAAI2oB,IAAkC,QAAa,SAASA,KAC1D,OAAgB7pB,KAAM6pB,GAItB7pB,KAAK6O,OAAI,KAQX,SAASib,GAA6CzrB,EAAG6C,EAAG9D,GAC1D,OAAOiB,aAAa0rB,GAAqC,SAA2B1rB,EAAG6C,GACrF,IAAI9D,EAAI,CACNiP,OAAQ,CACNiP,SAAU,CACRC,YAAa,oBAEfI,qBAAsB,CACpBC,eAAgB,CACd9S,QAASzK,EAAEyK,QACXiS,MAAO1c,EAAE0K,gBAajB,OAAO7H,GAAKka,GAA4Bla,KAAOA,EAAIsa,GAA2Bta,IAAKA,IAAM9D,EAAEiP,OAAOoP,mBAAqBva,GAAI,CACzHma,SAAUje,GAvB2C,CAyBvDA,EAAG8D,GAAK7C,aAAa2rB,GAAyCC,GAA4C5rB,EAAG6C,GAAK7C,aAAa6rB,GAA0CC,GAA6C9rB,EAAG6C,GAAK,SAAsE7C,EAAG6C,GAIvS,IAAI9D,EAAIgtB,GAA6C/rB,EAAG6C,GACpDoE,EAAI+kB,GAASjtB,GAAKitB,GAAShsB,EAAEisB,IAEjC,OAAO3U,GAAUvY,IAAMuY,GAAUtX,EAAEisB,IAAMX,GAAoBrkB,GAAKmkB,GAAmBprB,EAAEksB,WAAYjlB,GAP2H,CAQ9NjH,EAAG6C,GAQP,SAASspB,GAAkDnsB,EAAG6C,EAAG9D,GAI/D,OAAOiB,aAAa2rB,GAAyCC,GAA4C5rB,EAAG6C,GAAK7C,aAAa6rB,GAA0CC,GAA6C9rB,EAAG6C,GAAK9D,EAmB/N,SAASgtB,GAA6C/rB,EAAG6C,GACvD,OAAO7C,aAAaosB,GAEpB,SAA4BpsB,GAC1B,OAAOsX,GAAUtX,IAAM,SAA4BA,GACjD,QAASA,GAAK,gBAAiBA,EADV,CAErBA,GAHJ,CAIE6C,GAAKA,EAAI,CACTkc,aAAc,GACZ,KAKN,IAAI2M,GAAkD,SAAUW,IAC9D,OAAUX,EAAoCW,GAE9C,IAAIC,EAAWxrB,EAAa4qB,GAE5B,SAASA,IAGP,OAFA,OAAgB/pB,KAAM+pB,GAEfY,EAASzqB,MAAMF,KAAMC,WAG9B,OAAO,OAAa8pB,GAXgC,CAYpDF,IAIEG,GAAsD,SAAUY,IAClE,OAAUZ,EAAwCY,GAElD,IAAIC,EAAW1rB,EAAa6qB,GAE5B,SAASA,EAAuC3rB,GAC9C,IAAIysB,EAKJ,OAHA,OAAgB9qB,KAAMgqB,IAEtBc,EAAUD,EAASrtB,KAAKwC,OAAe+qB,SAAW1sB,EAC3CysB,EAGT,OAAO,OAAad,GAdoC,CAexDH,IAEF,SAASI,GAA4C5rB,EAAG6C,GACtD,IAGI8pB,EAHA5tB,EAAI6tB,GAAkC/pB,GAEtCgqB,EAAcxuB,EAA2B2B,EAAE0sB,UAG/C,IACE,IAAII,EAAS,WACX,IAAIjqB,EAAI8pB,EAAQ5sB,MAChBhB,EAAEsmB,MAAK,SAAUrlB,GACf,OAAOwe,GAAsBxe,EAAG6C,OAC5B9D,EAAE6M,KAAK/I,IAGf,IAAKgqB,EAAYhtB,MAAO8sB,EAAUE,EAAY9tB,KAAKe,MACjDgtB,IAEF,MAAO1sB,GACPysB,EAAY7sB,EAAEI,GACd,QACAysB,EAAY3sB,IAGd,MAAO,CACLif,WAAY,CACVC,OAAQrgB,IAOd,IAAI8sB,GAAuD,SAAUkB,IACnE,OAAUlB,EAAyCkB,GAEnD,IAAIC,EAAWlsB,EAAa+qB,GAE5B,SAASA,EAAwC7rB,GAC/C,IAAIitB,EAKJ,OAHA,OAAgBtrB,KAAMkqB,IAEtBoB,EAAUD,EAAS7tB,KAAKwC,OAAe+qB,SAAW1sB,EAC3CitB,EAGT,OAAO,OAAapB,GAdqC,CAezDL,IAEF,SAASM,GAA6C9rB,EAAG6C,GACvD,IAGIqqB,EAHAnuB,EAAI6tB,GAAkC/pB,GAEtCsqB,EAAc9uB,EAA2B2B,EAAE0sB,UAG/C,IACE,IAAIU,EAAS,WACX,IAAIvqB,EAAIqqB,EAAQntB,MAChBhB,EAAIA,EAAE6N,QAAO,SAAU5M,GACrB,OAAQwe,GAAsBxe,EAAG6C,OAIrC,IAAKsqB,EAAYttB,MAAOqtB,EAAUC,EAAYpuB,KAAKe,MACjDstB,IAEF,MAAOhtB,GACP+sB,EAAYntB,EAAEI,GACd,QACA+sB,EAAYjtB,IAGd,MAAO,CACLif,WAAY,CACVC,OAAQrgB,IAYd,IAAIqtB,GAA4D,SAAUiB,IACxE,OAAUjB,EAA8CiB,GAExD,IAAIC,EAAWxsB,EAAasrB,GAE5B,SAASA,EAA6CpsB,EAAG6C,GACvD,IAAI0qB,EAKJ,OAHA,OAAgB5rB,KAAMyqB,IAEtBmB,EAAUD,EAASnuB,KAAKwC,OAAeuqB,WAAalsB,EAAGutB,EAAQtB,GAAKppB,EAC7D0qB,EAGT,OAAO,OAAanB,GAd0C,CAe9DZ,IAEF,SAASQ,GAAShsB,GAChB,OAAO2c,GAA0B3c,EAAE+e,cAAgB/e,EAAEif,aAGvD,SAAS2N,GAAkC5sB,GACzC,OAAOpB,GAAQoB,IAAMA,EAAEmf,WAAWC,OAASpf,EAAEmf,WAAWC,OAAOhgB,QAAU,GAoC3E,IAAIouB,IAA8B,QAAa,SAASA,EAWxDxtB,EAQA6C,IACE,OAAgBlB,KAAM6rB,GAEtB7rB,KAAKiQ,QAAU5R,EAAG2B,KAAK8rB,iBAAmB5qB,KASxC6qB,GAA4B,WAC9B,SAASA,EAAa1tB,EAAG6C,IACvB,OAAgBlB,KAAM+rB,GAEtB/rB,KAAKgsB,WAAa3tB,EAAG2B,KAAKisB,OAAS/qB,EAsCrC,OAjCA,OAAa6qB,EAAc,CAAC,CAC1BzrB,IAAK,SACLyG,IAEA,WACE,YAAO,IAAW/G,KAAKgsB,iBAAc,IAAWhsB,KAAKisB,SAEtD,CACD3rB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKisB,SAAW5tB,EAAE4tB,SAAWjsB,KAAKgsB,aAAe3tB,EAAE2tB,YAAchsB,KAAKgsB,WAAWtiB,QAAQrL,EAAE2tB,aAAe3tB,EAAE2tB,eAEnH,CAAC,CACH1rB,IAAK,OACLlC,MAAO,WACL,OAAO,IAAI2tB,IAIZ,CACDzrB,IAAK,SACLlC,MAAO,SAAgBC,GACrB,OAAO,IAAI0tB,OAAa,EAAQ1tB,KAIjC,CACDiC,IAAK,aACLlC,MAAO,SAAoBC,GACzB,OAAO,IAAI0tB,EAAa1tB,OAIrB0tB,EA1CuB,GA+ChC,SAASG,GAAyC7tB,EAAG6C,GACnD,YAAO,IAAW7C,EAAE2tB,WAAa9qB,EAAEylB,mBAAqBzlB,EAAE+O,QAAQvG,QAAQrL,EAAE2tB,iBAAc,IAAW3tB,EAAE4tB,QAAU5tB,EAAE4tB,SAAW/qB,EAAEylB,kBAgDlI,IAAIwF,IAAwB,QAAa,SAASA,KAChD,OAAgBnsB,KAAMmsB,MASxB,SAASC,GAAmC/tB,EAAG6C,GAC7C,IAAK7C,EAAEiiB,mBAAqBpf,GAAK,IAAMA,EAAEmL,OAAOtO,OAAQ,OAAO,KAE/D,GAAI,OAASmD,EAAG,OAAO7C,EAAEguB,eAAiB,IAAIC,GAAyBjuB,EAAEiC,IAAKyrB,GAAaQ,QAAU,IAAIC,GAAsBnuB,EAAEiC,IAAKjC,EAAEma,KAAMuT,GAAaQ,QAEzJ,IAKIE,EALArvB,EAAIiB,EAAEma,KACNlT,EAAI4Z,GAAYtS,QAChB5O,EAAI,IAAIua,GAAUpN,GAAYrB,YAE9B4iB,EAAchwB,EAA2BwE,EAAEmL,QAG/C,IACE,IAAKqgB,EAAYxuB,MAAOuuB,EAAUC,EAAYtvB,KAAKe,MAAO,CACxD,IAAIwuB,EAAOF,EAAQruB,MAEnB,IAAKJ,EAAE8a,IAAI6T,GAAO,CAChB,IAAIC,EAAOxvB,EAAEoiB,MAAMmN,GAWnB,OAASC,GAAQD,EAAK5uB,OAAS,IAAM4uB,EAAOA,EAAK9gB,UAAW+gB,EAAOxvB,EAAEoiB,MAAMmN,IAAQ,OAASC,EAAOtnB,EAAE+N,OAAOsZ,GAAQrnB,EAAEb,IAAIkoB,EAAMC,GAAO5uB,EAAIA,EAAE2V,IAAIgZ,KAGrJ,MAAOluB,GACPiuB,EAAYruB,EAAEI,GACd,QACAiuB,EAAYnuB,IAGd,OAAO,IAAIsuB,GAAwBxuB,EAAEiC,IAAKgF,EAAG,IAAI2T,GAAUjb,EAAEuM,WAAYwhB,GAAaQ,QAiB1F,SAASO,GAAwCzuB,EAAG6C,EAAG9D,GACrDiB,aAAamuB,GAAwB,SAAoDnuB,EAAG6C,EAAG9D,GAI7F,IAAIkI,EAAIjH,EAAED,MAAMoiB,QACZxiB,EAAI+uB,GAAiC1uB,EAAE2uB,gBAAiB9rB,EAAG9D,EAAE0uB,kBAEjExmB,EAAE2nB,OAAOjvB,GAAIkD,EAAEgsB,uBAAuB9vB,EAAE6S,QAAS3K,GAAG6nB,2BAPjB,CAQnC9uB,EAAG6C,EAAG9D,GAAKiB,aAAawuB,GAA0B,SAAsDxuB,EAAG6C,EAAG9D,GAC9G,GAAK8uB,GAAyC7tB,EAAE+uB,aAAclsB,GAA9D,CAMA,IAAIoE,EAAIynB,GAAiC1uB,EAAE2uB,gBAAiB9rB,EAAG9D,EAAE0uB,kBAC7D9tB,EAAIkD,EAAEsX,KAEVxa,EAAEivB,OAAOI,GAAmBhvB,IAAKL,EAAEivB,OAAO3nB,GAAIpE,EAAEgsB,uBAAuB9vB,EAAE6S,QAASjS,GAAGmvB,gCALvEjsB,EAAEosB,yBAAyBlwB,EAAE6S,SALO,CAWlD5R,EAAG6C,EAAG9D,GAAK,SAAuDiB,EAAG6C,EAAG9D,GAIxE8D,EAAEqsB,oBAAoBnwB,EAAE6S,SAASkd,2BAJtB,CAKX,EAAGjsB,EAAG9D,GAkBV,SAASowB,GAAmCnvB,EAAG6C,EAAG9D,EAAGkI,GACnD,OAAOjH,aAAamuB,GAAwB,SAA+CnuB,EAAG6C,EAAG9D,EAAGkI,GAClG,IAAK4mB,GAAyC7tB,EAAE+uB,aAAclsB,GAE5D,OAAO9D,EAET,IAAIY,EAAIK,EAAED,MAAMoiB,QACZtiB,EAAIuvB,GAAgCpvB,EAAE2uB,gBAAiB1nB,EAAGpE,GAE9D,OAAOlD,EAAEivB,OAAO/uB,GAAIgD,EAAEgsB,uBAAuBhsB,EAAE+O,QAASjS,GAAG0vB,uBAAwB,KARzC,CAuB3CrvB,EAAG6C,EAAG9D,EAAGkI,GAAKjH,aAAawuB,GAA0B,SAAiDxuB,EAAG6C,EAAG9D,EAAGkI,GAC9G,IAAK4mB,GAAyC7tB,EAAE+uB,aAAclsB,GAAI,OAAO9D,EAEzE,IAAIY,EAAIyvB,GAAgCpvB,EAAE2uB,gBAAiB1nB,EAAGpE,GAC1DhD,EAAIgD,EAAEsX,KAEV,OAAIta,EAAE+uB,OAAOI,GAAmBhvB,IAAKH,EAAE+uB,OAAOjvB,GAAIkD,EAAEgsB,uBAAuBhsB,EAAE+O,QAAS/R,GAAGwvB,uBAAwB,OAAStwB,EAAU,KAC7HA,EAAEuwB,UAAUtvB,EAAEuvB,UAAUvhB,QAAQshB,UAAUtvB,EAAE2uB,gBAAgB5rB,KAAI,SAAU/C,GAC/E,OAAOA,EAAEmhB,UARyC,CAcrDnhB,EAAG6C,EAAG9D,EAAGkI,GAAK,SAAkDjH,EAAG6C,EAAG9D,GACrE,OAAI8uB,GAAyC7tB,EAAE+uB,aAAclsB,IAAWA,EAAEqsB,oBAAoBrsB,EAAE+O,SAASyd,uBAAwB,MAC1HtwB,EAFM,CAWdiB,EAAG6C,EAAG9D,GAoBT,SAASywB,GAAmCxvB,EAAG6C,GAC7C,IAGI4sB,EAHA1wB,EAAI,KAEJ2wB,EAAcrxB,EAA2B2B,EAAE2uB,iBAG/C,IACE,IAAKe,EAAY7vB,MAAO4vB,EAAUC,EAAY3wB,KAAKe,MAAO,CACxD,IAAImH,EAAIwoB,EAAQ1vB,MAEZ4vB,EAAO9sB,EAAEsX,KAAKgH,MAAMla,EAAEka,OACtBxhB,EAAIosB,GAA6C9kB,EAAE2oB,UAAWD,GAAQ,MAE1E,MAAQhwB,IAAM,OAASZ,IAAMA,EAAI8hB,GAAYtS,SAAUxP,EAAEqH,IAAIa,EAAEka,MAAOxhB,KAExE,MAAOS,GACPsvB,EAAY1vB,EAAEI,GACd,QACAsvB,EAAYxvB,IAGd,OAAOnB,GAAK,KAGd,SAAS8wB,GAAyB7vB,EAAG6C,GACnC,OAAO7C,EAAEiG,OAASpD,EAAEoD,QAAUjG,EAAEiC,IAAIoJ,QAAQxI,EAAEZ,QAAUjC,EAAE+uB,aAAa1jB,QAAQxI,EAAEksB,iBAAmB,SAA2C/uB,EAAG6C,GAChJ,YAAO,IAAW7C,QAAK,IAAW6C,MAAQ7C,IAAM6C,IAAMyH,EAAsBtK,EAAG6C,GAAG,SAAU7C,EAAG6C,GAC7F,OAlVN,SAAwC7C,EAAG6C,GACzC,OAAO7C,EAAEmhB,MAAM9V,QAAQxI,EAAEse,QAAU,SAA4CnhB,EAAG6C,GAChF,OAAO7C,aAAa2rB,IAA0C9oB,aAAa8oB,IAA0C3rB,aAAa6rB,IAA2ChpB,aAAagpB,GAA0CvhB,EAAsBtK,EAAE0sB,SAAU7pB,EAAE6pB,SAAUlO,IAAyBxe,aAAaosB,IAAgDvpB,aAAaupB,GAA+C5N,GAAsBxe,EAAEisB,GAAIppB,EAAEopB,IAAMjsB,aAAa0rB,IAAsC7oB,aAAa6oB,GADve,CAEjC1rB,EAAE4vB,UAAW/sB,EAAE+sB,WA+UNE,CAA+B9vB,EAAG6C,MAFuD,CAIlG7C,EAAE2uB,gBAAiB9rB,EAAE8rB,mBAAqB,IAExC3uB,EAAEiG,KAAOjG,EAAED,MAAMsL,QAAQxI,EAAE9C,OAAS,IAEpCC,EAAEiG,MAAQjG,EAAEma,KAAK9O,QAAQxI,EAAEsX,OAASna,EAAEuvB,UAAUlkB,QAAQxI,EAAE0sB,YAQhE,IAAIpB,GAAqC,SAAU4B,IACjD,OAAU5B,EAAuB4B,GAEjC,IAAIC,EAAWlvB,EAAaqtB,GAE5B,SAASA,EAAsBnuB,EAAG6C,EAAG9D,GACnC,IAAIkxB,EAEAhpB,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GAO5E,OALA,OAAgBD,KAAMwsB,IAEtB8B,EAAUD,EAAS7wB,KAAKwC,OAAeM,IAAMjC,EAAGiwB,EAAQlwB,MAAQ8C,EAAGotB,EAAQlB,aAAehwB,EAAGkxB,EAAQtB,gBAAkB1nB,EAAGgpB,EAAQhqB,KAAO,EAGlIgqB,EAUT,OAPA,OAAa9B,EAAuB,CAAC,CACnClsB,IAAK,eACLlC,MAAO,WACL,OAAO,SAIJouB,EAzBgC,CA0BvCL,IAEEU,GAAuC,SAAU0B,IACnD,OAAU1B,EAAyB0B,GAEnC,IAAIC,EAAWrvB,EAAa0tB,GAE5B,SAASA,EAAwBxuB,EAAG6C,EAAG9D,EAAGkI,GACxC,IAAImpB,EAEAzwB,EAAIiC,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GAO5E,OALA,OAAgBD,KAAM6sB,IAEtB4B,EAAUD,EAAShxB,KAAKwC,OAAeM,IAAMjC,EAAGowB,EAAQjW,KAAOtX,EAAGutB,EAAQb,UAAYxwB,EAAGqxB,EAAQrB,aAAe9nB,EAAGmpB,EAAQzB,gBAAkBhvB,EAAGywB,EAAQnqB,KAAO,EAGxJmqB,EAUT,OAPA,OAAa5B,EAAyB,CAAC,CACrCvsB,IAAK,eACLlC,MAAO,WACL,OAAO4B,KAAK4tB,cAITf,EAzBkC,CA0BzCV,IAEF,SAASkB,GAAmBhvB,GAC1B,IAAI6C,EAAI,IAAIsD,IACZ,OAAOnG,EAAEuvB,UAAUvhB,OAAOrC,SAAQ,SAAU5M,GAC1C,IAAKA,EAAE0Z,UAAW,CAChB,IAAIxR,EAAIjH,EAAEma,KAAKgH,MAAMpiB,GACrB8D,EAAEuD,IAAIrH,EAAGkI,OAETpE,EAeN,SAAS6rB,GAAiC1uB,EAAG6C,EAAG9D,GAC9C,IAAIkI,EAAI,IAAId,IAEZnC,EAAqBhE,EAAEN,SAAWX,EAAEW,QAEpC,IAAK,IAAIC,EAAI,EAAGA,EAAIZ,EAAEW,OAAQC,IAAK,CACjC,IAAIE,EAAIG,EAAEL,GACNrB,EAAIuB,EAAE+vB,UACNpf,EAAI3N,EAAEsX,KAAKgH,MAAMthB,EAAEshB,OAEvBla,EAAEb,IAAIvG,EAAEshB,MAAOgL,GAAkD7tB,EAAGkS,EAAGzR,EAAEY,KAG3E,OAAOsH,EAeT,SAASmoB,GAAgCpvB,EAAG6C,EAAG9D,GAC7C,IAGIsxB,EAHAppB,EAAI,IAAId,IAERmqB,EAAcjyB,EAA2B2B,GAG7C,IACE,IAAKswB,EAAYzwB,MAAOwwB,EAAUC,EAAYvxB,KAAKe,MAAO,CACxD,IAAIH,EAAI0wB,EAAQtwB,MACZwwB,EAAO5wB,EAAEiwB,UACT/vB,EAAId,EAAEob,KAAKgH,MAAMxhB,EAAEwhB,OACvBla,EAAEb,IAAIzG,EAAEwhB,MAAOsK,GAA6C8E,EAAM1wB,EAAGgD,KAEvE,MAAOzC,GACPkwB,EAAYtwB,EAAEI,GACd,QACAkwB,EAAYpwB,IAGd,OAAO+G,EAKT,IA+XIupB,GAAIvM,GA/XJgK,GAAwC,SAAUwC,IACpD,OAAUxC,EAA0BwC,GAEpC,IAAIC,EAAW5vB,EAAamtB,GAE5B,SAASA,EAAyBjuB,EAAG6C,GACnC,IAAI8tB,EAOJ,OALA,OAAgBhvB,KAAMssB,IAEtB0C,EAAUD,EAASvxB,KAAKwC,OAAeM,IAAMjC,EAAG2wB,EAAQ5B,aAAelsB,EAAG8tB,EAAQ1qB,KAAO,EAEvF0qB,EAAQhC,gBAAkB,GACrBgC,EAUT,OAPA,OAAa1C,EAA0B,CAAC,CACtChsB,IAAK,eACLlC,MAAO,WACL,OAAO,SAIJkuB,EAvBmC,CAwB1CH,IAEE8C,GAAwC,SAAUC,IACpD,OAAUD,EAA0BC,GAEpC,IAAIC,EAAWhwB,EAAa8vB,GAE5B,SAASA,EAAyB5wB,EAAG6C,GACnC,IAAIkuB,EAOJ,OALA,OAAgBpvB,KAAMivB,IAEtBG,EAAUD,EAAS3xB,KAAKwC,OAAeM,IAAMjC,EAAG+wB,EAAQhC,aAAelsB,EAAGkuB,EAAQ9qB,KAAO,EAEvF8qB,EAAQpC,gBAAkB,GACrBoC,EAUT,OAPA,OAAaH,EAA0B,CAAC,CACtC3uB,IAAK,eACLlC,MAAO,WACL,OAAO,SAIJ6wB,EAvBmC,CAwB1C9C,IAuBEkD,GAA6B,WAY/B,SAASA,EAAchxB,EAAG6C,EAAG9D,EAAGkI,IAC9B,OAAgBtF,KAAMqvB,GAEtBrvB,KAAKsvB,QAAUjxB,EAAG2B,KAAKuvB,eAAiBruB,EAAGlB,KAAKwvB,cAAgBpyB,EAAG4C,KAAKyvB,UAAYnqB,EAyHtF,OA7GA,OAAa+pB,EAAe,CAAC,CAC3B/uB,IAAK,wBACLlC,MAAO,SAA+BC,EAAG6C,GAGvC,IAFA,IAAI9D,EAAI8D,EAAEwuB,gBAEDC,EAAO,EAAGA,EAAO3vB,KAAKyvB,UAAU1xB,OAAQ4xB,IAAQ,CACvD,IAAIrqB,EAAItF,KAAKyvB,UAAUE,GAEnBrqB,EAAEhF,IAAIoJ,QAAQrL,EAAEiC,MAClBwsB,GAAwCxnB,EAAGjH,EAAGjB,EAAEuyB,OAarD,CACDrvB,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,GAGlC,IACI0uB,EADAC,EAAcnzB,EAA2BsD,KAAKwvB,eAGlD,IACE,IAAKK,EAAY3xB,MAAO0xB,EAAUC,EAAYzyB,KAAKe,MAAO,CACxD,IAAIf,EAAIwyB,EAAQxxB,MAChBhB,EAAEkD,IAAIoJ,QAAQrL,EAAEiC,OAASY,EAAIssB,GAAmCpwB,EAAGiB,EAAG6C,EAAGlB,KAAKuvB,kBAGhF,MAAO9wB,GACPoxB,EAAYxxB,EAAEI,GACd,QACAoxB,EAAYtxB,IAGd,IACIuxB,EADAC,EAAcrzB,EAA2BsD,KAAKyvB,WAGlD,IACE,IAAKM,EAAY7xB,MAAO4xB,EAAUC,EAAY3yB,KAAKe,MAAO,CACxD,IAAI6xB,EAAOF,EAAQ1xB,MACnB4xB,EAAK1vB,IAAIoJ,QAAQrL,EAAEiC,OAASY,EAAIssB,GAAmCwC,EAAM3xB,EAAG6C,EAAGlB,KAAKuvB,kBAEtF,MAAO9wB,GACPsxB,EAAY1xB,EAAEI,GACd,QACAsxB,EAAYxxB,IAGd,OAAO2C,IAQR,CACDZ,IAAK,0BACLlC,MAAO,SAAiCC,EAAG6C,GACzC,IAAI+uB,EAAUjwB,KAKV5C,EAAI8rB,KAER,OAAOlpB,KAAKyvB,UAAUzlB,SAAQ,SAAU1E,GACtC,IAAItH,EAAIK,EAAE0I,IAAIzB,EAAEhF,KACZpC,EAAIF,EAAE+qB,kBAGNpsB,EAAIszB,EAAQC,iBAAiBhyB,EAAGF,EAAEmyB,eAOlCthB,EAAIud,GAAmCluB,EAF3CvB,EAAIuE,EAAE4X,IAAIxT,EAAEhF,KAAO,KAAO3D,GAI1B,OAASkS,GAAKzR,EAAEqH,IAAIa,EAAEhF,IAAKuO,GAAI3Q,EAAEkyB,mBAAqBlyB,EAAEqvB,oBAAoBhkB,EAAgBW,UAC1F9M,IAEL,CACDkD,IAAK,OACLlC,MAAO,WACL,OAAO4B,KAAKyvB,UAAUhN,QAAO,SAAUpkB,EAAG6C,GACxC,OAAO7C,EAAEsV,IAAIzS,EAAEZ,OACd6oB,QAEJ,CACD7oB,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKsvB,UAAYjxB,EAAEixB,SAAW3mB,EAAsB3I,KAAKyvB,UAAWpxB,EAAEoxB,WAAW,SAAUpxB,EAAG6C,GACnG,OAAOgtB,GAAyB7vB,EAAG6C,OAC/ByH,EAAsB3I,KAAKwvB,cAAenxB,EAAEmxB,eAAe,SAAUnxB,EAAG6C,GAC5E,OAAOgtB,GAAyB7vB,EAAG6C,UAKlCmuB,EAxIwB,GA6I7BgB,GAAmC,WACrC,SAASA,EAAoBhyB,EAAG6C,EAAG9D,EAKnCkI,IACE,OAAgBtF,KAAMqwB,GAEtBrwB,KAAKswB,MAAQjyB,EAAG2B,KAAKuwB,cAAgBrvB,EAAGlB,KAAK0vB,gBAAkBtyB,EAAG4C,KAAKwwB,YAAclrB,EA4BvF,OAnBA,OAAa+qB,EAAqB,KAAM,CAAC,CACvC/vB,IAAK,OACLlC,MAAO,SAAcC,EAAG6C,EAAG9D,GACzBiF,EAAqBhE,EAAEoxB,UAAU1xB,SAAWX,EAAEW,QAQ9C,IANA,IAAIuH,EACK+P,GAGLrX,EAAIK,EAAEoxB,UAEDgB,EAAO,EAAGA,EAAOzyB,EAAED,OAAQ0yB,IAClCnrB,EAAIA,EAAEoR,OAAO1Y,EAAEyyB,GAAMnwB,IAAKlD,EAAEqzB,GAAMxgB,SAGpC,OAAO,IAAIogB,EAAoBhyB,EAAG6C,EAAG9D,EAAGkI,OAIrC+qB,EArC8B,GAgEnCK,GAAuB,WACzB,SAASA,EAAQryB,EAAG6C,IAClB,OAAgBlB,KAAM0wB,GAEtB1wB,KAAKgN,eAAiB3O,EAAG2B,KAAK2wB,SAAWzvB,EAoB3C,OAjBA,OAAawvB,EAAS,CAAC,CACrBpwB,IAAK,SACLlC,MAAO,WACL,OAAO4B,KAAK2wB,SAASrwB,MAEtB,CACDA,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO,OAASA,GAAK2B,KAAK2wB,WAAatyB,EAAEsyB,WAE1C,CACDrwB,IAAK,WACLlC,MAAO,WACL,MAAO,mCAAmCmD,OAAOvB,KAAKgN,eAAgB,uBAAuBzL,OAAOvB,KAAK2wB,SAASpzB,WAAY,eAI3HmzB,EAxBkB,GAiH3B,SAASE,GAA2BvyB,GAClC,OAAQA,GACN,QACE,OAAO6D,IAET,KAAKK,EAAEE,UACP,KAAKF,EAAEG,QACP,KAAKH,EAAEK,kBACP,KAAKL,EAAES,mBACP,KAAKT,EAAEc,SACP,KAAKd,EAAEe,YAGP,KAAKf,EAAE/B,gBACL,OAAO,EAET,KAAK+B,EAAEI,iBACP,KAAKJ,EAAEM,UACP,KAAKN,EAAEO,eACP,KAAKP,EAAEQ,kBACP,KAAKR,EAAEU,oBAIP,KAAKV,EAAEW,QACP,KAAKX,EAAEY,aACP,KAAKZ,EAAEa,cACP,KAAKb,EAAEgB,UACL,OAAO,GAyBb,SAASstB,GAA6BxyB,GACpC,QAAI,IAAWA,EAEb,OAAOmD,EAAmB,2BAA4Be,EAAEG,QAE1D,OAAQrE,GACN,KAAKwwB,GAAGrsB,GACN,OAAOD,EAAEC,GAEX,KAAKqsB,GAAGpsB,UACN,OAAOF,EAAEE,UAEX,KAAKosB,GAAGnsB,QACN,OAAOH,EAAEG,QAEX,KAAKmsB,GAAGjsB,kBACN,OAAOL,EAAEK,kBAEX,KAAKisB,GAAG7rB,mBACN,OAAOT,EAAES,mBAEX,KAAK6rB,GAAGxrB,SACN,OAAOd,EAAEc,SAEX,KAAKwrB,GAAGvrB,YACN,OAAOf,EAAEe,YAEX,KAAKurB,GAAGruB,gBACN,OAAO+B,EAAE/B,gBAEX,KAAKquB,GAAGlsB,iBACN,OAAOJ,EAAEI,iBAEX,KAAKksB,GAAGhsB,UACN,OAAON,EAAEM,UAEX,KAAKgsB,GAAG/rB,eACN,OAAOP,EAAEO,eAEX,KAAK+rB,GAAG9rB,kBACN,OAAOR,EAAEQ,kBAEX,KAAK8rB,GAAG5rB,oBACN,OAAOV,EAAEU,oBAEX,KAAK4rB,GAAG3rB,QACN,OAAOX,EAAEW,QAEX,KAAK2rB,GAAG1rB,aACN,OAAOZ,EAAEY,aAEX,KAAK0rB,GAAGzrB,cACN,OAAOb,EAAEa,cAEX,KAAKyrB,GAAGtrB,UACN,OAAOhB,EAAEgB,UAEX,QACE,OAAOrB,MAaZogB,GAAKuM,KAAOA,GAAK,KAAKvM,GAAG9f,GAAK,GAAK,KAAM8f,GAAGA,GAAG7f,UAAY,GAAK,YAAa6f,GAAGA,GAAG5f,QAAU,GAAK,UAAW4f,GAAGA,GAAG3f,iBAAmB,GAAK,mBAAoB2f,GAAGA,GAAG1f,kBAAoB,GAAK,oBAAqB0f,GAAGA,GAAGzf,UAAY,GAAK,YAAayf,GAAGA,GAAGxf,eAAiB,GAAK,iBAAkBwf,GAAGA,GAAGvf,kBAAoB,GAAK,oBAAqBuf,GAAGA,GAAG9hB,gBAAkB,IAAM,kBAAmB8hB,GAAGA,GAAGtf,mBAAqB,GAAK,qBAAsBsf,GAAGA,GAAGrf,oBAAsB,GAAK,sBAAuBqf,GAAGA,GAAGpf,QAAU,IAAM,UAAWof,GAAGA,GAAGnf,aAAe,IAAM,eAAgBmf,GAAGA,GAAGlf,cAAgB,IAAM,gBAAiBkf,GAAGA,GAAGjf,SAAW,IAAM,WAAYif,GAAGA,GAAGhf,YAAc,IAAM,cAAegf,GAAGA,GAAG/e,UAAY,IAAM,YA8E7sB,IAAI,KAAQ,CAAC,WAAY,YAAa,GAsIdnB,MA00BjC,IA6CI0uB,IAAmC,QAAa,SAASA,EAAoBzyB,EAAG6C,IAClF,OAAgBlB,KAAM8wB,GAEtB9wB,KAAK8b,WAAazd,EAAG2B,KAAK0pB,cAAgBxoB,KA0B5C,SAASuL,GAAYpO,EAAG6C,GACtB,OAAI7C,EAAEqrB,cACG,GAAGnoB,OAAO,IAAIyH,KAAK,IAAM9H,EAAE4H,SAASioB,cAAczlB,QAAQ,QAAS,IAAIA,QAAQ,IAAK,IAAK,KAAK/J,QAAQ,YAAcL,EAAE6H,aAAatL,OAAO,GAAI,KAGhJ,CACLqL,QAAS,GAAK5H,EAAE4H,QAChBiS,MAAO7Z,EAAE6H,aAUb,SAASioB,GAAkB3yB,EAAG6C,GAC5B,OAAO7C,EAAEqrB,cAAgBxoB,EAAEsd,WAAatd,EAAE+vB,eAO5C,SAASC,GAAoB7yB,EAAG6C,GAC9B,OAAOuL,GAAYpO,EAAG6C,EAAEuL,eAG1B,SAAS0kB,GAAsB9yB,GAC7B,OAAOgE,IAAuBhE,GAAIkL,EAAgBmD,cAAc,SAAuBrO,GACrF,IAAI6C,EAAIyZ,GAA6Btc,GAErC,OAAO,IAAIwK,EAAU3H,EAAE4H,QAAS5H,EAAE6Z,OAH4B,CAI9D1c,IAGJ,SAAS+yB,GAAyB/yB,EAAG6C,GACnC,OAAOmwB,GAAyBhzB,EAAG6C,GAAGuJ,kBAGxC,SAAS4mB,GAAyBhzB,EAAG6C,GACnC,IAAI9D,EAAI,SAA4CiB,GAClD,OAAO,IAAI+L,GAAa,CAAC,WAAY/L,EAAEme,UAAW,YAAane,EAAEoe,WAD3D,CAENpe,GAAG4hB,MAAM,aAEX,YAAO,IAAW/e,EAAI9D,EAAIA,EAAE6iB,MAAM/e,GAGpC,SAASowB,GAA2BjzB,GAClC,IAAI6C,EAAIkJ,GAAa2B,WAAW1N,GAChC,OAAOgE,EAAqBkvB,GAA8BrwB,IAAKA,EAGjE,SAASswB,GAAiBnzB,EAAG6C,GAC3B,OAAOkwB,GAAyB/yB,EAAEyd,WAAY5a,EAAE0K,MAelD,SAAS6lB,GAAwBpzB,GAC/B,IAAI6C,EAAIowB,GAA2BjzB,GAMnC,OAAO,IAAM6C,EAAEnD,OAASqM,GAAa6B,YAAcylB,GAA2CxwB,GAGhG,SAASywB,GAA+BtzB,GACtC,OAAO,IAAI+L,GAAa,CAAC,WAAY/L,EAAEyd,WAAWU,UAAW,YAAane,EAAEyd,WAAWW,WAAWhS,kBAGpG,SAASinB,GAA2CrzB,GAClD,OAAOgE,EAAqBhE,EAAEN,OAAS,GAAK,cAAgBM,EAAE0I,IAAI,IAAK1I,EAAE2N,SAAS,GAKpF,SAAS4lB,GAA6BvzB,EAAG6C,EAAG9D,GAC1C,MAAO,CACLO,KAAM6zB,GAAiBnzB,EAAG6C,GAC1BmL,OAAQjP,EAAEgB,MAAMid,SAAShP,QAmI7B,SAASwlB,GAAWxzB,EAAG6C,GACrB,IAAI9D,EACJ,GAAI8D,aAAasrB,GAAuBpvB,EAAI,CAC1C00B,OAAQF,GAA6BvzB,EAAG6C,EAAEZ,IAAKY,EAAE9C,aAC5C,GAAI8C,aAAaorB,GAA0BlvB,EAAI,CACpDiW,OAAQme,GAAiBnzB,EAAG6C,EAAEZ,WACzB,GAAIY,aAAa2rB,GAAyBzvB,EAAI,CACnD00B,OAAQF,GAA6BvzB,EAAG6C,EAAEZ,IAAKY,EAAEsX,MACjDuZ,WAAYC,GAAyB9wB,EAAE0sB,gBAClC,CACL,KAAM1sB,aAAa+tB,IAA2B,OAAO/sB,IACrD9E,EAAI,CACF60B,OAAQT,GAAiBnzB,EAAG6C,EAAEZ,MAGlC,OAAOY,EAAE8rB,gBAAgBjvB,OAAS,IAAMX,EAAE80B,iBAAmBhxB,EAAE8rB,gBAAgB5rB,KAAI,SAAU/C,GAC3F,OAAO,SAAoCA,EAAG6C,GAC5C,IAAI9D,EAAI8D,EAAE+sB,UACV,GAAI7wB,aAAa2sB,GAAoC,MAAO,CAC1DoI,UAAWjxB,EAAEse,MAAM/U,kBACnB2nB,iBAAkB,gBAEpB,GAAIh1B,aAAa4sB,GAAwC,MAAO,CAC9DmI,UAAWjxB,EAAEse,MAAM/U,kBACnB4nB,sBAAuB,CACrB5U,OAAQrgB,EAAE2tB,WAGd,GAAI3tB,aAAa8sB,GAAyC,MAAO,CAC/DiI,UAAWjxB,EAAEse,MAAM/U,kBACnB6nB,mBAAoB,CAClB7U,OAAQrgB,EAAE2tB,WAGd,GAAI3tB,aAAaqtB,GAA8C,MAAO,CACpE0H,UAAWjxB,EAAEse,MAAM/U,kBACnB8nB,UAAWn1B,EAAEktB,IAEf,MAAMpoB,IAtBD,CAuBL,EAAG7D,OACF6C,EAAEksB,aAAaoF,SAAWp1B,EAAEq1B,gBAAkB,SAAkCp0B,EAAG6C,GACtF,YAAO,IAAWA,EAAE8qB,WAAa,CAC/BA,WAAYkF,GAAoB7yB,EAAG6C,EAAE8qB,kBACnC,IAAW9qB,EAAE+qB,OAAS,CACxBA,OAAQ/qB,EAAE+qB,QACR/pB,IAL6C,CAMjD7D,EAAG6C,EAAEksB,eAAgBhwB,EA4IzB,SAASs1B,GAAoCr0B,GAC3C,IAAI6C,EAAIuwB,GAAwBpzB,EAAEs0B,QAE9Bv1B,EAAIiB,EAAEu0B,gBACNttB,EAAIlI,EAAEQ,KAAOR,EAAEQ,KAAKG,OAAS,EAC7BC,EAAI,KAER,GAAIsH,EAAI,EAAG,CACTjD,EAAqB,IAAMiD,GAE3B,IAAIutB,EAAOz1B,EAAEQ,KAAK,GAClBi1B,EAAKC,eAAiB90B,EAAI60B,EAAKE,aAAe7xB,EAAIA,EAAE+e,MAAM4S,EAAKE,cAGjE,IAAI70B,EAAI,GACRd,EAAE41B,QAAU90B,EAAI,SAA+BG,GAC7C,IAAI6C,EAAI+xB,GAAqB50B,GAE7B,OAAI6C,aAAa+gB,IAAmBU,GAA2CzhB,GAAWA,EAAEgiB,aACrF,CAAChiB,GAJM,CAKd9D,EAAE41B,QACJ,IAAIr2B,EAAI,GACRS,EAAEqnB,UAAY9nB,EAAI,SAA6B0B,GAC7C,OAAOA,EAAE+C,KAAI,SAAU/C,GACrB,OAAO,SAAqCA,GAC1C,OAAO,IAAI2iB,GAAQkS,GAAiC70B,EAAEmhB,OACtD,SAAiCnhB,GAC/B,OAAQA,GACN,IAAK,YACH,MAAO,MAIT,IAAK,aACH,MAAO,OAIT,QACE,QAbN,CAgBCA,EAAE80B,YAlBE,CAoBN90B,MAtBa,CAwBhBjB,EAAEqnB,UACJ,IAAI5V,EAAI,KACRzR,EAAE2M,QAAU8E,EAAI,SAAkCxQ,GAChD,IAAI6C,EACJ,OAA+CsU,GAAxCtU,EAAI,iBAAmB7C,EAAIA,EAAED,MAAQC,GAAoC,KAAO6C,EAFzE,CAGd9D,EAAE2M,QACJ,IAAI+E,EAAI,KACR1R,EAAEsnB,UAAY5V,EAAI,SAAqCzQ,GACrD,IAAI6C,IAAM7C,EAAE+0B,OACRh2B,EAAIiB,EAAEof,QAAU,GACpB,OAAO,IAAIgD,GAAMrjB,EAAG8D,GAHJ,CAIhB9D,EAAEsnB,UACJ,IAAInf,EAAI,KACR,OAAOnI,EAAEunB,QAAUpf,EAAI,SAAmClH,GACxD,IAAI6C,GAAK7C,EAAE+0B,OACPh2B,EAAIiB,EAAEof,QAAU,GACpB,OAAO,IAAIgD,GAAMrjB,EAAG8D,GAHC,CAKtB9D,EAAEunB,QAASa,GAAmBtkB,EAAGlD,EAAGrB,EAAGuB,EAAG2Q,EAAG,IAE5CC,EAAGvJ,GAoCP,SAAS0tB,GAAqB50B,GAC5B,YAAO,IAAWA,EAAEg1B,YAAc,SAAmCh1B,GACnE,OAAQA,EAAEg1B,YAAY9R,IACpB,IAAK,SACH,IAAIrgB,EAAIgyB,GAAiC70B,EAAEg1B,YAAY7T,OAEvD,OAAO2B,GAAYmS,OAAOpyB,EAAG,KAE3B,CACAoc,YAAaiW,MAGjB,IAAK,UACH,IAAIn2B,EAAI81B,GAAiC70B,EAAEg1B,YAAY7T,OAEvD,OAAO2B,GAAYmS,OAAOl2B,EAAG,KAE3B,CACAgnB,UAAW,eAGf,IAAK,aACH,IAAI9e,EAAI4tB,GAAiC70B,EAAEg1B,YAAY7T,OAEvD,OAAO2B,GAAYmS,OAAOhuB,EAAG,KAE3B,CACAgY,YAAaiW,MAGjB,IAAK,cACH,IAAIv1B,EAAIk1B,GAAiC70B,EAAEg1B,YAAY7T,OAEvD,OAAO2B,GAAYmS,OAAOt1B,EAAG,KAE3B,CACAomB,UAAW,eAGf,QACE,OAAOliB,KAvCqB,CAyChC7D,QAAK,IAAWA,EAAEm1B,YAAc,SAAmCn1B,GACnE,OAAO8iB,GAAYmS,OAAOJ,GAAiC70B,EAAEm1B,YAAYhU,OAAQ,SAAoCnhB,GACnH,OAAQA,GACN,IAAK,QACH,MAAO,KAIT,IAAK,YACH,MAAO,KAIT,IAAK,eACH,MAAO,IAIT,IAAK,wBACH,MAAO,KAIT,IAAK,YACH,MAAO,IAIT,IAAK,qBACH,MAAO,KAIT,IAAK,iBACH,MAAO,iBAIT,IAAK,KACH,MAAO,KAIT,IAAK,SACH,MAAO,SAIT,IAAK,qBACH,MAAO,qBAIT,QACE,OAAO6D,KArDoE,CAuD/E7D,EAAEm1B,YAAYjS,IAAKljB,EAAEm1B,YAAYp1B,OAxDH,CAyDhCC,QAAK,IAAWA,EAAEo1B,gBAAkB,SAAuCp1B,GAC3E,OAAO4jB,GAAgBqR,OAAOj1B,EAAEo1B,gBAAgBpR,QAAQjhB,KAAI,SAAU/C,GACpE,OAAO40B,GAAqB50B,MAC1B,SAA6CA,GAC/C,OAAQA,GACN,IAAK,MACH,MAAO,MAIT,IAAK,KACH,MAAO,KAIT,QACE,OAAO6D,KAbT,CAeF7D,EAAEo1B,gBAAgBlS,KAlBgB,CAmBpCljB,GAAK6D,IAqBT,SAASgxB,GAAiC70B,GACxC,OAAO8M,GAAYuoB,iBAAiBr1B,EAAE8zB,WA0DxC,SAASH,GAAyB3zB,GAChC,IAAI6C,EAAI,GACR,OAAO7C,EAAEgO,OAAOrC,SAAQ,SAAU3L,GAChC,OAAO6C,EAAE+I,KAAK5L,EAAEoM,sBACd,CACFkpB,WAAYzyB,GAIhB,SAASqwB,GAA8BlzB,GAErC,OAAOA,EAAEN,QAAU,GAAK,aAAeM,EAAE0I,IAAI,IAAM,cAAgB1I,EAAE0I,IAAI,GAwB3E,IAyFI6sB,IAAyC,QAAa,SAASA,EAA0Bv1B,IAC3F,OAAgB2B,KAAM4zB,GAEtB5zB,KAAK6zB,GAAKx1B,KA+JZ,SAASy1B,GAA2Bz1B,GAClC,IAAI6C,EAAIwxB,GAAoC,CAC1CC,OAAQt0B,EAAEs0B,OACVC,gBAAiBv0B,EAAEu0B,kBAGrB,MAAO,SAAWv0B,EAAE+mB,UAAYkB,GAAyBplB,EAAGA,EAAE6I,MAAO,KAEjE7I,EAkVN,IAAI6yB,GAAmD,WACrD,SAASA,KACP,OAAgB/zB,KAAM+zB,GAoGxB,OAzFA,OAAaA,EAAqC,CAAC,CACjDzzB,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpBlB,KAAKg0B,GAAG31B,EAAG6C,GAEXA,EAAE+yB,OAEH,CACD3zB,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,GAAI,cAAe7C,EAAG2B,KAAKk0B,GAAGhzB,EAAG,QAAQ,GAAI,iBAAkB7C,EAAG2B,KAAKk0B,GAAGhzB,EAAG,IAAKA,EAAEizB,GAAG91B,EAAEye,aAAe,EAAI,QAAQ,GAAI,iBAAkBze,EAAG2B,KAAKk0B,GAAGhzB,EAAG,IAAKA,EAAEizB,GAAGnZ,GAA0B3c,EAAE+e,oBAAoB,GAAI,gBAAiB/e,EAAG,CACxO,IAAIjB,EAAI4d,GAA0B3c,EAAEif,aAEpCC,MAAMngB,GAAK4C,KAAKk0B,GAAGhzB,EAAG,KAAOlB,KAAKk0B,GAAGhzB,EAAG,IAAKuU,GAAyBrY,GACtE8D,EAAEizB,GAAG,GAAKjzB,EAAEizB,GAAG/2B,SACV,GAAI,mBAAoBiB,EAAG,CAChC,IAAI+1B,EAAO/1B,EAAEud,eACb5b,KAAKk0B,GAAGhzB,EAAG,IAAK,iBAAmBkzB,EAAOlzB,EAAEmzB,GAAGD,IAASlzB,EAAEmzB,GAAG,GAAG9yB,OAAO6yB,EAAKtrB,SAAW,KAAM5H,EAAEizB,GAAGC,EAAKrZ,OAAS,SAC3G,GAAI,gBAAiB1c,EAAG2B,KAAKs0B,GAAGj2B,EAAEkd,YAAara,GAAIlB,KAAKu0B,GAAGrzB,QAAQ,GAAI,eAAgB7C,EAAG2B,KAAKk0B,GAAGhzB,EAAG,IAAKA,EAAEszB,GAAGvZ,GAA8B5c,EAAE0e,aAAc/c,KAAKu0B,GAAGrzB,QAAQ,GAAI,mBAAoB7C,EAAG2B,KAAKy0B,GAAGp2B,EAAE2e,eAAgB9b,QAAQ,GAAI,kBAAmB7C,EAAG,CACzQ,IAAIq2B,EAAOr2B,EAAE4e,cACbjd,KAAKk0B,GAAGhzB,EAAG,IAAKA,EAAEizB,GAAGO,EAAKxX,UAAY,GAAIhc,EAAEizB,GAAGO,EAAKvX,WAAa,OAC5D,aAAc9e,EAAIue,GAAqBve,GAAK2B,KAAKk0B,GAAGhzB,EAAG8R,OAAO4C,mBAAqB5V,KAAK20B,GAAGt2B,EAAEgd,SAAUna,GAAIlB,KAAKu0B,GAAGrzB,IAAM,eAAgB7C,GAAK2B,KAAK40B,GAAGv2B,EAAEmf,WAAYtc,GAAIlB,KAAKu0B,GAAGrzB,IAAMgB,MAE9L,CACD5B,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpBlB,KAAKk0B,GAAGhzB,EAAG,IAAKlB,KAAK60B,GAAGx2B,EAAG6C,KAE5B,CACDZ,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpBA,EAAEmzB,GAAGh2B,KAEN,CACDiC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI9D,EAAIiB,EAAEgO,QAAU,GACpBrM,KAAKk0B,GAAGhzB,EAAG,IAEX,IAAK,IAAI4zB,EAAM,EAAGC,EAAe13B,OAAO8gB,KAAK/gB,GAAI03B,EAAMC,EAAah3B,OAAQ+2B,IAAO,CACjF,IAAIE,EAAOD,EAAaD,GACxB90B,KAAKs0B,GAAGU,EAAM9zB,GAAIlB,KAAKg0B,GAAG52B,EAAE43B,GAAO9zB,MAGtC,CACDZ,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI9D,EAAIiB,EAAEof,QAAU,GACpBzd,KAAKk0B,GAAGhzB,EAAG,IAEX,IACI+zB,EADAC,EAAcx4B,EAA2BU,GAG7C,IACE,IAAK83B,EAAYh3B,MAAO+2B,EAAUC,EAAY93B,KAAKe,MAAO,CACxD,IAAIg3B,EAAOF,EAAQ72B,MACnB4B,KAAKg0B,GAAGmB,EAAMj0B,IAEhB,MAAOzC,GACPy2B,EAAY72B,EAAEI,GACd,QACAy2B,EAAY32B,OAGf,CACD+B,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAIk0B,EAAUp1B,KAEdA,KAAKk0B,GAAGhzB,EAAG,IACXyK,GAAY8S,SAASpgB,GAAGuN,KAAK5B,SAAQ,SAAU3L,GAC7C+2B,EAAQlB,GAAGhzB,EAAG,IAAKk0B,EAAQP,GAAGx2B,EAAG6C,QAGpC,CACDZ,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB7C,EAAE81B,GAAGjzB,KAEN,CACDZ,IAAK,KACLlC,MAAO,SAAYC,GAIjBA,EAAE81B,GAAG,OAIFJ,EAtG8C,GAyGvDA,GAAoCsB,GAAK,IAAItB,GAu8B7C,IAAIuB,GAA4C,WAC9C,SAASA,KACP,OAAgBt1B,KAAMs1B,GAEtBt1B,KAAKmK,GAAK,IAAIorB,GAuFhB,OApFA,OAAaD,EAA8B,CAAC,CAC1Ch1B,IAAK,6BACLlC,MAAO,SAAoCC,EAAG6C,GAC5C,OAAOlB,KAAKmK,GAAGwJ,IAAIzS,GAAI0M,GAAmB1J,YAE3C,CACD5D,IAAK,uBACLlC,MAAO,SAA8BC,EAAG6C,GACtC,OAAO0M,GAAmB1J,QAAQlE,KAAKmK,GAAGqrB,WAAWt0B,MAEtD,CACDZ,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,GAE/B,OAAO0M,GAAmB1J,YAE3B,CACD5D,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,GAElC,OAAO0M,GAAmB1J,YAE3B,CACD5D,IAAK,wBACLlC,MAAO,SAA+BC,GAEpC,OAAOuP,GAAmB1J,YAE3B,CACD5D,IAAK,sBACLlC,MAAO,SAA6BC,EAAG6C,GAErC,OAAO0M,GAAmB1J,YAE3B,CACD5D,IAAK,6BACLlC,MAAO,SAAoCC,EAAG6C,GAE5C,OAAO0M,GAAmB1J,QAAQ,QAEnC,CACD5D,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAE9B,OAAO0M,GAAmB1J,QAAQ,KAInC,CACD5D,IAAK,kBACLlC,MAAO,SAAyBC,EAAG6C,GAEjC,OAAO0M,GAAmB1J,QAAQ,MAEnC,CACD5D,IAAK,iCACLlC,MAAO,SAAwCC,GAE7C,OAAOuP,GAAmB1J,QAAQ,QAEnC,CACD5D,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAC9B,OAAO0M,GAAmB1J,QAAQyI,GAAYzC,SAE/C,CACD5J,IAAK,kCACLlC,MAAO,SAAyCC,EAAG6C,GACjD,OAAO0M,GAAmB1J,QAAQyI,GAAYzC,SAE/C,CACD5J,IAAK,wBACLlC,MAAO,SAA+BC,EAAG6C,EAAG9D,GAE1C,OAAOwQ,GAAmB1J,YAE3B,CACD5D,IAAK,qBACLlC,MAAO,SAA4BC,EAAG6C,GAEpC,OAAO0M,GAAmB1J,cAIvBoxB,EA3FuC,GAoG5CC,GAAqD,WACvD,SAASA,KACP,OAAgBv1B,KAAMu1B,GAEtBv1B,KAAK+T,MAAQ,GA4Bf,OAxBA,OAAawhB,EAAuC,CAAC,CACnDj1B,IAAK,MACLlC,MAAO,SAAaC,GAClB,IAAI6C,EAAI7C,EAAEyN,cACN1O,EAAIiB,EAAEwN,UACNvG,EAAItF,KAAK+T,MAAM7S,IAAM,IAAIqX,GAAUnO,GAAaN,YAChD9L,GAAKsH,EAAEwT,IAAI1b,GACf,OAAO4C,KAAK+T,MAAM7S,GAAKoE,EAAEqO,IAAIvW,GAAIY,IAElC,CACDsC,IAAK,MACLlC,MAAO,SAAaC,GAClB,IAAI6C,EAAI7C,EAAEyN,cACN1O,EAAIiB,EAAEwN,UACNvG,EAAItF,KAAK+T,MAAM7S,GACnB,OAAOoE,GAAKA,EAAEwT,IAAI1b,KAEnB,CACDkD,IAAK,aACLlC,MAAO,SAAoBC,GACzB,OAAQ2B,KAAK+T,MAAM1V,IAAM,IAAIka,GAAUnO,GAAaN,aAAaS,cAI9DgrB,EAhCgD,GAoDhD,IAAIrtB,WAAW,GAolCxB,IAOIutB,GAAyB,WAC3B,SAASA,EAETp3B,EACA6C,EAEA9D,IACE,OAAgB4C,KAAMy1B,GAEtBz1B,KAAK01B,6BAA+Br3B,EAAG2B,KAAK21B,oBAAsBz0B,EAAGlB,KAAK41B,gCAAkCx4B,EAU9G,OAPA,OAAaq4B,EAAW,KAAM,CAAC,CAC7Bn1B,IAAK,gBACLlC,MAAO,SAAuBC,GAC5B,OAAO,IAAIo3B,EAAUp3B,EAAGo3B,EAAUI,8BAA+BJ,EAAUK,6CAIxEL,EAnBoB,GAmH7BA,GAAUI,8BAAgC,GAAIJ,GAAUK,wCAA0C,IAAKL,GAAUM,QAAU,IAAIN,GAAU,SAAUA,GAAUI,8BAA+BJ,GAAUK,yCAA0CL,GAAUO,SAAW,IAAIP,IAAW,EAAG,EAAG,GAgf1R,IAAIQ,GAA2C,WAC7C,SAASA,EAA4B53B,IACnC,OAAgB2B,KAAMi2B,GAEtBj2B,KAAKk2B,GAAK73B,EAyBZ,OAtBA,OAAa43B,EAA6B,CAAC,CACzC31B,IAAK,OACLlC,MAAO,WACL,OAAO4B,KAAKk2B,IAAM,EAAGl2B,KAAKk2B,MAE1B,CAAC,CACH51B,IAAK,KACLlC,MAAO,WAKL,OAAO,IAAI63B,EAA4B,KAExC,CACD31B,IAAK,KACLlC,MAAO,WAEL,OAAO,IAAI63B,GAA6B,OAIrCA,EA7BsC,GAs1B/C,IAAIE,GAA0C,WAC5C,SAASA,KACP,OAAgBn2B,KAAMm2B,GAGtBn2B,KAAKo2B,QAAU,IAAI7O,IAAU,SAAUlpB,GACrC,OAAOA,EAAEd,cACR,SAAUc,EAAG6C,GACd,OAAO7C,EAAEqL,QAAQxI,MACflB,KAAKq2B,gBAAiB,EA+E5B,OArEA,OAAaF,EAA4B,CAAC,CACxC71B,IAAK,WACLlC,MAAO,SAAkBC,GACvB2B,KAAKs2B,mBAAoBt2B,KAAKo2B,QAAQ3xB,IAAIpG,EAAEiC,IAAKjC,KASlD,CACDiC,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7BlB,KAAKs2B,mBAAoBt2B,KAAKo2B,QAAQ3xB,IAAIpG,EAAG6hB,GAAgBqW,mBAAmBl4B,GAAGm4B,YAAYt1B,MAchG,CACDZ,IAAK,WACLlC,MAAO,SAAkBC,EAAG6C,GAC1BlB,KAAKs2B,mBACL,IAAIl5B,EAAI4C,KAAKo2B,QAAQrvB,IAAI7F,GACzB,YAAO,IAAW9D,EAAIwQ,GAAmB1J,QAAQ9G,GAAK4C,KAAKy2B,aAAap4B,EAAG6C,KAa5E,CACDZ,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAC5B,OAAOlB,KAAK02B,gBAAgBr4B,EAAG6C,KAOhC,CACDZ,IAAK,QACLlC,MAAO,SAAeC,GACpB,OAAO2B,KAAKs2B,mBAAoBt2B,KAAKq2B,gBAAiB,EAAIr2B,KAAKuf,aAAalhB,KAI7E,CACDiC,IAAK,mBACLlC,MAAO,gBAGF+3B,EAxFqC,GAgoB9C,IAAIQ,IAAiC,QAAa,SAASA,EAAkBt4B,EAO7E6C,IACE,OAAgBlB,KAAM22B,GAEtB32B,KAAK+oB,kBAAoB1qB,EAAG2B,KAAKmwB,cAAgBjvB,KA2B/C01B,GAAkC,WACpC,SAASA,EAAmBv4B,EAAG6C,EAAG9D,EAAGkI,IACnC,OAAgBtF,KAAM42B,GAEtB52B,KAAK62B,oBAAsBx4B,EAAG2B,KAAK82B,cAAgB51B,EAAGlB,KAAK+2B,qBAAuB35B,EAAG4C,KAAKg3B,aAAe1xB,EAuW3G,OA7VA,OAAasxB,EAAoB,CAAC,CAChCt2B,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7B,IAAI+1B,EAAUj3B,KAEV5C,EAAI,KACR,OAAO4C,KAAK+2B,qBAAqBG,WAAW74B,EAAG6C,GAAGrC,MAAK,SAAUyG,GAC/D,OAAOlI,EAAIkI,EAAG2xB,EAAQJ,oBAAoBM,SAAS94B,EAAG6C,MACrDrC,MAAK,SAAUR,GAChB,OAAO,OAASjB,GAAKowB,GAAmCpwB,EAAEuzB,SAAUtyB,EAAG4a,GAAUrM,QAAS/D,EAAUQ,OAAQhL,OAU/G,CACDiC,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAC9B,IAAIk2B,EAAWp3B,KAEf,OAAOA,KAAK62B,oBAAoBrB,WAAWn3B,EAAG6C,GAAGrC,MAAK,SAAUqC,GAC9D,OAAOk2B,EAASC,wBAAwBh5B,EAAG6C,EAAGioB,MAA4BtqB,MAAK,WAC7E,OAAOqC,UAeZ,CACDZ,IAAK,0BACLlC,MAAO,SAAiCC,EAAG6C,GACzC,IAAIo2B,EAAWt3B,KAEX5C,EAAI6C,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAKkpB,KAExE7jB,EAAI0jB,KAER,OAAOhpB,KAAKu3B,iBAAiBl5B,EAAGiH,EAAGpE,GAAGrC,MAAK,WACzC,OAAOy4B,EAASE,aAAan5B,EAAG6C,EAAGoE,EAAGlI,GAAGyB,MAAK,SAAUR,GACtD,IAAI6C,EAAIunB,KACR,OAAOpqB,EAAE2L,SAAQ,SAAU3L,EAAGjB,GAC5B8D,EAAIA,EAAEwV,OAAOrY,EAAGjB,EAAE2rB,sBAChB7nB,UAUT,CACDZ,IAAK,wBACLlC,MAAO,SAA+BC,EAAG6C,GACvC,IAAIu2B,EAAWz3B,KAEX5C,EAAI4rB,KAER,OAAOhpB,KAAKu3B,iBAAiBl5B,EAAGjB,EAAG8D,GAAGrC,MAAK,WACzC,OAAO44B,EAASD,aAAan5B,EAAG6C,EAAG9D,EAAG+rB,WAQzC,CACD7oB,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,EAAG9D,GACrC,IAAIkI,EAAI,GACR,OAAOlI,EAAE4M,SAAQ,SAAU3L,GACzB6C,EAAE4X,IAAIza,IAAMiH,EAAE2E,KAAK5L,MACjB2B,KAAK+2B,qBAAqBW,YAAYr5B,EAAGiH,GAAGzG,MAAK,SAAUR,GAC7DA,EAAE2L,SAAQ,SAAU3L,EAAGjB,GACrB8D,EAAEuD,IAAIpG,EAAGjB,WAiBd,CACDkD,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,EAAG9D,EAAGkI,GACpC,IAAItH,EAAIuqB,KAEJrqB,EAAI+qB,KACJtsB,EACKssB,KAGT,OAAO/nB,EAAE8I,SAAQ,SAAU3L,EAAG6C,GAC5B,IAAIvE,EAAIS,EAAE2J,IAAI7F,EAAEZ,KAQhBgF,EAAEwT,IAAI5X,EAAEZ,YAAS,IAAW3D,GAAKA,EAAEg0B,oBAAoB9D,IAA2B7uB,EAAIA,EAAE0Y,OAAOxV,EAAEZ,IAAKY,QAAK,IAAWvE,GAAKuB,EAAEuG,IAAIvD,EAAEZ,IAAK3D,EAAEg0B,SAASgH,gBAAiBnK,GAAmC7wB,EAAEg0B,SAAUzvB,EAAGvE,EAAEg0B,SAASgH,eAAgB9uB,EAAUQ,QAE3PnL,EAAEuG,IAAIvD,EAAEZ,IAAK2Y,GAAUrM,YACrB5M,KAAK43B,2BAA2Bv5B,EAAGL,GAAGa,MAAK,SAAUR,GACvD,OAAOA,EAAE2L,SAAQ,SAAU3L,EAAG6C,GAC5B,OAAOhD,EAAEuG,IAAIpG,EAAG6C,MACdA,EAAE8I,SAAQ,SAAU3L,EAAG6C,GACzB,IAAI9D,EACJ,OAAOT,EAAE8H,IAAIpG,EAAG,IAAIs4B,GAAkBz1B,EAAG,QAAU9D,EAAIc,EAAE6I,IAAI1I,UAAO,IAAWjB,EAAIA,EAAI,UACrFT,OAGP,CACD2D,IAAK,6BACLlC,MAAO,SAAoCC,EAAG6C,GAC5C,IAAI22B,EAAW73B,KAEX5C,EAAI6rB,KAGJ3jB,EAAI,IAAIgR,IAAU,SAAUjY,EAAG6C,GACjC,OAAO7C,EAAI6C,KAETlD,EAAImrB,KAER,OAAOnpB,KAAK82B,cAAcgB,2CAA2Cz5B,EAAG6C,GAAGrC,MAAK,SAAUR,GACxF,IACI05B,EADAC,EAAct7B,EAA2B2B,GAG7C,IACE,IAAI45B,EAAS,WACX,IAAIj6B,EAAI+5B,EAAQ35B,MAChBJ,EAAEmgB,OAAOnU,SAAQ,SAAU3L,GACzB,IAAIH,EAAIgD,EAAE6F,IAAI1I,GACd,GAAI,OAASH,EAAb,CACA,IAAIvB,EAAIS,EAAE2J,IAAI1I,IAAM4a,GAAUrM,QAC9BjQ,EAAIqB,EAAEkyB,iBAAiBhyB,EAAGvB,GAAIS,EAAEqH,IAAIpG,EAAG1B,GAEvC,IAAIkS,GAAKvJ,EAAEyB,IAAI/I,EAAEsxB,UAAYnG,MAA4BxV,IAAItV,GAE7DiH,EAAIA,EAAEoR,OAAO1Y,EAAEsxB,QAASzgB,QAI5B,IAAKmpB,EAAY95B,MAAO65B,EAAUC,EAAY56B,KAAKe,MACjD85B,IAEF,MAAOx5B,GACPu5B,EAAY35B,EAAEI,GACd,QACAu5B,EAAYz5B,QAEbM,MAAK,WAoBN,IAnBA,IAAIX,EAAI,GACJvB,EAAI2I,EAAE4yB,qBAGNC,EAAS,WACX,IAAI7yB,EAAI3I,EAAEgc,UACN9J,EAAIvJ,EAAEhF,IACNwO,EAAIxJ,EAAElH,MACNmH,EAAI2jB,KAERpa,EAAE9E,SAAQ,SAAU3L,GAClB,IAAKL,EAAE8a,IAAIza,GAAI,CACb,IAAI+5B,EAAOhM,GAAmClrB,EAAE6F,IAAI1I,GAAIjB,EAAE2J,IAAI1I,IAE9D,OAAS+5B,GAAQ7yB,EAAEd,IAAIpG,EAAG+5B,GAAOp6B,EAAIA,EAAE2V,IAAItV,OAE3CH,EAAE+L,KAAK4tB,EAASd,qBAAqBsB,aAAah6B,EAAGwQ,EAAGtJ,KAGvD5I,EAAE+b,WACPyf,IAGF,OAAOvqB,GAAmBe,QAAQzQ,MACjCW,MAAK,WACN,OAAOzB,OAQV,CACDkD,IAAK,4CACLlC,MAAO,SAAmDC,EAAG6C,GAC3D,IAAIo3B,EAAWt4B,KAEf,OAAOA,KAAK62B,oBAAoBrB,WAAWn3B,EAAG6C,GAAGrC,MAAK,SAAUqC,GAC9D,OAAOo3B,EAASV,2BAA2Bv5B,EAAG6C,QAajD,CACDZ,IAAK,4BACLlC,MAAO,SAAmCC,EAAG6C,EAAG9D,EAAGkI,GAKjD,OAAO,SAAqCjH,GAC1C,OAAOsN,GAAYkb,cAAcxoB,EAAEuN,OAAS,OAASvN,EAAE+N,iBAAmB,IAAM/N,EAAEgkB,QAAQtkB,OADrF,CAELmD,GAAKlB,KAAKu4B,kCAAkCl6B,EAAG6C,EAAE0K,MAAQ+Z,GAAiCzkB,GAAKlB,KAAKw4B,yCAAyCn6B,EAAG6C,EAAG9D,EAAGkI,GAAKtF,KAAKy4B,oCAAoCp6B,EAAG6C,EAAG9D,EAAGkI,KAkBhN,CACDhF,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,EAAG9D,EAAGkI,GACxC,IAAIozB,EAAW14B,KAEf,OAAOA,KAAK62B,oBAAoB8B,0BAA0Bt6B,EAAG6C,EAAG9D,EAAGkI,GAAGzG,MAAK,SAAUb,GACnF,IAAIE,EAAIoH,EAAItH,EAAEiZ,KAAO,EAAIyhB,EAAS3B,qBAAqB6B,8BAA8Bv6B,EAAG6C,EAAG9D,EAAE4P,eAAgB1H,EAAItH,EAAEiZ,MAAQrJ,GAAmB1J,QAAQ8kB,MAKlJrsB,GAAK,EACLkS,EAAI7Q,EACR,OAAOE,EAAEW,MAAK,SAAUqC,GACtB,OAAO0M,GAAmB5D,QAAQ9I,GAAG,SAAUA,EAAG9D,GAChD,OAAOT,EAAIS,EAAE4P,iBAAmBrQ,EAAIS,EAAE4P,gBAAiBhP,EAAE+I,IAAI7F,GAAK0M,GAAmB1J,UAAYw0B,EAAS7B,oBAAoBM,SAAS94B,EAAG6C,GAAGrC,MAAK,SAAUR,GAC1JwQ,EAAIA,EAAE6H,OAAOxV,EAAG7C,SAEjBQ,MAAK,WACN,OAAO65B,EAASnB,iBAAiBl5B,EAAG6C,EAAGlD,MACtCa,MAAK,WACN,OAAO65B,EAASlB,aAAan5B,EAAGwQ,EAAG3N,EAAGioB,SACrCtqB,MAAK,SAAUR,GAChB,MAAO,CACLixB,QAAS3yB,EACTy5B,QAAStN,GAAmDzqB,eAMrE,CACDiC,IAAK,oCACLlC,MAAO,SAA2CC,EAAG6C,GAEnD,OAAOlB,KAAK64B,YAAYx6B,EAAG,IAAIsN,GAAYzK,IAAIrC,MAAK,SAAUR,GAC5D,IAAI6C,EAAIunB,KACR,OAAOpqB,EAAEsoB,oBAAsBzlB,EAAIA,EAAEwV,OAAOrY,EAAEiC,IAAKjC,IAAK6C,OAG3D,CACDZ,IAAK,2CACLlC,MAAO,SAAkDC,EAAG6C,EAAG9D,EAAGkI,GAChE,IAAIwzB,EAAW94B,KAEXhC,EAAIkD,EAAEkL,gBACNlO,EAAIuqB,KACR,OAAOzoB,KAAKg3B,aAAa+B,qBAAqB16B,EAAGL,GAAGa,MAAK,SAAUlC,GACjE,OAAOiR,GAAmB5D,QAAQrN,GAAG,SAAUA,GAC7C,IAAIkS,EAAI,SAA2CxQ,EAAG6C,GACpD,OAAO,IAAIgkB,GAAoBhkB,EAE/B,KAAM7C,EAAE8mB,gBAAgB1nB,QAASY,EAAEgkB,QAAQ5kB,QAASY,EAAE0L,MAAO1L,EAAE+mB,UAAW/mB,EAAEqmB,QAASrmB,EAAEsmB,OAHjF,CAINzjB,EAAGvE,EAAEsjB,MAAMjiB,IAEb,OAAO86B,EAASL,oCAAoCp6B,EAAGwQ,EAAGzR,EAAGkI,GAAGzG,MAAK,SAAUR,GAC7EA,EAAE2L,SAAQ,SAAU3L,EAAG6C,GACrBhD,EAAIA,EAAEwY,OAAOrY,EAAG6C,YAGnBrC,MAAK,WACN,OAAOX,UAIZ,CACDoC,IAAK,sCACLlC,MAAO,SAA6CC,EAAG6C,EAAG9D,EAAGkI,GAC3D,IAGItH,EAHAg7B,EAAWh5B,KAIf,OAAOA,KAAK+2B,qBAAqBkC,yBAAyB56B,EAAG6C,EAAE0K,KAAMxO,EAAE4P,gBAAgBnO,MAAK,SAAUX,GACpG,OAAOF,EAAIE,EAAG86B,EAASnC,oBAAoBqC,0BAA0B76B,EAAG6C,EAAG9D,EAAGY,EAAGsH,MAChFzG,MAAK,SAAUR,GAGhBL,EAAEgM,SAAQ,SAAU9I,EAAG9D,GACrB,IAAIkI,EAAIlI,EAAE+7B,SACV,OAAS96B,EAAE0I,IAAIzB,KAAOjH,EAAIA,EAAEqY,OAAOpR,EAAG4a,GAAgBqW,mBAAmBjxB,QAG3E,IAAIlI,EAAIqrB,KACR,OAAOpqB,EAAE2L,SAAQ,SAAU3L,EAAGiH,GAC5B,IAAIpH,EAAIF,EAAE+I,IAAI1I,QACd,IAAWH,GAAKsvB,GAAmCtvB,EAAEyyB,SAAUrrB,EAAG2T,GAAUrM,QAAS/D,EAAUQ,OAC/Fqd,GAAuBxlB,EAAGoE,KAAOlI,EAAIA,EAAEsZ,OAAOrY,EAAGiH,OAC/ClI,SAKHw5B,EA3W6B,GA+XlCwC,GAA2C,WAC7C,SAASA,EAA4B/6B,IACnC,OAAgB2B,KAAMo5B,GAEtBp5B,KAAKuqB,WAAalsB,EAAG2B,KAAKq5B,GAAK,IAAI70B,IAAOxE,KAAKs5B,GAAK,IAAI90B,IAuC1D,OApCA,OAAa40B,EAA6B,CAAC,CACzC94B,IAAK,oBACLlC,MAAO,SAA2BC,EAAG6C,GACnC,OAAO0M,GAAmB1J,QAAQlE,KAAKq5B,GAAGtyB,IAAI7F,MAE/C,CACDZ,IAAK,qBACLlC,MAAO,SAA4BC,EAAG6C,GACpC,OAAOlB,KAAKq5B,GAAG50B,IAAIvD,EAAEq4B,GAErB,SAAsCl7B,GACpC,MAAO,CACLk7B,GAAIl7B,EAAEk7B,GACNtpB,QAAS5R,EAAE4R,QACXmQ,WAAY+Q,GAAsB9yB,EAAE+hB,aAJxC,CAMElf,IAAK0M,GAAmB1J,YAE3B,CACD5D,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,GAC/B,OAAO0M,GAAmB1J,QAAQlE,KAAKs5B,GAAGvyB,IAAI7F,MAE/C,CACDZ,IAAK,iBACLlC,MAAO,SAAwBC,EAAG6C,GAChC,OAAOlB,KAAKs5B,GAAG70B,IAAIvD,EAAEvD,KAAM,SAAuCU,GAChE,MAAO,CACLV,KAAMU,EAAEV,KACR67B,MAAO1F,GAA2Bz1B,EAAEo7B,cACpC3sB,SAAUqkB,GAAsB9yB,EAAEyO,WAJX,CAMzB5L,IAAK0M,GAAmB1J,cAIvBk1B,EA3CsC,GAmE3CM,GAAoD,WACtD,SAASA,KACP,OAAgB15B,KAAM05B,GAItB15B,KAAK25B,SAAW,IAAIrjB,GAAU3K,GAAY7B,YAAa9J,KAAK45B,GAAK,IAAIp1B,IA6GvE,OA1GA,OAAak1B,EAAsC,CAAC,CAClDp5B,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAC5B,OAAO0M,GAAmB1J,QAAQlE,KAAK25B,SAAS5yB,IAAI7F,MAErD,CACDZ,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7B,IAAI24B,EAAW75B,KAEX5C,EAAI4rB,KAER,OAAOpb,GAAmB5D,QAAQ9I,GAAG,SAAUA,GAC7C,OAAO24B,EAAS3C,WAAW74B,EAAG6C,GAAGrC,MAAK,SAAUR,GAC9C,OAASA,GAAKjB,EAAEqH,IAAIvD,EAAG7C,SAExBQ,MAAK,WACN,OAAOzB,OAGV,CACDkD,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,EAAG9D,GACjC,IAAI08B,EAAW95B,KAEf,OAAO5C,EAAE4M,SAAQ,SAAU5M,EAAGkI,GAC5Bw0B,EAASC,GAAG17B,EAAG6C,EAAGoE,MAChBsI,GAAmB1J,YAExB,CACD5D,IAAK,2BACLlC,MAAO,SAAkCC,EAAG6C,EAAG9D,GAC7C,IAAI48B,EAAWh6B,KAEXsF,EAAItF,KAAK45B,GAAG7yB,IAAI3J,GACpB,YAAO,IAAWkI,IAAMA,EAAE0E,SAAQ,SAAU3L,GAC1C,OAAO27B,EAASL,SAAWK,EAASL,SAAS9iB,OAAOxY,MAClD2B,KAAK45B,GAAGvmB,OAAOjW,IAAKwQ,GAAmB1J,YAE5C,CACD5D,IAAK,2BACLlC,MAAO,SAAkCC,EAAG6C,EAAG9D,GAM7C,IALA,IAAIkI,EAAI0jB,KACJhrB,EAAIkD,EAAEnD,OAAS,EACfG,EAAI,IAAIyN,GAAYzK,EAAE+e,MAAM,KAC5BtjB,EAAIqD,KAAK25B,SAASlhB,gBAAgBva,GAE/BvB,EAAE+b,WAAY,CACnB,IAAIuhB,EAAOt9B,EAAEgc,UAAUva,MACnB87B,EAAMD,EAAKd,SAEf,IAAKj4B,EAAEwY,WAAWwgB,EAAItuB,MAAO,MAE7BsuB,EAAItuB,KAAK7N,SAAWC,GAAKi8B,EAAKjtB,eAAiB5P,GAAKkI,EAAEb,IAAIw1B,EAAKd,SAAUc,GAG3E,OAAOrsB,GAAmB1J,QAAQoB,KAEnC,CACDhF,IAAK,gCACLlC,MAAO,SAAuCC,EAAG6C,EAAG9D,EAAGkI,GAMrD,IALA,IAAItH,EAAI,IAAIsY,IAAU,SAAUjY,EAAG6C,GACjC,OAAO7C,EAAI6C,KAEThD,EAAI8B,KAAK25B,SAAS/gB,cAEf1a,EAAEwa,WAAY,CACnB,IAAIyhB,EAAOj8B,EAAEya,UAAUva,MAEvB,GAAI+7B,EAAKhB,SAASiB,uBAAyBl5B,GAAKi5B,EAAKntB,eAAiB5P,EAAG,CACvE,IAAIi9B,EAAOr8B,EAAE+I,IAAIozB,EAAKntB,gBAEtB,OAASqtB,IAASA,EAAOrR,KAA2BhrB,EAAIA,EAAE0Y,OAAOyjB,EAAKntB,eAAgBqtB,IAAQA,EAAK51B,IAAI01B,EAAKhB,SAAUgB,IAO1H,IAHA,IAAIx9B,EAAIqsB,KACJna,EAAI7Q,EAAE4a,cAEH/J,EAAE6J,YACH7J,EAAE8J,UAAUva,MAAM4L,SAAQ,SAAU3L,EAAG6C,GACzC,OAAOvE,EAAE8H,IAAIpG,EAAG6C,QACdvE,EAAEsa,QAAU3R,MAGlB,OAAOsI,GAAmB1J,QAAQvH,KAEnC,CACD2D,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,GAEvB,IAAIkI,EAAItF,KAAK25B,SAAS5yB,IAAI3J,EAAEkD,KAE5B,GAAI,OAASgF,EAAG,CACd,IAAIg1B,EAAOt6B,KAAK45B,GAAG7yB,IAAIzB,EAAE0H,gBAAgBqG,OAAOjW,EAAEkD,KAElDN,KAAK45B,GAAGn1B,IAAIa,EAAE0H,eAAgBstB,GAGhCt6B,KAAK25B,SAAW35B,KAAK25B,SAASjjB,OAAOtZ,EAAEkD,IAAK,IAAIowB,GAAQxvB,EAAG9D,IAE3D,IAAIY,EAAIgC,KAAK45B,GAAG7yB,IAAI7F,QACpB,IAAWlD,IAAMA,EAAImrB,KAA4BnpB,KAAK45B,GAAGn1B,IAAIvD,EAAGlD,IAAKgC,KAAK45B,GAAGn1B,IAAIvD,EAAGlD,EAAE2V,IAAIvW,EAAEkD,UAIzFo5B,EAnH+C,GAuJpDa,GAAsC,WACxC,SAASA,KACP,OAAgBv6B,KAAMu6B,GAGtBv6B,KAAKw6B,GAAK,IAAIjiB,GAAUkiB,GAAuBC,IAC/C16B,KAAK26B,GAAK,IAAIpiB,GAAUkiB,GAAuBG,IAsGjD,OAjGA,OAAaL,EAAwB,CAAC,CACpCj6B,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKw6B,GAAG1jB,YAIhB,CACDxW,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAC9B,IAAI9D,EAAI,IAAIq9B,GAAuBp8B,EAAG6C,GACtClB,KAAKw6B,GAAKx6B,KAAKw6B,GAAG7mB,IAAIvW,GAAI4C,KAAK26B,GAAK36B,KAAK26B,GAAGhnB,IAAIvW,KAIjD,CACDkD,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI25B,EAAW76B,KAEf3B,EAAE2L,SAAQ,SAAU3L,GAClB,OAAOw8B,EAASC,aAAaz8B,EAAG6C,QAQnC,CACDZ,IAAK,kBACLlC,MAAO,SAAyBC,EAAG6C,GACjClB,KAAK+6B,GAAG,IAAIN,GAAuBp8B,EAAG6C,MAEvC,CACDZ,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI85B,EAAWh7B,KAEf3B,EAAE2L,SAAQ,SAAU3L,GAClB,OAAO28B,EAASC,gBAAgB58B,EAAG6C,QAQtC,CACDZ,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI68B,EAAWl7B,KAEXkB,EAAI,IAAIyK,GAAY,IAAIvB,GAAa,KACrChN,EAAI,IAAIq9B,GAAuBv5B,EAAG7C,GAClCiH,EAAI,IAAIm1B,GAAuBv5B,EAAG7C,EAAI,GACtCL,EAAI,GACR,OAAOgC,KAAK26B,GAAGQ,eAAe,CAAC/9B,EAAGkI,IAAI,SAAUjH,GAC9C68B,EAASH,GAAG18B,GAAIL,EAAEiM,KAAK5L,EAAEiC,QACvBtC,IAEL,CACDsC,IAAK,KACLlC,MAAO,WACL,IAAIg9B,EAAWp7B,KAEfA,KAAKw6B,GAAGxwB,SAAQ,SAAU3L,GACxB,OAAO+8B,EAASL,GAAG18B,QAGtB,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAKw6B,GAAKx6B,KAAKw6B,GAAGnnB,OAAOhV,GAAI2B,KAAK26B,GAAK36B,KAAK26B,GAAGtnB,OAAOhV,KAEvD,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI6C,EAAI,IAAIyK,GAAY,IAAIvB,GAAa,KACrChN,EAAI,IAAIq9B,GAAuBv5B,EAAG7C,GAClCiH,EAAI,IAAIm1B,GAAuBv5B,EAAG7C,EAAI,GAEtCL,EAAImrB,KAER,OAAOnpB,KAAK26B,GAAGQ,eAAe,CAAC/9B,EAAGkI,IAAI,SAAUjH,GAC9CL,EAAIA,EAAE2V,IAAItV,EAAEiC,QACVtC,IAEL,CACDsC,IAAK,cACLlC,MAAO,SAAqBC,GAC1B,IAAI6C,EAAI,IAAIu5B,GAAuBp8B,EAAG,GAClCjB,EAAI4C,KAAKw6B,GAAGa,kBAAkBn6B,GAClC,OAAO,OAAS9D,GAAKiB,EAAEqL,QAAQtM,EAAEkD,SAI9Bi6B,EA5GiC,GA+GtCE,GAAsC,WACxC,SAASA,EAAuBp8B,EAAG6C,IACjC,OAAgBlB,KAAMy6B,GAEtBz6B,KAAKM,IAAMjC,EAAG2B,KAAKs7B,GAAKp6B,EAmB1B,OAdA,OAAau5B,EAAwB,KAAM,CAAC,CAC1Cn6B,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,OAAOyK,GAAY7B,WAAWzL,EAAEiC,IAAKY,EAAEZ,MAAQoI,EAA8BrK,EAAEi9B,GAAIp6B,EAAEo6B,MAItF,CACDh7B,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,OAAOwH,EAA8BrK,EAAEi9B,GAAIp6B,EAAEo6B,KAAO3vB,GAAY7B,WAAWzL,EAAEiC,IAAKY,EAAEZ,SAIjFm6B,EAvBiC,GA2CtCc,GAA6C,WAC/C,SAASA,EAA8Bl9B,EAAG6C,IACxC,OAAgBlB,KAAMu7B,GAEtBv7B,KAAKg3B,aAAe34B,EAAG2B,KAAKw7B,kBAAoBt6B,EAKhDlB,KAAK82B,cAAgB,GAErB92B,KAAKy7B,GAAK,EAEVz7B,KAAK07B,GAAK,IAAInjB,GAAUkiB,GAAuBC,IA8MjD,OA3MA,OAAaa,EAA+B,CAAC,CAC3Cj7B,IAAK,aACLlC,MAAO,SAAoBC,GACzB,OAAOuP,GAAmB1J,QAAQ,IAAMlE,KAAK82B,cAAc/4B,UAE5D,CACDuC,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,EAAG9D,EAAGkI,GACxC,IAAItH,EAAIgC,KAAKy7B,GACbz7B,KAAKy7B,KAAMz7B,KAAK82B,cAAc/4B,OAAS,GAAKiC,KAAK82B,cAAc92B,KAAK82B,cAAc/4B,OAAS,GAC3F,IAAIG,EAAI,IAAImxB,GAAcrxB,EAAGkD,EAAG9D,EAAGkI,GACnCtF,KAAK82B,cAAc7sB,KAAK/L,GAExB,IACIy9B,EADAC,EAAcl/B,EAA2B4I,GAG7C,IACE,IAAKs2B,EAAY19B,MAAOy9B,EAAUC,EAAYx+B,KAAKe,MAAO,CACxD,IAAI09B,EAAOF,EAAQv9B,MACnB4B,KAAK07B,GAAK17B,KAAK07B,GAAG/nB,IAAI,IAAI8mB,GAAuBoB,EAAKv7B,IAAKtC,IAAKgC,KAAKg3B,aAAa8E,2BAA2Bz9B,EAAGw9B,EAAKv7B,IAAIsL,KAAKC,YAEhI,MAAOpN,GACPm9B,EAAYv9B,EAAEI,GACd,QACAm9B,EAAYr9B,IAGd,OAAOqP,GAAmB1J,QAAQhG,KAEnC,CACDoC,IAAK,sBACLlC,MAAO,SAA6BC,EAAG6C,GACrC,OAAO0M,GAAmB1J,QAAQlE,KAAK+7B,GAAG76B,MAE3C,CACDZ,IAAK,mCACLlC,MAAO,SAA0CC,EAAG6C,GAClD,IAAI9D,EAAI8D,EAAI,EACRoE,EAAItF,KAAKg8B,GAAG5+B,GACZY,EAAIsH,EAAI,EAAI,EAAIA,EAGpB,OAAOsI,GAAmB1J,QAAQlE,KAAK82B,cAAc/4B,OAASC,EAAIgC,KAAK82B,cAAc94B,GAAK,QAE3F,CACDsC,IAAK,kCACLlC,MAAO,WACL,OAAOwP,GAAmB1J,QAAQ,IAAMlE,KAAK82B,cAAc/4B,QAAU,EAAIiC,KAAKy7B,GAAK,KAEpF,CACDn7B,IAAK,wBACLlC,MAAO,SAA+BC,GACpC,OAAOuP,GAAmB1J,QAAQlE,KAAK82B,cAAcr5B,WAEtD,CACD6C,IAAK,4CACLlC,MAAO,SAAmDC,EAAG6C,GAC3D,IAAI+6B,EAAWj8B,KAEX5C,EAAI,IAAIq9B,GAAuBv5B,EAAG,GAClCoE,EAAI,IAAIm1B,GAAuBv5B,EAAG8R,OAAOkpB,mBACzCl+B,EAAI,GACR,OAAOgC,KAAK07B,GAAGP,eAAe,CAAC/9B,EAAGkI,IAAI,SAAUjH,GAC9C,IAAI6C,EAAI+6B,EAASF,GAAG19B,EAAEi9B,IAEtBt9B,EAAEiM,KAAK/I,MACL0M,GAAmB1J,QAAQlG,KAEhC,CACDsC,IAAK,6CACLlC,MAAO,SAAoDC,EAAG6C,GAC5D,IAAIi7B,EAAWn8B,KAEX5C,EAAI,IAAImb,GAAU7P,GACtB,OAAOxH,EAAE8I,SAAQ,SAAU3L,GACzB,IAAI6C,EAAI,IAAIu5B,GAAuBp8B,EAAG,GAClCiH,EAAI,IAAIm1B,GAAuBp8B,EAAG2U,OAAOkpB,mBAE7CC,EAAST,GAAGP,eAAe,CAACj6B,EAAGoE,IAAI,SAAUjH,GAC3CjB,EAAIA,EAAEuW,IAAItV,EAAEi9B,UAEZ1tB,GAAmB1J,QAAQlE,KAAKo8B,GAAGh/B,MAExC,CACDkD,IAAK,sCACLlC,MAAO,SAA6CC,EAAG6C,GAGrD,IAAI9D,EAAI8D,EAAE0K,KACNtG,EAAIlI,EAAEW,OAAS,EAKfC,EAAIZ,EACRuO,GAAYkb,cAAc7oB,KAAOA,EAAIA,EAAEiiB,MAAM,KAC7C,IAAI/hB,EAAI,IAAIu8B,GAAuB,IAAI9uB,GAAY3N,GAAI,GAGnDrB,EAAI,IAAI4b,GAAU7P,GACtB,OAAO1I,KAAK07B,GAAGW,cAAa,SAAUh+B,GACpC,IAAI6C,EAAI7C,EAAEiC,IAAIsL,KACd,QAASxO,EAAEsc,WAAWxY,KAKtBA,EAAEnD,SAAWuH,IAAM3I,EAAIA,EAAEgX,IAAItV,EAAEi9B,MAAM,KACpCp9B,GAAI0P,GAAmB1J,QAAQlE,KAAKo8B,GAAGz/B,MAE3C,CACD2D,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAIi+B,EAAWt8B,KAIXkB,EAAI,GACR,OAAO7C,EAAE2L,SAAQ,SAAU3L,GACzB,IAAIjB,EAAIk/B,EAASP,GAAG19B,GAEpB,OAASjB,GAAK8D,EAAE+I,KAAK7M,MACnB8D,IAEL,CACDZ,IAAK,sBACLlC,MAAO,SAA6BC,EAAG6C,GACrC,IAAIq7B,EAAWv8B,KAEfqC,EAAqB,IAAMrC,KAAKw8B,GAAGt7B,EAAEouB,QAAS,YAAatvB,KAAK82B,cAAc2F,QAC9E,IAAIr/B,EAAI4C,KAAK07B,GACb,OAAO9tB,GAAmB5D,QAAQ9I,EAAEuuB,WAAW,SAAUnqB,GACvD,IAAItH,EAAI,IAAIy8B,GAAuBn1B,EAAEhF,IAAKY,EAAEouB,SAC5C,OAAOlyB,EAAIA,EAAEiW,OAAOrV,GAAIu+B,EAASf,kBAAkBkB,wBAAwBr+B,EAAGiH,EAAEhF,QAC/EzB,MAAK,WACN09B,EAASb,GAAKt+B,OAGjB,CACDkD,IAAK,KACLlC,MAAO,SAAYC,MAElB,CACDiC,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7B,IAAI9D,EAAI,IAAIq9B,GAAuBv5B,EAAG,GAClCoE,EAAItF,KAAK07B,GAAGL,kBAAkBj+B,GAClC,OAAOwQ,GAAmB1J,QAAQhD,EAAEwI,QAAQpE,GAAKA,EAAEhF,QAEpD,CACDA,IAAK,0BACLlC,MAAO,SAAiCC,GACtC,OAAO2B,KAAK82B,cAAc/4B,OAAQ6P,GAAmB1J,YAWtD,CACD5D,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,OAAOlB,KAAKg8B,GAAG39B,KAYhB,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB,OAAI,IAAM2B,KAAK82B,cAAc/4B,OACpB,EAKFM,EAAI2B,KAAK82B,cAAc,GAAGxH,UAOlC,CACDhvB,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI6C,EAAIlB,KAAKg8B,GAAG39B,GAChB,OAAI6C,EAAI,GAAKA,GAAKlB,KAAK82B,cAAc/4B,OAAe,KAC7CiC,KAAK82B,cAAc51B,OAIvBq6B,EA3NwC,GAoP7CoB,GAAuD,WAMzD,SAASA,EAAwCt+B,IAC/C,OAAgB2B,KAAM28B,GAEtB38B,KAAK48B,GAAKv+B,EAEV2B,KAAK68B,KACI,IAAIvmB,GAAU3K,GAAY7B,YAGnC9J,KAAKiX,KAAO,EA6Gd,OA1GA,OAAa0lB,EAAyC,CAAC,CACrDr8B,IAAK,kBACLlC,MAAO,SAAyBC,GAC9B2B,KAAKg3B,aAAe34B,IASrB,CACDiC,IAAK,WACLlC,MAAO,SAAkBC,EAAG6C,GAC1B,IAAI9D,EAAI8D,EAAEZ,IACNgF,EAAItF,KAAK68B,KAAK91B,IAAI3J,GAClBY,EAAIsH,EAAIA,EAAE2R,KAAO,EACjB/Y,EAAI8B,KAAK48B,GAAG17B,GAChB,OAAOlB,KAAK68B,KAAO78B,KAAK68B,KAAKnmB,OAAOtZ,EAAG,CACrC0/B,SAAU57B,EAAE67B,cACZ9lB,KAAM/Y,IACJ8B,KAAKiX,MAAQ/Y,EAAIF,EAAGgC,KAAKg3B,aAAa8E,2BAA2Bz9B,EAAGjB,EAAEwO,KAAKC,aAShF,CACDvL,IAAK,cACLlC,MAAO,SAAqBC,GAC1B,IAAI6C,EAAIlB,KAAK68B,KAAK91B,IAAI1I,GACtB6C,IAAMlB,KAAK68B,KAAO78B,KAAK68B,KAAKhmB,OAAOxY,GAAI2B,KAAKiX,MAAQ/V,EAAE+V,QAEvD,CACD3W,IAAK,WACLlC,MAAO,SAAkBC,EAAG6C,GAC1B,IAAI9D,EAAI4C,KAAK68B,KAAK91B,IAAI7F,GACtB,OAAO0M,GAAmB1J,QAAQ9G,EAAIA,EAAE0/B,SAASC,cAAgB7c,GAAgBqW,mBAAmBr1B,MAErG,CACDZ,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAC5B,IAAI87B,EAAWh9B,KAEX5C,EAAImrB,KAER,OAAOrnB,EAAE8I,SAAQ,SAAU3L,GACzB,IAAI6C,EAAI87B,EAASH,KAAK91B,IAAI1I,GAE1BjB,EAAIA,EAAEsZ,OAAOrY,EAAG6C,EAAIA,EAAE47B,SAASC,cAAgB7c,GAAgBqW,mBAAmBl4B,OAChFuP,GAAmB1J,QAAQ9G,KAEhC,CACDkD,IAAK,4BACLlC,MAAO,SAAmCC,EAAG6C,EAAG9D,EAAGkI,GASjD,IARA,IAAItH,EAAIuqB,KAIJrqB,EAAIgD,EAAE0K,KACNjP,EAAI,IAAIgP,GAAYzN,EAAE+hB,MAAM,KAC5BpR,EAAI7O,KAAK68B,KAAKpkB,gBAAgB9b,GAE3BkS,EAAE6J,WAAY,CACnB,IAAIukB,EAAYpuB,EAAE8J,UACdukB,EAAOD,EAAU38B,IACjB68B,EAAMF,EAAU7+B,MAAM0+B,SAE1B,IAAK5+B,EAAEwb,WAAWwjB,EAAKtxB,MAAO,MAC9BsxB,EAAKtxB,KAAK7N,OAASG,EAAEH,OAAS,GAAKmP,GAAgCL,GAAqCswB,GAAM//B,IAAM,IAAMkI,EAAEwT,IAAIqkB,EAAI78B,MAAQomB,GAAuBxlB,EAAGi8B,MAAUn/B,EAAIA,EAAE0Y,OAAOymB,EAAI78B,IAAK68B,EAAIJ,gBAG5M,OAAOnvB,GAAmB1J,QAAQlG,KAEnC,CACDsC,IAAK,4BACLlC,MAAO,SAAmCC,EAAG6C,EAAG9D,EAAGkI,GAGjDpD,MAED,CACD5B,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,OAAO0M,GAAmB5D,QAAQhK,KAAK68B,MAAM,SAAUx+B,GACrD,OAAO6C,EAAE7C,QAGZ,CACDiC,IAAK,kBACLlC,MAAO,SAAyBC,GAG9B,OAAO,IAAI++B,GAA2Cp9B,QAEvD,CACDM,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAOuP,GAAmB1J,QAAQlE,KAAKiX,UAIpC0lB,EA5HkD,GA2IvDS,GAA0D,SAAUC,IACtE,OAAUD,EAA4CC,GAEtD,IAAIC,EAAWn+B,EAAai+B,GAE5B,SAASA,EAA2C/+B,GAClD,IAAIk/B,EAKJ,OAHA,OAAgBv9B,KAAMo9B,IAEtBG,EAAWD,EAAS9/B,KAAKwC,OAAgBw9B,GAAKn/B,EACvCk/B,EAyBT,OAtBA,OAAaH,EAA4C,CAAC,CACxD98B,IAAK,eACLlC,MAAO,SAAsBC,GAC3B,IAAIo/B,EAAWz9B,KAEXkB,EAAI,GACR,OAAOlB,KAAKo2B,QAAQpsB,SAAQ,SAAU5M,EAAGkI,GACvCA,EAAE8qB,kBAAoBlvB,EAAE+I,KAAKwzB,EAASD,GAAGE,SAASr/B,EAAGiH,IAAMm4B,EAASD,GAAGG,YAAYvgC,MACjFwQ,GAAmBe,QAAQzN,KAEhC,CACDZ,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAC9B,OAAOlB,KAAKw9B,GAAGrG,SAAS94B,EAAG6C,KAE5B,CACDZ,IAAK,kBACLlC,MAAO,SAAyBC,EAAG6C,GACjC,OAAOlB,KAAKw9B,GAAGhI,WAAWn3B,EAAG6C,OAI1Bk8B,EApCqD,CAqC5DjH,IAmBEyH,GAA2C,WAC7C,SAASA,EAA4Bv/B,IACnC,OAAgB2B,KAAM49B,GAEtB59B,KAAK69B,YAAcx/B,EAInB2B,KAAK89B,GAAK,IAAIvW,IAAU,SAAUlpB,GAChC,OAAOymB,GAAyBzmB,KAC/B2mB,IAEHhlB,KAAK+9B,0BAA4Bx0B,EAAgBW,MAEjDlK,KAAKg+B,gBAAkB,EAEvBh+B,KAAKi+B,GAAK,EAKVj+B,KAAKk+B,GAAK,IAAI3D,GAA0Bv6B,KAAKm+B,YAAc,EAAGn+B,KAAKo+B,GAAKnI,GAA4BoI,KA6GtG,OA1GA,OAAaT,EAA6B,CAAC,CACzCt9B,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,GAC/B,OAAOlB,KAAK89B,GAAG9zB,SAAQ,SAAU3L,EAAGjB,GAClC,OAAO8D,EAAE9D,MACPwQ,GAAmB1J,YAExB,CACD5D,IAAK,+BACLlC,MAAO,SAAsCC,GAC3C,OAAOuP,GAAmB1J,QAAQlE,KAAK+9B,6BAExC,CACDz9B,IAAK,2BACLlC,MAAO,SAAkCC,GACvC,OAAOuP,GAAmB1J,QAAQlE,KAAKi+B,MAExC,CACD39B,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAO2B,KAAKg+B,gBAAkBh+B,KAAKo+B,GAAGv/B,OAAQ+O,GAAmB1J,QAAQlE,KAAKg+B,mBAE/E,CACD19B,IAAK,qBACLlC,MAAO,SAA4BC,EAAG6C,EAAG9D,GACvC,OAAOA,IAAM4C,KAAK+9B,0BAA4B3gC,GAAI8D,EAAIlB,KAAKi+B,KAAOj+B,KAAKi+B,GAAK/8B,GAAI0M,GAAmB1J,YAEpG,CACD5D,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK89B,GAAGr5B,IAAIpG,EAAEsR,OAAQtR,GACtB,IAAI6C,EAAI7C,EAAEigC,SACVp9B,EAAIlB,KAAKg+B,kBAAoBh+B,KAAKo+B,GAAK,IAAInI,GAA4B/0B,GAAIlB,KAAKg+B,gBAAkB98B,GAAI7C,EAAEkgC,eAAiBv+B,KAAKi+B,KAAOj+B,KAAKi+B,GAAK5/B,EAAEkgC,kBAElJ,CACDj+B,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,GAC/B,OAAOlB,KAAKw+B,GAAGt9B,GAAIlB,KAAKm+B,aAAe,EAAGvwB,GAAmB1J,YAE9D,CACD5D,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,GAClC,OAAOlB,KAAKw+B,GAAGt9B,GAAI0M,GAAmB1J,YAEvC,CACD5D,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,GAClC,OAAOlB,KAAK89B,GAAGzqB,OAAOnS,EAAEyO,QAAS3P,KAAKk+B,GAAGO,GAAGv9B,EAAEo9B,UAAWt+B,KAAKm+B,aAAe,EAAGvwB,GAAmB1J,YAEpG,CACD5D,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,EAAG9D,GAClC,IAAIshC,EAAW1+B,KAEXsF,EAAI,EACJtH,EAAI,GACR,OAAOgC,KAAK89B,GAAG9zB,SAAQ,SAAU9L,EAAGvB,GAClCA,EAAE4hC,gBAAkBr9B,GAAK,OAAS9D,EAAE2J,IAAIpK,EAAE2hC,YAAcI,EAASZ,GAAGzqB,OAAOnV,GAAIF,EAAEiM,KAAKy0B,EAASC,8BAA8BtgC,EAAG1B,EAAE2hC,WAAYh5B,QAC5IsI,GAAmBe,QAAQ3Q,GAAGa,MAAK,WACrC,OAAOyG,OAGV,CACDhF,IAAK,iBACLlC,MAAO,SAAwBC,GAC7B,OAAOuP,GAAmB1J,QAAQlE,KAAKm+B,eAExC,CACD79B,IAAK,gBACLlC,MAAO,SAAuBC,EAAG6C,GAC/B,IAAI9D,EAAI4C,KAAK89B,GAAG/2B,IAAI7F,IAAM,KAC1B,OAAO0M,GAAmB1J,QAAQ9G,KAEnC,CACDkD,IAAK,kBACLlC,MAAO,SAAyBC,EAAG6C,EAAG9D,GACpC,OAAO4C,KAAKk+B,GAAGU,GAAG19B,EAAG9D,GAAIwQ,GAAmB1J,YAE7C,CACD5D,IAAK,qBACLlC,MAAO,SAA4BC,EAAG6C,EAAG9D,GACvC4C,KAAKk+B,GAAGW,GAAG39B,EAAG9D,GACd,IAAIkI,EAAItF,KAAK69B,YAAYrC,kBACrBx9B,EAAI,GACR,OAAOsH,GAAKpE,EAAE8I,SAAQ,SAAU9I,GAC9BlD,EAAEiM,KAAK3E,EAAEo3B,wBAAwBr+B,EAAG6C,OAClC0M,GAAmBe,QAAQ3Q,KAEhC,CACDsC,IAAK,gCACLlC,MAAO,SAAuCC,EAAG6C,GAC/C,OAAOlB,KAAKk+B,GAAGO,GAAGv9B,GAAI0M,GAAmB1J,YAE1C,CACD5D,IAAK,6BACLlC,MAAO,SAAoCC,EAAG6C,GAC5C,IAAI9D,EAAI4C,KAAKk+B,GAAGY,GAAG59B,GACnB,OAAO0M,GAAmB1J,QAAQ9G,KAEnC,CACDkD,IAAK,cACLlC,MAAO,SAAqBC,EAAG6C,GAC7B,OAAO0M,GAAmB1J,QAAQlE,KAAKk+B,GAAGa,YAAY79B,QAInD08B,EAlIsC,GA2J3CoB,GAA2C,WAO7C,SAASA,EAA4B3gC,EAAG6C,GACtC,IAAI+9B,EAAWj/B,MAEf,OAAgBA,KAAMg/B,GAEtBh/B,KAAKk/B,GAAK,GAAIl/B,KAAK25B,SAAW,GAAI35B,KAAKm/B,GAAK,IAAIlqB,GAAyB,GAAIjV,KAAKo/B,IAAK,EAAIp/B,KAAKo/B,IAAK,EAAIp/B,KAAKw7B,kBAAoBn9B,EAAE2B,MAAOA,KAAKq/B,GAAK,IAAIzB,GAA4B59B,MACrLA,KAAKg3B,aAAe,IAAI1B,GAAgCt1B,KAAK62B,oBAAsB,SAAgDx4B,GACjI,OAAO,IAAIs+B,GAAwCt+B,GAD8B,EAEjF,SAAUA,GACV,OAAO4gC,EAASzD,kBAAkB8D,GAAGjhC,MACnC2B,KAAKuqB,WAAa,IAAIqJ,GAA0B1yB,GAAIlB,KAAKu/B,GAAK,IAAInG,GAA4Bp5B,KAAKuqB,YAwFzG,OArFA,OAAayU,EAA6B,CAAC,CACzC1+B,IAAK,QACLlC,MAAO,WACL,OAAO6F,QAAQC,YAEhB,CACD5D,IAAK,WACLlC,MAAO,WAEL,OAAO4B,KAAKo/B,IAAK,EAAIn7B,QAAQC,YAE9B,CACD5D,IAAK,UACLyG,IAAK,WACH,OAAO/G,KAAKo/B,KAEb,CACD9+B,IAAK,6BACLlC,MAAO,cAEN,CACDkC,IAAK,oBACLlC,MAAO,cAEN,CACDkC,IAAK,kBACLlC,MAAO,SAAyBC,GAG9B,OAAO2B,KAAKg3B,eAEb,CACD12B,IAAK,0BACLlC,MAAO,SAAiCC,GACtC,IAAI6C,EAAIlB,KAAK25B,SAASt7B,EAAEmhC,SACxB,OAAOt+B,IAAMA,EAAI,IAAIw4B,GAAwC15B,KAAK25B,SAASt7B,EAAEmhC,SAAWt+B,GAAIA,IAE7F,CACDZ,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,GAClC,IAAI9D,EAAI4C,KAAKk/B,GAAG7gC,EAAEmhC,SAClB,OAAOpiC,IAAMA,EAAI,IAAIm+B,GAA8Br6B,EAAGlB,KAAKw7B,mBAAoBx7B,KAAKk/B,GAAG7gC,EAAEmhC,SAAWpiC,GAAIA,IAEzG,CACDkD,IAAK,iBACLlC,MAAO,WACL,OAAO4B,KAAKq/B,KAEb,CACD/+B,IAAK,yBACLlC,MAAO,WACL,OAAO4B,KAAK62B,sBAEb,CACDv2B,IAAK,iBACLlC,MAAO,WACL,OAAO4B,KAAKu/B,KAEb,CACDj/B,IAAK,iBACLlC,MAAO,SAAwBC,EAAG6C,EAAG9D,GACnC,IAAIqiC,EAAWz/B,KAEfgB,EAAmB,oBAAqB,wBAAyB3C,GAEjE,IAAIiH,EAAI,IAAIo6B,GAA4B1/B,KAAKm/B,GAAGtgC,QAChD,OAAOmB,KAAKw7B,kBAAkBmE,KAAMviC,EAAEkI,GAAGzG,MAAK,SAAUR,GACtD,OAAOohC,EAASjE,kBAAkBoE,GAAGt6B,GAAGzG,MAAK,WAC3C,OAAOR,QAER6T,YAAY5L,MAAK,SAAUjI,GAC5B,OAAOiH,EAAEu6B,wBAAyBxhC,OAGrC,CACDiC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,OAAO0M,GAAmBkyB,GAAGziC,OAAOogB,OAAOzd,KAAKk/B,IAAI99B,KAAI,SAAUhE,GAChE,OAAO,WACL,OAAOA,EAAE2hC,YAAY1gC,EAAG6C,YAMzB89B,EAzGsC,GAiH3CU,GAA2C,SAAUK,IACvD,OAAUL,EAA6BK,GAEvC,IAAIC,EAAW7gC,EAAaugC,GAE5B,SAASA,EAA4BrhC,GACnC,IAAI4hC,EAKJ,OAHA,OAAgBjgC,KAAM0/B,IAEtBO,EAAWD,EAASxiC,KAAKwC,OAAgBkgC,sBAAwB7hC,EAC1D4hC,EAGT,OAAO,OAAaP,GAdyB,CAe7CryB,IAEE8yB,GAA6C,WAC/C,SAASA,EAA8B9hC,IACrC,OAAgB2B,KAAMmgC,GAEtBngC,KAAK69B,YAAcx/B,EAEnB2B,KAAKogC,GAAK,IAAI7F,GAEdv6B,KAAKqgC,GAAK,KAiGZ,OA9FA,OAAaF,EAA+B,CAAC,CAC3C7/B,IAAK,KACLyG,IAAK,WACH,GAAI/G,KAAKqgC,GAAI,OAAOrgC,KAAKqgC,GACzB,MAAMn+B,MAEP,CACD5B,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,EAAG9D,GACjC,OAAO4C,KAAKogC,GAAGtF,aAAa19B,EAAG8D,GAAIlB,KAAKsgC,GAAGjtB,OAAOjW,EAAEG,YAAaqQ,GAAmB1J,YAErF,CACD5D,IAAK,kBACLlC,MAAO,SAAyBC,EAAG6C,EAAG9D,GACpC,OAAO4C,KAAKogC,GAAGnF,gBAAgB79B,EAAG8D,GAAIlB,KAAKsgC,GAAG3sB,IAAIvW,EAAEG,YAAaqQ,GAAmB1J,YAErF,CACD5D,IAAK,0BACLlC,MAAO,SAAiCC,EAAG6C,GACzC,OAAOlB,KAAKsgC,GAAG3sB,IAAIzS,EAAE3D,YAAaqQ,GAAmB1J,YAEtD,CACD5D,IAAK,eACLlC,MAAO,SAAsBC,EAAG6C,GAC9B,IAAIq/B,EAAWvgC,KAEfA,KAAKogC,GAAG3B,GAAGv9B,EAAEo9B,UAAUt0B,SAAQ,SAAU3L,GACvC,OAAOkiC,EAASD,GAAG3sB,IAAItV,EAAEd,eAE3B,IAAIH,EAAI4C,KAAK69B,YAAY2C,iBACzB,OAAOpjC,EAAEqjC,2BAA2BpiC,EAAG6C,EAAEo9B,UAAUz/B,MAAK,SAAUR,GAChEA,EAAE2L,SAAQ,SAAU3L,GAClB,OAAOkiC,EAASD,GAAG3sB,IAAItV,EAAEd,kBAE1BsB,MAAK,WACN,OAAOzB,EAAEsjC,iBAAiBriC,EAAG6C,QAGhC,CACDZ,IAAK,KACLlC,MAAO,WACL4B,KAAKqgC,GAAK,IAAIta,MAEf,CACDzlB,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAIsiC,EAAW3gC,KAGXkB,EAAIlB,KAAK69B,YAAY+C,yBAAyBC,kBAClD,OAAOjzB,GAAmB5D,QAAQhK,KAAKsgC,IAAI,SAAUljC,GACnD,IAAIkI,EAAIqG,GAAYm1B,SAAS1jC,GAC7B,OAAOujC,EAASI,GAAG1iC,EAAGiH,GAAGzG,MAAK,SAAUR,GACtCA,GAAK6C,EAAEy8B,YAAYr4B,EAAGiE,EAAgBW,aAEvCrL,MAAK,WACN,OAAO8hC,EAASN,GAAK,KAAMn/B,EAAEhB,MAAM7B,QAGtC,CACDiC,IAAK,sBACLlC,MAAO,SAA6BC,EAAG6C,GACrC,IAAI8/B,EAAWhhC,KAEf,OAAOA,KAAK+gC,GAAG1iC,EAAG6C,GAAGrC,MAAK,SAAUR,GAClCA,EAAI2iC,EAASV,GAAGjtB,OAAOnS,EAAE3D,YAAcyjC,EAASV,GAAG3sB,IAAIzS,EAAE3D,iBAG5D,CACD+C,IAAK,KACLlC,MAAO,SAAYC,GAEjB,OAAO,IAER,CACDiC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI+/B,EAAWjhC,KAEf,OAAO4N,GAAmBkyB,GAAG,CAAC,WAC5B,OAAOlyB,GAAmB1J,QAAQ+8B,EAASb,GAAGrB,YAAY79B,KACzD,WACD,OAAO+/B,EAASpD,YAAY2C,iBAAiBzB,YAAY1gC,EAAG6C,IAC3D,WACD,OAAO+/B,EAASpD,YAAYqD,GAAG7iC,EAAG6C,SAGpC,CAAC,CACHZ,IAAK,KACLlC,MAAO,SAAYC,GACjB,OAAO,IAAI8hC,EAA8B9hC,OAItC8hC,EAzGwC,GA28CjD,IAAIgB,GAA0C,WAC5C,SAASA,EAA2B9iC,EAAG6C,EAAG9D,EAAGkI,IAC3C,OAAgBtF,KAAMmhC,GAEtBnhC,KAAKs+B,SAAWjgC,EAAG2B,KAAKohC,UAAYlgC,EAAGlB,KAAKqhC,GAAKjkC,EAAG4C,KAAKshC,GAAKh8B,EAwChE,OArCA,OAAa67B,EAA4B,KAAM,CAAC,CAC9C7gC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAIIqgC,EAJAnkC,EAAI+rB,KACJ7jB,EAAI6jB,KAEJqY,EAAc9kC,EAA2BwE,EAAEugC,YAG/C,IACE,IAAKD,EAAYtjC,MAAOqjC,EAAUC,EAAYpkC,KAAKe,MAAO,CACxD,IAAIujC,EAAOH,EAAQnjC,MAEnB,OAAQsjC,EAAKp9B,MACX,KAAK,EAGHlH,EAAIA,EAAEuW,IAAI+tB,EAAKC,IAAIrhC,KACnB,MAEF,KAAK,EAGHgF,EAAIA,EAAEqO,IAAI+tB,EAAKC,IAAIrhC,OAIzB,MAAO7B,GACP+iC,EAAYnjC,EAAEI,GACd,QACA+iC,EAAYjjC,IAGd,OAAO,IAAI4iC,EAA2B9iC,EAAG6C,EAAEkgC,UAAWhkC,EAAGkI,OAItD67B,EA5CqC,GAqE1CS,GAA4B,WAC9B,SAASA,KACP,OAAgB5hC,KAAM4hC,GAKtB5hC,KAAK6hC,mBAAqB,EAe5B,OAZA,OAAaD,EAAc,CAAC,CAC1BthC,IAAK,oBACLyG,IAAK,WACH,OAAO/G,KAAK6hC,qBAEb,CACDvhC,IAAK,6BACLlC,MAAO,SAAoCC,GACzC2B,KAAK6hC,oBAAsBxjC,MAIxBujC,EAtBuB,GAiF5BE,GAAqC,WACvC,SAASA,KACP,OAAgB9hC,KAAM8hC,GAEtB9hC,KAAK+hC,IAAK,EAAI/hC,KAAKgiC,IAAK,EAKxBhiC,KAAKiiC,GAAK,IAAKjiC,KAAKkiC,IAWX,UAAa,EAAIlyB,GAAmB5C,GAAE,WAAW,EAAI,EAAI,EAoLpE,OA9KA,OAAa00B,EAAuB,CAAC,CACnCxhC,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAC5BlB,KAAKmiC,GAAK9jC,EAAG2B,KAAKg3B,aAAe91B,EAAGlB,KAAK+hC,IAAK,IAI/C,CACDzhC,IAAK,4BACLlC,MAAO,SAAmCC,EAAG6C,EAAG9D,EAAGkI,GACjD,IAAI88B,EAAWpiC,KAKXhC,EAAI,CACN6B,OAAQ,MAEV,OAAOG,KAAKqiC,GAAGhkC,EAAG6C,GAAGrC,MAAK,SAAUR,GAClCL,EAAE6B,OAASxB,KACVQ,MAAK,WACN,IAAKb,EAAE6B,OAAQ,OAAOuiC,EAASE,GAAGjkC,EAAG6C,EAAGoE,EAAGlI,GAAGyB,MAAK,SAAUR,GAC3DL,EAAE6B,OAASxB,QAEZQ,MAAK,WACN,IAAIb,EAAE6B,OAAN,CACA,IAAIzC,EAAI,IAAIwkC,GACZ,OAAOQ,EAASG,GAAGlkC,EAAG6C,EAAG9D,GAAGyB,MAAK,SAAUyG,GACzC,GAAItH,EAAE6B,OAASyF,EAAG88B,EAASJ,GAAI,OAAOI,EAASI,GAAGnkC,EAAG6C,EAAG9D,EAAGkI,EAAE2R,aAE9DpY,MAAK,WACN,OAAOb,EAAE6B,YAGZ,CACDS,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,GAC1B,OAAOlI,EAAEqlC,kBAAoBziC,KAAKiiC,IAAMnhC,KAA2B,YAAkBE,EAAmB,cAAe,+CAAgDylB,GAAyBvlB,GAAI,8DAA+D,wBAAyBlB,KAAKiiC,GAAI,aAAcr0B,GAAmB1J,YAAcpD,KAA2B,YAAkBE,EAAmB,cAAe,SAAUylB,GAAyBvlB,GAAI,QAAS9D,EAAEqlC,kBAAmB,8BAA+Bn9B,EAAG,yBAA0BlI,EAAEqlC,kBAAoBziC,KAAKkiC,GAAK58B,GAAKxE,KAA2B,YAAkBE,EAAmB,cAAe,qDAAsDylB,GAAyBvlB,GAAI,wDAAyDlB,KAAKg3B,aAAa0L,oBAAoBrkC,EAAG+nB,GAAwBllB,KAAO0M,GAAmB1J,aAOh4B,CACD5D,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAIyhC,EAAW3iC,KAEf,GAAI0lB,GAAmCxkB,GAGrC,OAAO0M,GAAmB1J,QAAQ,MAEpC,IAAI9G,EAAIgpB,GAAwBllB,GAEhC,OAAOlB,KAAKg3B,aAAa4L,aAAavkC,EAAGjB,GAAGyB,MAAK,SAAUyG,GACzD,OAAO,IAEHA,EAAI,MAAQ,OAASpE,EAAE6I,OAAS,IAEhCzE,IAOJpE,EAAIolB,GAAyBplB,EAAG,KAAM,KAEnC9D,EAAIgpB,GAAwBllB,IAAKyhC,EAAS3L,aAAa6L,2BAA2BxkC,EAAGjB,GAAGyB,MAAK,SAAUyG,GACxG,IAAItH,EAAImrB,GAAyBjpB,WAAM,GAAQ,OAAmBoF,IAElE,OAAOq9B,EAASR,GAAGW,aAAazkC,EAAGL,GAAGa,MAAK,SAAUyG,GACnD,OAAOq9B,EAAS3L,aAAa+L,aAAa1kC,EAAGjB,GAAGyB,MAAK,SAAUzB,GAC7D,IAAIc,EAAIykC,EAASK,GAAG9hC,EAAGoE,GAEvB,OAAOq9B,EAASM,GAAG/hC,EAAGhD,EAAGF,EAAGZ,EAAE0P,UAAY61B,EAASN,GAAGhkC,EAAGioB,GAAyBplB,EAAG,KAAM,MAEtFyhC,EAASO,GAAG7kC,EAAGH,EAAGgD,EAAG9D,kBAWnC,CACDkD,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,GAC1B,IAAI69B,EAAWnjC,KAEf,OAAO0lB,GAAmCxkB,IAAMoE,EAAEoE,QAAQH,EAAgBW,OAAS0D,GAAmB1J,QAAQ,MAAQlE,KAAKmiC,GAAGW,aAAazkC,EAAGjB,GAAGyB,MAAK,SAAUb,GAC9J,IAAIE,EAAIilC,EAASH,GAAG9hC,EAAGlD,GAEvB,OAAOmlC,EAASF,GAAG/hC,EAAGhD,EAAGd,EAAGkI,GAAKsI,GAAmB1J,QAAQ,OAASpD,KAA2B,YAAkBE,EAAmB,cAAe,wDAAyDsE,EAAE/H,WAAYkpB,GAAyBvlB,IAAKiiC,EAASD,GAAG7kC,EAAGH,EAAGgD,EAAGsL,GAA8ClH,GAAI,IAAIzG,MAAK,SAAUR,GACjV,OAAOA,WAOZ,CACDiC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GAGpB,IAAI9D,EAAI,IAAImb,GAAU2O,GAA6B7oB,IACnD,OAAO6C,EAAE8I,SAAQ,SAAU9I,EAAGoE,GAC5BohB,GAAuBroB,EAAGiH,KAAOlI,EAAIA,EAAEuW,IAAIrO,OACzClI,IAeL,CACDkD,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,GAC1B,GAAI,OAASjH,EAAE0L,MACb,OAAO,EACT,GAAI3M,EAAE6Z,OAAS/V,EAAE+V,KAEf,OAAO,EAST,IAAIjZ,EAAI,MAEJK,EAAE+mB,UAAYlkB,EAAEkiC,OAASliC,EAAEmiC,QAC/B,QAASrlC,IAAMA,EAAEslC,kBAAoBtlC,EAAEiS,QAAQ9C,UAAU7H,GAAK,KAE/D,CACDhF,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,GACvB,OAAO0D,KAA2B,YAAkBE,EAAmB,cAAe,+CAAgDylB,GAAyBvlB,IAAKlB,KAAKmiC,GAAGjJ,0BAA0B76B,EAAG6C,EAAGyL,GAAYzC,MAAO9M,KAOhO,CACDkD,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,GAE1B,OAAOtF,KAAKmiC,GAAGjJ,0BAA0B76B,EAAGjB,EAAGkI,GAAGzG,MAAK,SAAUR,GAC/D,OACE6C,EAAE8I,SAAQ,SAAU9I,GAClB7C,EAAIA,EAAEqY,OAAOxV,EAAEZ,IAAKY,MAClB7C,SAMLyjC,EAxMgC,GAqOrCyB,GAAwC,WAC1C,SAASA,EAETllC,EAAG6C,EAAG9D,EAAGkI,IACP,OAAgBtF,KAAMujC,GAEtBvjC,KAAK69B,YAAcx/B,EAAG2B,KAAKwjC,GAAKtiC,EAAGlB,KAAKuqB,WAAajlB,EAOrDtF,KAAKyjC,GAAK,IAAIntB,GAAU5N,GAGxB1I,KAAK0jC,GAAK,IAAInc,IAAU,SAAUlpB,GAChC,OAAOymB,GAAyBzmB,KAC/B2mB,IAOHhlB,KAAK2jC,GAAK,IAAIn/B,IAAOxE,KAAK4jC,GAAKvlC,EAAEuiC,yBAA0B5gC,KAAKq/B,GAAKhhC,EAAEmiC,iBAAkBxgC,KAAKu/B,GAAKlhC,EAAEwlC,iBAAkB7jC,KAAK8jC,GAAG1mC,GAqBjI,OAlBA,OAAammC,EAA0B,CAAC,CACtCjjC,IAAK,KACLlC,MAAO,SAAYC,GAGjB2B,KAAK+2B,qBAAuB/2B,KAAK69B,YAAYkG,wBAAwB1lC,GAAI2B,KAAKg3B,aAAeh3B,KAAK69B,YAAYmG,gBAAgB3lC,GAAI2B,KAAK82B,cAAgB92B,KAAK69B,YAAYoG,iBAAiB5lC,EAAG2B,KAAKg3B,cAAeh3B,KAAKkkC,eAAiB,IAAItN,GAAmB52B,KAAK4jC,GAAI5jC,KAAK82B,cAAe92B,KAAK+2B,qBAAsB/2B,KAAKg3B,cAAeh3B,KAAK4jC,GAAGO,gBAAgBnkC,KAAKg3B,cAAeh3B,KAAKwjC,GAAGY,WAAWpkC,KAAKkkC,eAAgBlkC,KAAKg3B,gBAEna,CACD12B,IAAK,iBACLlC,MAAO,SAAwBC,GAC7B,IAAIgmC,EAAWrkC,KAEf,OAAOA,KAAK69B,YAAYyG,eAAe,kBAAmB,qBAAqB,SAAUpjC,GACvF,OAAO7C,EAAEkmC,QAAQrjC,EAAGmjC,EAASZ,WAK5BF,EA9CmC,GAiD5C,SAASiB,GAETnmC,EAAG6C,EAAG9D,EAAGkI,GACP,OAAO,IAAIi+B,GAAyBllC,EAAG6C,EAAG9D,EAAGkI,GAY/C,SAASm/B,GAAqCC,EAAKC,GACjD,OAAOC,GAAoC1kC,MAAMF,KAAMC,WAoBzD,SAAS2kC,KAwGP,OAvGAA,IAAsC,OAAgC,UAAyB,SAASC,EAAUxmC,EAAG6C,GACnH,IAAI9D,EACJ,OAAO,UAAyB,SAAoB0nC,GAClD,OACE,OAAQA,EAAWn/B,KAAOm/B,EAAWjmC,MACnC,KAAK,EAGH,OAFAzB,EAAIkF,EAAoBjE,GACxBymC,EAAWjmC,KAAO,EACXzB,EAAEygC,YAAYyG,eAAe,qBAAsB,YAAY,SAAUjmC,GAG9E,IAAIiH,EACJ,OAAOlI,EAAE05B,cAAciO,sBAAsB1mC,GAAGQ,MAAK,SAAUb,GAC7D,OAAOsH,EAAItH,EAAGZ,EAAE0mC,GAAG5iC,GAAI9D,EAAE05B,cAAciO,sBAAsB1mC,MAC5DQ,MAAK,SAAUqC,GAChB,IAOI8jC,EAPAhnC,EAAI,GACJE,EAAI,GAGJvB,EAAIwsB,KAEJ8b,EAAcvoC,EAA2B4I,GAG7C,IACE,IAAK2/B,EAAY/mC,MAAO8mC,EAAUC,EAAY7nC,KAAKe,MAAO,CACxD,IAAI+mC,EAAQF,EAAQ5mC,MACpBJ,EAAEiM,KAAKi7B,EAAM5V,SAEb,IACI6V,EADAC,EAAc1oC,EAA2BwoC,EAAMzV,WAGnD,IACE,IAAK2V,EAAYlnC,MAAOinC,EAAUC,EAAYhoC,KAAKe,MAAO,CACxD,IAAIknC,EAAOF,EAAQ/mC,MACnBzB,EAAIA,EAAEgX,IAAI0xB,EAAK/kC,MAEjB,MAAO7B,GACP2mC,EAAY/mC,EAAEI,GACd,QACA2mC,EAAY7mC,MAGhB,MAAOE,GACPwmC,EAAY5mC,EAAEI,GACd,QACAwmC,EAAY1mC,IAGd,IACI+mC,EADAC,EAAc7oC,EAA2BwE,GAG7C,IACE,IAAKqkC,EAAYrnC,MAAOonC,EAAUC,EAAYnoC,KAAKe,MAAO,CACxD,IAAIqnC,EAAQF,EAAQlnC,MACpBF,EAAE+L,KAAKu7B,EAAMlW,SAEb,IACImW,EADAC,EAAchpC,EAA2B8oC,EAAM/V,WAGnD,IACE,IAAKiW,EAAYxnC,MAAOunC,EAAUC,EAAYtoC,KAAKe,MAAO,CACxD,IAAIwnC,EAAOF,EAAQrnC,MACnBzB,EAAIA,EAAEgX,IAAIgyB,EAAKrlC,MAEjB,MAAO7B,GACPinC,EAAYrnC,EAAEI,GACd,QACAinC,EAAYnnC,MAKhB,MAAOE,GACP8mC,EAAYlnC,EAAEI,GACd,QACA8mC,EAAYhnC,IAOd,OAAOnB,EAAE8mC,eAAepB,aAAazkC,EAAG1B,GAAGkC,MAAK,SAAUR,GACxD,MAAO,CACLunC,GAAIvnC,EACJwnC,gBAAiB7nC,EACjB8nC,cAAe5nC,YAMzB,KAAK,EACH,OAAO4mC,EAAW1zB,OAAO,SAAU0zB,EAAW7zB,MAEhD,KAAK,EACL,IAAK,MACH,OAAO6zB,EAAWl/B,UAGvBi/B,QAEsC3kC,MAAMF,KAAMC,WAGzD,SAAS8lC,GAAqC1nC,EAAG6C,GAC/C,IAAI9D,EAAIkF,EAAoBjE,GAE5B,OAAOjB,EAAEygC,YAAYyG,eAAe,oBAAqB,qBAAqB,SAAUjmC,GACtF,IAAIiH,EAAIpE,EAAEovB,MAAMnS,OACZngB,EAAIZ,EAAEwmC,GAAG/C,gBAAgB,CAC3BmF,eAAe,IAEjB,OAAO,SAA+C3nC,EAAG6C,EAAG9D,EAAGkI,GAC7D,IAAItH,EAAIZ,EAAEkzB,MACNpyB,EAAIF,EAAEmgB,OACNxhB,EAAIiR,GAAmB1J,UAC3B,OAAOhG,EAAE8L,SAAQ,SAAU3L,GACzB1B,EAAIA,EAAEkC,MAAK,WACT,OAAOyG,EAAE6xB,SAASj2B,EAAG7C,MACpBQ,MAAK,SAAUqC,GAChB,IAAIhD,EAAId,EAAEozB,YAAYzpB,IAAI1I,GAC1BgE,EAAqB,OAASnE,GAAIgD,EAAE+O,QAAQ9C,UAAUjP,GAAK,IAAMF,EAAEioC,sBAAsB/kC,EAAG9D,GAAI8D,EAAEkvB,oBAGlGlvB,EAAEs1B,YAAYp5B,EAAEmzB,eAAgBjrB,EAAEo4B,SAASx8B,WAE3CvE,EAAEkC,MAAK,WACT,OAAOR,EAAEy4B,cAAcoP,oBAAoBhlC,EAAGlD,MAf3C,CAoBNZ,EAAGiB,EAAG6C,EAAGlD,GAAGa,MAAK,WAChB,OAAOb,EAAEkC,MAAM7B,MACdQ,MAAK,WACN,OAAOzB,EAAE05B,cAAcqP,wBAAwB9nC,MAC9CQ,MAAK,WACN,OAAOzB,EAAE25B,qBAAqBqP,yBAAyB/nC,EAAGiH,EAAGpE,EAAEovB,MAAMhB,YACpEzwB,MAAK,WACN,OAAOzB,EAAE8mC,eAAemC,0CAA0ChoC,EAAG,SAA+CA,GAGlH,IAFA,IAAI6C,EAAIioB,KAECmd,EAAO,EAAGA,EAAOjoC,EAAEqxB,gBAAgB3xB,SAAUuoC,EACpDjoC,EAAEqxB,gBAAgB4W,GAAMxa,iBAAiB/tB,OAAS,IAAMmD,EAAIA,EAAEyS,IAAItV,EAAEiyB,MAAMb,UAAU6W,GAAMhmC,MAG5F,OAAOY,EAP4D,CAepEA,OACArC,MAAK,WACN,OAAOzB,EAAE8mC,eAAepB,aAAazkC,EAAGiH,SAU9C,SAASihC,GAAiDloC,GACxD,IAAI6C,EAAIoB,EAAoBjE,GAE5B,OAAO6C,EAAE28B,YAAYyG,eAAe,mCAAoC,YAAY,SAAUjmC,GAC5F,OAAO6C,EAAEm+B,GAAGmH,6BAA6BnoC,MAqJ7C,SAASooC,GAAyCpoC,EAAG6C,GACnD,IAAI9D,EAAIkF,EAAoBjE,GAE5B,OAAOjB,EAAEygC,YAAYyG,eAAe,0BAA2B,YAAY,SAAUjmC,GACnF,YAAO,IAAW6C,IAAMA,GAAK,GAAI9D,EAAE05B,cAAc4P,iCAAiCroC,EAAG6C,MA8XzF,IA6JIylC,GAA0C,WAC5C,SAASA,KACP,OAAgB3mC,KAAM2mC,GAEtB3mC,KAAK4mC,gBAAkBpd,KA6BzB,OA1BA,OAAamd,EAA4B,CAAC,CACxCrmC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK4mC,gBAAkB5mC,KAAK4mC,gBAAgBjzB,IAAItV,KAEjD,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK4mC,gBAAkB5mC,KAAK4mC,gBAAgBvzB,OAAOhV,KAOpD,CACDiC,IAAK,KACLlC,MAAO,WACL,IAAIC,EAAI,CACNuoC,gBAAiB5mC,KAAK4mC,gBAAgBr8B,UACtCs8B,aAAc79B,KAAKK,OAErB,OAAOrH,KAAKC,UAAU5D,OAInBsoC,EAjCqC,GAsrB1CG,GAAiD,WACnD,SAASA,KACP,OAAgB9mC,KAAM8mC,GAEtB9mC,KAAK+mC,GAAK,IAAIJ,GAA8B3mC,KAAKgnC,GAAK,GAAIhnC,KAAKinC,mBAAqB,KAAMjnC,KAAKoV,sBAAwB,KAuEzH,OApEA,OAAa0xB,EAAmC,CAAC,CAC/CxmC,IAAK,qBACLlC,MAAO,SAA4BC,MAElC,CACDiC,IAAK,sBACLlC,MAAO,SAA6BC,EAAG6C,EAAG9D,MAEzC,CACDkD,IAAK,sBACLlC,MAAO,SAA6BC,GAClC,OAAO2B,KAAK+mC,GAAGG,GAAG7oC,GAAI2B,KAAKgnC,GAAG3oC,IAAM,gBAErC,CACDiC,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,EAAG9D,GACrC4C,KAAKgnC,GAAG3oC,GAAK6C,IAEd,CACDZ,IAAK,yBACLlC,MAAO,SAAgCC,GACrC2B,KAAK+mC,GAAGI,GAAG9oC,KAEZ,CACDiC,IAAK,qBACLlC,MAAO,SAA4BC,GACjC,OAAO2B,KAAK+mC,GAAGH,gBAAgB9tB,IAAIza,KAEpC,CACDiC,IAAK,kBACLlC,MAAO,SAAyBC,UACvB2B,KAAKgnC,GAAG3oC,KAEhB,CACDiC,IAAK,2BACLlC,MAAO,WACL,OAAO4B,KAAK+mC,GAAGH,kBAEhB,CACDtmC,IAAK,sBACLlC,MAAO,SAA6BC,GAClC,OAAO2B,KAAK+mC,GAAGH,gBAAgB9tB,IAAIza,KAEpC,CACDiC,IAAK,QACLlC,MAAO,WACL,OAAO4B,KAAK+mC,GAAK,IAAIJ,GAA8B1iC,QAAQC,YAE5D,CACD5D,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,EAAG9D,MAEtC,CACDkD,IAAK,iBACLlC,MAAO,SAAwBC,MAE9B,CACDiC,IAAK,WACLlC,MAAO,cACN,CACDkC,IAAK,sBACLlC,MAAO,SAA6BC,MACnC,CACDiC,IAAK,qBACLlC,MAAO,SAA4BC,QAI9ByoC,EA3E4C,GA+FjDM,GAAiD,WACnD,SAASA,KACP,OAAgBpnC,KAAMonC,GAaxB,OAVA,OAAaA,EAAmC,CAAC,CAC/C9mC,IAAK,KACLlC,MAAO,SAAYC,MAElB,CACDiC,IAAK,WACLlC,MAAO,gBAIFgpC,EAf4C,GA0CjDC,GAAoD,WACtD,SAASA,IACP,IAAIC,EAAWtnC,MAEf,OAAgBA,KAAMqnC,GAEtBrnC,KAAKunC,GAAK,WACR,OAAOD,EAASE,MACfxnC,KAAKynC,GAAK,WACX,OAAOH,EAASI,MACf1nC,KAAK2nC,GAAK,GAAI3nC,KAAK4nC,KAuExB,OApEA,OAAaP,EAAsC,CAAC,CAClD/mC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK2nC,GAAG19B,KAAK5L,KAEd,CACDiC,IAAK,WACLlC,MAAO,WACLuU,OAAOk1B,oBAAoB,SAAU7nC,KAAKunC,IAAK50B,OAAOk1B,oBAAoB,UAAW7nC,KAAKynC,MAE3F,CACDnnC,IAAK,KACLlC,MAAO,WACLuU,OAAOm1B,iBAAiB,SAAU9nC,KAAKunC,IAAK50B,OAAOm1B,iBAAiB,UAAW9nC,KAAKynC,MAErF,CACDnnC,IAAK,KACLlC,MAAO,WACL4C,EAAmB,sBAAuB,2CAE1C,IACI+mC,EADAC,EAActrC,EAA2BsD,KAAK2nC,IAGlD,IACE,IAAKK,EAAY9pC,MAAO6pC,EAAUC,EAAY5qC,KAAKe,MAAO,EAExDE,EADQ0pC,EAAQ3pC,OACd,IAIJ,MAAOK,GACPupC,EAAY3pC,EAAEI,GACd,QACAupC,EAAYzpC,OAGf,CACD+B,IAAK,KACLlC,MAAO,WACL4C,EAAmB,sBAAuB,6CAE1C,IACIinC,EADAC,EAAcxrC,EAA2BsD,KAAK2nC,IAGlD,IACE,IAAKO,EAAYhqC,MAAO+pC,EAAUC,EAAY9qC,KAAKe,MAAO,EAExDE,EADQ4pC,EAAQ7pC,OACd,IAIJ,MAAOK,GACPypC,EAAY7pC,EAAEI,GACd,QACAypC,EAAY3pC,QAOd,CAAC,CACH+B,IAAK,IACLlC,MAAO,WACL,MAAO,oBAAsBuU,aAAU,IAAWA,OAAOm1B,uBAAoB,IAAWn1B,OAAOk1B,wBAI5FR,EAjF+C,GA0GpDc,GAAK,KAyBT,SAASC,KACP,OAAO,OAASD,GAAKA,GACZ,UAAY9/B,KAAKggC,MAAM,WAAahgC,KAAKE,UAC5C4/B,KAAM,KAAOA,GAAG5qC,SAAS,IAoBjC,IAAI+qC,GAAK,CACPC,kBAAmB,WACnBC,OAAQ,SACRC,SAAU,WACVC,oBAAqB,uBA+BnBC,GAAsC,WACxC,SAASA,EAAuBtqC,IAC9B,OAAgB2B,KAAM2oC,GAEtB3oC,KAAK4oC,GAAKvqC,EAAEuqC,GAAI5oC,KAAK6oC,GAAKxqC,EAAEwqC,GA6C9B,OA1CA,OAAaF,EAAwB,CAAC,CACpCroC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK8oC,GAAKzqC,IAEX,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK+oC,GAAK1qC,IAEX,CACDiC,IAAK,YACLlC,MAAO,SAAmBC,GACxB2B,KAAKgpC,GAAK3qC,IAEX,CACDiC,IAAK,QACLlC,MAAO,WACL4B,KAAK6oC,OAEN,CACDvoC,IAAK,OACLlC,MAAO,SAAcC,GACnB2B,KAAK4oC,GAAGvqC,KAET,CACDiC,IAAK,KACLlC,MAAO,WACL4B,KAAK8oC,OAEN,CACDxoC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK+oC,GAAG1qC,KAET,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAKgpC,GAAG3qC,OAILsqC,EAjDiC,GAqEtCM,GAAK,uBAELC,GAA8C,SAAUC,IAC1D,OAAUD,EAAgCC,GAE1C,IAAIC,EAAWjqC,EAAa+pC,GAE5B,SAASA,EAA+B7qC,GACtC,IAAIgrC,EAKJ,OAHA,OAAgBrpC,KAAMkpC,IAEtBG,EAAWD,EAAS5rC,KAAKwC,KAAM3B,IAAa8d,iBAAmB9d,EAAE8d,iBAAkBktB,EAASjtB,sBAAwB/d,EAAE+d,sBAAuBitB,EAAS/sB,gBAAkBje,EAAEie,gBAAiB+sB,EAAShtB,mBAAqBhe,EAAEge,mBACpNgtB,EA0MT,OAvMA,OAAaH,EAAgC,CAAC,CAC5C5oC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,GAC1B,IAAItH,EAAIoqC,KAER,OAAO,IAAInkC,SAAQ,SAAU/F,EAAGvB,GAC9B,IAAIkS,EAAI,IAAI,KAEZA,EAAEy6B,oBAAmB,GAAKz6B,EAAE06B,WAAW,eAAoB,WACzD,IACE,OAAQ16B,EAAE26B,oBACR,KAAK,cACH,IAAIC,EAAO56B,EAAE66B,kBAEb1oC,EAAmBioC,GAAI,gBAAgB1nC,OAAOlD,EAAG,MAAMkD,OAAOvD,EAAG,cAAegE,KAAKC,UAAUwnC,IAAQvrC,EAAEurC,GACzG,MAEF,KAAK,aACHzoC,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,MAAMkD,OAAOvD,EAAG,eAAgBrB,EAAE,IAAI6G,EAAejB,EAAEK,kBAAmB,qBACnH,MAEF,KAAK,gBACH,IAAI+mC,EAAO96B,EAAE+6B,YAEb,GAAI5oC,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,MAAMkD,OAAOvD,EAAG,wBAAyB2rC,EAAM,iBAAkB96B,EAAEg7B,mBAAoBF,EAAO,EAAG,CAC5I,IAAIG,EAAOj7B,EAAE66B,kBAEb1sC,MAAMC,QAAQ6sC,KAAUA,EAAOA,EAAK,IAEpC,IAAIC,EAAO,MAAQD,OAAO,EAASA,EAAKnoC,MAExC,GAAIooC,GAAQA,EAAKC,QAAUD,EAAKlmC,QAAS,CACvC,IAAIomC,EAAO,SAAsD5rC,GAC/D,IAAI6C,EAAI7C,EAAE6rC,cAAc5+B,QAAQ,KAAM,KACtC,OAAOjO,OAAOogB,OAAOlb,GAAGwI,QAAQ7J,IAAM,EAAIA,EAAIqB,EAAEG,QAFvC,CAGTqnC,EAAKC,QAEPrtC,EAAE,IAAI6G,EAAeymC,EAAMF,EAAKlmC,eAC3BlH,EAAE,IAAI6G,EAAejB,EAAEG,QAAS,gCAAkCmM,EAAE+6B,mBAG3EjtC,EAAE,IAAI6G,EAAejB,EAAEe,YAAa,uBAEtC,MAEF,QACEpB,KAEJ,QACAlB,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,MAAMkD,OAAOvD,EAAG,oBAG7D,IAAI8Q,EAAI9M,KAAKC,UAAUqD,GACvBtE,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,MAAMkD,OAAOvD,EAAG,qBAAsBsH,GAAIuJ,EAAEs7B,KAAKjpC,EAAG,OAAQ4N,EAAG1R,EAAG,SAG9G,CACDkD,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,GACvB,IAAIkI,EAAI8iC,KACJpqC,EAAI,CAACgC,KAAKoqC,GAAI,IAAK,gCAAiC,IAAK/rC,EAAG,YAC5DH,GAAI,UACJvB,GAAI,UACJkS,EAAI,CAGNw7B,mBAAoB,aACpBC,mBAAoB,GACpBC,iBAAkB,CAGhB9tB,SAAU,YAAYlb,OAAOvB,KAAK8b,WAAWU,UAAW,eAAejb,OAAOvB,KAAK8b,WAAWW,WAEhG+tB,aAAa,EACbC,wBAAwB,EACxBC,sBAAuB,CAOrBC,+BAAgC,KAElCxuB,iBAAkBnc,KAAKmc,iBACvByuB,qBAAsB5qC,KAAKoc,uBAEzBtN,EAAI9O,KAAKqc,mBAAmBwuB,oBAEhC,IAAW/7B,IAAMD,EAAEi8B,mBAAqBziC,KAAKggC,MAAM,IAAMv5B,IAAK9O,KAAKsc,kBAAoBzN,EAAEyN,iBAAkB,GAAKtc,KAAK+qC,GAAGl8B,EAAEy7B,mBAAoBppC,EAAG9D,GASjJyR,EAAEm8B,0BAA2B,EAC7B,IAAIzlC,EAAIvH,EAAEwM,KAAK,IAEfxJ,EAAmBioC,GAAI,iBAAiB1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,MAAM/D,OAAOgE,GAAIsJ,GAE1F,IAAIo8B,EAAI/sC,EAAEgtC,iBAAiB3lC,EAAGsJ,GAM1BlI,GAAI,EACJC,GAAI,EAIJC,EAAI,IAAI8hC,GAAuB,CACjCC,GAAI,SAAY1nC,GACd0F,EAAI5F,EAAmBioC,GAAI,4BAA4B1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,eAAgBpE,IAAMyF,IAAM3F,EAAmBioC,GAAI,gBAAgB1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,gBAAiB2lC,EAAEt6B,OAAQhK,GAAI,GAAK3F,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,aAAcpE,GAAI+pC,EAAEd,KAAKjpC,KAE3T2nC,GAAI,WACF,OAAOoC,EAAE54B,WAGT84B,EAAiC,SAAwC9sC,EAAG6C,EAAG9D,GAGjFiB,EAAE+sC,OAAOlqC,GAAG,SAAU7C,GACpB,IACEjB,EAAEiB,GACF,MAAOA,GACP2H,YAAW,WACT,MAAM3H,IACL,QAST,OAAO8sC,EAA+BF,EAAG,qBAA2B,WAClErkC,GAAK5F,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,0BACnE6lC,EAA+BF,EAAG,sBAA4B,WAChErkC,IAAMA,GAAI,EAAI5F,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,sBAAuBuB,EAAEwkC,SACrGF,EAA+BF,EAAG,sBAA4B,SAAU/pC,GAC1E0F,IAAMA,GAAI,EAAIhF,EAAkBqnC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,uBAAwBpE,GAAI2F,EAAEwkC,GAAG,IAAI7nC,EAAejB,EAAEe,YAAa,6CAC9I6nC,EAA+BF,EAAG,wBAA8B,SAAU/pC,GAC5E,IAAI9D,EAEJ,IAAKwJ,EAAG,CACN,IAAI0kC,EAAOpqC,EAAEsX,KAAK,GAElBnW,IAAuBipC,GAOvB,IAAIC,EAAMD,EACNE,EAAMD,EAAI5pC,QAAU,QAAUvE,EAAImuC,EAAI,UAAO,IAAWnuC,OAAI,EAASA,EAAEuE,OAE3E,GAAI6pC,EAAK,CACPxqC,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,oBAAqBkmC,GAGrF,IAAIC,EAAOD,EAAIxB,OAEX0B,EAOJ,SAAwCrtC,GAGtC,IAAI6C,EAAI2tB,GAAGxwB,GACX,QAAI,IAAW6C,EAAG,OAAO2vB,GAA6B3vB,GAJxD,CAKEuqC,GACEE,EAAOH,EAAI3nC,aAEf,IAAW6nC,IAASA,EAAOnpC,EAAEc,SAAUsoC,EAAO,yBAA2BF,EAAO,iBAAmBD,EAAI3nC,SACvG+C,GAAI,EAAIC,EAAEwkC,GAAG,IAAI7nC,EAAekoC,EAAMC,IAAQV,EAAE54B,aAC3CrR,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,cAAegmC,GAAOzkC,EAAE+kC,GAAGN,OAElGH,EAA+BxuC,EAAG,iBAAkB,SAAUuE,GAChEA,EAAE2qC,OAAS,WAAa7qC,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,8BAAgCpE,EAAE2qC,OAAS,cAAgB7qC,EAAmBioC,GAAI,QAAQ1nC,OAAOlD,EAAG,aAAakD,OAAO+D,EAAG,oCACjNU,YAAW,WAKba,EAAEilC,OACD,GAAIjlC,MAIJqiC,EArNyC,CA6NlD,WACE,SAAS6C,EAAyB1tC,IAChC,OAAgB2B,KAAM+rC,GAEtB/rC,KAAKgsC,aAAe3tC,EAAG2B,KAAK8b,WAAazd,EAAEyd,WAC3C,IAAI5a,EAAI7C,EAAE6d,IAAM,QAAU,OACtB9e,EAAIsN,mBAAmB1K,KAAK8b,WAAWU,WACvClX,EAAIoF,mBAAmB1K,KAAK8b,WAAWW,UAC3Czc,KAAKoqC,GAAKlpC,EAAI,MAAQ7C,EAAE4d,KAAMjc,KAAKisC,GAAK,YAAY1qC,OAAOnE,EAAG,eAAemE,OAAO+D,GAAItF,KAAKksC,GAAK,cAAgBlsC,KAAK8b,WAAWW,SAAW,cAAclb,OAAOnE,GAAK,cAAcmE,OAAOnE,EAAG,iBAAiBmE,OAAO+D,GAsFzN,OAnFA,OAAaymC,EAA0B,CAAC,CACtCzrC,IAAK,KACLyG,IAAK,WAGH,OAAO,IAER,CACDzG,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAC7B,IAAIE,EAAIkqC,KACJzrC,EAAIqD,KAAKmsC,GAAG9tC,EAAG6C,EAAEkrC,sBAErBprC,EAAmB,iBAAkB,gBAAgBO,OAAOlD,EAAG,MAAMkD,OAAOrD,EAAG,KAAMvB,EAAGS,GAExF,IAAIyR,EAAI,CACN,+BAAgC7O,KAAKisC,GACrC,wBAAyBjsC,KAAKksC,IAEhC,OAAOlsC,KAAK+qC,GAAGl8B,EAAGvJ,EAAGtH,GAAIgC,KAAKqsC,GAAGhuC,EAAG1B,EAAGkS,EAAGzR,GAAGkJ,MAAK,SAAUpF,GAC1D,OAAOF,EAAmB,iBAAkB,iBAAiBO,OAAOlD,EAAG,MAAMkD,OAAOrD,EAAG,MAAOgD,GAAIA,KACjG,SAAUA,GACX,MAAMU,EAAkB,iBAAkB,QAAQL,OAAOlD,EAAG,MAAMkD,OAAOrD,EAAG,wBAAyBgD,EAAG,QAASvE,EAAG,WAAYS,GAAI8D,OAGvI,CACDZ,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,GAGhC,OAAO8B,KAAKssC,GAAGjuC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,KAO5B,CACDsC,IAAK,KACLlC,MAKA,SAAYC,EAAG6C,EAAG9D,GAChBiB,EAAE,qBAGO,eAAiBuC,EAK1BvC,EAAE,gBAAkB,aAAc2B,KAAKgsC,aAAajwB,QAAU1d,EAAE,oBAAsB2B,KAAKgsC,aAAajwB,OAAQ7a,GAAKA,EAAEqD,QAAQyF,SAAQ,SAAU9I,EAAG9D,GAClJ,OAAOiB,EAAEjB,GAAK8D,KACZ9D,GAAKA,EAAEmH,QAAQyF,SAAQ,SAAU9I,EAAG9D,GACtC,OAAOiB,EAAEjB,GAAK8D,OAGjB,CACDZ,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI9D,EAAIkrC,GAAGjqC,GACX,MAAO,GAAGkD,OAAOvB,KAAKoqC,GAAI,QAAQ7oC,OAAOL,EAAG,KAAKK,OAAOnE,KAQzD,CACDkD,IAAK,YACLlC,MAMA,gBAIK2tC,EA9FT,IA+IA,SAASlT,KAGP,MAAO,oBAAsBiE,SAAWA,SAAW,KAoBrD,SAASyP,GAAwBluC,GAC/B,OAAO,IAAIyyB,GAAoBzyB,GAE/B,GA8BF,IAAImuC,GAA4C,WAC9C,SAASA,EAITnuC,EAIA6C,GACE,IAAI9D,EAAI6C,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,IACxEqF,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,IACxEjC,EAAIiC,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,KAE5E,OAAgBD,KAAMwsC,GAEtBxsC,KAAKysC,GAAKpuC,EAAG2B,KAAK0sC,QAAUxrC,EAAGlB,KAAK2sC,GAAKvvC,EAAG4C,KAAK4sC,GAAKtnC,EAAGtF,KAAK6sC,GAAK7uC,EAAGgC,KAAK8sC,GAAK,EAAG9sC,KAAK+sC,GAAK,KAE7F/sC,KAAKgtC,GAAKhkC,KAAKK,MAAOrJ,KAAKitC,QAsE7B,OA3DA,OAAaT,EAA8B,CAAC,CAC1ClsC,IAAK,QACLlC,MAAO,WACL4B,KAAK8sC,GAAK,IAOX,CACDxsC,IAAK,KACLlC,MAAO,WACL4B,KAAK8sC,GAAK9sC,KAAK6sC,KAQhB,CACDvsC,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI6uC,EAAWltC,KAGfA,KAAKmtC,SAGL,IAAIjsC,EAAImH,KAAKC,MAAMtI,KAAK8sC,GAAK9sC,KAAKotC,MAC9BhwC,EAAIiL,KAAK4E,IAAI,EAAGjE,KAAKK,MAAQrJ,KAAKgtC,IAClC1nC,EAAI+C,KAAK4E,IAAI,EAAG/L,EAAI9D,GAExBkI,EAAI,GAAKtE,EAAmB,qBAAsB,mBAAmBO,OAAO+D,EAAG,qBAAqB/D,OAAOvB,KAAK8sC,GAAI,4BAA4BvrC,OAAOL,EAAG,uBAAuBK,OAAOnE,EAAG,aAAc4C,KAAK+sC,GAAK/sC,KAAKysC,GAAGY,kBAAkBrtC,KAAK0sC,QAASpnC,GAAG,WAC5P,OAAO4nC,EAASF,GAAKhkC,KAAKK,MAAOhL,OAGnC2B,KAAK8sC,IAAM9sC,KAAK4sC,GAAI5sC,KAAK8sC,GAAK9sC,KAAK2sC,KAAO3sC,KAAK8sC,GAAK9sC,KAAK2sC,IAAK3sC,KAAK8sC,GAAK9sC,KAAK6sC,KAAO7sC,KAAK8sC,GAAK9sC,KAAK6sC,MAEpG,CACDvsC,IAAK,KACLlC,MAAO,WACL,OAAS4B,KAAK+sC,KAAO/sC,KAAK+sC,GAAGO,YAAattC,KAAK+sC,GAAK,QAErD,CACDzsC,IAAK,SACLlC,MAAO,WACL,OAAS4B,KAAK+sC,KAAO/sC,KAAK+sC,GAAGI,SAAUntC,KAAK+sC,GAAK,QAIlD,CACDzsC,IAAK,KACLlC,MAAO,WACL,OAAQiK,KAAKE,SAAW,IAAMvI,KAAK8sC,OAIhCN,EAxFuC,GA6I5Ce,GAA0C,WAC5C,SAASA,EAA2BlvC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,EAAGvB,EAAGkS,IACvD,OAAgB7O,KAAMutC,GAEtBvtC,KAAKysC,GAAKpuC,EAAG2B,KAAKwtC,GAAKpwC,EAAG4C,KAAKytC,GAAKnoC,EAAGtF,KAAK0tC,WAAa1vC,EAAGgC,KAAK2tC,wBAA0BzvC,EAAG8B,KAAK4tC,4BAA8BjxC,EAAGqD,KAAK6tC,SAAWh/B,EAAG7O,KAAK8tC,MAAQ,EAQpK9tC,KAAK+tC,GAAK,EAAG/tC,KAAKguC,GAAK,KAAMhuC,KAAKiuC,GAAK,KAAMjuC,KAAKkuC,OAAS,KAAMluC,KAAKmuC,GAAK,IAAI3B,GAA6BnuC,EAAG6C,GAsMxG,IACDktC,EA3DAC,EAjFAC,EAmTR,OAnWA,OAAaf,EAA4B,CAAC,CACxCjtC,IAAK,KACLlC,MAAO,WACL,OAAO,IAEH4B,KAAK8tC,OAAS,IAEd9tC,KAAK8tC,OAAS9tC,KAAKuuC,OAOxB,CACDjuC,IAAK,KACLlC,MAAO,WACL,OAAO,IAEH4B,KAAK8tC,OAAS,IAEd9tC,KAAK8tC,QAUV,CACDxtC,IAAK,QACLlC,MAAO,WACL,IAEI4B,KAAK8tC,MAAQ9tC,KAAKmF,OAASnF,KAAKwuC,OASrC,CACDluC,IAAK,OACLlC,OACMkwC,GAAQ,OAAgC,UAAyB,SAASG,IAC5E,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAW/oC,KAAO+oC,EAAW7vC,MACnC,KAAK,EAGH,GAFA6vC,EAAWl+B,GAAKxQ,KAAK2uC,MAEhBD,EAAWl+B,GAAI,CAClBk+B,EAAW7vC,KAAO,EAClB,MAIF,OADA6vC,EAAW7vC,KAAO,EACXmB,KAAKqS,MAAM,GAIpB,KAAK,EACL,IAAK,MACH,OAAOq8B,EAAW9oC,UAGvB6oC,EAAWzuC,UAGhB,WACE,OAAOsuC,EAAMpuC,MAAMF,KAAMC,cAc5B,CACDK,IAAK,KACLlC,MAAO,WACL4B,KAAK8tC,MAAQ,EAEX9tC,KAAKmuC,GAAGlB,UAaX,CACD3sC,IAAK,KACLlC,MAAO,WACL,IAAIwwC,EAAW5uC,KAIfA,KAAKuuC,MAAQ,OAASvuC,KAAKguC,KAAOhuC,KAAKguC,GAAKhuC,KAAKysC,GAAGY,kBAAkBrtC,KAAKwtC,GAAI,KAAK,WAClF,OAAOoB,EAASC,WAKnB,CACDvuC,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAK8uC,KAAM9uC,KAAKkuC,OAAO/D,KAAK9rC,KAI7B,CACDiC,IAAK,KACLlC,OACMiwC,GAAM,OAAgC,UAAyB,SAASU,IAC1E,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAWrpC,KAAOqpC,EAAWnwC,MACnC,KAAK,EACH,IAAKmB,KAAKuuC,KAAM,CACdS,EAAWnwC,KAAO,EAClB,MAGF,OAAOmwC,EAAW59B,OAAO,SAAUpR,KAAKqS,MAAM,IAIhD,KAAK,EACL,IAAK,MACH,OAAO28B,EAAWppC,UAGvBmpC,EAAW/uC,UAGhB,WACE,OAAOquC,EAAInuC,MAAMF,KAAMC,cAO1B,CACDK,IAAK,KACLlC,MAAO,WACL4B,KAAKguC,KAAOhuC,KAAKguC,GAAGb,SAAUntC,KAAKguC,GAAK,QAIzC,CACD1tC,IAAK,KACLlC,MAAO,WACL4B,KAAKiuC,KAAOjuC,KAAKiuC,GAAGd,SAAUntC,KAAKiuC,GAAK,QAgBzC,CACD3tC,IAAK,QACLlC,OACMgwC,GAAS,OAAgC,UAAyB,SAASa,EAAU5wC,EAAG6C,GAC1F,OAAO,UAAyB,SAAoBguC,GAClD,OACE,OAAQA,EAAWvpC,KAAOupC,EAAWrwC,MACnC,KAAK,EA0BH,OAzBAmB,KAAK8uC,KACL9uC,KAAKmvC,KACLnvC,KAAKmuC,GAAGhB,SAGRntC,KAAK+tC,KACL,IAEI1vC,EACJ2B,KAAKmuC,GAAGlB,QAAU/rC,GAAKA,EAAE0C,OAASrB,EAAES,oBACpCxB,EAAmBN,EAAE3D,YAAaiE,EAAmB,mEAAoExB,KAAKmuC,GAAGiB,MAAQluC,GAAKA,EAAE0C,OAASrB,EAAE/B,iBAAmB,IAE1KR,KAAK8tC,QAMT9tC,KAAK2tC,wBAAwB0B,kBAAmBrvC,KAAK4tC,4BAA4ByB,mBAEjF,OAASrvC,KAAKkuC,SAAWluC,KAAKsvC,KAAMtvC,KAAKkuC,OAAO77B,QAASrS,KAAKkuC,OAAS,MAGvEluC,KAAK8tC,MAAQzvC,EACb6wC,EAAWrwC,KAAO,EACXmB,KAAK6tC,SAAS0B,GAAGruC,GAE1B,KAAK,EACL,IAAK,MACH,OAAOguC,EAAWtpC,UAGvBqpC,EAAWjvC,UAGhB,SAAewvC,EAAMC,GACnB,OAAOrB,EAAOluC,MAAMF,KAAMC,cAU7B,CACDK,IAAK,KACLlC,MAAO,cACN,CACDkC,IAAK,OACLlC,MAAO,WACL,IAAIsxC,EAAW1vC,KAEfA,KAAK8tC,MAAQ,EAGb,IAAIzvC,EAAI2B,KAAK2vC,GAAG3vC,KAAK+tC,IACjB7sC,EAAIlB,KAAK+tC,GAEb9pC,QAAQ2rC,IAAI,CAAC5vC,KAAK2tC,wBAAwBtnC,WAAYrG,KAAK4tC,4BAA4BvnC,aAAaC,MAAK,SAAUupC,GACjH,IAAIC,GAAS,OAAeD,EAAQ,GAChCxxC,EAAIyxC,EAAO,GACX1yC,EAAI0yC,EAAO,GAMfJ,EAAS3B,KAAO7sC,GAGhBwuC,EAASK,GAAG1xC,EAAGjB,MACd,SAAU8D,GACX7C,GAAE,WACA,IAAIA,EAAI,IAAImF,EAAejB,EAAEG,QAAS,+BAAiCxB,EAAE2C,SACzE,OAAO6rC,EAASM,GAAG3xC,WAIxB,CACDiC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,IAAI+uC,EAAWjwC,KAEX5C,EAAI4C,KAAK2vC,GAAG3vC,KAAK+tC,IACrB/tC,KAAKkuC,OAASluC,KAAKkwC,GAAG7xC,EAAG6C,GAAIlB,KAAKkuC,OAAOiC,IAAG,WAC1C/yC,GAAE,WACA,OAAO6yC,EAASnC,MAAQ,EAEtBmC,EAAShC,GAAKgC,EAASxD,GAAGY,kBAAkB4C,EAASxC,GAAI,KAAK,WAC9D,OAAOwC,EAAS1B,OAAS0B,EAASnC,MAAQ,GAEvC7pC,QAAQC,aACT+rC,EAASpC,SAASsC,WAEtBnwC,KAAKkuC,OAAOqB,IAAG,SAAUlxC,GAC3BjB,GAAE,WACA,OAAO6yC,EAASD,GAAG3xC,SAEnB2B,KAAKkuC,OAAOkC,WAAU,SAAU/xC,GAClCjB,GAAE,WACA,OAAO6yC,EAASG,UAAU/xC,WAI/B,CACDiC,IAAK,KACLlC,MAAO,WACL,IAAIiyC,EAAWrwC,KAEfA,KAAK8tC,MAAQ,EAEX9tC,KAAKmuC,GAAGmC,IAAiB,OAAgC,UAAyB,SAASC,IAC3F,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAW7qC,KAAO6qC,EAAW3xC,MACnC,KAAK,EACHwxC,EAASvC,MAAQ,EAEfuC,EAASI,QAEb,KAAK,EACL,IAAK,MACH,OAAOD,EAAW5qC,UAGvB2qC,UAIN,CACDjwC,IAAK,KACLlC,MAAO,SAAYC,GAKjB,OAAO2C,EAAmB,mBAAoB,qBAAqBO,OAAOlD,IAAK2B,KAAKkuC,OAAS,KAAMluC,KAAKqS,MAAM,EAE5GhU,KASH,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAIqyC,EAAW1wC,KAEf,OAAO,SAAUkB,GACfwvC,EAASjE,GAAGkE,kBAAiB,WAC3B,OAAOD,EAAS3C,KAAO1vC,EAAI6C,KAAOF,EAAmB,mBAAoB,yDAA0DiD,QAAQC,mBAM5IqpC,EA1XqC,GA6f1CqD,GAA+C,SAAUC,IAC3D,OAAUD,EAAiCC,GAE3C,IAAIC,EAAW3xC,EAAayxC,GAE5B,SAASA,EAAgCvyC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,GACtD,IAAI6yC,EAWJ,OATA,OAAgB/wC,KAAM4wC,IAEtBG,EAAWD,EAAStzC,KAAKwC,KAAM3B,EAAG,kCAEhC,oBAEA,uBAEA6C,EAAG9D,EAAGkI,EAAGpH,IAAaqsB,WAAavsB,EAAG+yC,EAASC,IAAK,EAC/CD,EA+ET,OAvEA,OAAaH,EAAiC,CAAC,CAC7CtwC,IAAK,KACLyG,IAAK,WACH,OAAO/G,KAAKgxC,KAGb,CACD1wC,IAAK,QACLlC,MAAO,WACL4B,KAAKgxC,IAAK,EAAIhxC,KAAKixC,qBAAkB,GAAQ,QAAK,OAAgBL,EAAgCtzC,WAAY,QAAS0C,MAAMxC,KAAKwC,QAEnI,CACDM,IAAK,KACLlC,MAAO,WACL4B,KAAKgxC,IAAMhxC,KAAKkxC,GAAG,MAEpB,CACD5wC,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,GACpB,OAAOlB,KAAK0tC,WAAWyD,GAAG,QAAS9yC,EAAG6C,KAEvC,CACDZ,IAAK,YACLlC,MAAO,SAAmBC,GACxB,GACAgE,IAAuBhE,EAAE+yC,aAAcpxC,KAAKixC,gBAAkB5yC,EAAE+yC,YAAapxC,KAAKgxC,GAAI,CAIpFhxC,KAAKmuC,GAAGlB,QAER,IAAI/rC,EA/tXZ,SAAoC7C,EAAG6C,GACrC,OAAO7C,GAAKA,EAAEN,OAAS,GAAKsE,OAAqB,IAAWnB,GAAI7C,EAAE+C,KAAI,SAAU/C,GAC9E,OAAO,SAAmCA,EAAG6C,GAE3C,IAAI9D,EAAIiB,EAAE2tB,WAAamF,GAAsB9yB,EAAE2tB,YAAcmF,GAAsBjwB,GACnF,OAAO9D,EAAEsM,QAAQH,EAAgBW,SAKjC9M,EAAI+zB,GAAsBjwB,IAAK,IAAI2qB,GAAezuB,EAAGiB,EAAEytB,kBAAoB,IARtE,CASLztB,EAAG6C,OACD,GAmtXQmwC,CAA2BhzC,EAAEizC,aAAcjzC,EAAEkzC,YACjDn0C,EAAI+zB,GAAsB9yB,EAAEkzC,YAEhC,OAAOvxC,KAAK6tC,SAAS2D,GAAGp0C,EAAG8D,GAI7B,OAAOmB,GAAsBhE,EAAEizC,cAAgB,IAAMjzC,EAAEizC,aAAavzC,QAASiC,KAAKgxC,IAAK,EAAIhxC,KAAK6tC,SAAS4D,OAQ1G,CACDnxC,IAAK,KACLlC,MAAO,WAGL,IAAIC,EAAI,GACRA,EAAEoe,SAAWkV,GAA+B3xB,KAAKuqB,YAAavqB,KAAK0xC,GAAGrzC,KAIvE,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAIszC,EAAW3xC,KAEXkB,EAAI,CACNkwC,YAAapxC,KAAKixC,gBAClBW,OAAQvzC,EAAE+C,KAAI,SAAU/C,GACtB,OAAOwzB,GAAW8f,EAASpnB,WAAYlsB,OAG3C2B,KAAK0xC,GAAGxwC,OAIL0vC,EAhG0C,CAiGjDrD,IA8BEsE,GAAuC,SAAUC,IACnD,OAAUD,EAAyBC,GAEnC,IAAIC,EAAW5yC,EAAa0yC,GAE5B,SAASA,EAAwBxzC,EAAG6C,EAAG9D,EAAGkI,GACxC,IAAI0sC,EAKJ,OAHA,OAAgBhyC,KAAM6xC,IAEtBG,EAAWD,EAASv0C,KAAKwC,OAAgBiyC,gBAAkB5zC,EAAG2zC,EAASE,oBAAsBhxC,EAAG8wC,EAAStE,WAAatwC,EAAG40C,EAASznB,WAAajlB,EAAG0sC,EAASG,IAAK,EACzJH,EAiDT,OA9CA,OAAaH,EAAyB,CAAC,CACrCvxC,IAAK,KACLlC,MAAO,WACL,GAAI4B,KAAKmyC,GAAI,MAAM,IAAI3uC,EAAejB,EAAEU,oBAAqB,6CAI9D,CACD3C,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,GAC1B,IAAI8sC,EAAWpyC,KAEf,OAAOA,KAAKqyC,KAAMpuC,QAAQ2rC,IAAI,CAAC5vC,KAAKiyC,gBAAgB5rC,WAAYrG,KAAKkyC,oBAAoB7rC,aAAaC,MAAK,SAAUgsC,GACnH,IAAIC,GAAS,OAAeD,EAAQ,GAChCt0C,EAAIu0C,EAAO,GACXr0C,EAAIq0C,EAAO,GAEf,OAAOH,EAAS1E,WAAWpB,GAAGjuC,EAAGgzB,GAAyBnwB,EAAG9D,GAAIkI,EAAGtH,EAAGE,MACtE+T,OAAM,SAAU5T,GACjB,KAAM,kBAAoBA,EAAEV,MAAQU,EAAEuF,OAASrB,EAAE/B,kBAAoB4xC,EAASH,gBAAgB5C,kBAAmB+C,EAASF,oBAAoB7C,mBAAoBhxC,GAAK,IAAImF,EAAejB,EAAEG,QAASrE,EAAEd,iBAK1M,CACD+C,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAC7B,IAAIw0C,EAAWxyC,KAEf,OAAOA,KAAKqyC,KAAMpuC,QAAQ2rC,IAAI,CAAC5vC,KAAKiyC,gBAAgB5rC,WAAYrG,KAAKkyC,oBAAoB7rC,aAAaC,MAAK,SAAUmsC,GACnH,IAAIC,GAAS,OAAeD,EAAQ,GAChCv0C,EAAIw0C,EAAO,GACX/1C,EAAI+1C,EAAO,GAEf,OAAOF,EAAS9E,WAAWiF,GAAGt0C,EAAGgzB,GAAyBnwB,EAAG9D,GAAIkI,EAAGpH,EAAGvB,EAAGqB,MACzEiU,OAAM,SAAU5T,GACjB,KAAM,kBAAoBA,EAAEV,MAAQU,EAAEuF,OAASrB,EAAE/B,kBAAoBgyC,EAASP,gBAAgB5C,kBAAmBmD,EAASN,oBAAoB7C,mBAAoBhxC,GAAK,IAAImF,EAAejB,EAAEG,QAASrE,EAAEd,iBAG1M,CACD+C,IAAK,YACLlC,MAAO,WACL4B,KAAKmyC,IAAK,EAAInyC,KAAK0tC,WAAWkF,gBAI3Bf,EA5DkC,EA6D3B,QAAa,SAASgB,KACpC,OAAgB7yC,KAAM6yC,OAyGxB,IAAIC,GAA4C,WAC9C,SAASA,EAA6Bz0C,EAAG6C,IACvC,OAAgBlB,KAAM8yC,GAEtB9yC,KAAK+yC,WAAa10C,EAAG2B,KAAKinC,mBAAqB/lC,EAE/ClB,KAAK8tC,MAAQ,UAQb9tC,KAAKgzC,GAAK,EAMVhzC,KAAKizC,GAAK,KAMVjzC,KAAKkzC,IAAK,EA+EZ,OApEA,OAAaJ,EAA8B,CAAC,CAC1CxyC,IAAK,KACLlC,MAAO,WACL,IAAI+0C,EAAWnzC,KAEf,IAAMA,KAAKgzC,KAAOhzC,KAAKozC,GAAG,WAEvBpzC,KAAKizC,GAAKjzC,KAAK+yC,WAAW1F,kBAAkB,uBAE7C,KAAK,WACL,OAAO8F,EAASF,GAAK,KAAME,EAASE,GAAG,6CAA8CF,EAASC,GAAG,WAE9FnvC,QAAQC,gBAUd,CACD5D,IAAK,KACLlC,MAAO,SAAYC,GACjB,WAEI2B,KAAK8tC,MAAQ9tC,KAAKozC,GAAG,YAEpBpzC,KAAKgzC,KAAMhzC,KAAKgzC,IAAM,IAAMhzC,KAAKszC,KAAMtzC,KAAKqzC,GAAG,iDAAiD9xC,OAAOlD,EAAEd,aAAcyC,KAAKozC,GAAG,eAYrI,CACD9yC,IAAK,MACLlC,MAAO,SAAaC,GAClB2B,KAAKszC,KAAMtzC,KAAKgzC,GAAK,EAAG,WAEpB30C,IAEJ2B,KAAKkzC,IAAK,GAAKlzC,KAAKozC,GAAG/0C,KAExB,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjBA,IAAM2B,KAAK8tC,QAAU9tC,KAAK8tC,MAAQzvC,EAAG2B,KAAKinC,mBAAmB5oC,MAE9D,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI6C,EAAI,4CAA4CK,OAAOlD,EAAG,2MAC9D2B,KAAKkzC,IAAM1xC,EAAmBN,GAAIlB,KAAKkzC,IAAK,GAAMlyC,EAAmB,qBAAsBE,KAE5F,CACDZ,IAAK,KACLlC,MAAO,WACL,OAAS4B,KAAKizC,KAAOjzC,KAAKizC,GAAG9F,SAAUntC,KAAKizC,GAAK,UAI9CH,EAzGuC,GA6H5CS,IAAyC,QAAa,SAASA,EAInEl1C,EAEA6C,EAAG9D,EAAGkI,EAAGtH,GACP,IAAIw1C,EAAWxzC,MAEf,OAAgBA,KAAMuzC,GAEtBvzC,KAAKyzC,WAAap1C,EAAG2B,KAAK0zC,UAAYxyC,EAAGlB,KAAK+yC,WAAa31C,EAAG4C,KAAK2zC,aAAe,GAkBlF3zC,KAAK4zC,GAAK,GAUV5zC,KAAK6zC,GAAK,IAAIrvC,IAKdxE,KAAK8zC,GAAK,IAAI/tB,IAQd/lB,KAAK+zC,GAAK,GAAI/zC,KAAKg0C,GAAKh2C,EAAGgC,KAAKg0C,GAAGC,IAAG,SAAU51C,GAC9CjB,EAAEuzC,kBAA+B,OAAgC,UAAyB,SAASuD,IACjG,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAWxuC,KAAOwuC,EAAWt1C,MACnC,KAAK,EAGH,GAFAs1C,EAAW3jC,GAAK4jC,GAAwBZ,IAEnCW,EAAW3jC,GAAI,CAClB2jC,EAAWt1C,KAAO,EAClB,MAMF,OAHAmC,EAAmB,cAAe,uDAElCmzC,EAAWt1C,KAAO,EACX,WACL,IAAIw1C,GAA0B,OAAgC,UAAyB,SAASC,EAAUj2C,GACxG,IAAI6C,EACJ,OAAO,UAAyB,SAAoBqzC,GAClD,OACE,OAAQA,EAAW5uC,KAAO4uC,EAAW11C,MACnC,KAAK,EAMH,OALAqC,EAAIoB,EAAoBjE,IACtBy1C,GAAGngC,IAAI,GAGT4gC,EAAW11C,KAAO,EACX21C,GAAiCtzC,GAE1C,KAAK,EAQH,OAPAA,EAAEuzC,GAAGhwC,IAAI,WAGTvD,EAAE4yC,GAAGzgC,OAAO,GAGZkhC,EAAW11C,KAAO,EACX61C,GAAgCxzC,GAEzC,KAAK,EACL,IAAK,MACH,OAAOqzC,EAAW3uC,UAGvB0uC,OAOL,OAJA,SAAkCK,GAChC,OAAON,EAAwBn0C,MAAMF,KAAMC,YAjCxC,GAqCHuzC,GAEN,KAAK,EACL,IAAK,MACH,OAAOW,EAAWvuC,UAGvBsuC,WAEHl0C,KAAKy0C,GAAK,IAAI3B,GAA6B11C,EAAGkI,MAGpD,SAASovC,GAAgCE,GACvC,OAAOC,GAA+B30C,MAAMF,KAAMC,WAQpD,SAAS40C,KA0DP,OAzDAA,IAAiC,OAAgC,UAAyB,SAASC,EAAUz2C,GAC3G,IAAI02C,EAAaC,EAAS9zC,EAE1B,OAAO,UAAyB,SAAoB+zC,GAClD,OACE,OAAQA,EAAWtvC,KAAOsvC,EAAWp2C,MACnC,KAAK,EACH,IAAKu1C,GAAwB/1C,GAAI,CAC/B42C,EAAWp2C,KAAO,GAClB,MAGFk2C,EAAcr4C,EAA2B2B,EAAE01C,IAC3CkB,EAAWtvC,KAAO,EAElBovC,EAAY72C,IAEd,KAAK,EACH,IAAK82C,EAAUD,EAAY33C,KAAKe,KAAM,CACpC82C,EAAWp2C,KAAO,GAClB,MAKF,OAFAqC,EAAI8zC,EAAQ52C,MACZ62C,EAAWp2C,KAAO,EACXqC,GAEP,GAEF,KAAK,EACH+zC,EAAWp2C,KAAO,EAClB,MAEF,KAAK,GACHo2C,EAAWp2C,KAAO,GAClB,MAEF,KAAK,GACHo2C,EAAWtvC,KAAO,GAClBsvC,EAAWzkC,GAAKykC,EAAkB,MAAE,GAEpCF,EAAY12C,EAAE42C,EAAWzkC,IAE3B,KAAK,GAKH,OAJAykC,EAAWtvC,KAAO,GAElBovC,EAAYx2C,IAEL02C,EAAWC,OAAO,IAE3B,KAAK,GACL,IAAK,MACH,OAAOD,EAAWrvC,UAGvBkvC,EAAW,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,WAEG50C,MAAMF,KAAMC,WAGpD,SAASu0C,GAAiCW,GACxC,OAAOC,GAAgCl1C,MAAMF,KAAMC,WAQrD,SAASm1C,KAqDP,OApDAA,IAAkC,OAAgC,UAAyB,SAASC,EAAUh3C,GAC5G,IAAIi3C,EAAaC,EAASr0C,EAE1B,OAAO,UAAyB,SAAoBs0C,GAClD,OACE,OAAQA,EAAW7vC,KAAO6vC,EAAW32C,MACnC,KAAK,EACHy2C,EAAc54C,EAA2B2B,EAAE01C,IAC3CyB,EAAW7vC,KAAO,EAElB2vC,EAAYp3C,IAEd,KAAK,EACH,IAAKq3C,EAAUD,EAAYl4C,KAAKe,KAAM,CACpCq3C,EAAW32C,KAAO,EAClB,MAKF,OAFAqC,EAAIq0C,EAAQn3C,MACZo3C,EAAW32C,KAAO,EACXqC,GAEP,GAEF,KAAK,EACHs0C,EAAW32C,KAAO,EAClB,MAEF,KAAK,EACH22C,EAAW32C,KAAO,GAClB,MAEF,KAAK,GACH22C,EAAW7vC,KAAO,GAClB6vC,EAAWhlC,GAAKglC,EAAkB,MAAE,GAEpCF,EAAYj3C,EAAEm3C,EAAWhlC,IAE3B,KAAK,GAKH,OAJAglC,EAAW7vC,KAAO,GAElB2vC,EAAY/2C,IAELi3C,EAAWN,OAAO,IAE3B,KAAK,GACL,IAAK,MACH,OAAOM,EAAW5vC,UAGvByvC,EAAW,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,WAEIn1C,MAAMF,KAAMC,WA2ErD,SAASm0C,GAAwB/1C,GAC/B,OAAO,IAAMiE,EAAoBjE,GAAGy1C,GAAG78B,KA2RzC,SAASw+B,GAAsCC,EAAMC,EAAMC,GACzD,OAAOC,GAAqC31C,MAAMF,KAAMC,WAQ1D,SAAS41C,KA+DP,OA9DAA,IAAuC,OAAgC,UAAyB,SAASC,EAAUz3C,EAAG6C,EAAG9D,GACvH,OAAO,UAAyB,SAAoB24C,GAClD,OACE,OAAQA,EAAWpwC,KAAOowC,EAAWl3C,MACnC,KAAK,EACH,GAAI4U,GAAsCvS,GAAI,CAC5C60C,EAAWl3C,KAAO,EAClB,MAGF,MAAMqC,EAER,KAAK,EAKH,OAJA7C,EAAEy1C,GAAGngC,IAAI,GAGToiC,EAAWl3C,KAAO,EACX21C,GAAiCn2C,GAE1C,KAAK,EACHA,EAAEo2C,GAAGhwC,IAAI,WAGTrH,IAGAA,EAAI,WACF,OAAOmpC,GAAiDloC,EAAEo1C,cAG5Dp1C,EAAE00C,WAAWpuC,kBAA+B,OAAgC,UAAyB,SAASqxC,IAC5G,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAWtwC,KAAOswC,EAAWp3C,MACnC,KAAK,EAIH,OAHAmC,EAAmB,cAAe,6BAElCi1C,EAAWp3C,KAAO,EACXzB,IAET,KAAK,EAKH,OAJAiB,EAAEy1C,GAAGzgC,OAAO,GAGZ4iC,EAAWp3C,KAAO,EACX61C,GAAgCr2C,GAEzC,KAAK,EACL,IAAK,MACH,OAAO43C,EAAWrwC,UAGvBowC,QAGP,KAAK,EACL,IAAK,MACH,OAAOD,EAAWnwC,UAGvBkwC,QAEuC51C,MAAMF,KAAMC,WAG1D,SAASi2C,GAA8B73C,EAAG6C,GACxC,OAAOA,IAAI+Q,OAAM,SAAU7U,GACzB,OAAOq4C,GAAsCp3C,EAAGjB,EAAG8D,MAIvD,SAASi1C,GAA4BC,GACnC,OAAOC,GAA2Bn2C,MAAMF,KAAMC,WAQhD,SAASo2C,KAyDP,OAxDAA,IAA6B,OAAgC,UAAyB,SAASC,EAAUj4C,GACvG,IAAI6C,EAAG9D,EAAGkI,EAAGixC,EAEb,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAW7wC,KAAO6wC,EAAW33C,MACnC,KAAK,EACHqC,EAAIoB,EAAoBjE,GAAIjB,EAAIq5C,GAA4Bv1C,GAC5DoE,EAAIpE,EAAE0yC,GAAG71C,OAAS,EAAImD,EAAE0yC,GAAG1yC,EAAE0yC,GAAG71C,OAAS,GAAGuxB,SAAW,EAEzD,KAAK,EACH,IAAKonB,GAAgCx1C,GAAI,CACvCs1C,EAAW33C,KAAO,GAClB,MAKF,OAFA23C,EAAW7wC,KAAO,EAClB6wC,EAAW33C,KAAO,EACX4nC,GAAyCvlC,EAAEuyC,WAAYnuC,GAEhE,KAAK,EAGH,GAAM,QAFNixC,EAAQC,EAAWvlC,MAEI,CACrBulC,EAAW33C,KAAO,GAClB,MAIF,OADA,IAAMqC,EAAE0yC,GAAG71C,QAAUX,EAAEu5C,KAChBH,EAAWplC,OAAO,QAAS,IAEpC,KAAK,GACH9L,EAAIixC,EAAMjnB,QAASsnB,GAA6B11C,EAAGq1C,GACnDC,EAAW33C,KAAO,GAClB,MAEF,KAAK,GAIH,OAHA23C,EAAW7wC,KAAO,GAClB6wC,EAAWhmC,GAAKgmC,EAAkB,MAAE,GACpCA,EAAW33C,KAAO,GACX42C,GAAsCv0C,EAAGs1C,EAAWhmC,IAE7D,KAAK,GACHgmC,EAAW33C,KAAO,EAClB,MAEF,KAAK,GACHg4C,GAAiC31C,IAAM41C,GAA2B51C,GAEpE,KAAK,GACL,IAAK,MACH,OAAOs1C,EAAW5wC,UAGvB0wC,EAAW,KAAM,CAAC,CAAC,EAAG,WAEOp2C,MAAMF,KAAMC,WAGhD,SAASy2C,GAAgCr4C,GACvC,OAAO+1C,GAAwB/1C,IAAMA,EAAEu1C,GAAG71C,OAAS,GAQrD,SAAS64C,GAA6Bv4C,EAAG6C,GACvC7C,EAAEu1C,GAAG3pC,KAAK/I,GAEV,IAAI9D,EAAIq5C,GAA4Bp4C,GAEpCjB,EAAEmxC,MAAQnxC,EAAE25C,IAAM35C,EAAE8zC,GAAGhwC,EAAEuuB,WAG3B,SAASonB,GAAiCx4C,GACxC,OAAO+1C,GAAwB/1C,KAAOo4C,GAA4Bp4C,GAAGswC,MAAQtwC,EAAEu1C,GAAG71C,OAAS,EAG7F,SAAS+4C,GAA2Bz4C,GAClCo4C,GAA4Bp4C,GAAGoyC,QAGjC,SAASuG,GAA4BC,GACnC,OAAOC,GAA2Bh3C,MAAMF,KAAMC,WAGhD,SAASi3C,KAeP,OAdAA,IAA6B,OAAgC,UAAyB,SAASC,EAAU94C,GACvG,OAAO,UAAyB,SAAoB+4C,GAClD,OACE,OAAQA,EAAWzxC,KAAOyxC,EAAWv4C,MACnC,KAAK,EACH43C,GAA4Bp4C,GAAGg5C,KAEjC,KAAK,EACL,IAAK,MACH,OAAOD,EAAWxxC,UAGvBuxC,QAE6Bj3C,MAAMF,KAAMC,WAGhD,SAASq3C,GAAmCC,GAC1C,OAAOC,GAAkCt3C,MAAMF,KAAMC,WAGvD,SAASu3C,KA8BP,OA7BAA,IAAoC,OAAgC,UAAyB,SAASC,EAAUp5C,GAC9G,IAAI6C,EAAGw2C,EAAaC,EAASv6C,EAE7B,OAAO,UAAyB,SAAoBw6C,GAClD,OACE,OAAQA,EAAWjyC,KAAOiyC,EAAW/4C,MACnC,KAAK,EACHqC,EAAIu1C,GAA4Bp4C,GAEhCq5C,EAAch7C,EAA2B2B,EAAEu1C,IAE3C,IACE,IAAK8D,EAAYx5C,MAAOy5C,EAAUD,EAAYt6C,KAAKe,MACjDf,EAAIu6C,EAAQv5C,MACZ8C,EAAEgwC,GAAG9zC,EAAEqyB,WAET,MAAOhxB,GACPi5C,EAAYr5C,EAAEI,GACd,QACAi5C,EAAYn5C,IAGhB,KAAK,EACL,IAAK,MACH,OAAOq5C,EAAWhyC,UAGvB6xC,QAEoCv3C,MAAMF,KAAMC,WAGvD,SAAS43C,GAA2BC,EAAMC,EAAMC,GAC9C,OAAOC,GAA0B/3C,MAAMF,KAAMC,WAG/C,SAASg4C,KAwBP,OAvBAA,IAA4B,OAAgC,UAAyB,SAASC,EAAU75C,EAAG6C,EAAG9D,GAC5G,IAAIkI,EAAGtH,EACP,OAAO,UAAyB,SAAoBm6C,GAClD,OACE,OAAQA,EAAWxyC,KAAOwyC,EAAWt5C,MACnC,KAAK,EAGH,OAFAyG,EAAIjH,EAAEu1C,GAAGnX,QAASz+B,EAAIqyB,GAAoBzyB,KAAK0H,EAAGpE,EAAG9D,GACrD+6C,EAAWt5C,KAAO,EACXq3C,GAA8B73C,GAAG,WACtC,OAAOA,EAAEs1C,aAAayE,qBAAqBp6C,MAG/C,KAAK,EAEH,OADAm6C,EAAWt5C,KAAO,EACXs3C,GAA4B93C,GAErC,KAAK,EACL,IAAK,MACH,OAAO85C,EAAWvyC,UAGvBsyC,QAE4Bh4C,MAAMF,KAAMC,WAG/C,SAASo4C,GAA6BC,EAAMC,GAC1C,OAAOC,GAA4Bt4C,MAAMF,KAAMC,WAGjD,SAASu4C,KAwEP,OAvEAA,IAA8B,OAAgC,UAAyB,SAASC,EAAUp6C,EAAG6C,GAC3G,OAAO,UAAyB,SAAoBw3C,GAClD,OACE,OAAQA,EAAW/yC,KAAO+yC,EAAW75C,MACnC,KAAK,EAGH,GAFA65C,EAAWloC,GAAKtP,GAAKu1C,GAA4Bp4C,GAAG04C,IAE/C2B,EAAWloC,GAAI,CAClBkoC,EAAW75C,KAAO,EAClB,MAIF,OADA65C,EAAW75C,KAAO,EACX,WACL,IAAI85C,GAA4B,OAAgC,UAAyB,SAASC,EAAUv6C,EAAG6C,GAC7G,IAAI9D,EACJ,OAAO,UAAyB,SAAoBy7C,GAClD,OACE,OAAQA,EAAWlzC,KAAOkzC,EAAWh6C,MACnC,KAAK,EACH,IAAK,SAAyCR,GAC5C,OAAOuyB,GAA2BvyB,IAAMA,IAAMkE,EAAEW,QAD7C,CAEHhC,EAAE0C,MAAO,CACTi1C,EAAWh6C,KAAO,EAClB,MAYF,OAPAzB,EAAIiB,EAAEu1C,GAAGnX,QAITga,GAA4Bp4C,GAAGy6C,KAE/BD,EAAWh6C,KAAO,EACXq3C,GAA8B73C,GAAG,WACtC,OAAOA,EAAEs1C,aAAaoF,kBAAkB37C,EAAEkyB,QAASpuB,MAGvD,KAAK,EAEH,OADA23C,EAAWh6C,KAAO,EACXs3C,GAA4B93C,GAErC,KAAK,EACL,IAAK,MACH,OAAOw6C,EAAWjzC,UAGvBgzC,OAOL,OAJA,SAAoCI,EAAOC,GACzC,OAAON,EAA0Bz4C,MAAMF,KAAMC,YAxC1C,GA4CH5B,EAAG6C,GAET,KAAK,EAGH21C,GAAiCx4C,IAAMy4C,GAA2Bz4C,GAEpE,KAAK,EACL,IAAK,MACH,OAAOq6C,EAAW9yC,UAGvB6yC,OAEED,GAA4Bt4C,MAAMF,KAAMC,WAGjD,SAASi5C,GAA4CC,EAAMC,GACzD,OAAOC,GAA2Cn5C,MAAMF,KAAMC,WAOhE,SAASo5C,KAyCP,OAxCAA,IAA6C,OAAgC,UAAyB,SAASC,EAAUj7C,EAAG6C,GAC1H,IAAI9D,EAAGkI,EACP,OAAO,UAAyB,SAAoBi0C,GAClD,OACE,OAAQA,EAAW5zC,KAAO4zC,EAAW16C,MACnC,KAAK,EAWH,OAVAzB,EAAIkF,EAAoBjE,IACtB00C,WAAWyG,4BAA6Bx4C,EAAmB,cAAe,wCAC5EsE,EAAI8uC,GAAwBh3C,GAI5BA,EAAE02C,GAAGngC,IAAI,GAGT4lC,EAAW16C,KAAO,EACX21C,GAAiCp3C,GAE1C,KAAK,EAMH,OALAkI,GACAlI,EAAEq3C,GAAGhwC,IAAI,WAGT80C,EAAW16C,KAAO,EACXzB,EAAEu2C,aAAa8F,uBAAuBv4C,GAE/C,KAAK,EAKH,OAJA9D,EAAE02C,GAAGzgC,OAAO,GAGZkmC,EAAW16C,KAAO,GACX61C,GAAgCt3C,GAEzC,KAAK,GACL,IAAK,MACH,OAAOm8C,EAAW3zC,UAGvB0zC,QAE6Cp5C,MAAMF,KAAMC,WAGhE,SAASy5C,GAAuCC,EAAMC,GACpD,OAAOC,GAAsC35C,MAAMF,KAAMC,WAY3D,SAAS45C,KAkDP,OAjDAA,IAAwC,OAAgC,UAAyB,SAASC,EAAUz7C,EAAG6C,GACrH,IAAI9D,EACJ,OAAO,UAAyB,SAAoB28C,GAClD,OACE,OAAQA,EAAWp0C,KAAOo0C,EAAWl7C,MACnC,KAAK,EAGH,GAFAzB,EAAIkF,EAAoBjE,IAEnB6C,EAAG,CACN64C,EAAWl7C,KAAO,EAClB,MAOF,OAJAzB,EAAE02C,GAAGzgC,OAAO,GAGZ0mC,EAAWl7C,KAAO,EACX61C,GAAgCt3C,GAEzC,KAAK,EACH28C,EAAWl7C,KAAO,GAClB,MAEF,KAAK,EAGH,GAFAk7C,EAAWvpC,GAAKtP,EAEZ64C,EAAWvpC,GAAI,CACjBupC,EAAWl7C,KAAO,GAClB,MAOF,OAJAzB,EAAE02C,GAAGngC,IAAI,GAGTomC,EAAWl7C,KAAO,GACX21C,GAAiCp3C,GAE1C,KAAK,GACHA,EAAEq3C,GAAGhwC,IAAI,WAIX,KAAK,GACL,IAAK,MACH,OAAOs1C,EAAWn0C,UAGvBk0C,QAEwC55C,MAAMF,KAAMC,WA6E3D,SAASw2C,GAA4Bp4C,GACnC,OAAOA,EAAE27C,KACT37C,EAAE27C,GAAK,SAA4C37C,EAAG6C,EAAG9D,GACvD,IAAIkI,EAAIhD,EAAoBjE,GAE5B,OAAOiH,EAAE+sC,KAAM,IAAIzB,GAAgC1vC,EAAGoE,EAAEooC,WAAYpoC,EAAE2sC,gBAAiB3sC,EAAE4sC,oBAAqB5sC,EAAEilB,WAAYntB,GAHvH,CAILiB,EAAEq1C,UAAWr1C,EAAE00C,WAAY,CAC3B5C,GAAI6G,GAA4BiD,KAAK,KAAM57C,GAC3CkxC,GAAI8I,GAA6B4B,KAAK,KAAM57C,GAC5CozC,GAAI6F,GAAmC2C,KAAK,KAAM57C,GAClDmzC,GAAIqG,GAA2BoC,KAAK,KAAM57C,KACxCA,EAAE01C,GAAG9pC,KAAmB,WAC1B,IAAIiwC,GAAS,OAAgC,UAAyB,SAASC,EAAUj5C,GACvF,OAAO,UAAyB,SAAoBk5C,GAClD,OACE,OAAQA,EAAWz0C,KAAOy0C,EAAWv7C,MACnC,KAAK,EACH,IAAKqC,EAAG,CACNk5C,EAAWv7C,KAAO,EAClB,MAKF,OAFAR,EAAE27C,GAAGlB,KACLsB,EAAWv7C,KAAO,EACXs3C,GAA4B93C,GAErC,KAAK,EACH+7C,EAAWv7C,KAAO,EAClB,MAEF,KAAK,EAEH,OADAu7C,EAAWv7C,KAAO,EACXR,EAAE27C,GAAGp0C,OAEd,KAAK,EACHvH,EAAEu1C,GAAG71C,OAAS,IAAMiD,EAAmB,cAAe,8BAA8BO,OAAOlD,EAAEu1C,GAAG71C,OAAQ,oBAAqBM,EAAEu1C,GAAK,IAEtI,KAAK,EACL,IAAK,MACH,OAAOwG,EAAWx0C,UAGvBu0C,OAGL,OAAO,SAAUE,GACf,OAAOH,EAAOh6C,MAAMF,KAAMC,YAnCF,KAqCrB5B,EAAE27C,GAgCX,IAAIM,GAAgC,WAClC,SAASA,EAAiBj8C,EAAG6C,EAAG9D,EAAGkI,EAAGtH,IACpC,OAAgBgC,KAAMs6C,GAEtBt6C,KAAK+yC,WAAa10C,EAAG2B,KAAK0sC,QAAUxrC,EAAGlB,KAAKu6C,aAAen9C,EAAG4C,KAAKuhB,GAAKjc,EAAGtF,KAAKw6C,gBAAkBx8C,EAAGgC,KAAKy6C,SAAW,IAAI32C,EAAsB9D,KAAKsG,KAAOtG,KAAKy6C,SAASz2C,QAAQsC,KAAK2zC,KAAKj6C,KAAKy6C,SAASz2C,SAGzMhE,KAAKy6C,SAASz2C,QAAQiO,OAAM,SAAU5T,OA+FxC,OA5FA,OAAai8C,EAAkB,CAAC,CAC9Bh6C,IAAK,UACLyG,IAAK,WACH,OAAO/G,KAAKy6C,SAASz2C,UAiBtB,CACD1D,IAAK,QACLlC,MAKA,SAAeC,GACb,IAAIq8C,EAAW16C,KAEfA,KAAK26C,YAAc30C,YAAW,WAC5B,OAAO00C,EAASE,uBACfv8C,KAOJ,CACDiC,IAAK,YACLlC,MAAO,WACL,OAAO4B,KAAK46C,uBAUb,CACDt6C,IAAK,SACLlC,MAAO,SAAgBC,GACrB,OAAS2B,KAAK26C,cAAgB36C,KAAK66C,eAAgB76C,KAAKy6C,SAASt2C,OAAO,IAAIX,EAAejB,EAAEE,UAAW,uBAAyBpE,EAAI,KAAOA,EAAI,SAEjJ,CACDiC,IAAK,qBACLlC,MAAO,WACL,IAAI08C,EAAW96C,KAEfA,KAAK+yC,WAAWpC,kBAAiB,WAC/B,OAAO,OAASmK,EAASH,aAAeG,EAASD,eAAgBC,EAASv5B,KAAKjb,MAAK,SAAUjI,GAC5F,OAAOy8C,EAASL,SAASv2C,QAAQ7F,OAC7B4F,QAAQC,eAGjB,CACD5D,IAAK,eACLlC,MAAO,SAAU28C,GACf,SAASF,IACP,OAAOE,EAAc76C,MAAMF,KAAMC,WAOnC,OAJA46C,EAAat9C,SAAW,WACtB,OAAOw9C,EAAcx9C,YAGhBs9C,EATF,EAUL,WACA,OAAS76C,KAAK26C,cAAgB36C,KAAKw6C,gBAAgBx6C,MAAO66C,aAAa76C,KAAK26C,aAAc36C,KAAK26C,YAAc,WAE7G,CAAC,CACHr6C,IAAK,oBACLlC,MAAO,SAA2BC,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAC5C,IACIrB,EAAI,IAAI29C,EAAiBj8C,EAAG6C,EADxB8H,KAAKK,MAAQjM,EACiBkI,EAAGtH,GACzC,OAAOrB,EAAE8zC,MAAMrzC,GAAIT,MAIhB29C,EAtG2B,GA8GpC,SAASU,GAAuC38C,EAAG6C,GACjD,GAAIM,EAAmB,aAAc,GAAGD,OAAOL,EAAG,MAAMK,OAAOlD,IAAKoV,GAAsCpV,GAAI,OAAO,IAAImF,EAAejB,EAAEe,YAAa,GAAG/B,OAAOL,EAAG,MAAMK,OAAOlD,IACjL,MAAMA,EA2BR,IAwTI48C,IAA0C,QAAa,SAASA,KAClE,OAAgBj7C,KAAMi7C,GAEtBj7C,KAAKk7C,QAAU,IAAI3zB,IAAU,SAAUlpB,GACrC,OAAOmoB,GAAwBnoB,KAC9BkoB,IAAwBvmB,KAAKm7C,YAAc,UAE5Cn7C,KAAKo7C,GAAK,IAAIr1B,OAgKlB,SAASs1B,GAAoCh9C,GAC3CA,EAAE+8C,GAAGpxC,SAAQ,SAAU3L,GACrBA,EAAEQ,UAyZN,IAobIy8C,GAAwC,WAC1C,SAASA,EAAyBj9C,EAAG6C,EAAG9D,EACxCkI,EAAGtH,EAAGE,IACJ,OAAgB8B,KAAMs7C,GAEtBt7C,KAAKyzC,WAAap1C,EAAG2B,KAAKu7C,YAAcr6C,EAAGlB,KAAKw7C,aAAep+C,EAAG4C,KAAKy7C,kBAAoBn2C,EAAGtF,KAAKiF,YAAcjH,EAAGgC,KAAK07C,8BAAgCx9C,EAAG8B,KAAK27C,GAAK,GAAI37C,KAAK47C,GAAK,IAAIr0B,IAAU,SAAUlpB,GAC1M,OAAOmoB,GAAwBnoB,KAC9BkoB,IAAwBvmB,KAAK67C,GAAK,IAAIr3C,IAUzCxE,KAAK87C,GAAK,IAAI/1B,IAKd/lB,KAAK+7C,GAAK,IAAIzlC,GAAU3K,GAAY7B,YAKpC9J,KAAKg8C,GAAK,IAAIx3C,IAAOxE,KAAKi8C,GAAK,IAAI1hB,GAEnCv6B,KAAKk8C,GAAK,GAEVl8C,KAAKm8C,GAAK,IAAI33C,IAAOxE,KAAKo8C,GAAKnmB,GAA4BomB,KAAMr8C,KAAKm7C,YAAc,UAKpFn7C,KAAKs8C,QAAK,EAUZ,OAPA,OAAahB,EAA0B,CAAC,CACtCh7C,IAAK,kBACLyG,IAAK,WACH,OAAO,IAAO/G,KAAKs8C,OAIhBhB,EA9CmC,GAsS5C,SAASiB,GAA0BC,EAAMC,EAAMC,GAC7C,OAAOC,GAAyBz8C,MAAMF,KAAMC,WAS9C,SAAS08C,KA4HP,OA3HAA,IAA2B,OAAgC,UAAyB,SAASC,EAAWv+C,EAAG6C,EAAG9D,GAC5G,IAAIkI,EAAGu3C,EAAOC,EAEd,OAAO,UAAyB,SAAqBC,GACnD,OACE,OAAQA,EAAYp3C,KAAOo3C,EAAYl+C,MACrC,KAAK,EAIH,OAHAyG,EAAI03C,GAAyC3+C,GAC7C0+C,EAAYp3C,KAAO,EACnBo3C,EAAYl+C,KAAO,EACZ,SAA0CR,EAAG6C,GAClD,IAMIhD,EAAGvB,EANHS,EAAIkF,EAAoBjE,GACxBiH,EAAIuD,EAAUQ,MACdrL,EAAIkD,EAAEuhB,QAAO,SAAUpkB,EAAG6C,GAC5B,OAAO7C,EAAEsV,IAAIzS,EAAEZ,OACd6oB,MAGH,OAAO/rB,EAAEygC,YAAYyG,eAAe,0BAA2B,aAAa,SAAUjmC,GAOpF,IAAIwQ,EAAI0Z,KACJzZ,EAAIqa,KAER,OAAO/rB,EAAEwmC,GAAGpO,WAAWn3B,EAAGL,GAAGa,MAAK,SAAUR,IAC1CwQ,EAAIxQ,GAAK2L,SAAQ,SAAU3L,EAAG6C,GAC5BA,EAAEkvB,oBAAsBthB,EAAIA,EAAE6E,IAAItV,UAEnCQ,MAAK,WACN,OAAOzB,EAAE8mC,eAAe+Y,sBAAsB5+C,EAAGwQ,MAChDhQ,MAAK,SAAUb,GAChBE,EAAIF,EAWJ,IAGIk/C,EAHAvgD,EAAI,GAEJwgD,EAAczgD,EAA2BwE,GAG7C,IACE,IAAKi8C,EAAYj/C,MAAOg/C,EAAUC,EAAY//C,KAAKe,MAAO,CACxD,IAAIi/C,EAAQF,EAAQ9+C,MAEhBi/C,EAAOxvB,GAAmCuvB,EAAOl/C,EAAE6I,IAAIq2C,EAAM98C,KAAKyoB,mBAEtE,MAAQs0B,GAGR1gD,EAAEsN,KAAK,IAAI4iB,GAAwBuwB,EAAM98C,IAAK+8C,EAAMz9B,GAA2By9B,EAAKj/C,MAAMid,UAAW0Q,GAAaE,QAAO,MAE3H,MAAOxtB,GACP0+C,EAAY9+C,EAAEI,GACd,QACA0+C,EAAY5+C,IAGd,OAAOnB,EAAE05B,cAAcwmB,iBAAiBj/C,EAAGiH,EAAG3I,EAAGuE,MAChDrC,MAAK,SAAUqC,GAChBvE,EAAIuE,EACJ,IAAIoE,EAAIpE,EAAEq8C,wBAAwBr/C,EAAG4Q,GACrC,OAAO1R,EAAE25B,qBAAqBsB,aAAah6B,EAAG6C,EAAEouB,QAAShqB,SAE1DgB,MAAK,WACN,MAAO,CACLgpB,QAAS3yB,EAAE2yB,QACX8G,QAAStN,GAAmD5qB,OAnE3D,CAsELoH,EAAEmuC,WAAYvyC,GAElB,KAAK,EAgBH,OAfA27C,EAAQE,EAAY9rC,KACpB3L,EAAEm2C,kBAAkB+B,mBAAmBX,EAAMvtB,SAE7C,SAAwCjxB,EAAG6C,EAAG9D,GAC5C,IAAIkI,EAAIjH,EAAE69C,GAAG79C,EAAE4G,YAAYu6B,SAC3Bl6B,IAAMA,EAAI,IAAIgR,GAAU5N,IACxBpD,EAAIA,EAAEoR,OAAOxV,EAAG9D,GAAIiB,EAAE69C,GAAG79C,EAAE4G,YAAYu6B,SAAWl6B,EAHpD,CASEA,EAAGu3C,EAAMvtB,QAASlyB,GAEpB2/C,EAAYl+C,KAAO,EACZ4+C,GAAoDn4C,EAAGu3C,EAAMzmB,SAEtE,KAAK,EAEH,OADA2mB,EAAYl+C,KAAO,GACZs3C,GAA4B7wC,EAAEi2C,aAEvC,KAAK,GACHwB,EAAYl+C,KAAO,GACnB,MAEF,KAAK,GACHk+C,EAAYp3C,KAAO,GACnBo3C,EAAYvsC,GAAKusC,EAAmB,MAAE,GAGtCD,EAAO9B,GAAuC+B,EAAYvsC,GAAI,2BAC9DpT,EAAE+G,OAAO24C,GAEX,KAAK,GACL,IAAK,MACH,OAAOC,EAAYn3C,UAGxBg3C,EAAY,KAAM,CAAC,CAAC,EAAG,WAEI18C,MAAMF,KAAMC,WAwD9C,SAASy9C,GAA2Cr/C,EAAG6C,EAAG9D,GACxD,IAAIkI,EAAIhD,EAAoBjE,GAM5B,GAAIiH,EAAEq4C,iBAAmB,IAErBvgD,IAAMkI,EAAEq4C,iBAAmB,IAE3BvgD,EAAG,CACL,IAAIwgD,EAAO,GACXt4C,EAAEs2C,GAAG5xC,SAAQ,SAAU5M,EAAGkI,GACxB,IAAItH,EAAIsH,EAAEu4C,KAAKC,GAAG58C,GAClBlD,EAAE+/C,UAAYH,EAAK3zC,KAAKjM,EAAE+/C,aACxB,SAAmD1/C,EAAG6C,GACxD,IAAI9D,EAAIkF,EAAoBjE,GAE5BjB,EAAE+9C,YAAcj6C,EAChB,IAAIoE,GAAI,EACRlI,EAAE89C,QAAQlxC,SAAQ,SAAU3L,EAAGjB,GAC7B,IACI4gD,EADAC,EAAcvhD,EAA2BU,EAAE8gD,IAG/C,IACE,IAAKD,EAAY//C,MAAO8/C,EAAUC,EAAY7gD,KAAKe,MAAO,CAC7C6/C,EAAQ5/C,MAEd0/C,GAAG58C,KAAOoE,GAAI,IAErB,MAAO7G,GACPw/C,EAAY5/C,EAAEI,GACd,QACAw/C,EAAY1/C,QAEZ+G,GAAK+1C,GAAoCj+C,GApB3C,CAqBFkI,EAAEk2C,aAAct6C,GAAI08C,EAAK7/C,QAAUuH,EAAEq2C,GAAGwC,GAAGP,GAAOt4C,EAAE61C,YAAcj6C,EAAGoE,EAAEq4C,iBAAmBr4C,EAAEm2C,kBAAkB2C,eAAel9C,IAyFnI,SAASm9C,GAAyCC,EAAMC,GACtD,OAAOC,GAAwCt+C,MAAMF,KAAMC,WAG7D,SAASu+C,KA2CP,OA1CAA,IAA0C,OAAgC,UAAyB,SAASC,EAAWpgD,EAAG6C,GACxH,IAAI9D,EAAGkI,EAAGo5C,EAEV,OAAO,UAAyB,SAAqBC,GACnD,OACE,OAAQA,EAAYh5C,KAAOg5C,EAAY9/C,MACrC,KAAK,EAIH,OAHAzB,EAAIkF,EAAoBjE,GAAIiH,EAAIpE,EAAEovB,MAAMhB,QACxCqvB,EAAYh5C,KAAO,EACnBg5C,EAAY9/C,KAAO,EACZknC,GAAqC3oC,EAAEq2C,WAAYvyC,GAE5D,KAAK,EAWH,OAVAw9C,EAAQC,EAAY1tC,KAEpB2tC,GAA8BxhD,EAAGkI,EAEjC,MAEAu5C,GAAwCzhD,EAAGkI,GAE3ClI,EAAEq+C,kBAAkBqD,oBAAoBx5C,EAAG,gBAC3Cq5C,EAAY9/C,KAAO,GACZ4+C,GAAoDrgD,EAAGshD,GAEhE,KAAK,GACHC,EAAY9/C,KAAO,GACnB,MAEF,KAAK,GAIH,OAHA8/C,EAAYh5C,KAAO,GACnBg5C,EAAYnuC,GAAKmuC,EAAmB,MAAE,GACtCA,EAAY9/C,KAAO,GACZ0O,GAAmCoxC,EAAYnuC,IAExD,KAAK,GACL,IAAK,MACH,OAAOmuC,EAAY/4C,UAGxB64C,EAAY,KAAM,CAAC,CAAC,EAAG,WAEmBv+C,MAAMF,KAAMC,WAG7D,SAAS8+C,GAAsCC,EAAMC,EAAMC,GACzD,OAAOC,GAAqCj/C,MAAMF,KAAMC,WAQ1D,SAASk/C,KAiEP,OAhEAA,IAAuC,OAAgC,UAAyB,SAASC,EAAW/gD,EAAG6C,EAAG9D,GACxH,IAAIkI,EAAG+5C,EAEP,OAAO,UAAyB,SAAqBC,GACnD,OACE,OAAQA,EAAY35C,KAAO25C,EAAYzgD,MACrC,KAAK,EAIH,OAHAyG,EAAIhD,EAAoBjE,GACxBihD,EAAY35C,KAAO,EACnB25C,EAAYzgD,KAAO,EACZ,SAAyCR,EAAG6C,GACjD,IAAI9D,EAAIkF,EAAoBjE,GAE5B,OAAOjB,EAAEygC,YAAYyG,eAAe,eAAgB,qBAAqB,SAAUjmC,GACjF,IAAIiH,EACJ,OAAOlI,EAAE05B,cAAcyoB,oBAAoBlhD,EAAG6C,GAAGrC,MAAK,SAAUqC,GAC9D,OAAOmB,EAAqB,OAASnB,GAAIoE,EAAIpE,EAAEid,OAAQ/gB,EAAE05B,cAAcoP,oBAAoB7nC,EAAG6C,MAC7FrC,MAAK,WACN,OAAOzB,EAAE05B,cAAcqP,wBAAwB9nC,MAC9CQ,MAAK,WACN,OAAOzB,EAAE25B,qBAAqBqP,yBAAyB/nC,EAAGiH,EAAGpE,MAC5DrC,MAAK,WACN,OAAOzB,EAAE8mC,eAAemC,0CAA0ChoC,EAAGiH,MACpEzG,MAAK,WACN,OAAOzB,EAAE8mC,eAAepB,aAAazkC,EAAGiH,SAdvC,CAwBNA,EAAEmuC,WAAYvyC,GAEjB,KAAK,EASH,OARAm+C,EAAQC,EAAYruC,KAEpB2tC,GAA8Bt5C,EAAGpE,EAAG9D,GAEpCyhD,GAAwCv5C,EAAGpE,GAE3CoE,EAAEm2C,kBAAkBqD,oBAAoB59C,EAAG,WAAY9D,GACvDkiD,EAAYzgD,KAAO,GACZ4+C,GAAoDn4C,EAAG+5C,GAEhE,KAAK,GACHC,EAAYzgD,KAAO,GACnB,MAEF,KAAK,GAIH,OAHAygD,EAAY35C,KAAO,GACnB25C,EAAY9uC,GAAK8uC,EAAmB,MAAE,GACtCA,EAAYzgD,KAAO,GACZ0O,GAAmC+xC,EAAY9uC,IAExD,KAAK,GACL,IAAK,MACH,OAAO8uC,EAAY15C,UAGxBw5C,EAAY,KAAM,CAAC,CAAC,EAAG,WAEgBl/C,MAAMF,KAAMC,WAgE1D,SAAS4+C,GAAwCxgD,EAAG6C,IACjD7C,EAAE89C,GAAGp1C,IAAI7F,IAAM,IAAI8I,SAAQ,SAAU3L,GACpCA,EAAE6F,aACA7F,EAAE89C,GAAG9oC,OAAOnS,GAKlB,SAAS09C,GAA8BvgD,EAAG6C,EAAG9D,GAC3C,IAAIkI,EAAIhD,EAAoBjE,GAExBL,EAAIsH,EAAE42C,GAAG52C,EAAEL,YAAYu6B,SAG3B,GAAIxhC,EAAG,CACL,IAAIwhD,EAAOxhD,EAAE+I,IAAI7F,GAEjBs+C,IAASpiD,EAAIoiD,EAAKr7C,OAAO/G,GAAKoiD,EAAKt7C,UAAWlG,EAAIA,EAAE6Y,OAAO3V,IAAKoE,EAAE42C,GAAG52C,EAAEL,YAAYu6B,SAAWxhC,GAqFlG,SAASy/C,GAAoDgC,EAAMC,EAAMC,GACvE,OAAOC,GAAmD1/C,MAAMF,KAAMC,WAGxE,SAAS2/C,KA2HP,OA1HAA,IAAqD,OAAgC,UAAyB,SAASC,EAAWxhD,EAAG6C,EAAG9D,GACtI,IAAIkI,EAAGtH,EAAGE,EAAGvB,EACb,OAAO,UAAyB,SAAqBmjD,GACnD,OACE,OAAQA,EAAYn6C,KAAOm6C,EAAYjhD,MACrC,KAAK,EAIH,GAHAyG,EAAIhD,EAAoBjE,GAAIL,EAAI,GAAIE,EAAI,GAAIvB,EAAI,GAChDmjD,EAAYtvC,GAAKlL,EAAEs2C,GAAG9kC,UAElBgpC,EAAYtvC,GAAI,CAClBsvC,EAAYjhD,KAAO,EACnB,MAkBF,OAfAyG,EAAEs2C,GAAG5xC,SAAQ,SAAU3L,EAAGwQ,GACxBlS,EAAEsN,KAAK3E,EAAEy6C,GAAGlxC,EAAG3N,EAAG9D,GAAGkJ,MAAK,SAAUjI,GAElC,IAECA,GAAKjB,IAAMkI,EAAEq4C,iBAAmBr4C,EAAEm2C,kBAAkBuE,iBAAiBnxC,EAAEyvB,UAAW,MAAQjgC,OAAI,EAASA,EAAE+iC,WAAa,cAAgB,WAAY/iC,EAAG,CACpJL,EAAEiM,KAAK5L,GAEP,IAAI4hD,EAAO9e,GAA2B+e,GAAGrxC,EAAEyvB,SAAUjgC,GAErDH,EAAE+L,KAAKg2C,WAIbH,EAAYjhD,KAAO,EACZoF,QAAQ2rC,IAAIjzC,GAErB,KAAK,EAGH,OAFA2I,EAAEq2C,GAAGwC,GAAGngD,GACR8hD,EAAYjhD,KAAO,EACZ,WACL,IAAIshD,GAA4C,OAAgC,UAAyB,SAASC,EAAW/hD,EAAG6C,GAC9H,IAAI9D,EAAGijD,EAAaC,EAASC,EAAOC,EAAMC,EAAOC,EAAMC,EAEvD,OAAO,UAAyB,SAAqBC,GACnD,OACE,OAAQA,EAAYj7C,KAAOi7C,EAAY/hD,MACrC,KAAK,EAIH,OAHAzB,EAAIkF,EAAoBjE,GACxBuiD,EAAYj7C,KAAO,EACnBi7C,EAAY/hD,KAAO,EACZzB,EAAEygC,YAAYyG,eAAe,yBAA0B,aAAa,SAAUjmC,GACnF,OAAOuP,GAAmB5D,QAAQ9I,GAAG,SAAUA,GAC7C,OAAO0M,GAAmB5D,QAAQ9I,EAAEmgC,IAAI,SAAU/7B,GAChD,OAAOlI,EAAEygC,YAAYrC,kBAAkBV,aAAaz8B,EAAG6C,EAAEo9B,SAAUh5B,MAClEzG,MAAK,WACN,OAAO+O,GAAmB5D,QAAQ9I,EAAEogC,IAAI,SAAUh8B,GAChD,OAAOlI,EAAEygC,YAAYrC,kBAAkBP,gBAAgB58B,EAAG6C,EAAEo9B,SAAUh5B,eAMhF,KAAK,EACHs7C,EAAY/hD,KAAO,GACnB,MAEF,KAAK,EAIH,GAHA+hD,EAAYj7C,KAAO,EACnBi7C,EAAYpwC,GAAKowC,EAAmB,MAAE,GAElCntC,GAAsCmtC,EAAYpwC,IAAK,CACzDowC,EAAY/hD,KAAO,GACnB,MAGF,MAAM+hD,EAAYpwC,GAEpB,KAAK,GAKHxP,EAAmB,aAAc,sCAAwC4/C,EAAYpwC,IAEvF,KAAK,GACH6vC,EAAc3jD,EAA2BwE,GAEzC,IACE,IAAKm/C,EAAYniD,MAAOoiD,EAAUD,EAAYjjD,KAAKe,MACjDoiD,EAAQD,EAAQliD,MAChBoiD,EAAOD,EAAMjiB,SAERiiB,EAAMnf,YACTqf,EAAQrjD,EAAEqmC,GAAG18B,IAAIy5C,GAAOE,EAAOD,EAAMI,gBAAiBF,EAAOF,EAAMK,iCAAiCJ,GAGpGtjD,EAAEqmC,GAAKrmC,EAAEqmC,GAAG/sB,OAAO8pC,EAAMG,IAG7B,MAAOliD,GACP4hD,EAAYhiD,EAAEI,GACd,QACA4hD,EAAY9hD,IAGhB,KAAK,GACL,IAAK,MACH,OAAOqiD,EAAYh7C,UAGxBw6C,EAAY,KAAM,CAAC,CAAC,EAAG,SAO5B,OAJA,SAAoDW,EAAOC,GACzD,OAAOb,EAA0CjgD,MAAMF,KAAMC,YA3E1D,GA+EHqF,EAAEmuC,WAAYv1C,GAEpB,KAAK,EACL,IAAK,MACH,OAAO4hD,EAAYl6C,UAGxBi6C,OAEED,GAAmD1/C,MAAMF,KAAMC,WAGxE,SAASghD,GAA2CC,EAAMC,GACxD,OAAOC,GAA0ClhD,MAAMF,KAAMC,WAG/D,SAASmhD,KA6CP,OA5CAA,IAA4C,OAAgC,UAAyB,SAASC,EAAWhjD,EAAG6C,GAC1H,IAAI9D,EAAGkkD,EAEP,OAAO,UAAyB,SAAqBC,GACnD,OACE,OAAQA,EAAY57C,KAAO47C,EAAY1iD,MACrC,KAAK,EAGH,IAFAzB,EAAIkF,EAAoBjE,IAElB4G,YAAYyE,QAAQxI,GAAI,CAC5BqgD,EAAY1iD,KAAO,GACnB,MAMF,OAHAmC,EAAmB,aAAc,yBAA0BE,EAAEs+B,SAE7D+hB,EAAY1iD,KAAO,EACZ4lC,GAAqCrnC,EAAEq2C,WAAYvyC,GAE5D,KAAK,EAgBH,OAfAogD,EAAQC,EAAYtwC,KACpB7T,EAAE6H,YAAc/D,EAGhB,SAA4D7C,EAAG6C,GAC7D7C,EAAE89C,GAAGnyC,SAAQ,SAAU3L,GACrBA,EAAE2L,SAAQ,SAAU3L,GAClBA,EAAE8F,OAAO,IAAIX,EAAejB,EAAEE,UAAWvB,UAEzC7C,EAAE89C,GAAGqF,QALX,CAMGpkD,EAAG,oEAGNA,EAAEq+C,kBAAkBgG,iBAAiBvgD,EAAGogD,EAAMzb,gBAAiByb,EAAMxb,eACrEyb,EAAY1iD,KAAO,GACZ4+C,GAAoDrgD,EAAGkkD,EAAM1b,IAEtE,KAAK,GACL,IAAK,MACH,OAAO2b,EAAY37C,UAGxBy7C,QAE4CnhD,MAAMF,KAAMC,WAwrB/D,SAAS+8C,GAAyC3+C,GAChD,IAAI6C,EAAIoB,EAAoBjE,GAE5B,OAAO6C,EAAEq6C,YAAY5H,aAAayE,qBAAuBiG,GAAyCpE,KAAK,KAAM/4C,GAAIA,EAAEq6C,YAAY5H,aAAaoF,kBAAoBgG,GAAsC9E,KAAK,KAAM/4C,GAAIA,EAiLvN,IAAIwgD,GAA8C,WAChD,SAASA,KACP,OAAgB1hD,KAAM0hD,GAEtB1hD,KAAK2hD,iBAAkB,EA+DhB,IACDC,EA1DAC,EAsFR,OAzFA,OAAaH,EAAgC,CAAC,CAC5CphD,IAAK,aACLlC,OACMyjD,GAAc,OAAgC,UAAyB,SAASC,EAAUzjD,GAC5F,OAAO,UAAyB,SAAoB0jD,GAClD,OACE,OAAQA,EAAWp8C,KAAOo8C,EAAWljD,MACnC,KAAK,EAKH,OAJAmB,KAAKuqB,WAAagiB,GAAwBluC,EAAE2tC,aAAalwB,YACzD9b,KAAKy7C,kBAAoBz7C,KAAKgiD,wBAAwB3jD,GACtD2B,KAAK69B,YAAc79B,KAAKiiD,kBAAkB5jD,GAC1C0jD,EAAWljD,KAAO,EACXmB,KAAK69B,YAAY4S,QAE1B,KAAK,EACHzwC,KAAKyzC,WAAazzC,KAAKkiD,iBAAiB7jD,GACxC2B,KAAKmiD,YAAcniD,KAAKoiD,iCAAiC/jD,EAAG2B,KAAKyzC,YACjEzzC,KAAKqiD,yBAA2BriD,KAAKsiD,+BAA+BjkD,EAAG2B,KAAKyzC,YAE9E,KAAK,EACL,IAAK,MACH,OAAOsO,EAAWn8C,UAGvBk8C,EAAW9hD,UAGhB,SAAoBuiD,GAClB,OAAOV,EAAY3hD,MAAMF,KAAMC,cAKlC,CACDK,IAAK,mCACLlC,MAAO,SAA0CC,EAAG6C,GAClD,OAAO,OAER,CACDZ,IAAK,iCACLlC,MAAO,SAAwCC,EAAG6C,GAChD,OAAO,OAER,CACDZ,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,OAAOmmC,GAAwBxkC,KAAK69B,YAAa,IAAIiE,GAAyBzjC,EAAEmkD,YAAaxiD,KAAKuqB,cAEnG,CACDjqB,IAAK,oBACLlC,MAAO,SAA2BC,GAChC,OAAO,IAAI2gC,GAA4BmB,GAA8BsiB,GAAIziD,KAAKuqB,cAE/E,CACDjqB,IAAK,0BACLlC,MAAO,SAAiCC,GACtC,OAAO,IAAIyoC,KAEZ,CACDxmC,IAAK,YACLlC,OACMwjD,GAAa,OAAgC,UAAyB,SAASc,IACjF,IAAIrkD,EAAG6C,EACP,OAAO,UAAyB,SAAoByhD,GAClD,OACE,OAAQA,EAAWh9C,KAAOg9C,EAAW9jD,MACnC,KAAK,EAKH,OAJA,QAAUR,EAAI2B,KAAKmiD,mBAAgB,IAAW9jD,GAAKA,EAAEuH,OACrD,QAAU1E,EAAIlB,KAAKqiD,gCAA6B,IAAWnhD,GAAKA,EAAE0E,OAClE5F,KAAKy7C,kBAAkBmH,WACvBD,EAAW9jD,KAAO,EACXmB,KAAK69B,YAAY+kB,WAE1B,KAAK,EACL,IAAK,MACH,OAAOD,EAAW/8C,UAGvB88C,EAAW1iD,UAGhB,WACE,OAAO4hD,EAAW1hD,MAAMF,KAAMC,gBAO7ByhD,EAhGyC,GAiW9CmB,GAAuC,WACzC,SAASA,KACP,OAAgB7iD,KAAM6iD,GAuGf,IACDC,EAlGAC,EAoKR,OAvKA,OAAaF,EAAyB,CAAC,CACrCviD,IAAK,aACLlC,OACM2kD,GAAe,OAAgC,UAAyB,SAASC,EAAU3kD,EAAG6C,GAChG,IAAI+hD,EAAWjjD,KAEf,OAAO,UAAyB,SAAoBkjD,GAClD,OACE,OAAQA,EAAWv9C,KAAOu9C,EAAWrkD,MACnC,KAAK,EAGH,GAFAqkD,EAAW1yC,GAAKxQ,KAAKyzC,WAEjByP,EAAW1yC,GAAI,CACjB0yC,EAAWrkD,KAAO,GAClB,MAoBF,OAjBAmB,KAAKyzC,WAAap1C,EAAEo1C,WACpBzzC,KAAKy7C,kBAAoBp9C,EAAEo9C,kBAC3Bz7C,KAAK0zC,UAAY1zC,KAAKmjD,gBAAgBjiD,GACtClB,KAAKu7C,YAAcv7C,KAAKojD,kBAAkBliD,GAC1ClB,KAAKw7C,aAAex7C,KAAKqjD,mBAAmBniD,GAC5ClB,KAAKsjD,WAAatjD,KAAKujD,iBAAiBriD,GAEvC7C,EAAEsjD,iBAEH3hD,KAAKy7C,kBAAkBxU,mBAAqB,SAAU5oC,GACpD,OAAOq/C,GAA2CuF,EAASK,WAAYjlD,EAAG,IAK5E2B,KAAKu7C,YAAY5H,aAAa8F,uBAAyBwH,GAA2ChH,KAAK,KAAMj6C,KAAKsjD,YAClHJ,EAAWrkD,KAAO,GACX66C,GAAuC15C,KAAKu7C,YAAav7C,KAAKsjD,WAAW3F,iBAElF,KAAK,GACL,IAAK,MACH,OAAOuF,EAAWt9C,UAGvBo9C,EAAWhjD,UAGhB,SAAoBwjD,EAAOC,GACzB,OAAOV,EAAa7iD,MAAMF,KAAMC,cAKnC,CACDK,IAAK,qBACLlC,MAAO,SAA4BC,GACjC,OACS,IAAI48C,KAGd,CACD36C,IAAK,kBACLlC,MAAO,SAAyBC,GAC9B,IAAI6C,EAAIqrC,GAAwBluC,EAAE2tC,aAAalwB,YAC3C1e,EAAI,SAAiCiB,GACvC,OAAO,IAAI6qC,GAA+B7qC,GADpC,CAIPA,EAAE2tC,cAEH,OAAO,SAAgC3tC,EAAG6C,EAAG9D,EAAGkI,GAC9C,OAAO,IAAIusC,GAAwBxzC,EAAG6C,EAAG9D,EAAGkI,GADvC,CAELjH,EAAE4zC,gBAAiB5zC,EAAE6zC,oBAAqB90C,EAAG8D,KAEhD,CACDZ,IAAK,oBACLlC,MAAO,SAA2BC,GAChC,IAAIqlD,EAAW1jD,KAEf,OAAO,SAAkC3B,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GACnD,OAAO,IAAIu1C,GAA0Bl1C,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAD5C,CAINgC,KAAKyzC,WAAYzzC,KAAK0zC,UAAWr1C,EAAE00C,YAAY,SAAU10C,GACxD,OAAOq/C,GAA2CgG,EAASJ,WAAYjlD,EAAG,KAInEgpC,GAAqC9kC,IAAM,IAAI8kC,GAAyC,IAAID,MAGtG,CACD9mC,IAAK,mBACLlC,MAAO,SAA0BC,EAAG6C,GAClC,OAAO,SAAiC7C,EAAG6C,EAAG9D,EAC9CkI,EAAGtH,EAAGE,EAAGvB,GACP,IAAIkS,EAAI,IAAIysC,GAAyBj9C,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,GAEpD,OAAOvB,IAAMkS,EAAEytC,IAAK,GAAKztC,EAJpB,CAKL7O,KAAKyzC,WAAYzzC,KAAKu7C,YAAav7C,KAAKw7C,aAAcx7C,KAAKy7C,kBAAmBp9C,EAAEmkD,YAAankD,EAAEq9C,8BAA+Bx6C,KAEjI,CACDZ,IAAK,YACLlC,OACM0kD,GAAc,OAAgC,UAAyB,SAASa,IAClF,IAAItlD,EACJ,OAAO,UAAyB,SAAoBulD,GAClD,OACE,OAAQA,EAAWj+C,KAAOi+C,EAAW/kD,MACnC,KAAK,EAEH,OADA+kD,EAAW/kD,KAAO,EACX,WACL,IAAIglD,GAA+B,OAAgC,UAAyB,SAASC,EAAUzlD,GAC7G,IAAI6C,EACJ,OAAO,UAAyB,SAAoB6iD,GAClD,OACE,OAAQA,EAAWp+C,KAAOo+C,EAAWllD,MACnC,KAAK,EASH,OARAqC,EAAIoB,EAAoBjE,GAExB2C,EAAmB,cAAe,8BAElCE,EAAE4yC,GAAGngC,IAAI,GAGTowC,EAAWllD,KAAO,EACX21C,GAAiCtzC,GAE1C,KAAK,EACHA,EAAE8yC,GAAG4O,WAGL1hD,EAAEuzC,GAAGhwC,IAAI,WAIX,KAAK,EACL,IAAK,MACH,OAAOs/C,EAAWn+C,UAGvBk+C,OAOL,OAJA,SAAuCE,GACrC,OAAOH,EAA6B3jD,MAAMF,KAAMC,YAlC7C,GAsCHD,KAAKu7C,aAEX,KAAK,EACH,QAAUl9C,EAAI2B,KAAK0zC,iBAAc,IAAWr1C,GAAKA,EAAEu0C,YAErD,KAAK,EACL,IAAK,MACH,OAAOgR,EAAWh+C,UAGvB+9C,EAAW3jD,UAGhB,WACE,OAAO8iD,EAAY5iD,MAAMF,KAAMC,gBAO9B4iD,EA5KkC,GAmT3C,IA+yBIoB,GAA+B,WACjC,SAASA,EAAgB5lD,EAAG6C,EAS5B9D,EAAGkI,GACD,IAAI4+C,EAAWlkD,MAEf,OAAgBA,KAAMikD,GAEtBjkD,KAAKiyC,gBAAkB5zC,EAAG2B,KAAKkyC,oBAAsBhxC,EAAGlB,KAAK+yC,WAAa31C,EAAG4C,KAAKgsC,aAAe1mC,EAAGtF,KAAKqE,KAAOjE,EAAKI,gBAAiBR,KAAKmkD,SAAW37C,EAAiB47C,QAASpkD,KAAKqkD,uBAAyB,WAC5M,OAAOpgD,QAAQC,WACdlE,KAAKskD,2BAA6B,WACnC,OAAOrgD,QAAQC,WACdlE,KAAKiyC,gBAAgBxB,MAAMrzC,EAAgB,WAC5C,IAAImnD,GAAS,OAAgC,UAAyB,SAASC,EAAUnmD,GACvF,OAAO,UAAyB,SAAoBomD,GAClD,OACE,OAAQA,EAAW9+C,KAAO8+C,EAAW5lD,MACnC,KAAK,EAIH,OAHAmC,EAAmB,kBAAmB,iBAAkB3C,EAAEgC,KAE1DokD,EAAW5lD,KAAO,EACXqlD,EAASG,uBAAuBhmD,GAEzC,KAAK,EACH6lD,EAAS7/C,KAAOhG,EAElB,KAAK,EACL,IAAK,MACH,OAAOomD,EAAW7+C,UAGvB4+C,OAGL,OAAO,SAAUE,GACf,OAAOH,EAAOrkD,MAAMF,KAAMC,YAvBgB,IAyBxCD,KAAKkyC,oBAAoBzB,MAAMrzC,GAAG,SAAUiB,GAChD,OAAO2C,EAAmB,kBAAmB,gCAAiC3C,GAAI6lD,EAASI,2BAA2BjmD,EAAG6lD,EAAS7/C,SAoGtI,OAhGA,OAAa4/C,EAAiB,CAAC,CAC7B3jD,IAAK,gBACLyG,IAAK,WACH,MAAO,CACLgsC,WAAY/yC,KAAK+yC,WACjB/G,aAAchsC,KAAKgsC,aACnBmY,SAAUnkD,KAAKmkD,SACflS,gBAAiBjyC,KAAKiyC,gBACtBC,oBAAqBlyC,KAAKkyC,oBAC1BsQ,YAAaxiD,KAAKqE,KAClBq3C,8BAA+B,OAGlC,CACDp7C,IAAK,8BACLlC,MAAO,SAAqCC,GAC1C2B,KAAKqkD,uBAAyBhmD,IAE/B,CACDiC,IAAK,iCACLlC,MAAO,SAAwCC,GAC7C2B,KAAKskD,2BAA6BjmD,IAOnC,CACDiC,IAAK,sBACLlC,MAAO,WACL,GAAI4B,KAAK+yC,WAAW4R,eAAgB,MAAM,IAAInhD,EAAejB,EAAEU,oBAAqB,6CAErF,CACD3C,IAAK,YACLlC,MAAO,WACL,IAAIwmD,EAAW5kD,KAEfA,KAAK+yC,WAAW8R,sBAChB,IAAIxmD,EAAI,IAAIyF,EACZ,OAAO9D,KAAK+yC,WAAW+R,qCAAkD,OAAgC,UAAyB,SAASC,IACzI,IAAI3nD,EACJ,OAAO,UAAyB,SAAoB4nD,GAClD,OACE,OAAQA,EAAWr/C,KAAOq/C,EAAWnmD,MACnC,KAAK,EAIH,GAHAmmD,EAAWr/C,KAAO,EAClBq/C,EAAWx0C,GAAKo0C,EAASK,mBAEpBD,EAAWx0C,GAAI,CAClBw0C,EAAWnmD,KAAO,EAClB,MAIF,OADAmmD,EAAWnmD,KAAO,EACX+lD,EAASK,kBAAkBrS,YAEpC,KAAK,EAGH,GAFAoS,EAAW5yC,GAAKwyC,EAASM,oBAEpBF,EAAW5yC,GAAI,CAClB4yC,EAAWnmD,KAAO,EAClB,MAIF,OADAmmD,EAAWnmD,KAAO,EACX+lD,EAASM,mBAAmBtS,YAErC,KAAK,EAIHgS,EAAS3S,gBAAgB2Q,WAEzBgC,EAAS1S,oBAAoB0Q,WAE7BvkD,EAAE6F,UACF8gD,EAAWnmD,KAAO,GAClB,MAEF,KAAK,GACHmmD,EAAWr/C,KAAO,GAClBq/C,EAAWG,GAAKH,EAAkB,MAAE,GACpC5nD,EAAI49C,GAAuCgK,EAAWG,GAAI,kCAC1D9mD,EAAE8F,OAAO/G,GAEX,KAAK,GACL,IAAK,MACH,OAAO4nD,EAAWp/C,UAGvBm/C,EAAW,KAAM,CAAC,CAAC,EAAG,WACrB1mD,EAAE2F,YAILigD,EAjJ0B,GAoJnC,SAASmB,GAAsCC,EAAOC,GACpD,OAAOC,GAAqCrlD,MAAMF,KAAMC,WAG1D,SAASslD,KAyDP,OAxDAA,IAAuC,OAAgC,UAAyB,SAASC,EAAWnnD,EAAG6C,GACrH,IAAI9D,EAAGkI,EACP,OAAO,UAAyB,SAAqBmgD,GACnD,OACE,OAAQA,EAAY9/C,KAAO8/C,EAAY5mD,MACrC,KAAK,EAIH,OAHAR,EAAE00C,WAAWyG,4BAA6Bx4C,EAAmB,kBAAmB,yCAChF5D,EAAIiB,EAAEqnD,cACND,EAAY5mD,KAAO,EACZqC,EAAEkjC,WAAWhnC,GAEtB,KAAK,EACHkI,EAAIlI,EAAEolD,YACNnkD,EAAEsnD,4BAA0C,WAC1C,IAAIC,GAAS,OAAgC,UAAyB,SAASC,EAAWxnD,GACxF,OAAO,UAAyB,SAAqBynD,GACnD,OACE,OAAQA,EAAYngD,KAAOmgD,EAAYjnD,MACrC,KAAK,EAGH,GAFAinD,EAAYt1C,GAAKlL,EAAEoE,QAAQrL,GAEvBynD,EAAYt1C,GAAI,CAClBs1C,EAAYjnD,KAAO,EACnB,MAIF,OADAinD,EAAYjnD,KAAO,EACZ4lC,GAAqCvjC,EAAEuyC,WAAYp1C,GAE5D,KAAK,EACHiH,EAAIjH,EAEN,KAAK,EACL,IAAK,MACH,OAAOynD,EAAYlgD,UAGxBigD,OAGL,OAAO,SAAUE,GACf,OAAOH,EAAO1lD,MAAMF,KAAMC,YA5Bc,IAgC5CiB,EAAE28B,YAAYmoB,4BAA2B,WACvC,OAAO3nD,EAAEu0C,eACPv0C,EAAE6mD,mBAAqBhkD,EAE7B,KAAK,EACL,IAAK,MACH,OAAOukD,EAAY7/C,UAGxB4/C,OAEED,GAAqCrlD,MAAMF,KAAMC,WAG1D,SAASgmD,GAAqCC,EAAOC,GACnD,OAAOC,GAAoClmD,MAAMF,KAAMC,WAQzD,SAASmmD,KAqCP,OApCAA,IAAsC,OAAgC,UAAyB,SAASC,EAAWhoD,EAAG6C,GACpH,IAAI9D,EACJ,OAAO,UAAyB,SAAqBkpD,GACnD,OACE,OAAQA,EAAY3gD,KAAO2gD,EAAYznD,MACrC,KAAK,EAGH,OAFAR,EAAE00C,WAAWyG,4BACb8M,EAAYznD,KAAO,EACZ0nD,GAAkCloD,GAE3C,KAAK,EAMH,OALAjB,EAAIkpD,EAAYr1C,KAEhBjQ,EAAmB,kBAAmB,wCAEtCslD,EAAYznD,KAAO,EACZqC,EAAEkjC,WAAWhnC,EAAGiB,EAAEqnD,eAE3B,KAAK,EAGHrnD,EAAEsnD,6BAA4B,SAAUtnD,GACtC,OAAO66C,GAA4Ch4C,EAAEq6C,YAAal9C,MAEpEA,EAAEmoD,gCAA+B,SAAUnoD,EAAGjB,GAC5C,OAAO87C,GAA4Ch4C,EAAEq6C,YAAan+C,MAEpEiB,EAAE4mD,kBAAoB/jD,EAExB,KAAK,GACL,IAAK,MACH,OAAOolD,EAAY1gD,UAGxBygD,QAEsCnmD,MAAMF,KAAMC,WAGzD,SAASwmD,GAAwCpoD,GAC/C,MAAO,kBAAoBA,EAAEV,KAAOU,EAAEuF,OAASrB,EAAEU,qBAAuB5E,EAAEuF,OAASrB,EAAEa,gBAAkB,oBAAsBkX,cAAgBjc,aAAaic,eAG1J,KAAOjc,EAAEuF,MAAQ,KAAOvF,EAAEuF,MAE1B,KAAOvF,EAAEuF,KAGX,SAAS2iD,GAAkCG,GACzC,OAAOC,GAAiCzmD,MAAMF,KAAMC,WAGtD,SAAS0mD,KAiEP,OAhEAA,IAAmC,OAAgC,UAAyB,SAASC,EAAWvoD,GAC9G,IAAIjB,EACJ,OAAO,UAAyB,SAAqBypD,GACnD,OACE,OAAQA,EAAYlhD,KAAOkhD,EAAYhoD,MACrC,KAAK,EACH,GAAIR,EAAE6mD,mBAAoB,CACxB2B,EAAYhoD,KAAO,GACnB,MAGF,IAAKR,EAAEyoD,iCAAkC,CACvCD,EAAYhoD,KAAO,GACnB,MAOF,OAJAmC,EAAmB,kBAAmB,gDAEtC6lD,EAAYlhD,KAAO,EACnBkhD,EAAYhoD,KAAO,EACZumD,GAAsC/mD,EAAGA,EAAEyoD,iCAAiCC,UAErF,KAAK,EACHF,EAAYhoD,KAAO,GACnB,MAEF,KAAK,EAKH,GAJAgoD,EAAYlhD,KAAO,EACnBkhD,EAAYr2C,GAAKq2C,EAAmB,MAAE,GAGlCJ,GAFJrpD,EAAIypD,EAAYr2C,IAEgC,CAC9Cq2C,EAAYhoD,KAAO,GACnB,MAGF,MAAMzB,EAER,KAAK,GAIH,OAHAwE,EAAkB,kEAAoExE,GAEtFypD,EAAYhoD,KAAO,GACZumD,GAAsC/mD,EAAG,IAAIqjD,IAEtD,KAAK,GACHmF,EAAYhoD,KAAO,GACnB,MAEF,KAAK,GAIH,OAHAmC,EAAmB,kBAAmB,0CAEtC6lD,EAAYhoD,KAAO,GACZumD,GAAsC/mD,EAAG,IAAIqjD,IAEtD,KAAK,GACH,OAAOmF,EAAYz1C,OAAO,SAAU/S,EAAE6mD,oBAExC,KAAK,GACL,IAAK,MACH,OAAO2B,EAAYjhD,UAGxBghD,EAAY,KAAM,CAAC,CAAC,EAAG,UAEY1mD,MAAMF,KAAMC,WAGtD,SAAS+mD,GAAiCC,GACxC,OAAOC,GAAgChnD,MAAMF,KAAMC,WAGrD,SAASinD,KA2CP,OA1CAA,IAAkC,OAAgC,UAAyB,SAASC,EAAW9oD,GAC7G,OAAO,UAAyB,SAAqB+oD,GACnD,OACE,OAAQA,EAAYzhD,KAAOyhD,EAAYvoD,MACrC,KAAK,EAGH,GAFAuoD,EAAY52C,GAAKnS,EAAE4mD,kBAEfmC,EAAY52C,GAAI,CAClB42C,EAAYvoD,KAAO,GACnB,MAGF,IAAKR,EAAEyoD,iCAAkC,CACvCM,EAAYvoD,KAAO,EACnB,MAMF,OAHAmC,EAAmB,kBAAmB,+CAEtComD,EAAYvoD,KAAO,EACZonD,GAAqC5nD,EAAGA,EAAEyoD,iCAAiCO,SAEpF,KAAK,EACHD,EAAYvoD,KAAO,GACnB,MAEF,KAAK,EAIH,OAHAmC,EAAmB,kBAAmB,yCAEtComD,EAAYvoD,KAAO,GACZonD,GAAqC5nD,EAAG,IAAIwkD,IAErD,KAAK,GACH,OAAOuE,EAAYh2C,OAAO,SAAU/S,EAAE4mD,mBAExC,KAAK,GACL,IAAK,MACH,OAAOmC,EAAYxhD,UAGxBuhD,QAEkCjnD,MAAMF,KAAMC,WAqBrD,SAASqnD,GAAwBjpD,GAC/B,OAAO2oD,GAAiC3oD,GAAGiI,MAAK,SAAUjI,GACxD,OAAOA,EAAEilD,cA2vBb,SAASiE,GAAkClpD,GACzC,IAAI6C,EAAI,GACR,YAAO,IAAW7C,EAAEwsC,iBAAmB3pC,EAAE2pC,eAAiBxsC,EAAEwsC,gBAAiB3pC,EAoB/E,IAAIsmD,GAAK,IAAIhjD,IAuBb,SAASijD,GAAmCppD,EAAG6C,EAAG9D,GAChD,IAAKA,EAAG,MAAM,IAAIoG,EAAejB,EAAEI,iBAAkB,YAAYpB,OAAOlD,EAAG,sCAAsCkD,OAAOL,EAAG,MAiB7H,SAASwmD,GAA+BrpD,GACtC,IAAKsN,GAAYkb,cAAcxoB,GAAI,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,6FAA6FpB,OAAOlD,EAAG,SAASkD,OAAOlD,EAAEN,OAAQ,MAQnN,SAAS4pD,GAAiCtpD,GACxC,GAAIsN,GAAYkb,cAAcxoB,GAAI,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,gGAAgGpB,OAAOlD,EAAG,SAASkD,OAAOlD,EAAEN,OAAQ,MAUrN,SAAS6pD,GAA2BvpD,GAClC,QAAI,IAAWA,EAAG,MAAO,YACzB,GAAI,OAASA,EAAG,MAAO,OACvB,GAAI,iBAAmBA,EAAG,OAAOA,EAAEN,OAAS,KAAOM,EAAI,GAAGkD,OAAOlD,EAAEwpD,UAAU,EAAG,IAAK,QAAS7lD,KAAKC,UAAU5D,GAC7G,GAAI,iBAAmBA,GAAK,kBAAoBA,EAAG,MAAO,GAAKA,EAE/D,GAAI,iBAAmBA,EAAG,CACxB,GAAIA,aAAarB,MAAO,MAAO,WAE7B,IAAIkE,EAEJ,SAA0C7C,GACxC,OAAIA,EAAEX,YAAoBW,EAAEX,YAAYC,KACjC,KAFT,CAYCU,GAED,OAAO6C,EAAI,YAAYK,OAAOL,EAAG,WAAa,YAIlD,MAAO,mBAAqB7C,EAAI,aAAe6D,IAGjD,SAAS4lD,GAAezpD,EACxB6C,GACE,GAAI,cAAe7C,IAEnBA,EAAIA,EAAE0pD,aAAc1pD,aAAa6C,GAAI,CACnC,GAAIA,EAAEvD,OAASU,EAAEX,YAAYC,KAAM,MAAM,IAAI6F,EAAejB,EAAEI,iBAAkB,uGAE9E,IAAIvF,EAAIwqD,GAA2BvpD,GAEnC,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,kBAAkBpB,OAAOL,EAAEvD,KAAM,mBAAmB4D,OAAOnE,IAI5G,OAAOiB,EA+BT,IAAI2pD,GAAqC,WACvC,SAASA,EAAsB3pD,GAG7B,IAAI6C,EAAG9D,EAEP,IAJA,OAAgB4C,KAAMgoD,QAIlB,IAAW3pD,EAAE4d,KAAM,CACrB,QAAI,IAAW5d,EAAE6d,IAAK,MAAM,IAAI1Y,EAAejB,EAAEI,iBAAkB,sDACnE3C,KAAKic,KAAO,2BAA4Bjc,KAAKkc,KAAM,OAC9Clc,KAAKic,KAAO5d,EAAE4d,KAAMjc,KAAKkc,IAAM,QAAUhb,EAAI7C,EAAE6d,WAAQ,IAAWhb,GAAKA,EAE9E,GAAIlB,KAAKioD,YAAc5pD,EAAE4pD,YAAajoD,KAAKkoD,4BAA8B7pD,EAAE6pD,0BAA2BloD,KAAKmoD,WAAa9pD,EAAE8pD,gBAAY,IAAW9pD,EAAE+pD,eAAgBpoD,KAAKooD,eAAiB,aAAc,CACrM,IAAK,IAAM/pD,EAAE+pD,gBAAkB/pD,EAAE+pD,eAAiB,QAAS,MAAM,IAAI5kD,EAAejB,EAAEI,iBAAkB,2CACxG3C,KAAKooD,eAAiB/pD,EAAE+pD,gBAtH9B,SAA6C/pD,EAAG6C,EAAG9D,EAAGkI,GACpD,IAAI,IAAOpE,IAAK,IAAOoE,EAAG,MAAM,IAAI9B,EAAejB,EAAEI,iBAAkB,GAAGpB,OAAOlD,EAAG,SAASkD,OAAOnE,EAAG,+BAuHrGirD,CAAoC,+BAAgChqD,EAAEiqD,6BAA8B,oCAAqCjqD,EAAEkqD,mCAAoCvoD,KAAKsoD,+BAAiCjqD,EAAEiqD,6BAA8BtoD,KAAKsoD,6BAA+BtoD,KAAKuoD,mCAAoC,OAAK,IAAWlqD,EAAEkqD,kCAAoCvoD,KAAKuoD,mCAAoC,EAGjavoD,KAAKuoD,oCAAsClqD,EAAEkqD,kCAAmCvoD,KAAKwoD,+BAAiCjB,GAAkC,QAAUnqD,EAAIiB,EAAEmqD,sCAAmC,IAAWprD,EAAIA,EAAI,IAAK,SAA8CiB,GAC/Q,QAAI,IAAWA,EAAEwsC,eAAgB,CAC/B,GAAIttB,MAAMlf,EAAEwsC,gBAAiB,MAAM,IAAIrnC,EAAejB,EAAEI,iBAAkB,iCAAiCpB,OAAOlD,EAAEwsC,eAAgB,uBACpI,GAAIxsC,EAAEwsC,eAAiB,EAAG,MAAM,IAAIrnC,EAAejB,EAAEI,iBAAkB,iCAAiCpB,OAAOlD,EAAEwsC,eAAgB,kCACjI,GAAIxsC,EAAEwsC,eAAiB,GAAI,MAAM,IAAIrnC,EAAejB,EAAEI,iBAAkB,iCAAiCpB,OAAOlD,EAAEwsC,eAAgB,oCAJ6F,CA6BlO7qC,KAAKwoD,gCAAiCxoD,KAAKsc,kBAAoBje,EAAEie,gBAYpE,OATA,OAAa0rC,EAAuB,CAAC,CACnC1nD,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKic,OAAS5d,EAAE4d,MAAQjc,KAAKkc,MAAQ7d,EAAE6d,KAAOlc,KAAKioD,cAAgB5pD,EAAE4pD,aAAejoD,KAAKooD,iBAAmB/pD,EAAE+pD,gBAAkBpoD,KAAKsoD,+BAAiCjqD,EAAEiqD,8BAAgCtoD,KAAKuoD,oCAAsClqD,EAAEkqD,mCAAqC,SAA2ClqD,EAAG6C,GAC7U,OAAO7C,EAAEwsC,iBAAmB3pC,EAAE2pC,eADiQ,CAE/R7qC,KAAKwoD,+BAAgCnqD,EAAEmqD,iCAAmCxoD,KAAKkoD,4BAA8B7pD,EAAE6pD,2BAA6BloD,KAAKsc,kBAAoBje,EAAEie,oBAItK0rC,EA3DgC,GA8DrCS,GAA2B,WAE7B,SAASA,EAAYpqD,EAAG6C,EAAG9D,EAAGkI,IAC5B,OAAgBtF,KAAMyoD,GAEtBzoD,KAAK0oD,iBAAmBrqD,EAAG2B,KAAK2oD,qBAAuBznD,EAAGlB,KAAK4oD,YAAcxrD,EAAG4C,KAAK6oD,KAAOvjD,EAI5FtF,KAAKsE,KAAO,iBAAkBtE,KAAK8oD,gBAAkB,SAAU9oD,KAAK+oD,UAAY,IAAIf,GAAsB,IAAKhoD,KAAKgpD,iBAAkB,EA2FxI,OAnFA,OAAaP,EAAa,CAAC,CACzBnoD,IAAK,MACLyG,IAAK,WACH,IAAK/G,KAAK6oD,KAAM,MAAM,IAAIrlD,EAAejB,EAAEU,oBAAqB,gFAChE,OAAOjD,KAAK6oD,OAEb,CACDvoD,IAAK,eACLyG,IAAK,WACH,OAAO/G,KAAKgpD,kBAEb,CACD1oD,IAAK,cACLyG,IAAK,WACH,YAAO,IAAW/G,KAAKipD,iBAExB,CACD3oD,IAAK,eACLlC,MAAO,SAAsBC,GAC3B,GAAI2B,KAAKgpD,gBAAiB,MAAM,IAAIxlD,EAAejB,EAAEU,oBAAqB,sKAC1EjD,KAAK+oD,UAAY,IAAIf,GAAsB3pD,QAAI,IAAWA,EAAE4pD,cAAgBjoD,KAAK0oD,iBAAmB,SAA+CrqD,GACjJ,IAAKA,EAAG,OAAO,IAAIqG,EAEnB,OAAQrG,EAAEiG,MACR,IAAK,aACH,OAAO,IAAI2C,EAA4C5I,EAAE6qD,cAAgB,IAAK7qD,EAAE8qD,UAAY,KAAM9qD,EAAE+qD,kBAAoB,MAE1H,IAAK,WACH,OAAO/qD,EAAEgrD,OAEX,QACE,MAAM,IAAI7lD,EAAejB,EAAEI,iBAAkB,sEAXiD,CAalGtE,EAAE4pD,gBAEL,CACD3nD,IAAK,eACLlC,MAAO,WACL,OAAO4B,KAAK+oD,YAEb,CACDzoD,IAAK,kBACLlC,MAAO,WACL,OAAO4B,KAAKgpD,iBAAkB,EAAIhpD,KAAK+oD,YAExC,CACDzoD,IAAK,UACLlC,MAAO,WACL,OAAO4B,KAAKipD,iBAAmBjpD,KAAKipD,eAAiBjpD,KAAK4hD,cAAe5hD,KAAKipD,iBAI/E,CACD3oD,IAAK,SACLlC,MAAO,WACL,MAAO,CACLkrD,IAAKtpD,KAAK6oD,KACV/sC,WAAY9b,KAAK4oD,YACjBW,SAAUvpD,KAAK+oD,aAWlB,CACDzoD,IAAK,aACLlC,MAAO,WAKL,OAA2CC,EAGzC2B,MAFIkB,EAAIsmD,GAAGzgD,IAAI1I,MACT2C,EAAmB,oBAAqB,sBAAuBwmD,GAAGn0C,OAAOhV,GAAI6C,EAAE0xC,aAC9E3uC,QAAQC,UAHV,IAAoC7F,EACrC6C,MAMHunD,EApGsB,GAqH/B,SAASe,GAAyBnrD,EAAG6C,EAAG9D,GACtC,IACIY,EADAsH,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GAGxE/B,GAAKG,EAAIypD,GAAezpD,EAAGoqD,KAAcgB,eACzC9sD,EAAI,GAAG4E,OAAOL,EAAG,KAAKK,OAAOnE,GAEjC,GAAI,6BAA+Bc,EAAE+d,MAAQ/d,EAAE+d,OAAStf,GAAKiF,EAAkB,oGAAqGvD,EAAEqrD,aAAarsD,OAAO2hB,OAAO3hB,OAAO2hB,OAAO,GAAI9gB,GAAI,CACrO+d,KAAMtf,EACNuf,KAAK,KACF5W,EAAEqkD,cAAe,CACpB,IAAIC,EAAMC,EAEV,GAAI,iBAAmBvkD,EAAEqkD,cAAeC,EAAOtkD,EAAEqkD,cAAeE,EAAOzpD,EAAKO,cAAe,CAGzFipD,GAAO,QAAoBtkD,EAAEqkD,cAAe,QAAU3rD,EAAIK,EAAEwqD,YAAS,IAAW7qD,OAAI,EAASA,EAAE8V,QAAQ0I,WAEvG,IAAIstC,EAAMxkD,EAAEqkD,cAAcI,KAAOzkD,EAAEqkD,cAAcK,QAEjD,IAAKF,EAAK,MAAM,IAAItmD,EAAejB,EAAEI,iBAAkB,wDACvDknD,EAAO,IAAIzpD,EAAK0pD,GAElBzrD,EAAEqqD,iBAAmB,IAAI9jD,EAA0C,IAAIR,EAAqBwlD,EAAMC,KA0BtG,IAAII,GAAqB,WAIvB,SAASA,EAAM5rD,EAIf6C,EAAG9D,IACD,OAAgB4C,KAAMiqD,GAEtBjqD,KAAKkqD,UAAYhpD,EAAGlB,KAAKmqD,OAAS/sD,EAElC4C,KAAKsE,KAAO,QAAStE,KAAKoqD,UAAY/rD,EAUxC,OAPA,OAAa4rD,EAAO,CAAC,CACnB3pD,IAAK,gBACLlC,MAAO,SAAuBC,GAC5B,OAAO,IAAI4rD,EAAMjqD,KAAKoqD,UAAW/rD,EAAG2B,KAAKmqD,YAItCF,EAvBgB,GAgCrBI,GAAiC,WAEnC,SAASA,EAAkBhsD,EAI3B6C,EAAG9D,IACD,OAAgB4C,KAAMqqD,GAEtBrqD,KAAKkqD,UAAYhpD,EAAGlB,KAAKmB,KAAO/D,EAEhC4C,KAAKsE,KAAO,WAAYtE,KAAKoqD,UAAY/rD,EA2C3C,OAxCA,OAAagsD,EAAmB,CAAC,CAC/B/pD,IAAK,QACLyG,IAAK,WACH,OAAO/G,KAAKmB,KAAKyK,OAMlB,CACDtL,IAAK,KACLyG,IAAK,WACH,OAAO/G,KAAKmB,KAAKyK,KAAKE,gBAOvB,CACDxL,IAAK,OACLyG,IAAK,WACH,OAAO/G,KAAKmB,KAAKyK,KAAKnB,oBAMvB,CACDnK,IAAK,SACLyG,IAAK,WACH,OAAO,IAAIujD,GAAoBtqD,KAAKoqD,UAAWpqD,KAAKkqD,UAAWlqD,KAAKmB,KAAKyK,KAAKC,aAE/E,CACDvL,IAAK,gBACLlC,MAAO,SAAuBC,GAC5B,OAAO,IAAIgsD,EAAkBrqD,KAAKoqD,UAAW/rD,EAAG2B,KAAKmB,UAIlDkpD,EAtD4B,GA8DjCC,GAAmC,SAAUC,IAC/C,OAAUD,EAAqBC,GAE/B,IAAIC,EAAWrrD,EAAamrD,GAG5B,SAASA,EAAoBjsD,EAAG6C,EAAG9D,GACjC,IAAIqtD,EAOJ,OALA,OAAgBzqD,KAAMsqD,IAEtBG,EAAWD,EAAShtD,KAAKwC,KAAM3B,EAAG6C,EAAGukB,GAA0BroB,KAAcstD,MAAQttD,EAErFqtD,EAASnmD,KAAO,aACTmmD,EAyCT,OApCA,OAAaH,EAAqB,CAAC,CACjChqD,IAAK,KACLyG,IAAK,WACH,OAAO/G,KAAKmqD,OAAOv+C,KAAKE,gBAOzB,CACDxL,IAAK,OACLyG,IAAK,WACH,OAAO/G,KAAKmqD,OAAOv+C,KAAKnB,oBAOzB,CACDnK,IAAK,SACLyG,IAAK,WACH,IAAI1I,EAAI2B,KAAK0qD,MAAM7+C,UAEnB,OAAOxN,EAAEyY,UAAY,KAAO,IAAIuzC,GAAkBrqD,KAAKoqD,UAEvD,KAAM,IAAIz+C,GAAYtN,MAEvB,CACDiC,IAAK,gBACLlC,MAAO,SAAuBC,GAC5B,OAAO,IAAIisD,EAAoBtqD,KAAKoqD,UAAW/rD,EAAG2B,KAAK0qD,WAIpDJ,EAvD8B,CAwDrCL,IAEF,SAASU,GAAWtsD,EAAG6C,GACrB,IAAK,IAAI0pD,EAAQ3qD,UAAUlC,OAAQX,EAAI,IAAIJ,MAAM4tD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACrGztD,EAAEytD,EAAQ,GAAK5qD,UAAU4qD,GAG3B,GAAIxsD,GAAI,QAAmBA,GAAIopD,GAAmC,aAAc,OAAQvmD,GAAI7C,aAAaoqD,GAAa,CACpH,IAAInjD,EAAI8E,GAAa2B,WAAW7L,MAAMkK,GAAc,CAAClJ,GAAGK,OAAOnE,IAC/D,OAAOuqD,GAAiCriD,GAAI,IAAIglD,GAAoBjsD,EAEpE,KAAMiH,GAIN,KAAMjH,aAAagsD,IAAqBhsD,aAAaisD,IAAsB,MAAM,IAAI9mD,EAAejB,EAAEI,iBAAkB,iHAExH,IAAImoD,EAAOzsD,EAAEqsD,MAAMzqC,MAAM7V,GAAa2B,WAAW7L,MAAMkK,GAAc,CAAClJ,GAAGK,OAAOnE,KAEhF,OAAOuqD,GAAiCmD,GAAO,IAAIR,GAAoBjsD,EAAE+rD,UAEzE,KAAMU,GA8FV,IAAIC,GAAwC,WAC1C,SAASA,IACP,IAAIC,EAAWhrD,MAEf,OAAgBA,KAAM+qD,GAGtB/qD,KAAKirD,GAAKhnD,QAAQC,UAElBlE,KAAKkrD,GAAK,GAEVlrD,KAAKmrD,IAAK,EAEVnrD,KAAKorD,GAAK,GACVprD,KAAKqrD,GAAK,KAEVrrD,KAAKsrD,IAAK,EACVtrD,KAAKurD,IAAK,EACVvrD,KAAKwrD,GAAK,GACVxrD,KAAKmuC,GAAK,IAAI3B,GAA6BxsC,KAAM,qBAKjDA,KAAKyrD,GAAK,WACR,IAAIptD,EAAIw6B,KACRx6B,GAAK2C,EAAmB,aAAc,+BAAiC3C,EAAEqtD,iBAAkBV,EAAS7c,GAAGwd,MAEzG,IAAIttD,EAAIw6B,KACRx6B,GAAK,mBAAqBA,EAAEypC,kBAAoBzpC,EAAEypC,iBAAiB,mBAAoB9nC,KAAKyrD,IAiNrF,IACDG,EA9IAC,EA+PR,OAhUA,OAAad,EAA0B,CAAC,CACtCzqD,IAAK,iBACLyG,IAAK,WACH,OAAO/G,KAAKmrD,KAOb,CACD7qD,IAAK,mBACLlC,MAAO,SAA0BC,GAE/B2B,KAAK8rD,QAAQztD,KAEd,CACDiC,IAAK,sCACLlC,MAAO,SAA6CC,GAClD2B,KAAK+rD,KACL/rD,KAAKgsD,GAAG3tD,KAET,CACDiC,IAAK,sBACLlC,MAAO,SAA6BC,GAClC,IAAK2B,KAAKmrD,GAAI,CACZnrD,KAAKmrD,IAAK,EAAInrD,KAAKurD,GAAKltD,IAAK,EAC7B,IAAI6C,EAAI23B,KACR33B,GAAK,mBAAqBA,EAAE2mC,qBAAuB3mC,EAAE2mC,oBAAoB,mBAAoB7nC,KAAKyrD,OAGrG,CACDnrD,IAAK,UACLlC,MAAO,SAAiBC,GACtB,IAAI4tD,EAAWjsD,KAEf,GAAIA,KAAK+rD,KAAM/rD,KAAKmrD,GAClB,OAAO,IAAIlnD,SAAQ,eAIrB,IAAI/C,EAAI,IAAI4C,EACZ,OAAO9D,KAAKgsD,IAAG,WACb,OAAOC,EAASd,IAAMc,EAASV,GAAKtnD,QAAQC,WAAa7F,IAAIiI,KAAKpF,EAAEgD,QAAShD,EAAEiD,QAASjD,EAAE8C,YACzFsC,MAAK,WACN,OAAOpF,EAAE8C,aAGZ,CACD1D,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,IAAI6tD,EAAWlsD,KAEfA,KAAK2wC,kBAAiB,WACpB,OAAOub,EAAShB,GAAGjhD,KAAK5L,GAAI6tD,EAASC,UAQxC,CACD7rD,IAAK,KACLlC,OACMytD,GAAM,OAAgC,UAAyB,SAASO,IAC1E,IAAIC,EAAWrsD,KAEf,OAAO,UAAyB,SAAoBssD,GAClD,OACE,OAAQA,EAAW3mD,KAAO2mD,EAAWztD,MACnC,KAAK,EACH,GAAM,IAAMmB,KAAKkrD,GAAGntD,OAAS,CAC3BuuD,EAAWztD,KAAO,GAClB,MAKF,OAFAytD,EAAW3mD,KAAO,EAClB2mD,EAAWztD,KAAO,EACXmB,KAAKkrD,GAAG,KAEjB,KAAK,EACHlrD,KAAKkrD,GAAGzuB,QACRz8B,KAAKmuC,GAAGlB,QACRqf,EAAWztD,KAAO,GAClB,MAEF,KAAK,EAIH,GAHAytD,EAAW3mD,KAAO,EAClB2mD,EAAW97C,GAAK87C,EAAkB,MAAE,GAEhC74C,GAAsC64C,EAAW97C,IAAK,CACxD87C,EAAWztD,KAAO,GAClB,MAGF,MAAMytD,EAAW97C,GAEnB,KAAK,GAEHxP,EAAmB,aAAc,0CAA4CsrD,EAAW97C,IAE1F,KAAK,GACHxQ,KAAKkrD,GAAGntD,OAAS,GAUjBiC,KAAKmuC,GAAGmC,IAAG,WACT,OAAO+b,EAASF,QAGpB,KAAK,GACL,IAAK,MACH,OAAOG,EAAW1mD,UAGvBwmD,EAAWpsD,KAAM,CAAC,CAAC,EAAG,SAG3B,WACE,OAAO6rD,EAAI3rD,MAAMF,KAAMC,cAK1B,CACDK,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAIkuD,EAAWvsD,KAEXkB,EAAIlB,KAAKirD,GAAG3kD,MAAK,WACnB,OAAOimD,EAASjB,IAAK,EAAIjtD,IAAI4T,OAAM,SAAU5T,GAC3CkuD,EAASlB,GAAKhtD,EAAGkuD,EAASjB,IAAK,EAE/B,IAAIpqD,EAMJ,SAAqC7C,GACnC,IAAI6C,EAAI7C,EAAEwF,SAAW,GAErB,OADAxF,EAAEmuD,QAAUtrD,EAAI7C,EAAEmuD,MAAMC,SAASpuD,EAAEwF,SAAWxF,EAAEmuD,MAAQnuD,EAAEwF,QAAU,KAAOxF,EAAEmuD,OACtEtrD,EAHT,CAqBC7C,GAKD,MAAMmD,EAAmB,6BAA8BN,GAAI7C,KAC1DiI,MAAK,SAAUjI,GAChB,OAAOkuD,EAASjB,IAAK,EAAIjtD,QAG7B,OAAO2B,KAAKirD,GAAK/pD,EAAGA,IAErB,CACDZ,IAAK,oBACLlC,MAAO,SAA2BC,EAAG6C,EAAG9D,GACtC,IAAIsvD,EAAW1sD,KAEfA,KAAK+rD,KACL/rD,KAAKwrD,GAAGzgD,QAAQ1M,IAAM,IAAM6C,EAAI,GAChC,IAAIoE,EAAIg1C,GAAiBqS,kBAAkB3sD,KAAM3B,EAAG6C,EAAG9D,GAAG,SAAUiB,GAClE,OAAOquD,EAASE,GAAGvuD,MAErB,OAAO2B,KAAKorD,GAAGnhD,KAAK3E,GAAIA,IAEzB,CACDhF,IAAK,KACLlC,MAAO,WACL4B,KAAKqrD,IAAMnpD,MAEZ,CACD5B,IAAK,4BACLlC,MAAO,cAMN,CACDkC,IAAK,KACLlC,OACMwtD,GAAM,OAAgC,UAAyB,SAASiB,IAC1E,IAAIxuD,EACJ,OAAO,UAAyB,SAAoByuD,GAClD,OACE,OAAQA,EAAWnnD,KAAOmnD,EAAWjuD,MACnC,KAAK,EAGH,OAFAR,EAAI2B,KAAKirD,GACT6B,EAAWjuD,KAAO,EACXR,EAET,KAAK,EACH,GAAIA,IAAM2B,KAAKirD,GAAI,CACjB6B,EAAWjuD,KAAO,EAClB,MAGJ,KAAK,EACL,IAAK,MACH,OAAOiuD,EAAWlnD,UAGvBinD,EAAW7sD,UAGhB,WACE,OAAO4rD,EAAI1rD,MAAMF,KAAMC,cAU1B,CACDK,IAAK,KACLlC,MAAO,SAAYC,GACjB,IACI0uD,EADAC,EAActwD,EAA2BsD,KAAKorD,IAGlD,IACE,IAAK4B,EAAY9uD,MAAO6uD,EAAUC,EAAY5vD,KAAKe,MAAO,CAExD,GADQ4uD,EAAQ3uD,MACVsuC,UAAYruC,EAAG,OAAO,GAE9B,MAAOI,GACPuuD,EAAY3uD,EAAEI,GACd,QACAuuD,EAAYzuD,IAGd,OAAO,IAUR,CACD+B,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI4uD,EAAWjtD,KAGf,OAAOA,KAAKktD,KAAK5mD,MAAK,WAEpB2mD,EAAS7B,GAAGlyC,MAAK,SAAU7a,EAAG6C,GAC5B,OAAO7C,EAAEk8C,aAAer5C,EAAEq5C,gBAG5B,IACI4S,EADAC,EAAc1wD,EAA2BuwD,EAAS7B,IAGtD,IACE,IAAKgC,EAAYlvD,MAAOivD,EAAUC,EAAYhwD,KAAKe,MAAO,CACxD,IAAI+C,EAAIisD,EAAQ/uD,MAChB,GAAI8C,EAAEosC,YAAa,QAEfjvC,GAAK6C,EAAEwrC,UAAYruC,EAAG,OAE5B,MAAOI,GACP2uD,EAAY/uD,EAAEI,GACd,QACA2uD,EAAY7uD,IAGd,OAAO0uD,EAASC,UAOnB,CACD5sD,IAAK,KACLlC,MAAO,SAAYC,GACjB2B,KAAKwrD,GAAGvhD,KAAK5L,KAId,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GAEjB,IAAI6C,EAAIlB,KAAKorD,GAAGrgD,QAAQ1M,GACxB2B,KAAKorD,GAAGnjC,OAAO/mB,EAAG,OAIf6pD,EAhWmC,GAsZ5C,IA8HIsC,GAAyB,SAAUC,IACrC,OAAUD,EAAWC,GAErB,IAAIC,EAAWpuD,EAAakuD,GAG5B,SAASA,EAAUhvD,EAAG6C,EAAG9D,EAAGkI,GAC1B,IAAIkoD,EAWJ,OATA,OAAgBxtD,KAAMqtD,IAEtBG,EAAWD,EAAS/vD,KAAKwC,KAAM3B,EAAG6C,EAAG9D,EAAGkI,IAI/BhB,KAAO,YAAakpD,EAASC,OAC7B,IAAI1C,GACRyC,EAAS1E,iBAAmB,MAAQxjD,OAAI,EAASA,EAAE3H,OAAS,YAC1D6vD,EAYT,OATA,OAAaH,EAAW,CAAC,CACvB/sD,IAAK,aACLlC,MAAO,WACL,OAAO4B,KAAK0tD,kBAEZC,GAA6B3tD,MAAOA,KAAK0tD,iBAAiB9a,gBAIvDya,EA9BoB,CA+B3B5E,IAsCF,SAASmF,GAAa1sD,EAAG9D,GACvB,IAAIkI,EAAI,iBAAmBpE,EAAIA,GAAI,UAC/BlD,EAAI,iBAAmBkD,EAAIA,EAAI9D,GAAK,YACpCc,GAAI,QAAaoH,EAAG,aAAaY,aAAa,CAChD2nD,WAAY7vD,IAGd,IAAKE,EAAE4vD,aAAc,CACnB,IAAIzvD,GAAI,QAAkC,aAC1CA,GAAKmrD,GAAyBtpD,WAAM,EAAQ,CAAChC,GAAGqD,QAAO,OAAmBlD,KAG5E,OAAOH,EAOT,SAAS6vD,GAA0B1vD,GACjC,OAAOA,EAAEqvD,kBAAoBC,GAA6BtvD,GAAIA,EAAEqvD,iBAAiBM,sBAAuB3vD,EAAEqvD,iBAG5G,SAASC,GAA6BtvD,GACpC,IAAI6C,EAAG9D,EAAGkI,EAENtH,EAAIK,EAAE4vD,kBACN/vD,EAAI,SAAoCG,EAAG6C,EAAG9D,EAAGkI,GACnD,OAAO,IAAIuW,GAAaxd,EAAG6C,EAAG9D,EAAGkI,EAAE2W,KAAM3W,EAAE4W,IAAK5W,EAAEgjD,6BAA8BhjD,EAAEijD,kCAAmChB,GAAkCjiD,EAAEkjD,gCAAiCljD,EAAEgX,iBADtL,CAENje,EAAEuqD,aAAc,QAAU1nD,EAAI7C,EAAEwqD,YAAS,IAAW3nD,OAAI,EAASA,EAAE4S,QAAQiI,QAAU,GAAI1d,EAAEyqD,gBAAiB9qD,GAE9GK,EAAEqvD,iBAAmB,IAAIzJ,GAAgB5lD,EAAEqqD,iBAAkBrqD,EAAEsqD,qBAAsBtqD,EAAEovD,OAAQvvD,IAAK,QAAUd,EAAIY,EAAEmqD,kBAAe,IAAW/qD,OAAI,EAASA,EAAE8wD,6BAA+B,QAAU5oD,EAAItH,EAAEmqD,kBAAe,IAAW7iD,OAAI,EAASA,EAAE6oD,4BAA8B9vD,EAAEqvD,iBAAiB5G,iCAAmC,CACvUsH,aAAcpwD,EAAEmqD,WAAWkG,KAC3BtH,SAAU/oD,EAAEmqD,WAAW+F,0BACvB7G,QAASrpD,EAAEmqD,WAAWgG,2BAqZ1B,IA2EIG,GAAqB,WAEvB,SAASA,EAAMjwD,IACb,OAAgB2B,KAAMsuD,GAEtBtuD,KAAKuuD,YAAclwD,EA6ErB,OAnEA,OAAaiwD,EAAO,CAAC,CACnBhuD,IAAK,WACLlC,MAMA,WACE,OAAO4B,KAAKuuD,YAAY/vC,aAQzB,CACDle,IAAK,eACLlC,MAAO,WACL,OAAO4B,KAAKuuD,YAAYt9B,iBAQzB,CACD3wB,IAAK,WACLlC,MAAO,WACL,MAAO,iBAAmB4B,KAAKwe,WAAa,MAS7C,CACDle,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKuuD,YAAY7kD,QAAQrL,EAAEkwD,gBAElC,CAAC,CACHjuD,IAAK,mBACLlC,MAAO,SAA0BC,GAC/B,IACE,OAAO,IAAIiwD,EAAMv0C,GAAWmB,iBAAiB7c,IAC7C,MAAOA,GACP,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,gDAAkDtE,MASlG,CACDiC,IAAK,iBACLlC,MAAO,SAAwBC,GAC7B,OAAO,IAAIiwD,EAAMv0C,GAAWoB,eAAe9c,QAIxCiwD,EAlFgB,GA+GrBE,GAAyB,WAO3B,SAASA,KACP,OAAgBxuD,KAAMwuD,GAEtB,IAAK,IAAIC,EAAQxuD,UAAUlC,OAAQM,EAAI,IAAIrB,MAAMyxD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACjFrwD,EAAEqwD,GAASzuD,UAAUyuD,GAGvB,IAAK,IAAIxtD,EAAI,EAAGA,EAAI7C,EAAEN,SAAUmD,EAC9B,GAAI,IAAM7C,EAAE6C,GAAGnD,OAAQ,MAAM,IAAIyF,EAAejB,EAAEI,iBAAkB,2EAGtE3C,KAAK2uD,cAAgB,IAAIxjD,GAAY9M,GAiBvC,OAPA,OAAamwD,EAAW,CAAC,CACvBluD,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAK2uD,cAAcjlD,QAAQrL,EAAEswD,mBAIjCH,EAnCoB,GAqE7B,IAAII,IAA0B,QAK9B,SAASA,EAAWvwD,IAClB,OAAgB2B,KAAM4uD,GAEtB5uD,KAAK6uD,YAAcxwD,KA4BjBywD,GAAwB,WAO1B,SAASA,EAASzwD,EAAG6C,GAGnB,IAFA,OAAgBlB,KAAM8uD,IAEjBC,SAAS1wD,IAAMA,GAAK,IAAMA,EAAI,GAAI,MAAM,IAAImF,EAAejB,EAAEI,iBAAkB,0DAA4DtE,GAChJ,IAAK0wD,SAAS7tD,IAAMA,GAAK,KAAOA,EAAI,IAAK,MAAM,IAAIsC,EAAejB,EAAEI,iBAAkB,6DAA+DzB,GACrJlB,KAAKgvD,KAAO3wD,EAAG2B,KAAKivD,MAAQ/tD,EAuD9B,OAhDA,OAAa4tD,EAAU,CAAC,CACtBxuD,IAAK,WACLyG,IAAK,WACH,OAAO/G,KAAKgvD,OAMb,CACD1uD,IAAK,YACLyG,IAAK,WACH,OAAO/G,KAAKivD,QASb,CACD3uD,IAAK,UACLlC,MAAO,SAAiBC,GACtB,OAAO2B,KAAKgvD,OAAS3wD,EAAE2wD,MAAQhvD,KAAKivD,QAAU5wD,EAAE4wD,QAIjD,CACD3uD,IAAK,SACLlC,MAAO,WACL,MAAO,CACL8e,SAAUld,KAAKgvD,KACf7xC,UAAWnd,KAAKivD,SAQnB,CACD3uD,IAAK,aACLlC,MAAO,SAAoBC,GACzB,OAAOqK,EAA8B1I,KAAKgvD,KAAM3wD,EAAE2wD,OAAStmD,EAA8B1I,KAAKivD,MAAO5wD,EAAE4wD,WAIpGH,EAnEmB,GAuFxBI,GAAK,WAGLC,GAA6B,WAC/B,SAASA,EAAc9wD,EAAG6C,EAAG9D,IAC3B,OAAgB4C,KAAMmvD,GAEtBnvD,KAAKwY,KAAOna,EAAG2B,KAAK4tB,UAAY1sB,EAAGlB,KAAKgtB,gBAAkB5vB,EAU5D,OAPA,OAAa+xD,EAAe,CAAC,CAC3B7uD,IAAK,aACLlC,MAAO,SAAoBC,EAAG6C,GAC5B,OAAO,OAASlB,KAAK4tB,UAAY,IAAIf,GAAwBxuB,EAAG2B,KAAKwY,KAAMxY,KAAK4tB,UAAW1sB,EAAGlB,KAAKgtB,iBAAmB,IAAIR,GAAsBnuB,EAAG2B,KAAKwY,KAAMtX,EAAGlB,KAAKgtB,qBAInKmiC,EAdwB,GAqCjC,SAASC,GAAkB/wD,GACzB,OAAQA,GACN,KAAK,EAIL,KAAK,EAIL,KAAK,EAGH,OAAO,EAET,KAAK,EAGL,KAAK,EAGH,OAAO,EAET,QACE,MAAM6D,KAMZ,IAAImtD,GAA0C,WAmB5C,SAASA,EAA2BhxD,EAAG6C,EAAG9D,EAAGkI,EAAGtH,EAAGE,IACjD,OAAgB8B,KAAMqvD,GAEtBrvD,KAAKupD,SAAWlrD,EAAG2B,KAAK8b,WAAa5a,EAAGlB,KAAKuqB,WAAantB,EAAG4C,KAAKkoD,0BAA4B5iD,OAE9F,IAAWtH,GAAKgC,KAAKsvD,KAAMtvD,KAAKgtB,gBAAkBhvB,GAAK,GAAIgC,KAAK4tB,UAAY1vB,GAAK,GAqFnF,OAlFA,OAAamxD,EAA4B,CAAC,CACxC/uD,IAAK,OACLyG,IAAK,WACH,OAAO/G,KAAKupD,SAAS39C,OAEtB,CACDtL,IAAK,KACLyG,IAAK,WACH,OAAO/G,KAAKupD,SAASgG,KAItB,CACDjvD,IAAK,KACLlC,MAAO,SAAYC,GACjB,OAAO,IAAIgxD,EAA2BhyD,OAAO2hB,OAAO3hB,OAAO2hB,OAAO,GAAIhf,KAAKupD,UAAWlrD,GAAI2B,KAAK8b,WAAY9b,KAAKuqB,WAAYvqB,KAAKkoD,0BAA2BloD,KAAKgtB,gBAAiBhtB,KAAK4tB,aAExL,CACDttB,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI6C,EACA9D,EAAI,QAAU8D,EAAIlB,KAAK4L,YAAS,IAAW1K,OAAI,EAASA,EAAE+e,MAAM5hB,GAChEiH,EAAItF,KAAKwvD,GAAG,CACd5jD,KAAMxO,EACNqyD,IAAI,IAEN,OAAOnqD,EAAEoqD,GAAGrxD,GAAIiH,IAEjB,CACDhF,IAAK,KACLlC,MAAO,SAAYC,GACjB,IAAI6C,EACA9D,EAAI,QAAU8D,EAAIlB,KAAK4L,YAAS,IAAW1K,OAAI,EAASA,EAAE+e,MAAM5hB,GAChEiH,EAAItF,KAAKwvD,GAAG,CACd5jD,KAAMxO,EACNqyD,IAAI,IAEN,OAAOnqD,EAAEgqD,KAAMhqD,IAEhB,CACDhF,IAAK,KACLlC,MAAO,SAAYC,GAGjB,OAAO2B,KAAKwvD,GAAG,CACb5jD,UAAM,EACN6jD,IAAI,MAGP,CACDnvD,IAAK,KACLlC,MAAO,SAAYC,GACjB,OAAOsxD,GAAsBtxD,EAAG2B,KAAKupD,SAASqG,WAAY5vD,KAAKupD,SAASsG,KAAM,EAAI7vD,KAAK4L,KAAM5L,KAAKupD,SAASuG,MAI5G,CACDxvD,IAAK,WACLlC,MAAO,SAAkBC,GACvB,YAAO,IAAW2B,KAAK4tB,UAAUhQ,MAAK,SAAU1c,GAC9C,OAAO7C,EAAEqb,WAAWxY,YAChB,IAAWlB,KAAKgtB,gBAAgBpP,MAAK,SAAU1c,GACnD,OAAO7C,EAAEqb,WAAWxY,EAAEse,YAGzB,CACDlf,IAAK,KACLlC,MAAO,WAGL,GAAI4B,KAAK4L,KAAM,IAAK,IAAIvN,EAAI,EAAGA,EAAI2B,KAAK4L,KAAK7N,OAAQM,IACnD2B,KAAK0vD,GAAG1vD,KAAK4L,KAAK7E,IAAI1I,MAGzB,CACDiC,IAAK,KACLlC,MAAO,SAAYC,GACjB,GAAI,IAAMA,EAAEN,OAAQ,MAAMiC,KAAK+vD,GAAG,qCAClC,GAAIX,GAAkBpvD,KAAKuvD,KAAOL,GAAGrxD,KAAKQ,GAAI,MAAM2B,KAAK+vD,GAAG,sDAIzDV,EA7GqC,GAqH1CW,GAAwC,WAC1C,SAASA,EAAyB3xD,EAAG6C,EAAG9D,IACtC,OAAgB4C,KAAMgwD,GAEtBhwD,KAAK8b,WAAazd,EAAG2B,KAAKkoD,0BAA4BhnD,EAAGlB,KAAKuqB,WAAantB,GAAKmvC,GAAwBluC,GAoB1G,OAfA,OAAa2xD,EAA0B,CAAC,CACtC1vD,IAAK,KACLlC,MAAO,SAAYC,EAAG6C,EAAG9D,GACvB,IAAIkI,EAAIrF,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,IAAmBA,UAAU,GACvE,OAAO,IAAIovD,GAA2B,CACpCE,GAAIlxD,EACJuxD,WAAY1uD,EACZ4uD,GAAI1yD,EACJwO,KAAMT,GAAYc,YAClBwjD,IAAI,EACJI,GAAIvqD,GACHtF,KAAK8b,WAAY9b,KAAKuqB,WAAYvqB,KAAKkoD,+BAIvC8H,EAxBmC,GA2B5C,SAASC,GAA4B5xD,GACnC,IAAI6C,EAAI7C,EAAE4vD,kBACN7wD,EAAImvC,GAAwBluC,EAAEuqD,aAElC,OAAO,IAAIoH,GAAyB3xD,EAAEuqD,cAAe1nD,EAAEgnD,0BAA2B9qD,GAKpF,SAAS8yD,GAAuB7xD,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GAC1C,IAAIE,EAAI+B,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,GAAmBA,UAAU,GAAK,GACxEtD,EAAI0B,EAAE8xD,GAAGjyD,EAAEkyD,OAASlyD,EAAEmyD,YAAc,EAEtC,EAEAnvD,EAAG9D,EAAGY,GAERsyD,GAA8B,sCAAuC3zD,EAAG2I,GAExE,IAEIwJ,EAAGvJ,EAFHsJ,EAAI0hD,GAAsBjrD,EAAG3I,GAGjC,GAAIuB,EAAEkyD,MAAOthD,EAAI,IAAImK,GAAUtc,EAAEixB,WAAYroB,EAAI5I,EAAEqwB,qBAAqB,GAAI9uB,EAAEmyD,YAAa,CACzF,IAGIG,EAHAC,EAAQ,GAERC,EAAch0D,EAA2BwB,EAAEmyD,aAG/C,IACE,IAAKK,EAAYxyD,MAAOsyD,EAAUE,EAAYtzD,KAAKe,MAAO,CACxD,IAAIwyD,EAAOH,EAAQpyD,MAEfwyD,EAAOC,GAAkC3vD,EAAGyvD,EAAMvzD,GAEtD,IAAKT,EAAEm0D,SAASF,GAAO,MAAM,IAAIptD,EAAejB,EAAEI,iBAAkB,UAAUpB,OAAOqvD,EAAM,wEAC3FG,GAA4BN,EAAOG,IAASH,EAAMxmD,KAAK2mD,IAEzD,MAAOnyD,GACPiyD,EAAYryD,EAAEI,GACd,QACAiyD,EAAYnyD,IAGduQ,EAAI,IAAImK,GAAUw3C,GAAQlrD,EAAI5I,EAAEqwB,gBAAgB/hB,QAAO,SAAU5M,GAC/D,OAAOyQ,EAAEkiD,OAAO3yD,EAAEmhB,eAEf1Q,EAAI,KAAMvJ,EAAI5I,EAAEqwB,gBACvB,OAAO,IAAImiC,GAAc,IAAIjwC,GAAYrQ,GAAIC,EAAGvJ,GAsSlD,SAAS0rD,GAAoB5yD,EAAG6C,GAC9B,GAAIgwD,GAEJ7yD,GAAI,QAAmBA,IAAK,OAAOiyD,GAA8B,2BAA4BpvD,EAAG7C,GAAIkyD,GAAsBlyD,EAAG6C,GAC7H,GAAI7C,aAAauwD,GAUf,OAAO,SAA2CvwD,EAAG6C,GAEnD,IAAKkuD,GAAkBluD,EAAEquD,IAAK,MAAMruD,EAAE6uD,GAAG,GAAGxuD,OAAOlD,EAAEwwD,YAAa,gDAClE,IAAK3tD,EAAE0K,KAAM,MAAM1K,EAAE6uD,GAAG,GAAGxuD,OAAOlD,EAAEwwD,YAAa,gDAEjD,IAAIzxD,EAAIiB,EAAE8yD,kBAAkBjwD,GAE5B9D,GAAK8D,EAAE8rB,gBAAgB/iB,KAAK7M,GAPvB,CAcNiB,EAAG6C,GAAI,KACV,QAAI,IAAW7C,GAAK6C,EAAEgnD,0BAGpB,OAAO,KAET,GAEAhnD,EAAE0K,MAAQ1K,EAAE0sB,UAAU3jB,KAAK/I,EAAE0K,MAAOvN,aAAarB,MAAO,CAOtD,GAAIkE,EAAEqoD,SAASkG,IAAM,IAEjBvuD,EAAEquD,GAAI,MAAMruD,EAAE6uD,GAAG,mCACrB,OAAO,SAA8B1xD,EAAG6C,GACtC,IAIIkwD,EAJAh0D,EAAI,GACJkI,EAAI,EAEJ+rD,EAAc30D,EAA2B2B,GAG7C,IACE,IAAKgzD,EAAYnzD,MAAOkzD,EAAUC,EAAYj0D,KAAKe,MAAO,CACxD,IAEImzD,EAAQL,GAFJG,EAAQhzD,MAEmB8C,EAAEqwD,GAAGjsD,IAExC,MAAQgsD,IAERA,EAAQ,CACNltC,UAAW,eACThnB,EAAE6M,KAAKqnD,GAAQhsD,KAErB,MAAO7G,GACP4yD,EAAYhzD,EAAEI,GACd,QACA4yD,EAAY9yD,IAGd,MAAO,CACLif,WAAY,CACVC,OAAQrgB,IA3BP,CA8BLiB,EAAG6C,GAGP,OAAO,SAAoC7C,EAAG6C,GAC5C,GAAI,QAAU7C,GAAI,QAAmBA,IAAK,MAAO,CAC/C+lB,UAAW,cAEb,GAAI,iBAAmB/lB,EAAG,OAAOurB,GAAS1oB,EAAEqpB,WAAYlsB,GACxD,GAAI,kBAAoBA,EAAG,MAAO,CAChCye,aAAcze,GAEhB,GAAI,iBAAmBA,EAAG,MAAO,CAC/Bkd,YAAald,GAGf,GAAIA,aAAa2K,KAAM,CACrB,IAAI5L,EAAIyL,EAAU2oD,SAASnzD,GAC3B,MAAO,CACLud,eAAgBnP,GAAYvL,EAAEqpB,WAAYntB,IAI9C,GAAIiB,aAAawK,EAAW,CAI1B,IAAI4oD,EAAO,IAAI5oD,EAAUxK,EAAEyK,QAAS,IAAMT,KAAKC,MAAMjK,EAAE0K,YAAc,MAErE,MAAO,CACL6S,eAAgBnP,GAAYvL,EAAEqpB,WAAYknC,IAI9C,GAAIpzD,aAAaywD,GAAU,MAAO,CAChC7xC,cAAe,CACbC,SAAU7e,EAAE6e,SACZC,UAAW9e,EAAE8e,YAGjB,GAAI9e,aAAaiwD,GAAO,MAAO,CAC7BvxC,WAAYiU,GAAkB9vB,EAAEqpB,WAAYlsB,EAAEkwD,cAGhD,GAAIlwD,aAAagsD,GAAmB,CAClC,IAAIqH,EAAOxwD,EAAE4a,WACTxW,EAAIjH,EAAE+rD,UAAUxB,YACpB,IAAKtjD,EAAEoE,QAAQgoD,GAAO,MAAMxwD,EAAE6uD,GAAG,sCAAsCxuD,OAAO+D,EAAEkX,UAAW,KAAKjb,OAAO+D,EAAEmX,SAAU,gCAAgClb,OAAOmwD,EAAKl1C,UAAW,KAAKjb,OAAOmwD,EAAKj1C,WAC3L,MAAO,CACLO,eAAgBoU,GAAyB/yB,EAAE+rD,UAAUxB,aAAe1nD,EAAE4a,WAAYzd,EAAE8C,KAAKyK,OAI7F,MAAM1K,EAAE6uD,GAAG,4BAA4BxuD,OAAOqmD,GAA2BvpD,KAjDpE,CA0DNA,EAAG6C,GAGN,SAASqvD,GAAsBlyD,EAAG6C,GAChC,IAAI9D,EAAI,GACR,OAAOiZ,GAAShY,GAEhB6C,EAAE0K,MAAQ1K,EAAE0K,KAAK7N,OAAS,GAAKmD,EAAE0sB,UAAU3jB,KAAK/I,EAAE0K,MAAQwK,GAAS/X,GAAG,SAAUA,EAAGiH,GACjF,IAAItH,EAAIizD,GAAoB3rD,EAAGpE,EAAEywD,GAAGtzD,IAEpC,MAAQL,IAAMZ,EAAEiB,GAAKL,MACnB,CACFqd,SAAU,CACRhP,OAAQjP,IAKd,SAAS8zD,GAA8B7yD,GACrC,QAAS,iBAAmBA,GAAK,OAASA,GAAKA,aAAarB,OAASqB,aAAa2K,MAAQ3K,aAAawK,GAAaxK,aAAaywD,IAAYzwD,aAAaiwD,IAASjwD,aAAagsD,IAAqBhsD,aAAauwD,IAGpN,SAAS0B,GAA8BjyD,EAAG6C,EAAG9D,GAC3C,IAAK8zD,GAA8B9zD,KAAO,SAAiCiB,GACzE,MAAO,iBAAmBA,GAAK,OAASA,IAAMhB,OAAOu0D,eAAevzD,KAAOhB,OAAOC,WAAa,OAASD,OAAOu0D,eAAevzD,IADtF,CAExCjB,GAAI,CACJ,IAAIkI,EAAIsiD,GAA2BxqD,GAEnC,KAAM,cAAgBkI,EAAIpE,EAAE6uD,GAAG1xD,EAAI,oBAAsB6C,EAAE6uD,GAAG1xD,EAAI,IAAMiH,IAQ5E,SAASurD,GAAkCxyD,EAAG6C,EAAG9D,GAC/C,IAEA8D,GAAI,QAAmBA,cAAestD,GAAW,OAAOttD,EAAEytD,cAC1D,GAAI,iBAAmBztD,EAAG,OAAO2wD,GAA0CxzD,EAAG6C,GAC9E,MAAMyuD,GAAsB,kDAAmDtxD,GAE/E,OAEA,EAAQjB,GAOV,IAAI00D,GAAK,IAAIp3C,OAAO,iBAWpB,SAASm3C,GAA0CxzD,EAAG6C,EAAG9D,GACvD,GAAI8D,EAAE6wD,OAAOD,KAAO,EAAG,MAAMnC,GAAsB,uBAAuBpuD,OAAOL,EAAG,wDAAyD7C,GAE7I,OAEA,EAAQjB,GAER,IACE,OAAO,OAAWoxD,IAAW,OAAmBttD,EAAE8J,MAAM,OAAO2jD,cAC/D,MAAOrpD,GACP,MAAMqqD,GAAsB,uBAAuBpuD,OAAOL,EAAG,6EAA8E7C,GAE3I,OAEA,EAAQjB,IAIZ,SAASuyD,GAAsBtxD,EAAG6C,EAAG9D,EAAGkI,EAAGtH,GACzC,IAAIE,EAAIoH,IAAMA,EAAEwR,UACZna,OAAI,IAAWqB,EAEf6Q,EAAI,YAAYtN,OAAOL,EAAG,+BAE9B9D,IAAMyR,GAAK,0BAA2BA,GAAK,KAC3C,IAAIC,EAAI,GACR,OAAQ5Q,GAAKvB,KAAOmS,GAAK,UAAW5Q,IAAM4Q,GAAK,aAAavN,OAAO+D,IAAK3I,IAAMmS,GAAK,gBAAgBvN,OAAOvD,IAAK8Q,GAAK,KAAM,IAAItL,EAAejB,EAAEI,iBAAkBkM,EAAIxQ,EAAIyQ,GAK3K,SAASiiD,GAA4B1yD,EAAG6C,GACtC,OAAO7C,EAAEqlB,MAAK,SAAUrlB,GACtB,OAAOA,EAAEqL,QAAQxI,MAqrCrB,SAAS8wD,GAAsC3zD,EAAG6C,EAAG9D,GAKnD,OAAWiB,EAAIjB,IAAMA,EAAEgzD,OAAShzD,EAAEizD,aAAehyD,EAAE4zD,YAAY/wD,EAAG9D,GAAKiB,EAAE4zD,YAAY/wD,GAAKA,EAqrB5F,SAASgxD,GAAO7zD,EAAG6C,GACjB,IAAI9D,EAAI0qD,GAAezpD,EAAE+rD,UAAWiD,IAChC/nD,EAllIN,SAAajH,EAAG6C,GACd,IAAK,IAAIixD,EAAQlyD,UAAUlC,OAAQX,EAAI,IAAIJ,MAAMm1D,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACrGh1D,EAAEg1D,EAAQ,GAAKnyD,UAAUmyD,GAG3B,GAAI/zD,GAAI,QAAmBA,GAE3B,IAAM4B,UAAUlC,SAAWmD,EAAIsH,EAAiB47C,SAAUqD,GAAmC,MAAO,OAAQvmD,GAAI7C,aAAaoqD,GAAa,CACxI,IAAInjD,EAAI8E,GAAa2B,WAAW7L,MAAMkK,GAAc,CAAClJ,GAAGK,OAAOnE,IAC/D,OAAOsqD,GAA+BpiD,GAAI,IAAI+kD,GAAkBhsD,EAEhE,KAAM,IAAIsN,GAAYrG,IAItB,KAAMjH,aAAagsD,IAAqBhsD,aAAaisD,IAAsB,MAAM,IAAI9mD,EAAejB,EAAEI,iBAAkB,iHAExH,IAAI0vD,EAAOh0D,EAAEqsD,MAAMzqC,MAAM7V,GAAa2B,WAAW7L,MAAMkK,GAAc,CAAClJ,GAAGK,OAAOnE,KAEhF,OAAOsqD,GAA+B2K,GAAO,IAAIhI,GAAkBhsD,EAAE+rD,UAAW/rD,aAAaisD,GAAsBjsD,EAAE6rD,UAAY,KAAM,IAAIv+C,GAAY0mD,IA+jIjJ1wB,CAAItjC,GACRL,EAAIg0D,GAAsC3zD,EAAE6rD,UAAWhpD,GAE3D,OAAOoxD,GAAal1D,EAAG,CAAC8yD,GAAuBD,GAA4B5xD,EAAE+rD,WAAY,SAAU9kD,EAAEnE,KAAMnD,EAAG,OAASK,EAAE6rD,UAAW,IAAIr4B,WAAWvsB,EAAEnE,KAAM4qB,GAAaE,QAAO,MAAO3lB,MAAK,WACzL,OAAOhB,KA2GX,SAASgtD,GAAaj0D,EAAG6C,GACvB,OAAO,SAAwC7C,EAAG6C,GAChD,IAAI9D,EAAI,IAAI0G,EACZ,OAAOzF,EAAE00C,WAAWpC,kBAA+B,OAAgC,UAAyB,SAAS4hB,IACnH,OAAO,UAAyB,SAAoBC,GAClD,OACE,OAAQA,EAAW7sD,KAAO6sD,EAAW3zD,MACnC,KAAK,EAGH,OAFA2zD,EAAWhiD,GAAK+rC,GAChBiW,EAAW3zD,KAAO,EACXyoD,GAAwBjpD,GAEjC,KAAK,EAIH,OAHAm0D,EAAWpgD,GAAKogD,EAAWvhD,KAC3BuhD,EAAWrN,GAAKjkD,EAChBsxD,EAAWC,GAAKr1D,EACTo1D,EAAWphD,OAAO,UAAU,EAAIohD,EAAWhiD,IAAIgiD,EAAWpgD,GAAIogD,EAAWrN,GAAIqN,EAAWC,KAEjG,KAAK,EACL,IAAK,MACH,OAAOD,EAAW5sD,UAGvB2sD,QACCn1D,EAAE4G,QAvBH,CAwBL+pD,GAA0B1vD,GAAI6C,GAojCzB,IAAIwxD,SAyGZ,SAAqCr0D,GACpC,IAAI6C,IAAIjB,UAAUlC,OAAS,QAAsBoE,IAAjBlC,UAAU,KAAmBA,UAAU,IACtE,SAAiC5B,GAChCuC,EAAIvC,EADL,CAEC,OAAc,QAAmB,IAAI,KAAU,aAAa,SAAUA,EAAGs0D,GACzE,IAAIv1D,EAAIu1D,EAAOC,mBACXttD,EAAIqtD,EAAO7+C,QACX9V,EAAIK,EAAEw0D,YAAY,OAAO3sD,eACzBhI,EAAI,IAAImvD,GAAU,IAAIroD,EAA0C3G,EAAEw0D,YAAY,kBAAmB,IAAI1rD,EAAwC9I,EAAEw0D,YAAY,uBAAwB,SAAqCx0D,EAAG6C,GAC7N,IAAK7D,OAAOC,UAAU6Y,eAAejW,MAAM7B,EAAEyV,QAAS,CAAC,cAAe,MAAM,IAAItQ,EAAejB,EAAEI,iBAAkB,uDACnH,OAAO,IAAI4Z,GAAWle,EAAEyV,QAAQ0I,UAAWtb,GAF0I,CAGrLlD,EAAGZ,GAAIY,GACT,OAAOsH,EAAIjI,OAAO2hB,OAAO,CACvB1C,gBAAiBpb,GAChBoE,GAAIpH,EAAEwrD,aAAapkD,GAAIpH,IACzB,UAAU40D,sBAAqB,KAAM,QAAgB3yD,EAAG,QAAS9B,IACpE,QAAgB8B,EAAG,QAAS,WAhB7B","sources":["webpack://berrylanding/./node_modules/@firebase/firestore/dist/index.esm2017.js"],"sourcesContent":["import _construct from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/construct.js\";\nimport _get from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _slicedToArray from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _wrapNativeSuper from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js\";\nimport _asyncToGenerator from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _inherits from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _toConsumableArray from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _classCallCheck from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"F:/Work/Abo soltan/accounting-lp/node_modules/@babel/runtime/helpers/esm/createClass.js\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e141) { throw _e141; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e142) { didErr = true; err = _e142; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport _regeneratorRuntime from \"F:\\\\Work\\\\Abo soltan\\\\accounting-lp\\\\node_modules\\\\@babel\\\\runtime\\\\regenerator\\\\index.js\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport { _registerComponent, registerVersion, _getProvider, getApp, _removeServiceInstance, SDK_VERSION } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { FirebaseError, createMockUserToken, getModularInstance, deepEqual, getDefaultEmulatorHostnameAndPort, getUA, isIndexedDBAvailable, isSafari } from '@firebase/util';\nimport { Integer, XhrIo, EventType, ErrorCode, createWebChannelTransport, getStatEventTarget, WebChannel, Event, Stat, Md5 } from '@firebase/webchannel-wrapper';\nvar w = \"@firebase/firestore\";\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Simple wrapper around a nullable UID. Mostly exists to make code more\n * readable.\n */\n\nvar User = /*#__PURE__*/function () {\n function User(e) {\n _classCallCheck(this, User);\n\n this.uid = e;\n }\n\n _createClass(User, [{\n key: \"isAuthenticated\",\n value: function isAuthenticated() {\n return null != this.uid;\n }\n /**\n * Returns a key representing this user, suitable for inclusion in a\n * dictionary.\n */\n\n }, {\n key: \"toKey\",\n value: function toKey() {\n return this.isAuthenticated() ? \"uid:\" + this.uid : \"anonymous-user\";\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(e) {\n return e.uid === this.uid;\n }\n }]);\n\n return User;\n}();\n/** A user with a null UID. */\n\n\nUser.UNAUTHENTICATED = new User(null), // TODO(mikelehen): Look into getting a proper uid-equivalent for\n// non-FirebaseAuth providers.\nUser.GOOGLE_CREDENTIALS = new User(\"google-credentials-uid\"), User.FIRST_PARTY = new User(\"first-party-uid\"), User.MOCK_USER = new User(\"mock-user\");\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar S = \"10.8.0\";\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar b = new Logger(\"@firebase/firestore\"); // Helper methods are needed because variables can't be exported as read/write\n\nfunction __PRIVATE_getLogLevel() {\n return b.logLevel;\n}\n/**\n * Sets the verbosity of Cloud Firestore logs (debug, error, or silent).\n *\n * @param logLevel - The verbosity you set for activity and error logging. Can\n * be any of the following values:\n *\n *
`silent` to turn off logging.
Each element in the return value is one term of the resulting DNF. For instance: For the\n * input: (A || B) && C, the DNF form is: (A && C) || (B && C), and the return value is a list\n * with two elements: a composite filter that performs (A && C), and a composite filter that\n * performs (B && C).\n *\n * @param filter the composite filter to calculate DNF transform for.\n * @return the terms in the DNF transform.\n */\n\n\nfunction __PRIVATE_getDnfTerms(e) {\n if (0 === e.getFilters().length) return [];\n\n var t = __PRIVATE_computeDistributedNormalForm(__PRIVATE_computeInExpansion(e));\n\n return __PRIVATE_hardAssert(__PRIVATE_isDisjunctiveNormalForm(t)), __PRIVATE_isSingleFieldFilter(t) || __PRIVATE_isFlatConjunction(t) ? [t] : t.getFilters();\n}\n/** Returns true if the given filter is a single field filter. e.g. (a == 10). */\n\n\nfunction __PRIVATE_isSingleFieldFilter(e) {\n return e instanceof FieldFilter;\n}\n/**\n * Returns true if the given filter is the conjunction of one or more field filters. e.g. (a == 10\n * && b == 20)\n */\n\n\nfunction __PRIVATE_isFlatConjunction(e) {\n return e instanceof CompositeFilter && __PRIVATE_compositeFilterIsFlatConjunction(e);\n}\n/**\n * Returns whether or not the given filter is in disjunctive normal form (DNF).\n *\n *
In boolean logic, a disjunctive normal form (DNF) is a canonical normal form of a logical\n * formula consisting of a disjunction of conjunctions; it can also be described as an OR of ANDs.\n *\n *
For more info, visit: https://en.wikipedia.org/wiki/Disjunctive_normal_form\n */\n\n\nfunction __PRIVATE_isDisjunctiveNormalForm(e) {\n return __PRIVATE_isSingleFieldFilter(e) || __PRIVATE_isFlatConjunction(e) ||\n /**\n * Returns true if the given filter is the disjunction of one or more \"flat conjunctions\" and\n * field filters. e.g. (a == 10) || (b==20 && c==30)\n */\n function __PRIVATE_isDisjunctionOfFieldFiltersAndFlatConjunctions(e) {\n if (e instanceof CompositeFilter && __PRIVATE_compositeFilterIsDisjunction(e)) {\n var _iterator35 = _createForOfIteratorHelper(e.getFilters()),\n _step35;\n\n try {\n for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {\n var t = _step35.value;\n if (!__PRIVATE_isSingleFieldFilter(t) && !__PRIVATE_isFlatConjunction(t)) return !1;\n }\n } catch (err) {\n _iterator35.e(err);\n } finally {\n _iterator35.f();\n }\n\n return !0;\n }\n\n return !1;\n }(e);\n}\n\nfunction __PRIVATE_computeDistributedNormalForm(e) {\n if (__PRIVATE_hardAssert(e instanceof FieldFilter || e instanceof CompositeFilter), e instanceof FieldFilter) return e;\n if (1 === e.filters.length) return __PRIVATE_computeDistributedNormalForm(e.filters[0]); // Compute DNF for each of the subfilters first\n\n var t = e.filters.map(function (e) {\n return __PRIVATE_computeDistributedNormalForm(e);\n });\n var n = CompositeFilter.create(t, e.op);\n return n = __PRIVATE_applyAssociation(n), __PRIVATE_isDisjunctiveNormalForm(n) ? n : (__PRIVATE_hardAssert(n instanceof CompositeFilter), __PRIVATE_hardAssert(__PRIVATE_compositeFilterIsConjunction(n)), __PRIVATE_hardAssert(n.filters.length > 1), n.filters.reduce(function (e, t) {\n return __PRIVATE_applyDistribution(e, t);\n }));\n}\n\nfunction __PRIVATE_applyDistribution(e, t) {\n var n;\n return __PRIVATE_hardAssert(e instanceof FieldFilter || e instanceof CompositeFilter), __PRIVATE_hardAssert(t instanceof FieldFilter || t instanceof CompositeFilter), // FieldFilter FieldFilter\n n = e instanceof FieldFilter ? t instanceof FieldFilter ? function __PRIVATE_applyDistributionFieldFilters(e, t) {\n // Conjunction distribution for two field filters is the conjunction of them.\n return CompositeFilter.create([e, t], \"and\"\n /* CompositeOperator.AND */\n );\n }(e, t) : __PRIVATE_applyDistributionFieldAndCompositeFilters(e, t) : t instanceof FieldFilter ? __PRIVATE_applyDistributionFieldAndCompositeFilters(t, e) : function __PRIVATE_applyDistributionCompositeFilters(e, t) {\n // There are four cases:\n // (A & B) & (C & D) --> (A & B & C & D)\n // (A & B) & (C | D) --> (A & B & C) | (A & B & D)\n // (A | B) & (C & D) --> (C & D & A) | (C & D & B)\n // (A | B) & (C | D) --> (A & C) | (A & D) | (B & C) | (B & D)\n // Case 1 is a merge.\n if (__PRIVATE_hardAssert(e.filters.length > 0 && t.filters.length > 0), __PRIVATE_compositeFilterIsConjunction(e) && __PRIVATE_compositeFilterIsConjunction(t)) return __PRIVATE_compositeFilterWithAddedFilters(e, t.getFilters()); // Case 2,3,4 all have at least one side (lhs or rhs) that is a disjunction. In all three cases\n // we should take each element of the disjunction and distribute it over the other side, and\n // return the disjunction of the distribution results.\n\n var n = __PRIVATE_compositeFilterIsDisjunction(e) ? e : t,\n r = __PRIVATE_compositeFilterIsDisjunction(e) ? t : e,\n i = n.filters.map(function (e) {\n return __PRIVATE_applyDistribution(e, r);\n });\n return CompositeFilter.create(i, \"or\"\n /* CompositeOperator.OR */\n );\n }(e, t), __PRIVATE_applyAssociation(n);\n}\n\nfunction __PRIVATE_applyDistributionFieldAndCompositeFilters(e, t) {\n // There are two cases:\n // A & (B & C) --> (A & B & C)\n // A & (B | C) --> (A & B) | (A & C)\n if (__PRIVATE_compositeFilterIsConjunction(t)) // Case 1\n return __PRIVATE_compositeFilterWithAddedFilters(t, e.getFilters());\n {\n // Case 2\n var n = t.filters.map(function (t) {\n return __PRIVATE_applyDistribution(e, t);\n });\n return CompositeFilter.create(n, \"or\"\n /* CompositeOperator.OR */\n );\n }\n}\n/**\n * Applies the associativity property to the given filter and returns the resulting filter.\n *\n *
For more info, visit: https://en.wikipedia.org/wiki/Associative_property#Propositional_logic\n */\n\n\nfunction __PRIVATE_applyAssociation(e) {\n if (__PRIVATE_hardAssert(e instanceof FieldFilter || e instanceof CompositeFilter), e instanceof FieldFilter) return e;\n var t = e.getFilters(); // If the composite filter only contains 1 filter, apply associativity to it.\n\n if (1 === t.length) return __PRIVATE_applyAssociation(t[0]); // Associativity applied to a flat composite filter results is itself.\n\n if (__PRIVATE_compositeFilterIsFlat(e)) return e; // First apply associativity to all subfilters. This will in turn recursively apply\n // associativity to all nested composite filters and field filters.\n\n var n = t.map(function (e) {\n return __PRIVATE_applyAssociation(e);\n }),\n r = []; // For composite subfilters that perform the same kind of logical operation as `compositeFilter`\n // take out their filters and add them to `compositeFilter`. For example:\n // compositeFilter = (A | (B | C | D))\n // compositeSubfilter = (B | C | D)\n // Result: (A | B | C | D)\n // Note that the `compositeSubfilter` has been eliminated, and its filters (B, C, D) have been\n // added to the top-level \"compositeFilter\".\n\n return n.forEach(function (t) {\n t instanceof FieldFilter ? r.push(t) : t instanceof CompositeFilter && (t.op === e.op ? // compositeFilter: (A | (B | C))\n // compositeSubfilter: (B | C)\n // Result: (A | B | C)\n r.push.apply(r, _toConsumableArray(t.filters)) : // compositeFilter: (A | (B & C))\n // compositeSubfilter: (B & C)\n // Result: (A | (B & C))\n r.push(t));\n }), 1 === r.length ? r[0] : CompositeFilter.create(r, e.op);\n}\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * An in-memory implementation of IndexManager.\n */\n\n\nvar __PRIVATE_MemoryIndexManager = /*#__PURE__*/function () {\n function __PRIVATE_MemoryIndexManager() {\n _classCallCheck(this, __PRIVATE_MemoryIndexManager);\n\n this._n = new __PRIVATE_MemoryCollectionParentIndex();\n }\n\n _createClass(__PRIVATE_MemoryIndexManager, [{\n key: \"addToCollectionParentIndex\",\n value: function addToCollectionParentIndex(e, t) {\n return this._n.add(t), PersistencePromise.resolve();\n }\n }, {\n key: \"getCollectionParents\",\n value: function getCollectionParents(e, t) {\n return PersistencePromise.resolve(this._n.getEntries(t));\n }\n }, {\n key: \"addFieldIndex\",\n value: function addFieldIndex(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve();\n }\n }, {\n key: \"deleteFieldIndex\",\n value: function deleteFieldIndex(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve();\n }\n }, {\n key: \"deleteAllFieldIndexes\",\n value: function deleteAllFieldIndexes(e) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve();\n }\n }, {\n key: \"createTargetIndexes\",\n value: function createTargetIndexes(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve();\n }\n }, {\n key: \"getDocumentsMatchingTarget\",\n value: function getDocumentsMatchingTarget(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve(null);\n }\n }, {\n key: \"getIndexType\",\n value: function getIndexType(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve(0\n /* IndexType.NONE */\n );\n }\n }, {\n key: \"getFieldIndexes\",\n value: function getFieldIndexes(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve([]);\n }\n }, {\n key: \"getNextCollectionGroupToUpdate\",\n value: function getNextCollectionGroupToUpdate(e) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve(null);\n }\n }, {\n key: \"getMinOffset\",\n value: function getMinOffset(e, t) {\n return PersistencePromise.resolve(IndexOffset.min());\n }\n }, {\n key: \"getMinOffsetFromCollectionGroup\",\n value: function getMinOffsetFromCollectionGroup(e, t) {\n return PersistencePromise.resolve(IndexOffset.min());\n }\n }, {\n key: \"updateCollectionGroup\",\n value: function updateCollectionGroup(e, t, n) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve();\n }\n }, {\n key: \"updateIndexEntries\",\n value: function updateIndexEntries(e, t) {\n // Field indices are not supported with memory persistence.\n return PersistencePromise.resolve();\n }\n }]);\n\n return __PRIVATE_MemoryIndexManager;\n}();\n/**\n * Internal implementation of the collection-parent index exposed by MemoryIndexManager.\n * Also used for in-memory caching by IndexedDbIndexManager and initial index population\n * in indexeddb_schema.ts\n */\n\n\nvar __PRIVATE_MemoryCollectionParentIndex = /*#__PURE__*/function () {\n function __PRIVATE_MemoryCollectionParentIndex() {\n _classCallCheck(this, __PRIVATE_MemoryCollectionParentIndex);\n\n this.index = {};\n } // Returns false if the entry already existed.\n\n\n _createClass(__PRIVATE_MemoryCollectionParentIndex, [{\n key: \"add\",\n value: function add(e) {\n var t = e.lastSegment(),\n n = e.popLast(),\n r = this.index[t] || new SortedSet(ResourcePath.comparator),\n i = !r.has(n);\n return this.index[t] = r.add(n), i;\n }\n }, {\n key: \"has\",\n value: function has(e) {\n var t = e.lastSegment(),\n n = e.popLast(),\n r = this.index[t];\n return r && r.has(n);\n }\n }, {\n key: \"getEntries\",\n value: function getEntries(e) {\n return (this.index[e] || new SortedSet(ResourcePath.comparator)).toArray();\n }\n }]);\n\n return __PRIVATE_MemoryCollectionParentIndex;\n}();\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar Te = new Uint8Array(0);\n/**\n * A persisted implementation of IndexManager.\n *\n * PORTING NOTE: Unlike iOS and Android, the Web SDK does not memoize index\n * data as it supports multi-tab access.\n */\n\nvar __PRIVATE_IndexedDbIndexManager = /*#__PURE__*/function () {\n function __PRIVATE_IndexedDbIndexManager(e, t) {\n _classCallCheck(this, __PRIVATE_IndexedDbIndexManager);\n\n this.databaseId = t,\n /**\n * An in-memory copy of the index entries we've already written since the SDK\n * launched. Used to avoid re-writing the same entry repeatedly.\n *\n * This is *NOT* a complete cache of what's in persistence and so can never be\n * used to satisfy reads.\n */\n this.an = new __PRIVATE_MemoryCollectionParentIndex(),\n /**\n * Maps from a target to its equivalent list of sub-targets. Each sub-target\n * contains only one term from the target's disjunctive normal form (DNF).\n */\n this.un = new ObjectMap(function (e) {\n return __PRIVATE_canonifyTarget(e);\n }, function (e, t) {\n return __PRIVATE_targetEquals(e, t);\n }), this.uid = e.uid || \"\";\n }\n /**\n * Adds a new entry to the collection parent index.\n *\n * Repeated calls for the same collectionPath should be avoided within a\n * transaction as IndexedDbIndexManager only caches writes once a transaction\n * has been committed.\n */\n\n\n _createClass(__PRIVATE_IndexedDbIndexManager, [{\n key: \"addToCollectionParentIndex\",\n value: function addToCollectionParentIndex(e, t) {\n var _this53 = this;\n\n if (!this.an.has(t)) {\n var n = t.lastSegment(),\n r = t.popLast();\n e.addOnCommittedListener(function () {\n // Add the collection to the in memory cache only if the transaction was\n // successfully committed.\n _this53.an.add(t);\n });\n var i = {\n collectionId: n,\n parent: __PRIVATE_encodeResourcePath(r)\n };\n return __PRIVATE_collectionParentsStore(e).put(i);\n }\n\n return PersistencePromise.resolve();\n }\n }, {\n key: \"getCollectionParents\",\n value: function getCollectionParents(e, t) {\n var n = [],\n r = IDBKeyRange.bound([t, \"\"], [__PRIVATE_immediateSuccessor(t), \"\"],\n /*lowerOpen=*/\n !1,\n /*upperOpen=*/\n !0);\n return __PRIVATE_collectionParentsStore(e).W(r).next(function (e) {\n var _iterator36 = _createForOfIteratorHelper(e),\n _step36;\n\n try {\n for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {\n var _r12 = _step36.value;\n // This collectionId guard shouldn't be necessary (and isn't as long\n // as we're running in a real browser), but there's a bug in\n // indexeddbshim that breaks our range in our tests running in node:\n // https://github.com/axemclion/IndexedDBShim/issues/334\n if (_r12.collectionId !== t) break;\n n.push(__PRIVATE_decodeResourcePath(_r12.parent));\n }\n } catch (err) {\n _iterator36.e(err);\n } finally {\n _iterator36.f();\n }\n\n return n;\n });\n }\n }, {\n key: \"addFieldIndex\",\n value: function addFieldIndex(e, t) {\n var _this54 = this;\n\n // TODO(indexing): Verify that the auto-incrementing index ID works in\n // Safari & Firefox.\n var n = __PRIVATE_indexConfigurationStore(e),\n r = function __PRIVATE_toDbIndexConfiguration(e) {\n return {\n indexId: e.indexId,\n collectionGroup: e.collectionGroup,\n fields: e.fields.map(function (e) {\n return [e.fieldPath.canonicalString(), e.kind];\n })\n };\n }(t);\n\n delete r.indexId; // `indexId` is auto-populated by IndexedDb\n\n var i = n.add(r);\n\n if (t.indexState) {\n var _n16 = __PRIVATE_indexStateStore(e);\n\n return i.next(function (e) {\n _n16.put(__PRIVATE_toDbIndexState(e, _this54.uid, t.indexState.sequenceNumber, t.indexState.offset));\n });\n }\n\n return i.next();\n }\n }, {\n key: \"deleteFieldIndex\",\n value: function deleteFieldIndex(e, t) {\n var n = __PRIVATE_indexConfigurationStore(e),\n r = __PRIVATE_indexStateStore(e),\n i = __PRIVATE_indexEntriesStore(e);\n\n return n.delete(t.indexId).next(function () {\n return r.delete(IDBKeyRange.bound([t.indexId], [t.indexId + 1],\n /*lowerOpen=*/\n !1,\n /*upperOpen=*/\n !0));\n }).next(function () {\n return i.delete(IDBKeyRange.bound([t.indexId], [t.indexId + 1],\n /*lowerOpen=*/\n !1,\n /*upperOpen=*/\n !0));\n });\n }\n }, {\n key: \"deleteAllFieldIndexes\",\n value: function deleteAllFieldIndexes(e) {\n var t = __PRIVATE_indexConfigurationStore(e),\n n = __PRIVATE_indexEntriesStore(e),\n r = __PRIVATE_indexStateStore(e);\n\n return t.H().next(function () {\n return n.H();\n }).next(function () {\n return r.H();\n });\n }\n }, {\n key: \"createTargetIndexes\",\n value: function createTargetIndexes(e, t) {\n var _this55 = this;\n\n return PersistencePromise.forEach(this.cn(t), function (t) {\n return _this55.getIndexType(e, t).next(function (n) {\n if (0\n /* IndexType.NONE */\n === n || 1\n /* IndexType.PARTIAL */\n === n) {\n var _n17 = new __PRIVATE_TargetIndexMatcher(t).on();\n\n if (null != _n17) return _this55.addFieldIndex(e, _n17);\n }\n });\n });\n }\n }, {\n key: \"getDocumentsMatchingTarget\",\n value: function getDocumentsMatchingTarget(e, t) {\n var _this56 = this;\n\n var n = __PRIVATE_indexEntriesStore(e);\n\n var r = !0;\n var i = new Map();\n return PersistencePromise.forEach(this.cn(t), function (t) {\n return _this56.ln(e, t).next(function (e) {\n r && (r = !!e), i.set(t, e);\n });\n }).next(function () {\n if (r) {\n var _e56 = __PRIVATE_documentKeySet();\n\n var _r13 = [];\n return PersistencePromise.forEach(i, function (i, s) {\n __PRIVATE_logDebug(\"IndexedDbIndexManager\", \"Using index \".concat(function __PRIVATE_fieldIndexToString(e) {\n return \"id=\".concat(e.indexId, \"|cg=\").concat(e.collectionGroup, \"|f=\").concat(e.fields.map(function (e) {\n return \"\".concat(e.fieldPath, \":\").concat(e.kind);\n }).join(\",\"));\n }(i), \" to execute \").concat(__PRIVATE_canonifyTarget(t)));\n\n var o = function __PRIVATE_targetGetArrayValues(e, t) {\n var n = __PRIVATE_fieldIndexGetArraySegment(t);\n\n if (void 0 === n) return null;\n\n var _iterator37 = _createForOfIteratorHelper(__PRIVATE_targetGetFieldFiltersForPath(e, n.fieldPath)),\n _step37;\n\n try {\n for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) {\n var _t26 = _step37.value;\n\n switch (_t26.op) {\n case \"array-contains-any\"\n /* Operator.ARRAY_CONTAINS_ANY */\n :\n return _t26.value.arrayValue.values || [];\n\n case \"array-contains\"\n /* Operator.ARRAY_CONTAINS */\n :\n return [_t26.value];\n // Remaining filters are not array filters.\n }\n }\n } catch (err) {\n _iterator37.e(err);\n } finally {\n _iterator37.f();\n }\n\n return null;\n }\n /**\n * Returns the list of values that are used in != or NOT_IN filters. Returns\n * `null` if there are no such filters.\n */\n (s, i),\n _ = function __PRIVATE_targetGetNotInValues(e, t) {\n var n = new Map();\n\n var _iterator38 = _createForOfIteratorHelper(__PRIVATE_fieldIndexGetDirectionalSegments(t)),\n _step38;\n\n try {\n for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) {\n var _r14 = _step38.value;\n\n var _iterator39 = _createForOfIteratorHelper(__PRIVATE_targetGetFieldFiltersForPath(e, _r14.fieldPath)),\n _step39;\n\n try {\n for (_iterator39.s(); !(_step39 = _iterator39.n()).done;) {\n var _t27 = _step39.value;\n\n switch (_t27.op) {\n case \"==\"\n /* Operator.EQUAL */\n :\n case \"in\"\n /* Operator.IN */\n :\n // Encode equality prefix, which is encoded in the index value before\n // the inequality (e.g. `a == 'a' && b != 'b'` is encoded to\n // `value != 'ab'`).\n n.set(_r14.fieldPath.canonicalString(), _t27.value);\n break;\n\n case \"not-in\"\n /* Operator.NOT_IN */\n :\n case \"!=\"\n /* Operator.NOT_EQUAL */\n :\n // NotIn/NotEqual is always a suffix. There cannot be any remaining\n // segments and hence we can return early here.\n return n.set(_r14.fieldPath.canonicalString(), _t27.value), Array.from(n.values());\n // Remaining filters cannot be used as notIn bounds.\n }\n }\n } catch (err) {\n _iterator39.e(err);\n } finally {\n _iterator39.f();\n }\n }\n } catch (err) {\n _iterator38.e(err);\n } finally {\n _iterator38.f();\n }\n\n return null;\n }\n /**\n * Returns a lower bound of field values that can be used as a starting point to\n * scan the index defined by `fieldIndex`. Returns `MIN_VALUE` if no lower bound\n * exists.\n */\n (s, i),\n a = function __PRIVATE_targetGetLowerBound(e, t) {\n var n = [];\n var r = !0; // For each segment, retrieve a lower bound if there is a suitable filter or\n // startAt.\n\n var _iterator40 = _createForOfIteratorHelper(__PRIVATE_fieldIndexGetDirectionalSegments(t)),\n _step40;\n\n try {\n for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {\n var _i10 = _step40.value;\n\n var _t28 = 0\n /* IndexKind.ASCENDING */\n === _i10.kind ? __PRIVATE_targetGetAscendingBound(e, _i10.fieldPath, e.startAt) : __PRIVATE_targetGetDescendingBound(e, _i10.fieldPath, e.startAt);\n\n n.push(_t28.value), r && (r = _t28.inclusive);\n }\n } catch (err) {\n _iterator40.e(err);\n } finally {\n _iterator40.f();\n }\n\n return new Bound(n, r);\n }\n /**\n * Returns an upper bound of field values that can be used as an ending point\n * when scanning the index defined by `fieldIndex`. Returns `MAX_VALUE` if no\n * upper bound exists.\n */\n (s, i),\n u = function __PRIVATE_targetGetUpperBound(e, t) {\n var n = [];\n var r = !0; // For each segment, retrieve an upper bound if there is a suitable filter or\n // endAt.\n\n var _iterator41 = _createForOfIteratorHelper(__PRIVATE_fieldIndexGetDirectionalSegments(t)),\n _step41;\n\n try {\n for (_iterator41.s(); !(_step41 = _iterator41.n()).done;) {\n var _i11 = _step41.value;\n\n var _t29 = 0\n /* IndexKind.ASCENDING */\n === _i11.kind ? __PRIVATE_targetGetDescendingBound(e, _i11.fieldPath, e.endAt) : __PRIVATE_targetGetAscendingBound(e, _i11.fieldPath, e.endAt);\n\n n.push(_t29.value), r && (r = _t29.inclusive);\n }\n } catch (err) {\n _iterator41.e(err);\n } finally {\n _iterator41.f();\n }\n\n return new Bound(n, r);\n }(s, i),\n c = _this56.hn(i, s, a),\n l = _this56.hn(i, s, u),\n h = _this56.Pn(i, s, _),\n P = _this56.In(i.indexId, o, c, a.inclusive, l, u.inclusive, h);\n\n return PersistencePromise.forEach(P, function (i) {\n return n.j(i, t.limit).next(function (t) {\n t.forEach(function (t) {\n var n = DocumentKey.fromSegments(t.documentKey);\n _e56.has(n) || (_e56 = _e56.add(n), _r13.push(n));\n });\n });\n });\n }).next(function () {\n return _r13;\n });\n }\n\n return PersistencePromise.resolve(null);\n });\n }\n }, {\n key: \"cn\",\n value: function cn(e) {\n var t = this.un.get(e);\n if (t) return t;\n if (0 === e.filters.length) t = [e];else {\n t = __PRIVATE_getDnfTerms(CompositeFilter.create(e.filters, \"and\"\n /* CompositeOperator.AND */\n )).map(function (t) {\n return __PRIVATE_newTarget(e.path, e.collectionGroup, e.orderBy, t.getFilters(), e.limit, e.startAt, e.endAt);\n });\n }\n return this.un.set(e, t), t;\n }\n /**\n * Constructs a key range query on `DbIndexEntryStore` that unions all\n * bounds.\n */\n\n }, {\n key: \"In\",\n value: function In(e, t, n, r, i, s, o) {\n var _this57 = this;\n\n // The number of total index scans we union together. This is similar to a\n // distributed normal form, but adapted for array values. We create a single\n // index range per value in an ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filter\n // combined with the values from the query bounds.\n var _ = (null != t ? t.length : 1) * Math.max(n.length, i.length),\n a = _ / (null != t ? t.length : 1),\n u = [];\n\n var _loop5 = function _loop5(c) {\n var _ = t ? _this57.Tn(t[c / a]) : Te,\n l = _this57.En(e, _, n[c % a], r),\n h = _this57.dn(e, _, i[c % a], s),\n P = o.map(function (t) {\n return _this57.En(e, _, t,\n /* inclusive= */\n !0);\n });\n\n u.push.apply(u, _toConsumableArray(_this57.createRange(l, h, P)));\n };\n\n for (var c = 0; c < _; ++c) {\n _loop5(c);\n }\n\n return u;\n }\n /** Generates the lower bound for `arrayValue` and `directionalValue`. */\n\n }, {\n key: \"En\",\n value: function En(e, t, n, r) {\n var i = new __PRIVATE_IndexEntry(e, DocumentKey.empty(), t, n);\n return r ? i : i.Jt();\n }\n /** Generates the upper bound for `arrayValue` and `directionalValue`. */\n\n }, {\n key: \"dn\",\n value: function dn(e, t, n, r) {\n var i = new __PRIVATE_IndexEntry(e, DocumentKey.empty(), t, n);\n return r ? i.Jt() : i;\n }\n }, {\n key: \"ln\",\n value: function ln(e, t) {\n var n = new __PRIVATE_TargetIndexMatcher(t),\n r = null != t.collectionGroup ? t.collectionGroup : t.path.lastSegment();\n return this.getFieldIndexes(e, r).next(function (e) {\n // Return the index with the most number of segments.\n var t = null;\n\n var _iterator42 = _createForOfIteratorHelper(e),\n _step42;\n\n try {\n for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {\n var _r15 = _step42.value;\n n.tn(_r15) && (!t || _r15.fields.length > t.fields.length) && (t = _r15);\n }\n } catch (err) {\n _iterator42.e(err);\n } finally {\n _iterator42.f();\n }\n\n return t;\n });\n }\n }, {\n key: \"getIndexType\",\n value: function getIndexType(e, t) {\n var _this58 = this;\n\n var n = 2\n /* IndexType.FULL */\n ;\n var r = this.cn(t);\n return PersistencePromise.forEach(r, function (t) {\n return _this58.ln(e, t).next(function (e) {\n e ? 0\n /* IndexType.NONE */\n !== n && e.fields.length < function __PRIVATE_targetGetSegmentCount(e) {\n var t = new SortedSet(FieldPath$1.comparator),\n n = !1;\n\n var _iterator43 = _createForOfIteratorHelper(e.filters),\n _step43;\n\n try {\n for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) {\n var _r16 = _step43.value;\n\n var _iterator45 = _createForOfIteratorHelper(_r16.getFlattenedFilters()),\n _step45;\n\n try {\n for (_iterator45.s(); !(_step45 = _iterator45.n()).done;) {\n var _e57 = _step45.value;\n // __name__ is not an explicit segment of any index, so we don't need to\n // count it.\n _e57.field.isKeyField() || ( // ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filters must be counted separately.\n // For instance, it is possible to have an index for \"a ARRAY a ASC\". Even\n // though these are on the same field, they should be counted as two\n // separate segments in an index.\n \"array-contains\"\n /* Operator.ARRAY_CONTAINS */\n === _e57.op || \"array-contains-any\"\n /* Operator.ARRAY_CONTAINS_ANY */\n === _e57.op ? n = !0 : t = t.add(_e57.field));\n }\n } catch (err) {\n _iterator45.e(err);\n } finally {\n _iterator45.f();\n }\n }\n } catch (err) {\n _iterator43.e(err);\n } finally {\n _iterator43.f();\n }\n\n var _iterator44 = _createForOfIteratorHelper(e.orderBy),\n _step44;\n\n try {\n for (_iterator44.s(); !(_step44 = _iterator44.n()).done;) {\n var _n18 = _step44.value;\n // __name__ is not an explicit segment of any index, so we don't need to\n // count it.\n _n18.field.isKeyField() || (t = t.add(_n18.field));\n }\n } catch (err) {\n _iterator44.e(err);\n } finally {\n _iterator44.f();\n }\n\n return t.size + (n ? 1 : 0);\n }(t) && (n = 1\n /* IndexType.PARTIAL */\n ) : n = 0\n /* IndexType.NONE */\n ;\n });\n }).next(function () {\n return (// OR queries have more than one sub-target (one sub-target per DNF term). We currently consider\n // OR queries that have a `limit` to have a partial index. For such queries we perform sorting\n // and apply the limit in memory as a post-processing step.\n function __PRIVATE_targetHasLimit(e) {\n return null !== e.limit;\n }(t) && r.length > 1 && 2\n /* IndexType.FULL */\n === n ? 1\n /* IndexType.PARTIAL */\n : n\n );\n });\n }\n /**\n * Returns the byte encoded form of the directional values in the field index.\n * Returns `null` if the document does not have all fields specified in the\n * index.\n */\n\n }, {\n key: \"An\",\n value: function An(e, t) {\n var n = new __PRIVATE_IndexByteEncoder();\n\n var _iterator46 = _createForOfIteratorHelper(__PRIVATE_fieldIndexGetDirectionalSegments(e)),\n _step46;\n\n try {\n for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {\n var r = _step46.value;\n\n var _e58 = t.data.field(r.fieldPath);\n\n if (null == _e58) return null;\n var i = n.Ht(r.kind);\n\n __PRIVATE_FirestoreIndexValueWriter.bt.Pt(_e58, i);\n }\n } catch (err) {\n _iterator46.e(err);\n } finally {\n _iterator46.f();\n }\n\n return n.Wt();\n }\n /** Encodes a single value to the ascending index format. */\n\n }, {\n key: \"Tn\",\n value: function Tn(e) {\n var t = new __PRIVATE_IndexByteEncoder();\n return __PRIVATE_FirestoreIndexValueWriter.bt.Pt(e, t.Ht(0\n /* IndexKind.ASCENDING */\n )), t.Wt();\n }\n /**\n * Returns an encoded form of the document key that sorts based on the key\n * ordering of the field index.\n */\n\n }, {\n key: \"Rn\",\n value: function Rn(e, t) {\n var n = new __PRIVATE_IndexByteEncoder();\n return __PRIVATE_FirestoreIndexValueWriter.bt.Pt(__PRIVATE_refValue(this.databaseId, t), n.Ht(function __PRIVATE_fieldIndexGetKeyOrder(e) {\n var t = __PRIVATE_fieldIndexGetDirectionalSegments(e);\n\n return 0 === t.length ? 0\n /* IndexKind.ASCENDING */\n : t[t.length - 1].kind;\n }(e))), n.Wt();\n }\n /**\n * Encodes the given field values according to the specification in `target`.\n * For IN queries, a list of possible values is returned.\n */\n\n }, {\n key: \"Pn\",\n value: function Pn(e, t, n) {\n if (null === n) return [];\n var r = [];\n r.push(new __PRIVATE_IndexByteEncoder());\n var i = 0;\n\n var _iterator47 = _createForOfIteratorHelper(__PRIVATE_fieldIndexGetDirectionalSegments(e)),\n _step47;\n\n try {\n for (_iterator47.s(); !(_step47 = _iterator47.n()).done;) {\n var s = _step47.value;\n var _e59 = n[i++];\n\n var _iterator48 = _createForOfIteratorHelper(r),\n _step48;\n\n try {\n for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) {\n var _n19 = _step48.value;\n if (this.Vn(t, s.fieldPath) && isArray(_e59)) r = this.mn(r, s, _e59);else {\n var _t30 = _n19.Ht(s.kind);\n\n __PRIVATE_FirestoreIndexValueWriter.bt.Pt(_e59, _t30);\n }\n }\n } catch (err) {\n _iterator48.e(err);\n } finally {\n _iterator48.f();\n }\n }\n } catch (err) {\n _iterator47.e(err);\n } finally {\n _iterator47.f();\n }\n\n return this.fn(r);\n }\n /**\n * Encodes the given bounds according to the specification in `target`. For IN\n * queries, a list of possible values is returned.\n */\n\n }, {\n key: \"hn\",\n value: function hn(e, t, n) {\n return this.Pn(e, t, n.position);\n }\n /** Returns the byte representation for the provided encoders. */\n\n }, {\n key: \"fn\",\n value: function fn(e) {\n var t = [];\n\n for (var n = 0; n < e.length; ++n) {\n t[n] = e[n].Wt();\n }\n\n return t;\n }\n /**\n * Creates a separate encoder for each element of an array.\n *\n * The method appends each value to all existing encoders (e.g. filter(\"a\",\n * \"==\", \"a1\").filter(\"b\", \"in\", [\"b1\", \"b2\"]) becomes [\"a1,b1\", \"a1,b2\"]). A\n * list of new encoders is returned.\n */\n\n }, {\n key: \"mn\",\n value: function mn(e, t, n) {\n var r = _toConsumableArray(e),\n i = [];\n\n var _iterator49 = _createForOfIteratorHelper(n.arrayValue.values || []),\n _step49;\n\n try {\n for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) {\n var _e60 = _step49.value;\n\n var _iterator50 = _createForOfIteratorHelper(r),\n _step50;\n\n try {\n for (_iterator50.s(); !(_step50 = _iterator50.n()).done;) {\n var _n20 = _step50.value;\n\n var _r17 = new __PRIVATE_IndexByteEncoder();\n\n _r17.seed(_n20.Wt()), __PRIVATE_FirestoreIndexValueWriter.bt.Pt(_e60, _r17.Ht(t.kind)), i.push(_r17);\n }\n } catch (err) {\n _iterator50.e(err);\n } finally {\n _iterator50.f();\n }\n }\n } catch (err) {\n _iterator49.e(err);\n } finally {\n _iterator49.f();\n }\n\n return i;\n }\n }, {\n key: \"Vn\",\n value: function Vn(e, t) {\n return !!e.filters.find(function (e) {\n return e instanceof FieldFilter && e.field.isEqual(t) && (\"in\"\n /* Operator.IN */\n === e.op || \"not-in\"\n /* Operator.NOT_IN */\n === e.op);\n });\n }\n }, {\n key: \"getFieldIndexes\",\n value: function getFieldIndexes(e, t) {\n var _this59 = this;\n\n var n = __PRIVATE_indexConfigurationStore(e),\n r = __PRIVATE_indexStateStore(e);\n\n return (t ? n.W(\"collectionGroupIndex\", IDBKeyRange.bound(t, t)) : n.W()).next(function (e) {\n var t = [];\n return PersistencePromise.forEach(e, function (e) {\n return r.get([e.indexId, _this59.uid]).next(function (n) {\n t.push(function __PRIVATE_fromDbIndexConfiguration(e, t) {\n var n = t ? new IndexState(t.sequenceNumber, new IndexOffset(__PRIVATE_fromDbTimestamp(t.readTime), new DocumentKey(__PRIVATE_decodeResourcePath(t.documentKey)), t.largestBatchId)) : IndexState.empty(),\n r = e.fields.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n e = _ref4[0],\n t = _ref4[1];\n\n return new IndexSegment(FieldPath$1.fromServerFormat(e), t);\n });\n return new FieldIndex(e.indexId, e.collectionGroup, r, n);\n }(e, n));\n });\n }).next(function () {\n return t;\n });\n });\n }\n }, {\n key: \"getNextCollectionGroupToUpdate\",\n value: function getNextCollectionGroupToUpdate(e) {\n return this.getFieldIndexes(e).next(function (e) {\n return 0 === e.length ? null : (e.sort(function (e, t) {\n var n = e.indexState.sequenceNumber - t.indexState.sequenceNumber;\n return 0 !== n ? n : __PRIVATE_primitiveComparator(e.collectionGroup, t.collectionGroup);\n }), e[0].collectionGroup);\n });\n }\n }, {\n key: \"updateCollectionGroup\",\n value: function updateCollectionGroup(e, t, n) {\n var _this60 = this;\n\n var r = __PRIVATE_indexConfigurationStore(e),\n i = __PRIVATE_indexStateStore(e);\n\n return this.gn(e).next(function (e) {\n return r.W(\"collectionGroupIndex\", IDBKeyRange.bound(t, t)).next(function (t) {\n return PersistencePromise.forEach(t, function (t) {\n return i.put(__PRIVATE_toDbIndexState(t.indexId, _this60.uid, e, n));\n });\n });\n });\n }\n }, {\n key: \"updateIndexEntries\",\n value: function updateIndexEntries(e, t) {\n var _this61 = this;\n\n // Porting Note: `getFieldIndexes()` on Web does not cache index lookups as\n // it could be used across different IndexedDB transactions. As any cached\n // data might be invalidated by other multi-tab clients, we can only trust\n // data within a single IndexedDB transaction. We therefore add a cache\n // here.\n var n = new Map();\n return PersistencePromise.forEach(t, function (t, r) {\n var i = n.get(t.collectionGroup);\n return (i ? PersistencePromise.resolve(i) : _this61.getFieldIndexes(e, t.collectionGroup)).next(function (i) {\n return n.set(t.collectionGroup, i), PersistencePromise.forEach(i, function (n) {\n return _this61.pn(e, t, n).next(function (t) {\n var i = _this61.yn(r, n);\n\n return t.isEqual(i) ? PersistencePromise.resolve() : _this61.wn(e, r, n, t, i);\n });\n });\n });\n });\n }\n }, {\n key: \"Sn\",\n value: function Sn(e, t, n, r) {\n return __PRIVATE_indexEntriesStore(e).put({\n indexId: r.indexId,\n uid: this.uid,\n arrayValue: r.arrayValue,\n directionalValue: r.directionalValue,\n orderedDocumentKey: this.Rn(n, t.key),\n documentKey: t.key.path.toArray()\n });\n }\n }, {\n key: \"bn\",\n value: function bn(e, t, n, r) {\n return __PRIVATE_indexEntriesStore(e).delete([r.indexId, this.uid, r.arrayValue, r.directionalValue, this.Rn(n, t.key), t.key.path.toArray()]);\n }\n }, {\n key: \"pn\",\n value: function pn(e, t, n) {\n var r = __PRIVATE_indexEntriesStore(e);\n\n var i = new SortedSet(__PRIVATE_indexEntryComparator);\n return r.Y({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only([n.indexId, this.uid, this.Rn(n, t)])\n }, function (e, r) {\n i = i.add(new __PRIVATE_IndexEntry(n.indexId, t, r.arrayValue, r.directionalValue));\n }).next(function () {\n return i;\n });\n }\n /** Creates the index entries for the given document. */\n\n }, {\n key: \"yn\",\n value: function yn(e, t) {\n var n = new SortedSet(__PRIVATE_indexEntryComparator);\n var r = this.An(t, e);\n if (null == r) return n;\n\n var i = __PRIVATE_fieldIndexGetArraySegment(t);\n\n if (null != i) {\n var s = e.data.field(i.fieldPath);\n\n if (isArray(s)) {\n var _iterator51 = _createForOfIteratorHelper(s.arrayValue.values || []),\n _step51;\n\n try {\n for (_iterator51.s(); !(_step51 = _iterator51.n()).done;) {\n var _i12 = _step51.value;\n n = n.add(new __PRIVATE_IndexEntry(t.indexId, e.key, this.Tn(_i12), r));\n }\n } catch (err) {\n _iterator51.e(err);\n } finally {\n _iterator51.f();\n }\n }\n } else n = n.add(new __PRIVATE_IndexEntry(t.indexId, e.key, Te, r));\n\n return n;\n }\n /**\n * Updates the index entries for the provided document by deleting entries\n * that are no longer referenced in `newEntries` and adding all newly added\n * entries.\n */\n\n }, {\n key: \"wn\",\n value: function wn(e, t, n, r, i) {\n var _this62 = this;\n\n __PRIVATE_logDebug(\"IndexedDbIndexManager\", \"Updating index entries for document '%s'\", t.key);\n\n var s = [];\n return function __PRIVATE_diffSortedSets(e, t, n, r, i) {\n var s = e.getIterator(),\n o = t.getIterator();\n\n var _ = __PRIVATE_advanceIterator(s),\n a = __PRIVATE_advanceIterator(o); // Walk through the two sets at the same time, using the ordering defined by\n // `comparator`.\n\n\n for (; _ || a;) {\n var _e61 = !1,\n _t31 = !1;\n\n if (_ && a) {\n var _r18 = n(_, a);\n\n _r18 < 0 ? // The element was removed if the next element in our ordered\n // walkthrough is only in `before`.\n _t31 = !0 : _r18 > 0 && ( // The element was added if the next element in our ordered walkthrough\n // is only in `after`.\n _e61 = !0);\n } else null != _ ? _t31 = !0 : _e61 = !0;\n\n _e61 ? (r(a), a = __PRIVATE_advanceIterator(o)) : _t31 ? (i(_), _ = __PRIVATE_advanceIterator(s)) : (_ = __PRIVATE_advanceIterator(s), a = __PRIVATE_advanceIterator(o));\n }\n }(r, i, __PRIVATE_indexEntryComparator,\n /* onAdd= */\n function (r) {\n s.push(_this62.Sn(e, t, n, r));\n },\n /* onRemove= */\n function (r) {\n s.push(_this62.bn(e, t, n, r));\n }), PersistencePromise.waitFor(s);\n }\n }, {\n key: \"gn\",\n value: function gn(e) {\n var t = 1;\n return __PRIVATE_indexStateStore(e).Y({\n index: \"sequenceNumberIndex\",\n reverse: !0,\n range: IDBKeyRange.upperBound([this.uid, Number.MAX_SAFE_INTEGER])\n }, function (e, n, r) {\n r.done(), t = n.sequenceNumber + 1;\n }).next(function () {\n return t;\n });\n }\n /**\n * Returns a new set of IDB ranges that splits the existing range and excludes\n * any values that match the `notInValue` from these ranges. As an example,\n * '[foo > 2 && foo != 3]` becomes `[foo > 2 && < 3, foo > 3]`.\n */\n\n }, {\n key: \"createRange\",\n value: function createRange(e, t, n) {\n // The notIn values need to be sorted and unique so that we can return a\n // sorted set of non-overlapping ranges.\n n = n.sort(function (e, t) {\n return __PRIVATE_indexEntryComparator(e, t);\n }).filter(function (e, t, n) {\n return !t || 0 !== __PRIVATE_indexEntryComparator(e, n[t - 1]);\n });\n var r = [];\n r.push(e);\n\n var _iterator52 = _createForOfIteratorHelper(n),\n _step52;\n\n try {\n for (_iterator52.s(); !(_step52 = _iterator52.n()).done;) {\n var _i13 = _step52.value;\n\n var _n22 = __PRIVATE_indexEntryComparator(_i13, e),\n s = __PRIVATE_indexEntryComparator(_i13, t);\n\n if (0 === _n22) // `notInValue` is the lower bound. We therefore need to raise the bound\n // to the next value.\n r[0] = e.Jt();else if (_n22 > 0 && s < 0) // `notInValue` is in the middle of the range\n r.push(_i13), r.push(_i13.Jt());else if (s > 0) // `notInValue` (and all following values) are out of the range\n break;\n }\n } catch (err) {\n _iterator52.e(err);\n } finally {\n _iterator52.f();\n }\n\n r.push(t);\n var i = [];\n\n for (var _e62 = 0; _e62 < r.length; _e62 += 2) {\n // If we encounter two bounds that will create an unmatchable key range,\n // then we return an empty set of key ranges.\n if (this.Dn(r[_e62], r[_e62 + 1])) return [];\n var _t32 = [r[_e62].indexId, this.uid, r[_e62].arrayValue, r[_e62].directionalValue, Te, []],\n _n21 = [r[_e62 + 1].indexId, this.uid, r[_e62 + 1].arrayValue, r[_e62 + 1].directionalValue, Te, []];\n i.push(IDBKeyRange.bound(_t32, _n21));\n }\n\n return i;\n }\n }, {\n key: \"Dn\",\n value: function Dn(e, t) {\n // If lower bound is greater than the upper bound, then the key\n // range can never be matched.\n return __PRIVATE_indexEntryComparator(e, t) > 0;\n }\n }, {\n key: \"getMinOffsetFromCollectionGroup\",\n value: function getMinOffsetFromCollectionGroup(e, t) {\n return this.getFieldIndexes(e, t).next(__PRIVATE_getMinOffsetFromFieldIndexes);\n }\n }, {\n key: \"getMinOffset\",\n value: function getMinOffset(e, t) {\n var _this63 = this;\n\n return PersistencePromise.mapArray(this.cn(t), function (t) {\n return _this63.ln(e, t).next(function (e) {\n return e || fail();\n });\n }).next(__PRIVATE_getMinOffsetFromFieldIndexes);\n }\n }]);\n\n return __PRIVATE_IndexedDbIndexManager;\n}();\n/**\n * Helper to get a typed SimpleDbStore for the collectionParents\n * document store.\n */\n\n\nfunction __PRIVATE_collectionParentsStore(e) {\n return __PRIVATE_getStore(e, \"collectionParents\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the index entry object store.\n */\n\n\nfunction __PRIVATE_indexEntriesStore(e) {\n return __PRIVATE_getStore(e, \"indexEntries\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the index configuration object store.\n */\n\n\nfunction __PRIVATE_indexConfigurationStore(e) {\n return __PRIVATE_getStore(e, \"indexConfiguration\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the index state object store.\n */\n\n\nfunction __PRIVATE_indexStateStore(e) {\n return __PRIVATE_getStore(e, \"indexState\");\n}\n\nfunction __PRIVATE_getMinOffsetFromFieldIndexes(e) {\n __PRIVATE_hardAssert(0 !== e.length);\n\n var t = e[0].indexState.offset,\n n = t.largestBatchId;\n\n for (var r = 1; r < e.length; r++) {\n var i = e[r].indexState.offset;\n __PRIVATE_indexOffsetComparator(i, t) < 0 && (t = i), n < i.largestBatchId && (n = i.largestBatchId);\n }\n\n return new IndexOffset(t.readTime, t.documentKey, n);\n}\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar Ee = {\n didRun: !1,\n sequenceNumbersCollected: 0,\n targetsRemoved: 0,\n documentsRemoved: 0\n};\n\nvar LruParams = /*#__PURE__*/function () {\n function LruParams( // When we attempt to collect, we will only do so if the cache size is greater than this\n // threshold. Passing `COLLECTION_DISABLED` here will cause collection to always be skipped.\n e, // The percentage of sequence numbers that we will attempt to collect\n t, // A cap on the total number of sequence numbers that will be collected. This prevents\n // us from collecting a huge number of sequence numbers if the cache has grown very large.\n n) {\n _classCallCheck(this, LruParams);\n\n this.cacheSizeCollectionThreshold = e, this.percentileToCollect = t, this.maximumSequenceNumbersToCollect = n;\n }\n\n _createClass(LruParams, null, [{\n key: \"withCacheSize\",\n value: function withCacheSize(e) {\n return new LruParams(e, LruParams.DEFAULT_COLLECTION_PERCENTILE, LruParams.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT);\n }\n }]);\n\n return LruParams;\n}();\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Delete a mutation batch and the associated document mutations.\n * @returns A PersistencePromise of the document mutations that were removed.\n */\n\n\nfunction _removeMutationBatch(e, t, n) {\n var r = e.store(\"mutations\"),\n i = e.store(\"documentMutations\"),\n s = [],\n o = IDBKeyRange.only(n.batchId);\n var _ = 0;\n var a = r.Y({\n range: o\n }, function (e, t, n) {\n return _++, n.delete();\n });\n s.push(a.next(function () {\n __PRIVATE_hardAssert(1 === _);\n }));\n var u = [];\n\n var _iterator53 = _createForOfIteratorHelper(n.mutations),\n _step53;\n\n try {\n for (_iterator53.s(); !(_step53 = _iterator53.n()).done;) {\n var _e63 = _step53.value;\n\n var _r19 = __PRIVATE_newDbDocumentMutationKey(t, _e63.key.path, n.batchId);\n\n s.push(i.delete(_r19)), u.push(_e63.key);\n }\n } catch (err) {\n _iterator53.e(err);\n } finally {\n _iterator53.f();\n }\n\n return PersistencePromise.waitFor(s).next(function () {\n return u;\n });\n}\n/**\n * Returns an approximate size for the given document.\n */\n\n\nfunction __PRIVATE_dbDocumentSize(e) {\n if (!e) return 0;\n var t;\n if (e.document) t = e.document;else if (e.unknownDocument) t = e.unknownDocument;else {\n if (!e.noDocument) throw fail();\n t = e.noDocument;\n }\n return JSON.stringify(t).length;\n}\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** A mutation queue for a specific user, backed by IndexedDB. */\n\n\nLruParams.DEFAULT_COLLECTION_PERCENTILE = 10, LruParams.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT = 1e3, LruParams.DEFAULT = new LruParams(41943040, LruParams.DEFAULT_COLLECTION_PERCENTILE, LruParams.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT), LruParams.DISABLED = new LruParams(-1, 0, 0);\n\nvar __PRIVATE_IndexedDbMutationQueue = /*#__PURE__*/function () {\n function __PRIVATE_IndexedDbMutationQueue(\n /**\n * The normalized userId (e.g. null UID => \"\" userId) used to store /\n * retrieve mutations.\n */\n e, t, n, r) {\n _classCallCheck(this, __PRIVATE_IndexedDbMutationQueue);\n\n this.userId = e, this.serializer = t, this.indexManager = n, this.referenceDelegate = r,\n /**\n * Caches the document keys for pending mutation batches. If the mutation\n * has been removed from IndexedDb, the cached value may continue to\n * be used to retrieve the batch's document keys. To remove a cached value\n * locally, `removeCachedMutationKeys()` should be invoked either directly\n * or through `removeMutationBatches()`.\n *\n * With multi-tab, when the primary client acknowledges or rejects a mutation,\n * this cache is used by secondary clients to invalidate the local\n * view of the documents that were previously affected by the mutation.\n */\n // PORTING NOTE: Multi-tab only.\n this.Cn = {};\n }\n /**\n * Creates a new mutation queue for the given user.\n * @param user - The user for which to create a mutation queue.\n * @param serializer - The serializer to use when persisting to IndexedDb.\n */\n\n\n _createClass(__PRIVATE_IndexedDbMutationQueue, [{\n key: \"checkEmpty\",\n value: function checkEmpty(e) {\n var t = !0;\n var n = IDBKeyRange.bound([this.userId, Number.NEGATIVE_INFINITY], [this.userId, Number.POSITIVE_INFINITY]);\n return __PRIVATE_mutationsStore(e).Y({\n index: \"userMutationsIndex\",\n range: n\n }, function (e, n, r) {\n t = !1, r.done();\n }).next(function () {\n return t;\n });\n }\n }, {\n key: \"addMutationBatch\",\n value: function addMutationBatch(e, t, n, r) {\n var _this64 = this;\n\n var i = __PRIVATE_documentMutationsStore(e),\n s = __PRIVATE_mutationsStore(e); // The IndexedDb implementation in Chrome (and Firefox) does not handle\n // compound indices that include auto-generated keys correctly. To ensure\n // that the index entry is added correctly in all browsers, we perform two\n // writes: The first write is used to retrieve the next auto-generated Batch\n // ID, and the second write populates the index and stores the actual\n // mutation batch.\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=701972\n // We write an empty object to obtain key\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n return s.add({}).next(function (o) {\n __PRIVATE_hardAssert(\"number\" == typeof o);\n\n var _ = new MutationBatch(o, t, n, r),\n a = function __PRIVATE_toDbMutationBatch(e, t, n) {\n var r = n.baseMutations.map(function (t) {\n return toMutation(e.ct, t);\n }),\n i = n.mutations.map(function (t) {\n return toMutation(e.ct, t);\n });\n return {\n userId: t,\n batchId: n.batchId,\n localWriteTimeMs: n.localWriteTime.toMillis(),\n baseMutations: r,\n mutations: i\n };\n }(_this64.serializer, _this64.userId, _),\n u = [];\n\n var c = new SortedSet(function (e, t) {\n return __PRIVATE_primitiveComparator(e.canonicalString(), t.canonicalString());\n });\n\n var _iterator54 = _createForOfIteratorHelper(r),\n _step54;\n\n try {\n for (_iterator54.s(); !(_step54 = _iterator54.n()).done;) {\n var _e64 = _step54.value;\n\n var _t33 = __PRIVATE_newDbDocumentMutationKey(_this64.userId, _e64.key.path, o);\n\n c = c.add(_e64.key.path.popLast()), u.push(s.put(a)), u.push(i.put(_t33, x));\n }\n } catch (err) {\n _iterator54.e(err);\n } finally {\n _iterator54.f();\n }\n\n return c.forEach(function (t) {\n u.push(_this64.indexManager.addToCollectionParentIndex(e, t));\n }), e.addOnCommittedListener(function () {\n _this64.Cn[o] = _.keys();\n }), PersistencePromise.waitFor(u).next(function () {\n return _;\n });\n });\n }\n }, {\n key: \"lookupMutationBatch\",\n value: function lookupMutationBatch(e, t) {\n var _this65 = this;\n\n return __PRIVATE_mutationsStore(e).get(t).next(function (e) {\n return e ? (__PRIVATE_hardAssert(e.userId === _this65.userId), __PRIVATE_fromDbMutationBatch(_this65.serializer, e)) : null;\n });\n }\n /**\n * Returns the document keys for the mutation batch with the given batchId.\n * For primary clients, this method returns `null` after\n * `removeMutationBatches()` has been called. Secondary clients return a\n * cached result until `removeCachedMutationKeys()` is invoked.\n */\n // PORTING NOTE: Multi-tab only.\n\n }, {\n key: \"vn\",\n value: function vn(e, t) {\n var _this66 = this;\n\n return this.Cn[t] ? PersistencePromise.resolve(this.Cn[t]) : this.lookupMutationBatch(e, t).next(function (e) {\n if (e) {\n var n = e.keys();\n return _this66.Cn[t] = n, n;\n }\n\n return null;\n });\n }\n }, {\n key: \"getNextMutationBatchAfterBatchId\",\n value: function getNextMutationBatchAfterBatchId(e, t) {\n var _this67 = this;\n\n var n = t + 1,\n r = IDBKeyRange.lowerBound([this.userId, n]);\n var i = null;\n return __PRIVATE_mutationsStore(e).Y({\n index: \"userMutationsIndex\",\n range: r\n }, function (e, t, r) {\n t.userId === _this67.userId && (__PRIVATE_hardAssert(t.batchId >= n), i = __PRIVATE_fromDbMutationBatch(_this67.serializer, t)), r.done();\n }).next(function () {\n return i;\n });\n }\n }, {\n key: \"getHighestUnacknowledgedBatchId\",\n value: function getHighestUnacknowledgedBatchId(e) {\n var t = IDBKeyRange.upperBound([this.userId, Number.POSITIVE_INFINITY]);\n var n = -1;\n return __PRIVATE_mutationsStore(e).Y({\n index: \"userMutationsIndex\",\n range: t,\n reverse: !0\n }, function (e, t, r) {\n n = t.batchId, r.done();\n }).next(function () {\n return n;\n });\n }\n }, {\n key: \"getAllMutationBatches\",\n value: function getAllMutationBatches(e) {\n var _this68 = this;\n\n var t = IDBKeyRange.bound([this.userId, -1], [this.userId, Number.POSITIVE_INFINITY]);\n return __PRIVATE_mutationsStore(e).W(\"userMutationsIndex\", t).next(function (e) {\n return e.map(function (e) {\n return __PRIVATE_fromDbMutationBatch(_this68.serializer, e);\n });\n });\n }\n }, {\n key: \"getAllMutationBatchesAffectingDocumentKey\",\n value: function getAllMutationBatchesAffectingDocumentKey(e, t) {\n var _this69 = this;\n\n // Scan the document-mutation index starting with a prefix starting with\n // the given documentKey.\n var n = __PRIVATE_newDbDocumentMutationPrefixForPath(this.userId, t.path),\n r = IDBKeyRange.lowerBound(n),\n i = [];\n\n return __PRIVATE_documentMutationsStore(e).Y({\n range: r\n }, function (n, r, s) {\n var _n23 = _slicedToArray(n, 3),\n o = _n23[0],\n _ = _n23[1],\n a = _n23[2],\n u = __PRIVATE_decodeResourcePath(_); // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n\n\n if (o === _this69.userId && t.path.isEqual(u)) // Look up the mutation batch in the store.\n return __PRIVATE_mutationsStore(e).get(a).next(function (e) {\n if (!e) throw fail();\n __PRIVATE_hardAssert(e.userId === _this69.userId), i.push(__PRIVATE_fromDbMutationBatch(_this69.serializer, e));\n });\n s.done();\n }).next(function () {\n return i;\n });\n }\n }, {\n key: \"getAllMutationBatchesAffectingDocumentKeys\",\n value: function getAllMutationBatchesAffectingDocumentKeys(e, t) {\n var _this70 = this;\n\n var n = new SortedSet(__PRIVATE_primitiveComparator);\n var r = [];\n return t.forEach(function (t) {\n var i = __PRIVATE_newDbDocumentMutationPrefixForPath(_this70.userId, t.path),\n s = IDBKeyRange.lowerBound(i),\n o = __PRIVATE_documentMutationsStore(e).Y({\n range: s\n }, function (e, r, i) {\n var _e65 = _slicedToArray(e, 3),\n s = _e65[0],\n o = _e65[1],\n _ = _e65[2],\n a = __PRIVATE_decodeResourcePath(o); // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n\n\n s === _this70.userId && t.path.isEqual(a) ? n = n.add(_) : i.done();\n });\n\n r.push(o);\n }), PersistencePromise.waitFor(r).next(function () {\n return _this70.Fn(e, n);\n });\n }\n }, {\n key: \"getAllMutationBatchesAffectingQuery\",\n value: function getAllMutationBatchesAffectingQuery(e, t) {\n var _this71 = this;\n\n var n = t.path,\n r = n.length + 1,\n i = __PRIVATE_newDbDocumentMutationPrefixForPath(this.userId, n),\n s = IDBKeyRange.lowerBound(i); // Collect up unique batchIDs encountered during a scan of the index. Use a\n // SortedSet to accumulate batch IDs so they can be traversed in order in a\n // scan of the main table.\n\n\n var o = new SortedSet(__PRIVATE_primitiveComparator);\n return __PRIVATE_documentMutationsStore(e).Y({\n range: s\n }, function (e, t, i) {\n var _e66 = _slicedToArray(e, 3),\n s = _e66[0],\n _ = _e66[1],\n a = _e66[2],\n u = __PRIVATE_decodeResourcePath(_);\n\n s === _this71.userId && n.isPrefixOf(u) ? // Rows with document keys more than one segment longer than the\n // query path can't be matches. For example, a query on 'rooms'\n // can't match the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n u.length === r && (o = o.add(a)) : i.done();\n }).next(function () {\n return _this71.Fn(e, o);\n });\n }\n }, {\n key: \"Fn\",\n value: function Fn(e, t) {\n var _this72 = this;\n\n var n = [],\n r = []; // TODO(rockwood): Implement this using iterate.\n\n return t.forEach(function (t) {\n r.push(__PRIVATE_mutationsStore(e).get(t).next(function (e) {\n if (null === e) throw fail();\n __PRIVATE_hardAssert(e.userId === _this72.userId), n.push(__PRIVATE_fromDbMutationBatch(_this72.serializer, e));\n }));\n }), PersistencePromise.waitFor(r).next(function () {\n return n;\n });\n }\n }, {\n key: \"removeMutationBatch\",\n value: function removeMutationBatch(e, t) {\n var _this73 = this;\n\n return _removeMutationBatch(e.ae, this.userId, t).next(function (n) {\n return e.addOnCommittedListener(function () {\n _this73.Mn(t.batchId);\n }), PersistencePromise.forEach(n, function (t) {\n return _this73.referenceDelegate.markPotentiallyOrphaned(e, t);\n });\n });\n }\n /**\n * Clears the cached keys for a mutation batch. This method should be\n * called by secondary clients after they process mutation updates.\n *\n * Note that this method does not have to be called from primary clients as\n * the corresponding cache entries are cleared when an acknowledged or\n * rejected batch is removed from the mutation queue.\n */\n // PORTING NOTE: Multi-tab only\n\n }, {\n key: \"Mn\",\n value: function Mn(e) {\n delete this.Cn[e];\n }\n }, {\n key: \"performConsistencyCheck\",\n value: function performConsistencyCheck(e) {\n var _this74 = this;\n\n return this.checkEmpty(e).next(function (t) {\n if (!t) return PersistencePromise.resolve(); // Verify that there are no entries in the documentMutations index if\n // the queue is empty.\n\n var n = IDBKeyRange.lowerBound(\n /**\n * Creates a [userId] key for use in the DbDocumentMutations index to iterate\n * over all of a user's document mutations.\n */\n function __PRIVATE_newDbDocumentMutationPrefixForUser(e) {\n return [e];\n }(_this74.userId)),\n r = [];\n return __PRIVATE_documentMutationsStore(e).Y({\n range: n\n }, function (e, t, n) {\n if (e[0] === _this74.userId) {\n var _t34 = __PRIVATE_decodeResourcePath(e[1]);\n\n r.push(_t34);\n } else n.done();\n }).next(function () {\n __PRIVATE_hardAssert(0 === r.length);\n });\n });\n }\n }, {\n key: \"containsKey\",\n value: function containsKey(e, t) {\n return __PRIVATE_mutationQueueContainsKey(e, this.userId, t);\n } // PORTING NOTE: Multi-tab only (state is held in memory in other clients).\n\n /** Returns the mutation queue's metadata from IndexedDb. */\n\n }, {\n key: \"xn\",\n value: function xn(e) {\n var _this75 = this;\n\n return __PRIVATE_mutationQueuesStore(e).get(this.userId).next(function (e) {\n return e || {\n userId: _this75.userId,\n lastAcknowledgedBatchId: -1,\n lastStreamToken: \"\"\n };\n });\n }\n }], [{\n key: \"lt\",\n value: function lt(e, t, n, r) {\n // TODO(mcg): Figure out what constraints there are on userIDs\n // In particular, are there any reserved characters? are empty ids allowed?\n // For the moment store these together in the same mutations table assuming\n // that empty userIDs aren't allowed.\n __PRIVATE_hardAssert(\"\" !== e.uid);\n\n var i = e.isAuthenticated() ? e.uid : \"\";\n return new __PRIVATE_IndexedDbMutationQueue(i, t, n, r);\n }\n }]);\n\n return __PRIVATE_IndexedDbMutationQueue;\n}();\n/**\n * @returns true if the mutation queue for the given user contains a pending\n * mutation for the given key.\n */\n\n\nfunction __PRIVATE_mutationQueueContainsKey(e, t, n) {\n var r = __PRIVATE_newDbDocumentMutationPrefixForPath(t, n.path),\n i = r[1],\n s = IDBKeyRange.lowerBound(r);\n\n var o = !1;\n return __PRIVATE_documentMutationsStore(e).Y({\n range: s,\n J: !0\n }, function (e, n, r) {\n var _e67 = _slicedToArray(e, 3),\n s = _e67[0],\n _ = _e67[1],\n\n /*batchID*/\n a = _e67[2];\n\n s === t && _ === i && (o = !0), r.done();\n }).next(function () {\n return o;\n });\n}\n/** Returns true if any mutation queue contains the given document. */\n\n/**\n * Helper to get a typed SimpleDbStore for the mutations object store.\n */\n\n\nfunction __PRIVATE_mutationsStore(e) {\n return __PRIVATE_getStore(e, \"mutations\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */\n\n\nfunction __PRIVATE_documentMutationsStore(e) {\n return __PRIVATE_getStore(e, \"documentMutations\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */\n\n\nfunction __PRIVATE_mutationQueuesStore(e) {\n return __PRIVATE_getStore(e, \"mutationQueues\");\n}\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Offset to ensure non-overlapping target ids. */\n\n/**\n * Generates monotonically increasing target IDs for sending targets to the\n * watch stream.\n *\n * The client constructs two generators, one for the target cache, and one for\n * for the sync engine (to generate limbo documents targets). These\n * generators produce non-overlapping IDs (by using even and odd IDs\n * respectively).\n *\n * By separating the target ID space, the query cache can generate target IDs\n * that persist across client restarts, while sync engine can independently\n * generate in-memory target IDs that are transient and can be reused after a\n * restart.\n */\n\n\nvar __PRIVATE_TargetIdGenerator = /*#__PURE__*/function () {\n function __PRIVATE_TargetIdGenerator(e) {\n _classCallCheck(this, __PRIVATE_TargetIdGenerator);\n\n this.On = e;\n }\n\n _createClass(__PRIVATE_TargetIdGenerator, [{\n key: \"next\",\n value: function next() {\n return this.On += 2, this.On;\n }\n }], [{\n key: \"Nn\",\n value: function Nn() {\n // The target cache generator must return '2' in its first call to `next()`\n // as there is no differentiation in the protocol layer between an unset\n // number and the number '0'. If we were to sent a target with target ID\n // '0', the backend would consider it unset and replace it with its own ID.\n return new __PRIVATE_TargetIdGenerator(0);\n }\n }, {\n key: \"Bn\",\n value: function Bn() {\n // Sync engine assigns target IDs for limbo document detection.\n return new __PRIVATE_TargetIdGenerator(-1);\n }\n }]);\n\n return __PRIVATE_TargetIdGenerator;\n}();\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar __PRIVATE_IndexedDbTargetCache = /*#__PURE__*/function () {\n function __PRIVATE_IndexedDbTargetCache(e, t) {\n _classCallCheck(this, __PRIVATE_IndexedDbTargetCache);\n\n this.referenceDelegate = e, this.serializer = t;\n } // PORTING NOTE: We don't cache global metadata for the target cache, since\n // some of it (in particular `highestTargetId`) can be modified by secondary\n // tabs. We could perhaps be more granular (and e.g. still cache\n // `lastRemoteSnapshotVersion` in memory) but for simplicity we currently go\n // to IndexedDb whenever we need to read metadata. We can revisit if it turns\n // out to have a meaningful performance impact.\n\n\n _createClass(__PRIVATE_IndexedDbTargetCache, [{\n key: \"allocateTargetId\",\n value: function allocateTargetId(e) {\n var _this76 = this;\n\n return this.Ln(e).next(function (t) {\n var n = new __PRIVATE_TargetIdGenerator(t.highestTargetId);\n return t.highestTargetId = n.next(), _this76.kn(e, t).next(function () {\n return t.highestTargetId;\n });\n });\n }\n }, {\n key: \"getLastRemoteSnapshotVersion\",\n value: function getLastRemoteSnapshotVersion(e) {\n return this.Ln(e).next(function (e) {\n return SnapshotVersion.fromTimestamp(new Timestamp(e.lastRemoteSnapshotVersion.seconds, e.lastRemoteSnapshotVersion.nanoseconds));\n });\n }\n }, {\n key: \"getHighestSequenceNumber\",\n value: function getHighestSequenceNumber(e) {\n return this.Ln(e).next(function (e) {\n return e.highestListenSequenceNumber;\n });\n }\n }, {\n key: \"setTargetsMetadata\",\n value: function setTargetsMetadata(e, t, n) {\n var _this77 = this;\n\n return this.Ln(e).next(function (r) {\n return r.highestListenSequenceNumber = t, n && (r.lastRemoteSnapshotVersion = n.toTimestamp()), t > r.highestListenSequenceNumber && (r.highestListenSequenceNumber = t), _this77.kn(e, r);\n });\n }\n }, {\n key: \"addTargetData\",\n value: function addTargetData(e, t) {\n var _this78 = this;\n\n return this.qn(e, t).next(function () {\n return _this78.Ln(e).next(function (n) {\n return n.targetCount += 1, _this78.Qn(t, n), _this78.kn(e, n);\n });\n });\n }\n }, {\n key: \"updateTargetData\",\n value: function updateTargetData(e, t) {\n return this.qn(e, t);\n }\n }, {\n key: \"removeTargetData\",\n value: function removeTargetData(e, t) {\n var _this79 = this;\n\n return this.removeMatchingKeysForTargetId(e, t.targetId).next(function () {\n return __PRIVATE_targetsStore(e).delete(t.targetId);\n }).next(function () {\n return _this79.Ln(e);\n }).next(function (t) {\n return __PRIVATE_hardAssert(t.targetCount > 0), t.targetCount -= 1, _this79.kn(e, t);\n });\n }\n /**\n * Drops any targets with sequence number less than or equal to the upper bound, excepting those\n * present in `activeTargetIds`. Document associations for the removed targets are also removed.\n * Returns the number of targets removed.\n */\n\n }, {\n key: \"removeTargets\",\n value: function removeTargets(e, t, n) {\n var _this80 = this;\n\n var r = 0;\n var i = [];\n return __PRIVATE_targetsStore(e).Y(function (s, o) {\n var _ = __PRIVATE_fromDbTarget(o);\n\n _.sequenceNumber <= t && null === n.get(_.targetId) && (r++, i.push(_this80.removeTargetData(e, _)));\n }).next(function () {\n return PersistencePromise.waitFor(i);\n }).next(function () {\n return r;\n });\n }\n /**\n * Call provided function with each `TargetData` that we have cached.\n */\n\n }, {\n key: \"forEachTarget\",\n value: function forEachTarget(e, t) {\n return __PRIVATE_targetsStore(e).Y(function (e, n) {\n var r = __PRIVATE_fromDbTarget(n);\n\n t(r);\n });\n }\n }, {\n key: \"Ln\",\n value: function Ln(e) {\n return __PRIVATE_globalTargetStore(e).get(\"targetGlobalKey\").next(function (e) {\n return __PRIVATE_hardAssert(null !== e), e;\n });\n }\n }, {\n key: \"kn\",\n value: function kn(e, t) {\n return __PRIVATE_globalTargetStore(e).put(\"targetGlobalKey\", t);\n }\n }, {\n key: \"qn\",\n value: function qn(e, t) {\n return __PRIVATE_targetsStore(e).put(__PRIVATE_toDbTarget(this.serializer, t));\n }\n /**\n * In-place updates the provided metadata to account for values in the given\n * TargetData. Saving is done separately. Returns true if there were any\n * changes to the metadata.\n */\n\n }, {\n key: \"Qn\",\n value: function Qn(e, t) {\n var n = !1;\n return e.targetId > t.highestTargetId && (t.highestTargetId = e.targetId, n = !0), e.sequenceNumber > t.highestListenSequenceNumber && (t.highestListenSequenceNumber = e.sequenceNumber, n = !0), n;\n }\n }, {\n key: \"getTargetCount\",\n value: function getTargetCount(e) {\n return this.Ln(e).next(function (e) {\n return e.targetCount;\n });\n }\n }, {\n key: \"getTargetData\",\n value: function getTargetData(e, t) {\n // Iterating by the canonicalId may yield more than one result because\n // canonicalId values are not required to be unique per target. This query\n // depends on the queryTargets index to be efficient.\n var n = __PRIVATE_canonifyTarget(t),\n r = IDBKeyRange.bound([n, Number.NEGATIVE_INFINITY], [n, Number.POSITIVE_INFINITY]);\n\n var i = null;\n return __PRIVATE_targetsStore(e).Y({\n range: r,\n index: \"queryTargetsIndex\"\n }, function (e, n, r) {\n var s = __PRIVATE_fromDbTarget(n); // After finding a potential match, check that the target is\n // actually equal to the requested target.\n\n\n __PRIVATE_targetEquals(t, s.target) && (i = s, r.done());\n }).next(function () {\n return i;\n });\n }\n }, {\n key: \"addMatchingKeys\",\n value: function addMatchingKeys(e, t, n) {\n var _this81 = this;\n\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n var r = [],\n i = __PRIVATE_documentTargetStore(e);\n\n return t.forEach(function (t) {\n var s = __PRIVATE_encodeResourcePath(t.path);\n\n r.push(i.put({\n targetId: n,\n path: s\n })), r.push(_this81.referenceDelegate.addReference(e, n, t));\n }), PersistencePromise.waitFor(r);\n }\n }, {\n key: \"removeMatchingKeys\",\n value: function removeMatchingKeys(e, t, n) {\n var _this82 = this;\n\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n var r = __PRIVATE_documentTargetStore(e);\n\n return PersistencePromise.forEach(t, function (t) {\n var i = __PRIVATE_encodeResourcePath(t.path);\n\n return PersistencePromise.waitFor([r.delete([n, i]), _this82.referenceDelegate.removeReference(e, n, t)]);\n });\n }\n }, {\n key: \"removeMatchingKeysForTargetId\",\n value: function removeMatchingKeysForTargetId(e, t) {\n var n = __PRIVATE_documentTargetStore(e),\n r = IDBKeyRange.bound([t], [t + 1],\n /*lowerOpen=*/\n !1,\n /*upperOpen=*/\n !0);\n\n return n.delete(r);\n }\n }, {\n key: \"getMatchingKeysForTargetId\",\n value: function getMatchingKeysForTargetId(e, t) {\n var n = IDBKeyRange.bound([t], [t + 1],\n /*lowerOpen=*/\n !1,\n /*upperOpen=*/\n !0),\n r = __PRIVATE_documentTargetStore(e);\n\n var i = __PRIVATE_documentKeySet();\n\n return r.Y({\n range: n,\n J: !0\n }, function (e, t, n) {\n var r = __PRIVATE_decodeResourcePath(e[1]),\n s = new DocumentKey(r);\n\n i = i.add(s);\n }).next(function () {\n return i;\n });\n }\n }, {\n key: \"containsKey\",\n value: function containsKey(e, t) {\n var n = __PRIVATE_encodeResourcePath(t.path),\n r = IDBKeyRange.bound([n], [__PRIVATE_immediateSuccessor(n)],\n /*lowerOpen=*/\n !1,\n /*upperOpen=*/\n !0);\n\n var i = 0;\n return __PRIVATE_documentTargetStore(e).Y({\n index: \"documentTargetsIndex\",\n J: !0,\n range: r\n }, function (_ref5, n, r) {\n var _ref6 = _slicedToArray(_ref5, 2),\n e = _ref6[0],\n t = _ref6[1];\n\n // Having a sentinel row for a document does not count as containing that document;\n // For the target cache, containing the document means the document is part of some\n // target.\n 0 !== e && (i++, r.done());\n }).next(function () {\n return i > 0;\n });\n }\n /**\n * Looks up a TargetData entry by target ID.\n *\n * @param targetId - The target ID of the TargetData entry to look up.\n * @returns The cached TargetData entry, or null if the cache has no entry for\n * the target.\n */\n // PORTING NOTE: Multi-tab only.\n\n }, {\n key: \"_t\",\n value: function _t(e, t) {\n return __PRIVATE_targetsStore(e).get(t).next(function (e) {\n return e ? __PRIVATE_fromDbTarget(e) : null;\n });\n }\n }]);\n\n return __PRIVATE_IndexedDbTargetCache;\n}();\n/**\n * Helper to get a typed SimpleDbStore for the queries object store.\n */\n\n\nfunction __PRIVATE_targetsStore(e) {\n return __PRIVATE_getStore(e, \"targets\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the target globals object store.\n */\n\n\nfunction __PRIVATE_globalTargetStore(e) {\n return __PRIVATE_getStore(e, \"targetGlobal\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the document target object store.\n */\n\n\nfunction __PRIVATE_documentTargetStore(e) {\n return __PRIVATE_getStore(e, \"targetDocuments\");\n}\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nfunction __PRIVATE_bufferEntryComparator(_ref7, _ref8) {\n var _ref9 = _slicedToArray(_ref7, 2),\n e = _ref9[0],\n t = _ref9[1];\n\n var _ref10 = _slicedToArray(_ref8, 2),\n n = _ref10[0],\n r = _ref10[1];\n\n var i = __PRIVATE_primitiveComparator(e, n);\n\n return 0 === i ? __PRIVATE_primitiveComparator(t, r) : i;\n}\n/**\n * Used to calculate the nth sequence number. Keeps a rolling buffer of the\n * lowest n values passed to `addElement`, and finally reports the largest of\n * them in `maxValue`.\n */\n\n\nvar __PRIVATE_RollingSequenceNumberBuffer = /*#__PURE__*/function () {\n function __PRIVATE_RollingSequenceNumberBuffer(e) {\n _classCallCheck(this, __PRIVATE_RollingSequenceNumberBuffer);\n\n this.Kn = e, this.buffer = new SortedSet(__PRIVATE_bufferEntryComparator), this.$n = 0;\n }\n\n _createClass(__PRIVATE_RollingSequenceNumberBuffer, [{\n key: \"Un\",\n value: function Un() {\n return ++this.$n;\n }\n }, {\n key: \"Wn\",\n value: function Wn(e) {\n var t = [e, this.Un()];\n if (this.buffer.size < this.Kn) this.buffer = this.buffer.add(t);else {\n var _e68 = this.buffer.last();\n\n __PRIVATE_bufferEntryComparator(t, _e68) < 0 && (this.buffer = this.buffer.delete(_e68).add(t));\n }\n }\n }, {\n key: \"maxValue\",\n get: function get() {\n // Guaranteed to be non-empty. If we decide we are not collecting any\n // sequence numbers, nthSequenceNumber below short-circuits. If we have\n // decided that we are collecting n sequence numbers, it's because n is some\n // percentage of the existing sequence numbers. That means we should never\n // be in a situation where we are collecting sequence numbers but don't\n // actually have any.\n return this.buffer.last()[0];\n }\n }]);\n\n return __PRIVATE_RollingSequenceNumberBuffer;\n}();\n/**\n * This class is responsible for the scheduling of LRU garbage collection. It handles checking\n * whether or not GC is enabled, as well as which delay to use before the next run.\n */\n\n\nvar __PRIVATE_LruScheduler = /*#__PURE__*/function () {\n function __PRIVATE_LruScheduler(e, t, n) {\n _classCallCheck(this, __PRIVATE_LruScheduler);\n\n this.garbageCollector = e, this.asyncQueue = t, this.localStore = n, this.Gn = null;\n }\n\n _createClass(__PRIVATE_LruScheduler, [{\n key: \"start\",\n value: function start() {\n -1 !== this.garbageCollector.params.cacheSizeCollectionThreshold && this.zn(6e4);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.Gn && (this.Gn.cancel(), this.Gn = null);\n }\n }, {\n key: \"started\",\n get: function get() {\n return null !== this.Gn;\n }\n }, {\n key: \"zn\",\n value: function zn(e) {\n var _this83 = this;\n\n __PRIVATE_logDebug(\"LruGarbageCollector\", \"Garbage collection scheduled in \".concat(e, \"ms\")), this.Gn = this.asyncQueue.enqueueAfterDelay(\"lru_garbage_collection\"\n /* TimerId.LruGarbageCollection */\n , e, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {\n return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _this83.Gn = null;\n _context7.prev = 1;\n _context7.next = 4;\n return _this83.localStore.collectGarbage(_this83.garbageCollector);\n\n case 4:\n _context7.next = 14;\n break;\n\n case 6:\n _context7.prev = 6;\n _context7.t0 = _context7[\"catch\"](1);\n\n if (!__PRIVATE_isIndexedDbTransactionError(_context7.t0)) {\n _context7.next = 12;\n break;\n }\n\n __PRIVATE_logDebug(\"LruGarbageCollector\", \"Ignoring IndexedDB error during garbage collection: \", _context7.t0);\n\n _context7.next = 14;\n break;\n\n case 12:\n _context7.next = 14;\n return __PRIVATE_ignoreIfPrimaryLeaseLoss(_context7.t0);\n\n case 14:\n _context7.next = 16;\n return _this83.zn(3e5);\n\n case 16:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, null, [[1, 6]]);\n })));\n }\n }]);\n\n return __PRIVATE_LruScheduler;\n}();\n/**\n * Implements the steps for LRU garbage collection.\n */\n\n\nvar __PRIVATE_LruGarbageCollectorImpl = /*#__PURE__*/function () {\n function __PRIVATE_LruGarbageCollectorImpl(e, t) {\n _classCallCheck(this, __PRIVATE_LruGarbageCollectorImpl);\n\n this.jn = e, this.params = t;\n }\n\n _createClass(__PRIVATE_LruGarbageCollectorImpl, [{\n key: \"calculateTargetCount\",\n value: function calculateTargetCount(e, t) {\n return this.jn.Hn(e).next(function (e) {\n return Math.floor(t / 100 * e);\n });\n }\n }, {\n key: \"nthSequenceNumber\",\n value: function nthSequenceNumber(e, t) {\n var _this84 = this;\n\n if (0 === t) return PersistencePromise.resolve(__PRIVATE_ListenSequence._e);\n var n = new __PRIVATE_RollingSequenceNumberBuffer(t);\n return this.jn.forEachTarget(e, function (e) {\n return n.Wn(e.sequenceNumber);\n }).next(function () {\n return _this84.jn.Jn(e, function (e) {\n return n.Wn(e);\n });\n }).next(function () {\n return n.maxValue;\n });\n }\n }, {\n key: \"removeTargets\",\n value: function removeTargets(e, t, n) {\n return this.jn.removeTargets(e, t, n);\n }\n }, {\n key: \"removeOrphanedDocuments\",\n value: function removeOrphanedDocuments(e, t) {\n return this.jn.removeOrphanedDocuments(e, t);\n }\n }, {\n key: \"collect\",\n value: function collect(e, t) {\n var _this85 = this;\n\n return -1 === this.params.cacheSizeCollectionThreshold ? (__PRIVATE_logDebug(\"LruGarbageCollector\", \"Garbage collection skipped; disabled\"), PersistencePromise.resolve(Ee)) : this.getCacheSize(e).next(function (n) {\n return n < _this85.params.cacheSizeCollectionThreshold ? (__PRIVATE_logDebug(\"LruGarbageCollector\", \"Garbage collection skipped; Cache size \".concat(n, \" is lower than threshold \").concat(_this85.params.cacheSizeCollectionThreshold)), Ee) : _this85.Yn(e, t);\n });\n }\n }, {\n key: \"getCacheSize\",\n value: function getCacheSize(e) {\n return this.jn.getCacheSize(e);\n }\n }, {\n key: \"Yn\",\n value: function Yn(e, t) {\n var _this86 = this;\n\n var n, r, i, s, o, a, u;\n var c = Date.now();\n return this.calculateTargetCount(e, this.params.percentileToCollect).next(function (t) {\n return (// Cap at the configured max\n t > _this86.params.maximumSequenceNumbersToCollect ? (__PRIVATE_logDebug(\"LruGarbageCollector\", \"Capping sequence numbers to collect down to the maximum of \".concat(_this86.params.maximumSequenceNumbersToCollect, \" from \").concat(t)), r = _this86.params.maximumSequenceNumbersToCollect) : r = t, s = Date.now(), _this86.nthSequenceNumber(e, r)\n );\n }).next(function (r) {\n return n = r, o = Date.now(), _this86.removeTargets(e, n, t);\n }).next(function (t) {\n return i = t, a = Date.now(), _this86.removeOrphanedDocuments(e, n);\n }).next(function (e) {\n if (u = Date.now(), __PRIVATE_getLogLevel() <= LogLevel.DEBUG) {\n __PRIVATE_logDebug(\"LruGarbageCollector\", \"LRU Garbage Collection\\n\\tCounted targets in \".concat(s - c, \"ms\\n\\tDetermined least recently used \").concat(r, \" in \") + (o - s) + \"ms\\n\" + \"\\tRemoved \".concat(i, \" targets in \") + (a - o) + \"ms\\n\" + \"\\tRemoved \".concat(e, \" documents in \") + (u - a) + \"ms\\n\" + \"Total Duration: \".concat(u - c, \"ms\"));\n }\n\n return PersistencePromise.resolve({\n didRun: !0,\n sequenceNumbersCollected: r,\n targetsRemoved: i,\n documentsRemoved: e\n });\n });\n }\n }]);\n\n return __PRIVATE_LruGarbageCollectorImpl;\n}();\n\nfunction __PRIVATE_newLruGarbageCollector(e, t) {\n return new __PRIVATE_LruGarbageCollectorImpl(e, t);\n}\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Provides LRU functionality for IndexedDB persistence. */\n\n\nvar __PRIVATE_IndexedDbLruDelegateImpl = /*#__PURE__*/function () {\n function __PRIVATE_IndexedDbLruDelegateImpl(e, t) {\n _classCallCheck(this, __PRIVATE_IndexedDbLruDelegateImpl);\n\n this.db = e, this.garbageCollector = __PRIVATE_newLruGarbageCollector(this, t);\n }\n\n _createClass(__PRIVATE_IndexedDbLruDelegateImpl, [{\n key: \"Hn\",\n value: function Hn(e) {\n var t = this.Zn(e);\n return this.db.getTargetCache().getTargetCount(e).next(function (e) {\n return t.next(function (t) {\n return e + t;\n });\n });\n }\n }, {\n key: \"Zn\",\n value: function Zn(e) {\n var t = 0;\n return this.Jn(e, function (e) {\n t++;\n }).next(function () {\n return t;\n });\n }\n }, {\n key: \"forEachTarget\",\n value: function forEachTarget(e, t) {\n return this.db.getTargetCache().forEachTarget(e, t);\n }\n }, {\n key: \"Jn\",\n value: function Jn(e, t) {\n return this.Xn(e, function (e, n) {\n return t(n);\n });\n }\n }, {\n key: \"addReference\",\n value: function addReference(e, t, n) {\n return __PRIVATE_writeSentinelKey(e, n);\n }\n }, {\n key: \"removeReference\",\n value: function removeReference(e, t, n) {\n return __PRIVATE_writeSentinelKey(e, n);\n }\n }, {\n key: \"removeTargets\",\n value: function removeTargets(e, t, n) {\n return this.db.getTargetCache().removeTargets(e, t, n);\n }\n }, {\n key: \"markPotentiallyOrphaned\",\n value: function markPotentiallyOrphaned(e, t) {\n return __PRIVATE_writeSentinelKey(e, t);\n }\n /**\n * Returns true if anything would prevent this document from being garbage\n * collected, given that the document in question is not present in any\n * targets and has a sequence number less than or equal to the upper bound for\n * the collection run.\n */\n\n }, {\n key: \"er\",\n value: function er(e, t) {\n return function __PRIVATE_mutationQueuesContainKey(e, t) {\n var n = !1;\n return __PRIVATE_mutationQueuesStore(e).Z(function (r) {\n return __PRIVATE_mutationQueueContainsKey(e, r, t).next(function (e) {\n return e && (n = !0), PersistencePromise.resolve(!e);\n });\n }).next(function () {\n return n;\n });\n }(e, t);\n }\n }, {\n key: \"removeOrphanedDocuments\",\n value: function removeOrphanedDocuments(e, t) {\n var _this87 = this;\n\n var n = this.db.getRemoteDocumentCache().newChangeBuffer(),\n r = [];\n var i = 0;\n return this.Xn(e, function (s, o) {\n if (o <= t) {\n var _t35 = _this87.er(e, s).next(function (t) {\n if (!t) // Our size accounting requires us to read all documents before\n // removing them.\n return i++, n.getEntry(e, s).next(function () {\n return n.removeEntry(s, SnapshotVersion.min()), __PRIVATE_documentTargetStore(e).delete(function __PRIVATE_sentinelKey$1(e) {\n return [0, __PRIVATE_encodeResourcePath(e.path)];\n }\n /**\n * @returns A value suitable for writing a sentinel row in the target-document\n * store.\n */\n (s));\n });\n });\n\n r.push(_t35);\n }\n }).next(function () {\n return PersistencePromise.waitFor(r);\n }).next(function () {\n return n.apply(e);\n }).next(function () {\n return i;\n });\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(e, t) {\n var n = t.withSequenceNumber(e.currentSequenceNumber);\n return this.db.getTargetCache().updateTargetData(e, n);\n }\n }, {\n key: \"updateLimboDocument\",\n value: function updateLimboDocument(e, t) {\n return __PRIVATE_writeSentinelKey(e, t);\n }\n /**\n * Call provided function for each document in the cache that is 'orphaned'. Orphaned\n * means not a part of any target, so the only entry in the target-document index for\n * that document will be the sentinel row (targetId 0), which will also have the sequence\n * number for the last time the document was accessed.\n */\n\n }, {\n key: \"Xn\",\n value: function Xn(e, t) {\n var n = __PRIVATE_documentTargetStore(e);\n\n var r,\n i = __PRIVATE_ListenSequence._e;\n return n.Y({\n index: \"documentTargetsIndex\"\n }, function (_ref12, _ref13) {\n var _ref14 = _slicedToArray(_ref12, 2),\n e = _ref14[0],\n n = _ref14[1];\n\n var s = _ref13.path,\n o = _ref13.sequenceNumber;\n 0 === e ? ( // if nextToReport is valid, report it, this is a new key so the\n // last one must not be a member of any targets.\n i !== __PRIVATE_ListenSequence._e && t(new DocumentKey(__PRIVATE_decodeResourcePath(r)), i), // set nextToReport to be this sequence number. It's the next one we\n // might report, if we don't find any targets for this document.\n // Note that the sequence number must be defined when the targetId\n // is 0.\n i = o, r = s) : // set nextToReport to be invalid, we know we don't need to report\n // this one since we found a target for it.\n i = __PRIVATE_ListenSequence._e;\n }).next(function () {\n // Since we report sequence numbers after getting to the next key, we\n // need to check if the last key we iterated over was an orphaned\n // document and report it.\n i !== __PRIVATE_ListenSequence._e && t(new DocumentKey(__PRIVATE_decodeResourcePath(r)), i);\n });\n }\n }, {\n key: \"getCacheSize\",\n value: function getCacheSize(e) {\n return this.db.getRemoteDocumentCache().getSize(e);\n }\n }]);\n\n return __PRIVATE_IndexedDbLruDelegateImpl;\n}();\n\nfunction __PRIVATE_writeSentinelKey(e, t) {\n return __PRIVATE_documentTargetStore(e).put(function __PRIVATE_sentinelRow(e, t) {\n return {\n targetId: 0,\n path: __PRIVATE_encodeResourcePath(e.path),\n sequenceNumber: t\n };\n }(t, e.currentSequenceNumber));\n}\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * An in-memory buffer of entries to be written to a RemoteDocumentCache.\n * It can be used to batch up a set of changes to be written to the cache, but\n * additionally supports reading entries back with the `getEntry()` method,\n * falling back to the underlying RemoteDocumentCache if no entry is\n * buffered.\n *\n * Entries added to the cache *must* be read first. This is to facilitate\n * calculating the size delta of the pending changes.\n *\n * PORTING NOTE: This class was implemented then removed from other platforms.\n * If byte-counting ends up being needed on the other platforms, consider\n * porting this class as part of that implementation work.\n */\n\n\nvar RemoteDocumentChangeBuffer = /*#__PURE__*/function () {\n function RemoteDocumentChangeBuffer() {\n _classCallCheck(this, RemoteDocumentChangeBuffer);\n\n // A mapping of document key to the new cache entry that should be written.\n this.changes = new ObjectMap(function (e) {\n return e.toString();\n }, function (e, t) {\n return e.isEqual(t);\n }), this.changesApplied = !1;\n }\n /**\n * Buffers a `RemoteDocumentCache.addEntry()` call.\n *\n * You can only modify documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */\n\n\n _createClass(RemoteDocumentChangeBuffer, [{\n key: \"addEntry\",\n value: function addEntry(e) {\n this.assertNotApplied(), this.changes.set(e.key, e);\n }\n /**\n * Buffers a `RemoteDocumentCache.removeEntry()` call.\n *\n * You can only remove documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */\n\n }, {\n key: \"removeEntry\",\n value: function removeEntry(e, t) {\n this.assertNotApplied(), this.changes.set(e, MutableDocument.newInvalidDocument(e).setReadTime(t));\n }\n /**\n * Looks up an entry in the cache. The buffered changes will first be checked,\n * and if no buffered change applies, this will forward to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document or an invalid document if we have nothing\n * cached.\n */\n\n }, {\n key: \"getEntry\",\n value: function getEntry(e, t) {\n this.assertNotApplied();\n var n = this.changes.get(t);\n return void 0 !== n ? PersistencePromise.resolve(n) : this.getFromCache(e, t);\n }\n /**\n * Looks up several entries in the cache, forwarding to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKeys - The keys of the entries to look up.\n * @returns A map of cached documents, indexed by key. If an entry cannot be\n * found, the corresponding key will be mapped to an invalid document.\n */\n\n }, {\n key: \"getEntries\",\n value: function getEntries(e, t) {\n return this.getAllFromCache(e, t);\n }\n /**\n * Applies buffered changes to the underlying RemoteDocumentCache, using\n * the provided transaction.\n */\n\n }, {\n key: \"apply\",\n value: function apply(e) {\n return this.assertNotApplied(), this.changesApplied = !0, this.applyChanges(e);\n }\n /** Helper to assert this.changes is not null */\n\n }, {\n key: \"assertNotApplied\",\n value: function assertNotApplied() {}\n }]);\n\n return RemoteDocumentChangeBuffer;\n}();\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The RemoteDocumentCache for IndexedDb. To construct, invoke\n * `newIndexedDbRemoteDocumentCache()`.\n */\n\n\nvar __PRIVATE_IndexedDbRemoteDocumentCacheImpl = /*#__PURE__*/function () {\n function __PRIVATE_IndexedDbRemoteDocumentCacheImpl(e) {\n _classCallCheck(this, __PRIVATE_IndexedDbRemoteDocumentCacheImpl);\n\n this.serializer = e;\n }\n\n _createClass(__PRIVATE_IndexedDbRemoteDocumentCacheImpl, [{\n key: \"setIndexManager\",\n value: function setIndexManager(e) {\n this.indexManager = e;\n }\n /**\n * Adds the supplied entries to the cache.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */\n\n }, {\n key: \"addEntry\",\n value: function addEntry(e, t, n) {\n return __PRIVATE_remoteDocumentsStore(e).put(n);\n }\n /**\n * Removes a document from the cache.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */\n\n }, {\n key: \"removeEntry\",\n value: function removeEntry(e, t, n) {\n return __PRIVATE_remoteDocumentsStore(e).delete(\n /**\n * Returns a key that can be used for document lookups via the primary key of\n * the DbRemoteDocument object store.\n */\n function __PRIVATE_dbReadTimeKey(e, t) {\n var n = e.path.toArray();\n return [\n /* prefix path */\n n.slice(0, n.length - 2),\n /* collection id */\n n[n.length - 2], __PRIVATE_toDbTimestampKey(t),\n /* document id */\n n[n.length - 1]];\n }\n /**\n * Returns a key that can be used for document lookups on the\n * `DbRemoteDocumentDocumentCollectionGroupIndex` index.\n */\n (t, n));\n }\n /**\n * Updates the current cache size.\n *\n * Callers to `addEntry()` and `removeEntry()` *must* call this afterwards to update the\n * cache's metadata.\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(e, t) {\n var _this88 = this;\n\n return this.getMetadata(e).next(function (n) {\n return n.byteSize += t, _this88.tr(e, n);\n });\n }\n }, {\n key: \"getEntry\",\n value: function getEntry(e, t) {\n var _this89 = this;\n\n var n = MutableDocument.newInvalidDocument(t);\n return __PRIVATE_remoteDocumentsStore(e).Y({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only(__PRIVATE_dbKey(t))\n }, function (e, r) {\n n = _this89.nr(t, r);\n }).next(function () {\n return n;\n });\n }\n /**\n * Looks up an entry in the cache.\n *\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document entry and its size.\n */\n\n }, {\n key: \"rr\",\n value: function rr(e, t) {\n var _this90 = this;\n\n var n = {\n size: 0,\n document: MutableDocument.newInvalidDocument(t)\n };\n return __PRIVATE_remoteDocumentsStore(e).Y({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only(__PRIVATE_dbKey(t))\n }, function (e, r) {\n n = {\n document: _this90.nr(t, r),\n size: __PRIVATE_dbDocumentSize(r)\n };\n }).next(function () {\n return n;\n });\n }\n }, {\n key: \"getEntries\",\n value: function getEntries(e, t) {\n var _this91 = this;\n\n var n = __PRIVATE_mutableDocumentMap();\n\n return this.ir(e, t, function (e, t) {\n var r = _this91.nr(e, t);\n\n n = n.insert(e, r);\n }).next(function () {\n return n;\n });\n }\n /**\n * Looks up several entries in the cache.\n *\n * @param documentKeys - The set of keys entries to look up.\n * @returns A map of documents indexed by key and a map of sizes indexed by\n * key (zero if the document does not exist).\n */\n\n }, {\n key: \"sr\",\n value: function sr(e, t) {\n var _this92 = this;\n\n var n = __PRIVATE_mutableDocumentMap(),\n r = new SortedMap(DocumentKey.comparator);\n\n return this.ir(e, t, function (e, t) {\n var i = _this92.nr(e, t);\n\n n = n.insert(e, i), r = r.insert(e, __PRIVATE_dbDocumentSize(t));\n }).next(function () {\n return {\n documents: n,\n _r: r\n };\n });\n }\n }, {\n key: \"ir\",\n value: function ir(e, t, n) {\n if (t.isEmpty()) return PersistencePromise.resolve();\n var r = new SortedSet(__PRIVATE_dbKeyComparator);\n t.forEach(function (e) {\n return r = r.add(e);\n });\n var i = IDBKeyRange.bound(__PRIVATE_dbKey(r.first()), __PRIVATE_dbKey(r.last())),\n s = r.getIterator();\n var o = s.getNext();\n return __PRIVATE_remoteDocumentsStore(e).Y({\n index: \"documentKeyIndex\",\n range: i\n }, function (e, t, r) {\n var i = DocumentKey.fromSegments([].concat(_toConsumableArray(t.prefixPath), [t.collectionGroup, t.documentId])); // Go through keys not found in cache.\n\n for (; o && __PRIVATE_dbKeyComparator(o, i) < 0;) {\n n(o, null), o = s.getNext();\n }\n\n o && o.isEqual(i) && ( // Key found in cache.\n n(o, t), o = s.hasNext() ? s.getNext() : null), // Skip to the next key (if there is one).\n o ? r.U(__PRIVATE_dbKey(o)) : r.done();\n }).next(function () {\n // The rest of the keys are not in the cache. One case where `iterate`\n // above won't go through them is when the cache is empty.\n for (; o;) {\n n(o, null), o = s.hasNext() ? s.getNext() : null;\n }\n });\n }\n }, {\n key: \"getDocumentsMatchingQuery\",\n value: function getDocumentsMatchingQuery(e, t, n, r, i) {\n var _this93 = this;\n\n var s = t.path,\n o = [s.popLast().toArray(), s.lastSegment(), __PRIVATE_toDbTimestampKey(n.readTime), n.documentKey.path.isEmpty() ? \"\" : n.documentKey.path.lastSegment()],\n _ = [s.popLast().toArray(), s.lastSegment(), [Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], \"\"];\n return __PRIVATE_remoteDocumentsStore(e).W(IDBKeyRange.bound(o, _, !0)).next(function (e) {\n null == i || i.incrementDocumentReadCount(e.length);\n\n var n = __PRIVATE_mutableDocumentMap();\n\n var _iterator55 = _createForOfIteratorHelper(e),\n _step55;\n\n try {\n for (_iterator55.s(); !(_step55 = _iterator55.n()).done;) {\n var _i14 = _step55.value;\n\n var _e69 = _this93.nr(DocumentKey.fromSegments(_i14.prefixPath.concat(_i14.collectionGroup, _i14.documentId)), _i14);\n\n _e69.isFoundDocument() && (__PRIVATE_queryMatches(t, _e69) || r.has(_e69.key)) && ( // Either the document matches the given query, or it is mutated.\n n = n.insert(_e69.key, _e69));\n }\n } catch (err) {\n _iterator55.e(err);\n } finally {\n _iterator55.f();\n }\n\n return n;\n });\n }\n }, {\n key: \"getAllFromCollectionGroup\",\n value: function getAllFromCollectionGroup(e, t, n, r) {\n var _this94 = this;\n\n var i = __PRIVATE_mutableDocumentMap();\n\n var s = __PRIVATE_dbCollectionGroupKey(t, n),\n o = __PRIVATE_dbCollectionGroupKey(t, IndexOffset.max());\n\n return __PRIVATE_remoteDocumentsStore(e).Y({\n index: \"collectionGroupIndex\",\n range: IDBKeyRange.bound(s, o, !0)\n }, function (e, t, n) {\n var s = _this94.nr(DocumentKey.fromSegments(t.prefixPath.concat(t.collectionGroup, t.documentId)), t);\n\n i = i.insert(s.key, s), i.size === r && n.done();\n }).next(function () {\n return i;\n });\n }\n }, {\n key: \"newChangeBuffer\",\n value: function newChangeBuffer(e) {\n return new __PRIVATE_IndexedDbRemoteDocumentChangeBuffer(this, !!e && e.trackRemovals);\n }\n }, {\n key: \"getSize\",\n value: function getSize(e) {\n return this.getMetadata(e).next(function (e) {\n return e.byteSize;\n });\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata(e) {\n return __PRIVATE_documentGlobalStore(e).get(\"remoteDocumentGlobalKey\").next(function (e) {\n return __PRIVATE_hardAssert(!!e), e;\n });\n }\n }, {\n key: \"tr\",\n value: function tr(e, t) {\n return __PRIVATE_documentGlobalStore(e).put(\"remoteDocumentGlobalKey\", t);\n }\n /**\n * Decodes `dbRemoteDoc` and returns the document (or an invalid document if\n * the document corresponds to the format used for sentinel deletes).\n */\n\n }, {\n key: \"nr\",\n value: function nr(e, t) {\n if (t) {\n var _e70 = __PRIVATE_fromDbRemoteDocument(this.serializer, t); // Whether the document is a sentinel removal and should only be used in the\n // `getNewDocumentChanges()`\n\n\n if (!(_e70.isNoDocument() && _e70.version.isEqual(SnapshotVersion.min()))) return _e70;\n }\n\n return MutableDocument.newInvalidDocument(e);\n }\n }]);\n\n return __PRIVATE_IndexedDbRemoteDocumentCacheImpl;\n}();\n/** Creates a new IndexedDbRemoteDocumentCache. */\n\n\nfunction __PRIVATE_newIndexedDbRemoteDocumentCache(e) {\n return new __PRIVATE_IndexedDbRemoteDocumentCacheImpl(e);\n}\n/**\n * Handles the details of adding and updating documents in the IndexedDbRemoteDocumentCache.\n *\n * Unlike the MemoryRemoteDocumentChangeBuffer, the IndexedDb implementation computes the size\n * delta for all submitted changes. This avoids having to re-read all documents from IndexedDb\n * when we apply the changes.\n */\n\n\nvar __PRIVATE_IndexedDbRemoteDocumentChangeBuffer = /*#__PURE__*/function (_RemoteDocumentChange) {\n _inherits(__PRIVATE_IndexedDbRemoteDocumentChangeBuffer, _RemoteDocumentChange);\n\n var _super25 = _createSuper(__PRIVATE_IndexedDbRemoteDocumentChangeBuffer);\n\n /**\n * @param documentCache - The IndexedDbRemoteDocumentCache to apply the changes to.\n * @param trackRemovals - Whether to create sentinel deletes that can be tracked by\n * `getNewDocumentChanges()`.\n */\n function __PRIVATE_IndexedDbRemoteDocumentChangeBuffer(e, t) {\n var _this95;\n\n _classCallCheck(this, __PRIVATE_IndexedDbRemoteDocumentChangeBuffer);\n\n _this95 = _super25.call(this), _this95.ar = e, _this95.trackRemovals = t, // A map of document sizes and read times prior to applying the changes in\n // this buffer.\n _this95.ur = new ObjectMap(function (e) {\n return e.toString();\n }, function (e, t) {\n return e.isEqual(t);\n });\n return _this95;\n }\n\n _createClass(__PRIVATE_IndexedDbRemoteDocumentChangeBuffer, [{\n key: \"applyChanges\",\n value: function applyChanges(e) {\n var _this96 = this;\n\n var t = [];\n var n = 0,\n r = new SortedSet(function (e, t) {\n return __PRIVATE_primitiveComparator(e.canonicalString(), t.canonicalString());\n });\n return this.changes.forEach(function (i, s) {\n var o = _this96.ur.get(i);\n\n if (t.push(_this96.ar.removeEntry(e, i, o.readTime)), s.isValidDocument()) {\n var _ = __PRIVATE_toDbRemoteDocument(_this96.ar.serializer, s);\n\n r = r.add(i.path.popLast());\n\n var a = __PRIVATE_dbDocumentSize(_);\n\n n += a - o.size, t.push(_this96.ar.addEntry(e, i, _));\n } else if (n -= o.size, _this96.trackRemovals) {\n // In order to track removals, we store a \"sentinel delete\" in the\n // RemoteDocumentCache. This entry is represented by a NoDocument\n // with a version of 0 and ignored by `maybeDecodeDocument()` but\n // preserved in `getNewDocumentChanges()`.\n var _n24 = __PRIVATE_toDbRemoteDocument(_this96.ar.serializer, s.convertToNoDocument(SnapshotVersion.min()));\n\n t.push(_this96.ar.addEntry(e, i, _n24));\n }\n }), r.forEach(function (n) {\n t.push(_this96.ar.indexManager.addToCollectionParentIndex(e, n));\n }), t.push(this.ar.updateMetadata(e, n)), PersistencePromise.waitFor(t);\n }\n }, {\n key: \"getFromCache\",\n value: function getFromCache(e, t) {\n var _this97 = this;\n\n // Record the size of everything we load from the cache so we can compute a delta later.\n return this.ar.rr(e, t).next(function (e) {\n return _this97.ur.set(t, {\n size: e.size,\n readTime: e.document.readTime\n }), e.document;\n });\n }\n }, {\n key: \"getAllFromCache\",\n value: function getAllFromCache(e, t) {\n var _this98 = this;\n\n // Record the size of everything we load from the cache so we can compute\n // a delta later.\n return this.ar.sr(e, t).next(function (_ref15) {\n var e = _ref15.documents,\n t = _ref15._r;\n return (// Note: `getAllFromCache` returns two maps instead of a single map from\n // keys to `DocumentSizeEntry`s. This is to allow returning the\n // `MutableDocumentMap` directly, without a conversion.\n t.forEach(function (t, n) {\n _this98.ur.set(t, {\n size: n,\n readTime: e.get(t).readTime\n });\n }), e\n );\n });\n }\n }]);\n\n return __PRIVATE_IndexedDbRemoteDocumentChangeBuffer;\n}(RemoteDocumentChangeBuffer);\n\nfunction __PRIVATE_documentGlobalStore(e) {\n return __PRIVATE_getStore(e, \"remoteDocumentGlobal\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the remoteDocuments object store.\n */\n\n\nfunction __PRIVATE_remoteDocumentsStore(e) {\n return __PRIVATE_getStore(e, \"remoteDocumentsV14\");\n}\n/**\n * Returns a key that can be used for document lookups on the\n * `DbRemoteDocumentDocumentKeyIndex` index.\n */\n\n\nfunction __PRIVATE_dbKey(e) {\n var t = e.path.toArray();\n return [\n /* prefix path */\n t.slice(0, t.length - 2),\n /* collection id */\n t[t.length - 2],\n /* document id */\n t[t.length - 1]];\n}\n\nfunction __PRIVATE_dbCollectionGroupKey(e, t) {\n var n = t.documentKey.path.toArray();\n return [\n /* collection id */\n e, __PRIVATE_toDbTimestampKey(t.readTime),\n /* prefix path */\n n.slice(0, n.length - 2),\n /* document id */\n n.length > 0 ? n[n.length - 1] : \"\"];\n}\n/**\n * Comparator that compares document keys according to the primary key sorting\n * used by the `DbRemoteDocumentDocument` store (by prefix path, collection id\n * and then document ID).\n *\n * Visible for testing.\n */\n\n\nfunction __PRIVATE_dbKeyComparator(e, t) {\n var n = e.path.toArray(),\n r = t.path.toArray(); // The ordering is based on https://chromium.googlesource.com/chromium/blink/+/fe5c21fef94dae71c1c3344775b8d8a7f7e6d9ec/Source/modules/indexeddb/IDBKey.cpp#74\n\n var i = 0;\n\n for (var _e71 = 0; _e71 < n.length - 2 && _e71 < r.length - 2; ++_e71) {\n if (i = __PRIVATE_primitiveComparator(n[_e71], r[_e71]), i) return i;\n }\n\n return i = __PRIVATE_primitiveComparator(n.length, r.length), i || (i = __PRIVATE_primitiveComparator(n[n.length - 2], r[r.length - 2]), i || __PRIVATE_primitiveComparator(n[n.length - 1], r[r.length - 1]));\n}\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Schema Version for the Web client:\n * 1. Initial version including Mutation Queue, Query Cache, and Remote\n * Document Cache\n * 2. Used to ensure a targetGlobal object exists and add targetCount to it. No\n * longer required because migration 3 unconditionally clears it.\n * 3. Dropped and re-created Query Cache to deal with cache corruption related\n * to limbo resolution. Addresses\n * https://github.com/firebase/firebase-ios-sdk/issues/1548\n * 4. Multi-Tab Support.\n * 5. Removal of held write acks.\n * 6. Create document global for tracking document cache size.\n * 7. Ensure every cached document has a sentinel row with a sequence number.\n * 8. Add collection-parent index for Collection Group queries.\n * 9. Change RemoteDocumentChanges store to be keyed by readTime rather than\n * an auto-incrementing ID. This is required for Index-Free queries.\n * 10. Rewrite the canonical IDs to the explicit Protobuf-based format.\n * 11. Add bundles and named_queries for bundle support.\n * 12. Add document overlays.\n * 13. Rewrite the keys of the remote document cache to allow for efficient\n * document lookup via `getAll()`.\n * 14. Add overlays.\n * 15. Add indexing support.\n */\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents a local view (overlay) of a document, and the fields that are\n * locally mutated.\n */\n\n\nvar OverlayedDocument = /*#__PURE__*/_createClass(function OverlayedDocument(e,\n/**\n * The fields that are locally mutated by patch mutations.\n *\n * If the overlayed\tdocument is from set or delete mutations, this is `null`.\n * If there is no overlay (mutation) for the document, this is an empty `FieldMask`.\n */\nt) {\n _classCallCheck(this, OverlayedDocument);\n\n this.overlayedDocument = e, this.mutatedFields = t;\n});\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A readonly view of the local state of all documents we're tracking (i.e. we\n * have a cached version in remoteDocumentCache or local mutations for the\n * document). The view is computed by applying the mutations in the\n * MutationQueue to the RemoteDocumentCache.\n */\n\n\nvar LocalDocumentsView = /*#__PURE__*/function () {\n function LocalDocumentsView(e, t, n, r) {\n _classCallCheck(this, LocalDocumentsView);\n\n this.remoteDocumentCache = e, this.mutationQueue = t, this.documentOverlayCache = n, this.indexManager = r;\n }\n /**\n * Get the local view of the document identified by `key`.\n *\n * @returns Local view of the document or null if we don't have any cached\n * state for it.\n */\n\n\n _createClass(LocalDocumentsView, [{\n key: \"getDocument\",\n value: function getDocument(e, t) {\n var _this99 = this;\n\n var n = null;\n return this.documentOverlayCache.getOverlay(e, t).next(function (r) {\n return n = r, _this99.remoteDocumentCache.getEntry(e, t);\n }).next(function (e) {\n return null !== n && __PRIVATE_mutationApplyToLocalView(n.mutation, e, FieldMask.empty(), Timestamp.now()), e;\n });\n }\n /**\n * Gets the local view of the documents identified by `keys`.\n *\n * If we don't have cached state for a document in `keys`, a NoDocument will\n * be stored for that key in the resulting set.\n */\n\n }, {\n key: \"getDocuments\",\n value: function getDocuments(e, t) {\n var _this100 = this;\n\n return this.remoteDocumentCache.getEntries(e, t).next(function (t) {\n return _this100.getLocalViewOfDocuments(e, t, __PRIVATE_documentKeySet()).next(function () {\n return t;\n });\n });\n }\n /**\n * Similar to `getDocuments`, but creates the local view from the given\n * `baseDocs` without retrieving documents from the local store.\n *\n * @param transaction - The transaction this operation is scoped to.\n * @param docs - The documents to apply local mutations to get the local views.\n * @param existenceStateChanged - The set of document keys whose existence state\n * is changed. This is useful to determine if some documents overlay needs\n * to be recalculated.\n */\n\n }, {\n key: \"getLocalViewOfDocuments\",\n value: function getLocalViewOfDocuments(e, t) {\n var _this101 = this;\n\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : __PRIVATE_documentKeySet();\n\n var r = __PRIVATE_newOverlayMap();\n\n return this.populateOverlays(e, r, t).next(function () {\n return _this101.computeViews(e, t, r, n).next(function (e) {\n var t = documentMap();\n return e.forEach(function (e, n) {\n t = t.insert(e, n.overlayedDocument);\n }), t;\n });\n });\n }\n /**\n * Gets the overlayed documents for the given document map, which will include\n * the local view of those documents and a `FieldMask` indicating which fields\n * are mutated locally, `null` if overlay is a Set or Delete mutation.\n */\n\n }, {\n key: \"getOverlayedDocuments\",\n value: function getOverlayedDocuments(e, t) {\n var _this102 = this;\n\n var n = __PRIVATE_newOverlayMap();\n\n return this.populateOverlays(e, n, t).next(function () {\n return _this102.computeViews(e, t, n, __PRIVATE_documentKeySet());\n });\n }\n /**\n * Fetches the overlays for {@code docs} and adds them to provided overlay map\n * if the map does not already contain an entry for the given document key.\n */\n\n }, {\n key: \"populateOverlays\",\n value: function populateOverlays(e, t, n) {\n var r = [];\n return n.forEach(function (e) {\n t.has(e) || r.push(e);\n }), this.documentOverlayCache.getOverlays(e, r).next(function (e) {\n e.forEach(function (e, n) {\n t.set(e, n);\n });\n });\n }\n /**\n * Computes the local view for the given documents.\n *\n * @param docs - The documents to compute views for. It also has the base\n * version of the documents.\n * @param overlays - The overlays that need to be applied to the given base\n * version of the documents.\n * @param existenceStateChanged - A set of documents whose existence states\n * might have changed. This is used to determine if we need to re-calculate\n * overlays from mutation queues.\n * @return A map represents the local documents view.\n */\n\n }, {\n key: \"computeViews\",\n value: function computeViews(e, t, n, r) {\n var i = __PRIVATE_mutableDocumentMap();\n\n var s = __PRIVATE_newDocumentKeyMap(),\n o = function __PRIVATE_newOverlayedDocumentMap() {\n return __PRIVATE_newDocumentKeyMap();\n }();\n\n return t.forEach(function (e, t) {\n var o = n.get(t.key); // Recalculate an overlay if the document's existence state changed due to\n // a remote event *and* the overlay is a PatchMutation. This is because\n // document existence state can change if some patch mutation's\n // preconditions are met.\n // NOTE: we recalculate when `overlay` is undefined as well, because there\n // might be a patch mutation whose precondition does not match before the\n // change (hence overlay is undefined), but would now match.\n\n r.has(t.key) && (void 0 === o || o.mutation instanceof __PRIVATE_PatchMutation) ? i = i.insert(t.key, t) : void 0 !== o ? (s.set(t.key, o.mutation.getFieldMask()), __PRIVATE_mutationApplyToLocalView(o.mutation, t, o.mutation.getFieldMask(), Timestamp.now())) : // no overlay exists\n // Using EMPTY to indicate there is no overlay for the document.\n s.set(t.key, FieldMask.empty());\n }), this.recalculateAndSaveOverlays(e, i).next(function (e) {\n return e.forEach(function (e, t) {\n return s.set(e, t);\n }), t.forEach(function (e, t) {\n var n;\n return o.set(e, new OverlayedDocument(t, null !== (n = s.get(e)) && void 0 !== n ? n : null));\n }), o;\n });\n }\n }, {\n key: \"recalculateAndSaveOverlays\",\n value: function recalculateAndSaveOverlays(e, t) {\n var _this103 = this;\n\n var n = __PRIVATE_newDocumentKeyMap(); // A reverse lookup map from batch id to the documents within that batch.\n\n\n var r = new SortedMap(function (e, t) {\n return e - t;\n }),\n i = __PRIVATE_documentKeySet();\n\n return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e, t).next(function (e) {\n var _iterator56 = _createForOfIteratorHelper(e),\n _step56;\n\n try {\n var _loop6 = function _loop6() {\n var i = _step56.value;\n i.keys().forEach(function (e) {\n var s = t.get(e);\n if (null === s) return;\n var o = n.get(e) || FieldMask.empty();\n o = i.applyToLocalView(s, o), n.set(e, o);\n\n var _ = (r.get(i.batchId) || __PRIVATE_documentKeySet()).add(e);\n\n r = r.insert(i.batchId, _);\n });\n };\n\n for (_iterator56.s(); !(_step56 = _iterator56.n()).done;) {\n _loop6();\n }\n } catch (err) {\n _iterator56.e(err);\n } finally {\n _iterator56.f();\n }\n }).next(function () {\n var s = [],\n o = r.getReverseIterator(); // Iterate in descending order of batch IDs, and skip documents that are\n // already saved.\n\n var _loop7 = function _loop7() {\n var r = o.getNext(),\n _ = r.key,\n a = r.value,\n u = __PRIVATE_newMutationMap();\n\n a.forEach(function (e) {\n if (!i.has(e)) {\n var _r20 = __PRIVATE_calculateOverlayMutation(t.get(e), n.get(e));\n\n null !== _r20 && u.set(e, _r20), i = i.add(e);\n }\n }), s.push(_this103.documentOverlayCache.saveOverlays(e, _, u));\n };\n\n for (; o.hasNext();) {\n _loop7();\n }\n\n return PersistencePromise.waitFor(s);\n }).next(function () {\n return n;\n });\n }\n /**\n * Recalculates overlays by reading the documents from remote document cache\n * first, and saves them after they are calculated.\n */\n\n }, {\n key: \"recalculateAndSaveOverlaysForDocumentKeys\",\n value: function recalculateAndSaveOverlaysForDocumentKeys(e, t) {\n var _this104 = this;\n\n return this.remoteDocumentCache.getEntries(e, t).next(function (t) {\n return _this104.recalculateAndSaveOverlays(e, t);\n });\n }\n /**\n * Performs a query against the local view of all documents.\n *\n * @param transaction - The persistence transaction.\n * @param query - The query to match documents against.\n * @param offset - Read time and key to start scanning by (exclusive).\n * @param context - A optional tracker to keep a record of important details\n * during database local query execution.\n */\n\n }, {\n key: \"getDocumentsMatchingQuery\",\n value: function getDocumentsMatchingQuery(e, t, n, r) {\n /**\n * Returns whether the query matches a single document by path (rather than a\n * collection).\n */\n return function __PRIVATE_isDocumentQuery$1(e) {\n return DocumentKey.isDocumentKey(e.path) && null === e.collectionGroup && 0 === e.filters.length;\n }(t) ? this.getDocumentsMatchingDocumentQuery(e, t.path) : __PRIVATE_isCollectionGroupQuery(t) ? this.getDocumentsMatchingCollectionGroupQuery(e, t, n, r) : this.getDocumentsMatchingCollectionQuery(e, t, n, r);\n }\n /**\n * Given a collection group, returns the next documents that follow the provided offset, along\n * with an updated batch ID.\n *\n *
The documents returned by this method are ordered by remote version from the provided\n * offset. If there are no more remote documents after the provided offset, documents with\n * mutations in order of batch id from the offset are returned. Since all documents in a batch are\n * returned together, the total number of documents returned can exceed {@code count}.\n *\n * @param transaction\n * @param collectionGroup The collection group for the documents.\n * @param offset The offset to index into.\n * @param count The number of documents to return\n * @return A LocalWriteResult with the documents that follow the provided offset and the last processed batch id.\n */\n\n }, {\n key: \"getNextDocuments\",\n value: function getNextDocuments(e, t, n, r) {\n var _this105 = this;\n\n return this.remoteDocumentCache.getAllFromCollectionGroup(e, t, n, r).next(function (i) {\n var s = r - i.size > 0 ? _this105.documentOverlayCache.getOverlaysForCollectionGroup(e, t, n.largestBatchId, r - i.size) : PersistencePromise.resolve(__PRIVATE_newOverlayMap()); // The callsite will use the largest batch ID together with the latest read time to create\n // a new index offset. Since we only process batch IDs if all remote documents have been read,\n // no overlay will increase the overall read time. This is why we only need to special case\n // the batch id.\n\n var o = -1,\n _ = i;\n return s.next(function (t) {\n return PersistencePromise.forEach(t, function (t, n) {\n return o < n.largestBatchId && (o = n.largestBatchId), i.get(t) ? PersistencePromise.resolve() : _this105.remoteDocumentCache.getEntry(e, t).next(function (e) {\n _ = _.insert(t, e);\n });\n }).next(function () {\n return _this105.populateOverlays(e, t, i);\n }).next(function () {\n return _this105.computeViews(e, _, t, __PRIVATE_documentKeySet());\n }).next(function (e) {\n return {\n batchId: o,\n changes: __PRIVATE_convertOverlayedDocumentMapToDocumentMap(e)\n };\n });\n });\n });\n }\n }, {\n key: \"getDocumentsMatchingDocumentQuery\",\n value: function getDocumentsMatchingDocumentQuery(e, t) {\n // Just do a simple document lookup.\n return this.getDocument(e, new DocumentKey(t)).next(function (e) {\n var t = documentMap();\n return e.isFoundDocument() && (t = t.insert(e.key, e)), t;\n });\n }\n }, {\n key: \"getDocumentsMatchingCollectionGroupQuery\",\n value: function getDocumentsMatchingCollectionGroupQuery(e, t, n, r) {\n var _this106 = this;\n\n var i = t.collectionGroup;\n var s = documentMap();\n return this.indexManager.getCollectionParents(e, i).next(function (o) {\n return PersistencePromise.forEach(o, function (o) {\n var _ = function __PRIVATE_asCollectionQueryAtPath(e, t) {\n return new __PRIVATE_QueryImpl(t,\n /*collectionGroup=*/\n null, e.explicitOrderBy.slice(), e.filters.slice(), e.limit, e.limitType, e.startAt, e.endAt);\n }(t, o.child(i));\n\n return _this106.getDocumentsMatchingCollectionQuery(e, _, n, r).next(function (e) {\n e.forEach(function (e, t) {\n s = s.insert(e, t);\n });\n });\n }).next(function () {\n return s;\n });\n });\n }\n }, {\n key: \"getDocumentsMatchingCollectionQuery\",\n value: function getDocumentsMatchingCollectionQuery(e, t, n, r) {\n var _this107 = this;\n\n // Query the remote documents and overlay mutations.\n var i;\n return this.documentOverlayCache.getOverlaysForCollection(e, t.path, n.largestBatchId).next(function (s) {\n return i = s, _this107.remoteDocumentCache.getDocumentsMatchingQuery(e, t, n, i, r);\n }).next(function (e) {\n // As documents might match the query because of their overlay we need to\n // include documents for all overlays in the initial document set.\n i.forEach(function (t, n) {\n var r = n.getKey();\n null === e.get(r) && (e = e.insert(r, MutableDocument.newInvalidDocument(r)));\n }); // Apply the overlays and match against the query.\n\n var n = documentMap();\n return e.forEach(function (e, r) {\n var s = i.get(e);\n void 0 !== s && __PRIVATE_mutationApplyToLocalView(s.mutation, r, FieldMask.empty(), Timestamp.now()), // Finally, insert the documents that still match the query\n __PRIVATE_queryMatches(t, r) && (n = n.insert(e, r));\n }), n;\n });\n }\n }]);\n\n return LocalDocumentsView;\n}();\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar __PRIVATE_MemoryBundleCache = /*#__PURE__*/function () {\n function __PRIVATE_MemoryBundleCache(e) {\n _classCallCheck(this, __PRIVATE_MemoryBundleCache);\n\n this.serializer = e, this.cr = new Map(), this.lr = new Map();\n }\n\n _createClass(__PRIVATE_MemoryBundleCache, [{\n key: \"getBundleMetadata\",\n value: function getBundleMetadata(e, t) {\n return PersistencePromise.resolve(this.cr.get(t));\n }\n }, {\n key: \"saveBundleMetadata\",\n value: function saveBundleMetadata(e, t) {\n return this.cr.set(t.id,\n /** Decodes a BundleMetadata proto into a BundleMetadata object. */\n function __PRIVATE_fromBundleMetadata(e) {\n return {\n id: e.id,\n version: e.version,\n createTime: __PRIVATE_fromVersion(e.createTime)\n };\n }(t)), PersistencePromise.resolve();\n }\n }, {\n key: \"getNamedQuery\",\n value: function getNamedQuery(e, t) {\n return PersistencePromise.resolve(this.lr.get(t));\n }\n }, {\n key: \"saveNamedQuery\",\n value: function saveNamedQuery(e, t) {\n return this.lr.set(t.name, function __PRIVATE_fromProtoNamedQuery(e) {\n return {\n name: e.name,\n query: __PRIVATE_fromBundledQuery(e.bundledQuery),\n readTime: __PRIVATE_fromVersion(e.readTime)\n };\n }(t)), PersistencePromise.resolve();\n }\n }]);\n\n return __PRIVATE_MemoryBundleCache;\n}();\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * An in-memory implementation of DocumentOverlayCache.\n */\n\n\nvar __PRIVATE_MemoryDocumentOverlayCache = /*#__PURE__*/function () {\n function __PRIVATE_MemoryDocumentOverlayCache() {\n _classCallCheck(this, __PRIVATE_MemoryDocumentOverlayCache);\n\n // A map sorted by DocumentKey, whose value is a pair of the largest batch id\n // for the overlay and the overlay itself.\n this.overlays = new SortedMap(DocumentKey.comparator), this.hr = new Map();\n }\n\n _createClass(__PRIVATE_MemoryDocumentOverlayCache, [{\n key: \"getOverlay\",\n value: function getOverlay(e, t) {\n return PersistencePromise.resolve(this.overlays.get(t));\n }\n }, {\n key: \"getOverlays\",\n value: function getOverlays(e, t) {\n var _this108 = this;\n\n var n = __PRIVATE_newOverlayMap();\n\n return PersistencePromise.forEach(t, function (t) {\n return _this108.getOverlay(e, t).next(function (e) {\n null !== e && n.set(t, e);\n });\n }).next(function () {\n return n;\n });\n }\n }, {\n key: \"saveOverlays\",\n value: function saveOverlays(e, t, n) {\n var _this109 = this;\n\n return n.forEach(function (n, r) {\n _this109.ht(e, t, r);\n }), PersistencePromise.resolve();\n }\n }, {\n key: \"removeOverlaysForBatchId\",\n value: function removeOverlaysForBatchId(e, t, n) {\n var _this110 = this;\n\n var r = this.hr.get(n);\n return void 0 !== r && (r.forEach(function (e) {\n return _this110.overlays = _this110.overlays.remove(e);\n }), this.hr.delete(n)), PersistencePromise.resolve();\n }\n }, {\n key: \"getOverlaysForCollection\",\n value: function getOverlaysForCollection(e, t, n) {\n var r = __PRIVATE_newOverlayMap(),\n i = t.length + 1,\n s = new DocumentKey(t.child(\"\")),\n o = this.overlays.getIteratorFrom(s);\n\n for (; o.hasNext();) {\n var _e72 = o.getNext().value,\n _s5 = _e72.getKey();\n\n if (!t.isPrefixOf(_s5.path)) break; // Documents from sub-collections\n\n _s5.path.length === i && _e72.largestBatchId > n && r.set(_e72.getKey(), _e72);\n }\n\n return PersistencePromise.resolve(r);\n }\n }, {\n key: \"getOverlaysForCollectionGroup\",\n value: function getOverlaysForCollectionGroup(e, t, n, r) {\n var i = new SortedMap(function (e, t) {\n return e - t;\n });\n var s = this.overlays.getIterator();\n\n for (; s.hasNext();) {\n var _e73 = s.getNext().value;\n\n if (_e73.getKey().getCollectionGroup() === t && _e73.largestBatchId > n) {\n var _t36 = i.get(_e73.largestBatchId);\n\n null === _t36 && (_t36 = __PRIVATE_newOverlayMap(), i = i.insert(_e73.largestBatchId, _t36)), _t36.set(_e73.getKey(), _e73);\n }\n }\n\n var o = __PRIVATE_newOverlayMap(),\n _ = i.getIterator();\n\n for (; _.hasNext();) {\n if (_.getNext().value.forEach(function (e, t) {\n return o.set(e, t);\n }), o.size() >= r) break;\n }\n\n return PersistencePromise.resolve(o);\n }\n }, {\n key: \"ht\",\n value: function ht(e, t, n) {\n // Remove the association of the overlay to its batch id.\n var r = this.overlays.get(n.key);\n\n if (null !== r) {\n var _e74 = this.hr.get(r.largestBatchId).delete(n.key);\n\n this.hr.set(r.largestBatchId, _e74);\n }\n\n this.overlays = this.overlays.insert(n.key, new Overlay(t, n)); // Create the association of this overlay to the given largestBatchId.\n\n var i = this.hr.get(t);\n void 0 === i && (i = __PRIVATE_documentKeySet(), this.hr.set(t, i)), this.hr.set(t, i.add(n.key));\n }\n }]);\n\n return __PRIVATE_MemoryDocumentOverlayCache;\n}();\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A collection of references to a document from some kind of numbered entity\n * (either a target ID or batch ID). As references are added to or removed from\n * the set corresponding events are emitted to a registered garbage collector.\n *\n * Each reference is represented by a DocumentReference object. Each of them\n * contains enough information to uniquely identify the reference. They are all\n * stored primarily in a set sorted by key. A document is considered garbage if\n * there's no references in that set (this can be efficiently checked thanks to\n * sorting by key).\n *\n * ReferenceSet also keeps a secondary set that contains references sorted by\n * IDs. This one is used to efficiently implement removal of all references by\n * some target ID.\n */\n\n\nvar __PRIVATE_ReferenceSet = /*#__PURE__*/function () {\n function __PRIVATE_ReferenceSet() {\n _classCallCheck(this, __PRIVATE_ReferenceSet);\n\n // A set of outstanding references to a document sorted by key.\n this.Pr = new SortedSet(__PRIVATE_DocReference.Ir), // A set of outstanding references to a document sorted by target id.\n this.Tr = new SortedSet(__PRIVATE_DocReference.Er);\n }\n /** Returns true if the reference set contains no references. */\n\n\n _createClass(__PRIVATE_ReferenceSet, [{\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.Pr.isEmpty();\n }\n /** Adds a reference to the given document key for the given ID. */\n\n }, {\n key: \"addReference\",\n value: function addReference(e, t) {\n var n = new __PRIVATE_DocReference(e, t);\n this.Pr = this.Pr.add(n), this.Tr = this.Tr.add(n);\n }\n /** Add references to the given document keys for the given ID. */\n\n }, {\n key: \"dr\",\n value: function dr(e, t) {\n var _this111 = this;\n\n e.forEach(function (e) {\n return _this111.addReference(e, t);\n });\n }\n /**\n * Removes a reference to the given document key for the given\n * ID.\n */\n\n }, {\n key: \"removeReference\",\n value: function removeReference(e, t) {\n this.Ar(new __PRIVATE_DocReference(e, t));\n }\n }, {\n key: \"Rr\",\n value: function Rr(e, t) {\n var _this112 = this;\n\n e.forEach(function (e) {\n return _this112.removeReference(e, t);\n });\n }\n /**\n * Clears all references with a given ID. Calls removeRef() for each key\n * removed.\n */\n\n }, {\n key: \"Vr\",\n value: function Vr(e) {\n var _this113 = this;\n\n var t = new DocumentKey(new ResourcePath([])),\n n = new __PRIVATE_DocReference(t, e),\n r = new __PRIVATE_DocReference(t, e + 1),\n i = [];\n return this.Tr.forEachInRange([n, r], function (e) {\n _this113.Ar(e), i.push(e.key);\n }), i;\n }\n }, {\n key: \"mr\",\n value: function mr() {\n var _this114 = this;\n\n this.Pr.forEach(function (e) {\n return _this114.Ar(e);\n });\n }\n }, {\n key: \"Ar\",\n value: function Ar(e) {\n this.Pr = this.Pr.delete(e), this.Tr = this.Tr.delete(e);\n }\n }, {\n key: \"gr\",\n value: function gr(e) {\n var t = new DocumentKey(new ResourcePath([])),\n n = new __PRIVATE_DocReference(t, e),\n r = new __PRIVATE_DocReference(t, e + 1);\n\n var i = __PRIVATE_documentKeySet();\n\n return this.Tr.forEachInRange([n, r], function (e) {\n i = i.add(e.key);\n }), i;\n }\n }, {\n key: \"containsKey\",\n value: function containsKey(e) {\n var t = new __PRIVATE_DocReference(e, 0),\n n = this.Pr.firstAfterOrEqual(t);\n return null !== n && e.isEqual(n.key);\n }\n }]);\n\n return __PRIVATE_ReferenceSet;\n}();\n\nvar __PRIVATE_DocReference = /*#__PURE__*/function () {\n function __PRIVATE_DocReference(e, t) {\n _classCallCheck(this, __PRIVATE_DocReference);\n\n this.key = e, this.pr = t;\n }\n /** Compare by key then by ID */\n\n\n _createClass(__PRIVATE_DocReference, null, [{\n key: \"Ir\",\n value: function Ir(e, t) {\n return DocumentKey.comparator(e.key, t.key) || __PRIVATE_primitiveComparator(e.pr, t.pr);\n }\n /** Compare by ID then by key */\n\n }, {\n key: \"Er\",\n value: function Er(e, t) {\n return __PRIVATE_primitiveComparator(e.pr, t.pr) || DocumentKey.comparator(e.key, t.key);\n }\n }]);\n\n return __PRIVATE_DocReference;\n}();\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar __PRIVATE_MemoryMutationQueue = /*#__PURE__*/function () {\n function __PRIVATE_MemoryMutationQueue(e, t) {\n _classCallCheck(this, __PRIVATE_MemoryMutationQueue);\n\n this.indexManager = e, this.referenceDelegate = t,\n /**\n * The set of all mutations that have been sent but not yet been applied to\n * the backend.\n */\n this.mutationQueue = [],\n /** Next value to use when assigning sequential IDs to each mutation batch. */\n this.yr = 1,\n /** An ordered mapping between documents and the mutations batch IDs. */\n this.wr = new SortedSet(__PRIVATE_DocReference.Ir);\n }\n\n _createClass(__PRIVATE_MemoryMutationQueue, [{\n key: \"checkEmpty\",\n value: function checkEmpty(e) {\n return PersistencePromise.resolve(0 === this.mutationQueue.length);\n }\n }, {\n key: \"addMutationBatch\",\n value: function addMutationBatch(e, t, n, r) {\n var i = this.yr;\n this.yr++, this.mutationQueue.length > 0 && this.mutationQueue[this.mutationQueue.length - 1];\n var s = new MutationBatch(i, t, n, r);\n this.mutationQueue.push(s); // Track references by document key and index collection parents.\n\n var _iterator57 = _createForOfIteratorHelper(r),\n _step57;\n\n try {\n for (_iterator57.s(); !(_step57 = _iterator57.n()).done;) {\n var _t37 = _step57.value;\n this.wr = this.wr.add(new __PRIVATE_DocReference(_t37.key, i)), this.indexManager.addToCollectionParentIndex(e, _t37.key.path.popLast());\n }\n } catch (err) {\n _iterator57.e(err);\n } finally {\n _iterator57.f();\n }\n\n return PersistencePromise.resolve(s);\n }\n }, {\n key: \"lookupMutationBatch\",\n value: function lookupMutationBatch(e, t) {\n return PersistencePromise.resolve(this.Sr(t));\n }\n }, {\n key: \"getNextMutationBatchAfterBatchId\",\n value: function getNextMutationBatchAfterBatchId(e, t) {\n var n = t + 1,\n r = this.br(n),\n i = r < 0 ? 0 : r; // The requested batchId may still be out of range so normalize it to the\n // start of the queue.\n\n return PersistencePromise.resolve(this.mutationQueue.length > i ? this.mutationQueue[i] : null);\n }\n }, {\n key: \"getHighestUnacknowledgedBatchId\",\n value: function getHighestUnacknowledgedBatchId() {\n return PersistencePromise.resolve(0 === this.mutationQueue.length ? -1 : this.yr - 1);\n }\n }, {\n key: \"getAllMutationBatches\",\n value: function getAllMutationBatches(e) {\n return PersistencePromise.resolve(this.mutationQueue.slice());\n }\n }, {\n key: \"getAllMutationBatchesAffectingDocumentKey\",\n value: function getAllMutationBatchesAffectingDocumentKey(e, t) {\n var _this115 = this;\n\n var n = new __PRIVATE_DocReference(t, 0),\n r = new __PRIVATE_DocReference(t, Number.POSITIVE_INFINITY),\n i = [];\n return this.wr.forEachInRange([n, r], function (e) {\n var t = _this115.Sr(e.pr);\n\n i.push(t);\n }), PersistencePromise.resolve(i);\n }\n }, {\n key: \"getAllMutationBatchesAffectingDocumentKeys\",\n value: function getAllMutationBatchesAffectingDocumentKeys(e, t) {\n var _this116 = this;\n\n var n = new SortedSet(__PRIVATE_primitiveComparator);\n return t.forEach(function (e) {\n var t = new __PRIVATE_DocReference(e, 0),\n r = new __PRIVATE_DocReference(e, Number.POSITIVE_INFINITY);\n\n _this116.wr.forEachInRange([t, r], function (e) {\n n = n.add(e.pr);\n });\n }), PersistencePromise.resolve(this.Dr(n));\n }\n }, {\n key: \"getAllMutationBatchesAffectingQuery\",\n value: function getAllMutationBatchesAffectingQuery(e, t) {\n // Use the query path as a prefix for testing if a document matches the\n // query.\n var n = t.path,\n r = n.length + 1; // Construct a document reference for actually scanning the index. Unlike\n // the prefix the document key in this reference must have an even number of\n // segments. The empty segment can be used a suffix of the query path\n // because it precedes all other segments in an ordered traversal.\n\n var i = n;\n DocumentKey.isDocumentKey(i) || (i = i.child(\"\"));\n var s = new __PRIVATE_DocReference(new DocumentKey(i), 0); // Find unique batchIDs referenced by all documents potentially matching the\n // query.\n\n var o = new SortedSet(__PRIVATE_primitiveComparator);\n return this.wr.forEachWhile(function (e) {\n var t = e.key.path;\n return !!n.isPrefixOf(t) && ( // Rows with document keys more than one segment longer than the query\n // path can't be matches. For example, a query on 'rooms' can't match\n // the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n t.length === r && (o = o.add(e.pr)), !0);\n }, s), PersistencePromise.resolve(this.Dr(o));\n }\n }, {\n key: \"Dr\",\n value: function Dr(e) {\n var _this117 = this;\n\n // Construct an array of matching batches, sorted by batchID to ensure that\n // multiple mutations affecting the same document key are applied in order.\n var t = [];\n return e.forEach(function (e) {\n var n = _this117.Sr(e);\n\n null !== n && t.push(n);\n }), t;\n }\n }, {\n key: \"removeMutationBatch\",\n value: function removeMutationBatch(e, t) {\n var _this118 = this;\n\n __PRIVATE_hardAssert(0 === this.Cr(t.batchId, \"removed\")), this.mutationQueue.shift();\n var n = this.wr;\n return PersistencePromise.forEach(t.mutations, function (r) {\n var i = new __PRIVATE_DocReference(r.key, t.batchId);\n return n = n.delete(i), _this118.referenceDelegate.markPotentiallyOrphaned(e, r.key);\n }).next(function () {\n _this118.wr = n;\n });\n }\n }, {\n key: \"Mn\",\n value: function Mn(e) {// No-op since the memory mutation queue does not maintain a separate cache.\n }\n }, {\n key: \"containsKey\",\n value: function containsKey(e, t) {\n var n = new __PRIVATE_DocReference(t, 0),\n r = this.wr.firstAfterOrEqual(n);\n return PersistencePromise.resolve(t.isEqual(r && r.key));\n }\n }, {\n key: \"performConsistencyCheck\",\n value: function performConsistencyCheck(e) {\n return this.mutationQueue.length, PersistencePromise.resolve();\n }\n /**\n * Finds the index of the given batchId in the mutation queue and asserts that\n * the resulting index is within the bounds of the queue.\n *\n * @param batchId - The batchId to search for\n * @param action - A description of what the caller is doing, phrased in passive\n * form (e.g. \"acknowledged\" in a routine that acknowledges batches).\n */\n\n }, {\n key: \"Cr\",\n value: function Cr(e, t) {\n return this.br(e);\n }\n /**\n * Finds the index of the given batchId in the mutation queue. This operation\n * is O(1).\n *\n * @returns The computed index of the batch with the given batchId, based on\n * the state of the queue. Note this index can be negative if the requested\n * batchId has already been remvoed from the queue or past the end of the\n * queue if the batchId is larger than the last added batch.\n */\n\n }, {\n key: \"br\",\n value: function br(e) {\n if (0 === this.mutationQueue.length) // As an index this is past the end of the queue\n return 0; // Examine the front of the queue to figure out the difference between the\n // batchId and indexes in the array. Note that since the queue is ordered\n // by batchId, if the first batch has a larger batchId then the requested\n // batchId doesn't exist in the queue.\n\n return e - this.mutationQueue[0].batchId;\n }\n /**\n * A version of lookupMutationBatch that doesn't return a promise, this makes\n * other functions that uses this code easier to read and more efficent.\n */\n\n }, {\n key: \"Sr\",\n value: function Sr(e) {\n var t = this.br(e);\n if (t < 0 || t >= this.mutationQueue.length) return null;\n return this.mutationQueue[t];\n }\n }]);\n\n return __PRIVATE_MemoryMutationQueue;\n}();\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The memory-only RemoteDocumentCache for IndexedDb. To construct, invoke\n * `newMemoryRemoteDocumentCache()`.\n */\n\n\nvar __PRIVATE_MemoryRemoteDocumentCacheImpl = /*#__PURE__*/function () {\n /**\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n function __PRIVATE_MemoryRemoteDocumentCacheImpl(e) {\n _classCallCheck(this, __PRIVATE_MemoryRemoteDocumentCacheImpl);\n\n this.vr = e,\n /** Underlying cache of documents and their read times. */\n this.docs = function __PRIVATE_documentEntryMap() {\n return new SortedMap(DocumentKey.comparator);\n }(),\n /** Size of all cached documents. */\n this.size = 0;\n }\n\n _createClass(__PRIVATE_MemoryRemoteDocumentCacheImpl, [{\n key: \"setIndexManager\",\n value: function setIndexManager(e) {\n this.indexManager = e;\n }\n /**\n * Adds the supplied entry to the cache and updates the cache size as appropriate.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */\n\n }, {\n key: \"addEntry\",\n value: function addEntry(e, t) {\n var n = t.key,\n r = this.docs.get(n),\n i = r ? r.size : 0,\n s = this.vr(t);\n return this.docs = this.docs.insert(n, {\n document: t.mutableCopy(),\n size: s\n }), this.size += s - i, this.indexManager.addToCollectionParentIndex(e, n.path.popLast());\n }\n /**\n * Removes the specified entry from the cache and updates the cache size as appropriate.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */\n\n }, {\n key: \"removeEntry\",\n value: function removeEntry(e) {\n var t = this.docs.get(e);\n t && (this.docs = this.docs.remove(e), this.size -= t.size);\n }\n }, {\n key: \"getEntry\",\n value: function getEntry(e, t) {\n var n = this.docs.get(t);\n return PersistencePromise.resolve(n ? n.document.mutableCopy() : MutableDocument.newInvalidDocument(t));\n }\n }, {\n key: \"getEntries\",\n value: function getEntries(e, t) {\n var _this119 = this;\n\n var n = __PRIVATE_mutableDocumentMap();\n\n return t.forEach(function (e) {\n var t = _this119.docs.get(e);\n\n n = n.insert(e, t ? t.document.mutableCopy() : MutableDocument.newInvalidDocument(e));\n }), PersistencePromise.resolve(n);\n }\n }, {\n key: \"getDocumentsMatchingQuery\",\n value: function getDocumentsMatchingQuery(e, t, n, r) {\n var i = __PRIVATE_mutableDocumentMap(); // Documents are ordered by key, so we can use a prefix scan to narrow down\n // the documents we need to match the query against.\n\n\n var s = t.path,\n o = new DocumentKey(s.child(\"\")),\n _ = this.docs.getIteratorFrom(o);\n\n for (; _.hasNext();) {\n var _$getNext = _.getNext(),\n _e75 = _$getNext.key,\n _o4 = _$getNext.value.document;\n\n if (!s.isPrefixOf(_e75.path)) break;\n _e75.path.length > s.length + 1 || __PRIVATE_indexOffsetComparator(__PRIVATE_newIndexOffsetFromDocument(_o4), n) <= 0 || (r.has(_o4.key) || __PRIVATE_queryMatches(t, _o4)) && (i = i.insert(_o4.key, _o4.mutableCopy()));\n }\n\n return PersistencePromise.resolve(i);\n }\n }, {\n key: \"getAllFromCollectionGroup\",\n value: function getAllFromCollectionGroup(e, t, n, r) {\n // This method should only be called from the IndexBackfiller if persistence\n // is enabled.\n fail();\n }\n }, {\n key: \"Fr\",\n value: function Fr(e, t) {\n return PersistencePromise.forEach(this.docs, function (e) {\n return t(e);\n });\n }\n }, {\n key: \"newChangeBuffer\",\n value: function newChangeBuffer(e) {\n // `trackRemovals` is ignores since the MemoryRemoteDocumentCache keeps\n // a separate changelog and does not need special handling for removals.\n return new __PRIVATE_MemoryRemoteDocumentChangeBuffer(this);\n }\n }, {\n key: \"getSize\",\n value: function getSize(e) {\n return PersistencePromise.resolve(this.size);\n }\n }]);\n\n return __PRIVATE_MemoryRemoteDocumentCacheImpl;\n}();\n/**\n * Creates a new memory-only RemoteDocumentCache.\n *\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n\n/**\n * Handles the details of adding and updating documents in the MemoryRemoteDocumentCache.\n */\n\n\nvar __PRIVATE_MemoryRemoteDocumentChangeBuffer = /*#__PURE__*/function (_RemoteDocumentChange2) {\n _inherits(__PRIVATE_MemoryRemoteDocumentChangeBuffer, _RemoteDocumentChange2);\n\n var _super26 = _createSuper(__PRIVATE_MemoryRemoteDocumentChangeBuffer);\n\n function __PRIVATE_MemoryRemoteDocumentChangeBuffer(e) {\n var _this120;\n\n _classCallCheck(this, __PRIVATE_MemoryRemoteDocumentChangeBuffer);\n\n _this120 = _super26.call(this), _this120.ar = e;\n return _this120;\n }\n\n _createClass(__PRIVATE_MemoryRemoteDocumentChangeBuffer, [{\n key: \"applyChanges\",\n value: function applyChanges(e) {\n var _this121 = this;\n\n var t = [];\n return this.changes.forEach(function (n, r) {\n r.isValidDocument() ? t.push(_this121.ar.addEntry(e, r)) : _this121.ar.removeEntry(n);\n }), PersistencePromise.waitFor(t);\n }\n }, {\n key: \"getFromCache\",\n value: function getFromCache(e, t) {\n return this.ar.getEntry(e, t);\n }\n }, {\n key: \"getAllFromCache\",\n value: function getAllFromCache(e, t) {\n return this.ar.getEntries(e, t);\n }\n }]);\n\n return __PRIVATE_MemoryRemoteDocumentChangeBuffer;\n}(RemoteDocumentChangeBuffer);\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar __PRIVATE_MemoryTargetCache = /*#__PURE__*/function () {\n function __PRIVATE_MemoryTargetCache(e) {\n _classCallCheck(this, __PRIVATE_MemoryTargetCache);\n\n this.persistence = e,\n /**\n * Maps a target to the data about that target\n */\n this.Mr = new ObjectMap(function (e) {\n return __PRIVATE_canonifyTarget(e);\n }, __PRIVATE_targetEquals),\n /** The last received snapshot version. */\n this.lastRemoteSnapshotVersion = SnapshotVersion.min(),\n /** The highest numbered target ID encountered. */\n this.highestTargetId = 0,\n /** The highest sequence number encountered. */\n this.Or = 0,\n /**\n * A ordered bidirectional mapping between documents and the remote target\n * IDs.\n */\n this.Nr = new __PRIVATE_ReferenceSet(), this.targetCount = 0, this.Br = __PRIVATE_TargetIdGenerator.Nn();\n }\n\n _createClass(__PRIVATE_MemoryTargetCache, [{\n key: \"forEachTarget\",\n value: function forEachTarget(e, t) {\n return this.Mr.forEach(function (e, n) {\n return t(n);\n }), PersistencePromise.resolve();\n }\n }, {\n key: \"getLastRemoteSnapshotVersion\",\n value: function getLastRemoteSnapshotVersion(e) {\n return PersistencePromise.resolve(this.lastRemoteSnapshotVersion);\n }\n }, {\n key: \"getHighestSequenceNumber\",\n value: function getHighestSequenceNumber(e) {\n return PersistencePromise.resolve(this.Or);\n }\n }, {\n key: \"allocateTargetId\",\n value: function allocateTargetId(e) {\n return this.highestTargetId = this.Br.next(), PersistencePromise.resolve(this.highestTargetId);\n }\n }, {\n key: \"setTargetsMetadata\",\n value: function setTargetsMetadata(e, t, n) {\n return n && (this.lastRemoteSnapshotVersion = n), t > this.Or && (this.Or = t), PersistencePromise.resolve();\n }\n }, {\n key: \"qn\",\n value: function qn(e) {\n this.Mr.set(e.target, e);\n var t = e.targetId;\n t > this.highestTargetId && (this.Br = new __PRIVATE_TargetIdGenerator(t), this.highestTargetId = t), e.sequenceNumber > this.Or && (this.Or = e.sequenceNumber);\n }\n }, {\n key: \"addTargetData\",\n value: function addTargetData(e, t) {\n return this.qn(t), this.targetCount += 1, PersistencePromise.resolve();\n }\n }, {\n key: \"updateTargetData\",\n value: function updateTargetData(e, t) {\n return this.qn(t), PersistencePromise.resolve();\n }\n }, {\n key: \"removeTargetData\",\n value: function removeTargetData(e, t) {\n return this.Mr.delete(t.target), this.Nr.Vr(t.targetId), this.targetCount -= 1, PersistencePromise.resolve();\n }\n }, {\n key: \"removeTargets\",\n value: function removeTargets(e, t, n) {\n var _this122 = this;\n\n var r = 0;\n var i = [];\n return this.Mr.forEach(function (s, o) {\n o.sequenceNumber <= t && null === n.get(o.targetId) && (_this122.Mr.delete(s), i.push(_this122.removeMatchingKeysForTargetId(e, o.targetId)), r++);\n }), PersistencePromise.waitFor(i).next(function () {\n return r;\n });\n }\n }, {\n key: \"getTargetCount\",\n value: function getTargetCount(e) {\n return PersistencePromise.resolve(this.targetCount);\n }\n }, {\n key: \"getTargetData\",\n value: function getTargetData(e, t) {\n var n = this.Mr.get(t) || null;\n return PersistencePromise.resolve(n);\n }\n }, {\n key: \"addMatchingKeys\",\n value: function addMatchingKeys(e, t, n) {\n return this.Nr.dr(t, n), PersistencePromise.resolve();\n }\n }, {\n key: \"removeMatchingKeys\",\n value: function removeMatchingKeys(e, t, n) {\n this.Nr.Rr(t, n);\n var r = this.persistence.referenceDelegate,\n i = [];\n return r && t.forEach(function (t) {\n i.push(r.markPotentiallyOrphaned(e, t));\n }), PersistencePromise.waitFor(i);\n }\n }, {\n key: \"removeMatchingKeysForTargetId\",\n value: function removeMatchingKeysForTargetId(e, t) {\n return this.Nr.Vr(t), PersistencePromise.resolve();\n }\n }, {\n key: \"getMatchingKeysForTargetId\",\n value: function getMatchingKeysForTargetId(e, t) {\n var n = this.Nr.gr(t);\n return PersistencePromise.resolve(n);\n }\n }, {\n key: \"containsKey\",\n value: function containsKey(e, t) {\n return PersistencePromise.resolve(this.Nr.containsKey(t));\n }\n }]);\n\n return __PRIVATE_MemoryTargetCache;\n}();\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A memory-backed instance of Persistence. Data is stored only in RAM and\n * not persisted across sessions.\n */\n\n\nvar __PRIVATE_MemoryPersistence = /*#__PURE__*/function () {\n /**\n * The constructor accepts a factory for creating a reference delegate. This\n * allows both the delegate and this instance to have strong references to\n * each other without having nullable fields that would then need to be\n * checked or asserted on every access.\n */\n function __PRIVATE_MemoryPersistence(e, t) {\n var _this123 = this;\n\n _classCallCheck(this, __PRIVATE_MemoryPersistence);\n\n this.Lr = {}, this.overlays = {}, this.kr = new __PRIVATE_ListenSequence(0), this.qr = !1, this.qr = !0, this.referenceDelegate = e(this), this.Qr = new __PRIVATE_MemoryTargetCache(this);\n this.indexManager = new __PRIVATE_MemoryIndexManager(), this.remoteDocumentCache = function __PRIVATE_newMemoryRemoteDocumentCache(e) {\n return new __PRIVATE_MemoryRemoteDocumentCacheImpl(e);\n }(function (e) {\n return _this123.referenceDelegate.Kr(e);\n }), this.serializer = new __PRIVATE_LocalSerializer(t), this.$r = new __PRIVATE_MemoryBundleCache(this.serializer);\n }\n\n _createClass(__PRIVATE_MemoryPersistence, [{\n key: \"start\",\n value: function start() {\n return Promise.resolve();\n }\n }, {\n key: \"shutdown\",\n value: function shutdown() {\n // No durable state to ensure is closed on shutdown.\n return this.qr = !1, Promise.resolve();\n }\n }, {\n key: \"started\",\n get: function get() {\n return this.qr;\n }\n }, {\n key: \"setDatabaseDeletedListener\",\n value: function setDatabaseDeletedListener() {// No op.\n }\n }, {\n key: \"setNetworkEnabled\",\n value: function setNetworkEnabled() {// No op.\n }\n }, {\n key: \"getIndexManager\",\n value: function getIndexManager(e) {\n // We do not currently support indices for memory persistence, so we can\n // return the same shared instance of the memory index manager.\n return this.indexManager;\n }\n }, {\n key: \"getDocumentOverlayCache\",\n value: function getDocumentOverlayCache(e) {\n var t = this.overlays[e.toKey()];\n return t || (t = new __PRIVATE_MemoryDocumentOverlayCache(), this.overlays[e.toKey()] = t), t;\n }\n }, {\n key: \"getMutationQueue\",\n value: function getMutationQueue(e, t) {\n var n = this.Lr[e.toKey()];\n return n || (n = new __PRIVATE_MemoryMutationQueue(t, this.referenceDelegate), this.Lr[e.toKey()] = n), n;\n }\n }, {\n key: \"getTargetCache\",\n value: function getTargetCache() {\n return this.Qr;\n }\n }, {\n key: \"getRemoteDocumentCache\",\n value: function getRemoteDocumentCache() {\n return this.remoteDocumentCache;\n }\n }, {\n key: \"getBundleCache\",\n value: function getBundleCache() {\n return this.$r;\n }\n }, {\n key: \"runTransaction\",\n value: function runTransaction(e, t, n) {\n var _this124 = this;\n\n __PRIVATE_logDebug(\"MemoryPersistence\", \"Starting transaction:\", e);\n\n var r = new __PRIVATE_MemoryTransaction(this.kr.next());\n return this.referenceDelegate.Ur(), n(r).next(function (e) {\n return _this124.referenceDelegate.Wr(r).next(function () {\n return e;\n });\n }).toPromise().then(function (e) {\n return r.raiseOnCommittedEvent(), e;\n });\n }\n }, {\n key: \"Gr\",\n value: function Gr(e, t) {\n return PersistencePromise.or(Object.values(this.Lr).map(function (n) {\n return function () {\n return n.containsKey(e, t);\n };\n }));\n }\n }]);\n\n return __PRIVATE_MemoryPersistence;\n}();\n/**\n * Memory persistence is not actually transactional, but future implementations\n * may have transaction-scoped state.\n */\n\n\nvar __PRIVATE_MemoryTransaction = /*#__PURE__*/function (_PersistenceTransacti2) {\n _inherits(__PRIVATE_MemoryTransaction, _PersistenceTransacti2);\n\n var _super27 = _createSuper(__PRIVATE_MemoryTransaction);\n\n function __PRIVATE_MemoryTransaction(e) {\n var _this125;\n\n _classCallCheck(this, __PRIVATE_MemoryTransaction);\n\n _this125 = _super27.call(this), _this125.currentSequenceNumber = e;\n return _this125;\n }\n\n return _createClass(__PRIVATE_MemoryTransaction);\n}(PersistenceTransaction);\n\nvar __PRIVATE_MemoryEagerDelegate = /*#__PURE__*/function () {\n function __PRIVATE_MemoryEagerDelegate(e) {\n _classCallCheck(this, __PRIVATE_MemoryEagerDelegate);\n\n this.persistence = e,\n /** Tracks all documents that are active in Query views. */\n this.zr = new __PRIVATE_ReferenceSet(),\n /** The list of documents that are potentially GCed after each transaction. */\n this.jr = null;\n }\n\n _createClass(__PRIVATE_MemoryEagerDelegate, [{\n key: \"Jr\",\n get: function get() {\n if (this.jr) return this.jr;\n throw fail();\n }\n }, {\n key: \"addReference\",\n value: function addReference(e, t, n) {\n return this.zr.addReference(n, t), this.Jr.delete(n.toString()), PersistencePromise.resolve();\n }\n }, {\n key: \"removeReference\",\n value: function removeReference(e, t, n) {\n return this.zr.removeReference(n, t), this.Jr.add(n.toString()), PersistencePromise.resolve();\n }\n }, {\n key: \"markPotentiallyOrphaned\",\n value: function markPotentiallyOrphaned(e, t) {\n return this.Jr.add(t.toString()), PersistencePromise.resolve();\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(e, t) {\n var _this126 = this;\n\n this.zr.Vr(t.targetId).forEach(function (e) {\n return _this126.Jr.add(e.toString());\n });\n var n = this.persistence.getTargetCache();\n return n.getMatchingKeysForTargetId(e, t.targetId).next(function (e) {\n e.forEach(function (e) {\n return _this126.Jr.add(e.toString());\n });\n }).next(function () {\n return n.removeTargetData(e, t);\n });\n }\n }, {\n key: \"Ur\",\n value: function Ur() {\n this.jr = new Set();\n }\n }, {\n key: \"Wr\",\n value: function Wr(e) {\n var _this127 = this;\n\n // Remove newly orphaned documents.\n var t = this.persistence.getRemoteDocumentCache().newChangeBuffer();\n return PersistencePromise.forEach(this.Jr, function (n) {\n var r = DocumentKey.fromPath(n);\n return _this127.Yr(e, r).next(function (e) {\n e || t.removeEntry(r, SnapshotVersion.min());\n });\n }).next(function () {\n return _this127.jr = null, t.apply(e);\n });\n }\n }, {\n key: \"updateLimboDocument\",\n value: function updateLimboDocument(e, t) {\n var _this128 = this;\n\n return this.Yr(e, t).next(function (e) {\n e ? _this128.Jr.delete(t.toString()) : _this128.Jr.add(t.toString());\n });\n }\n }, {\n key: \"Kr\",\n value: function Kr(e) {\n // For eager GC, we don't care about the document size, there are no size thresholds.\n return 0;\n }\n }, {\n key: \"Yr\",\n value: function Yr(e, t) {\n var _this129 = this;\n\n return PersistencePromise.or([function () {\n return PersistencePromise.resolve(_this129.zr.containsKey(t));\n }, function () {\n return _this129.persistence.getTargetCache().containsKey(e, t);\n }, function () {\n return _this129.persistence.Gr(e, t);\n }]);\n }\n }], [{\n key: \"Hr\",\n value: function Hr(e) {\n return new __PRIVATE_MemoryEagerDelegate(e);\n }\n }]);\n\n return __PRIVATE_MemoryEagerDelegate;\n}();\n\nvar __PRIVATE_MemoryLruDelegate = /*#__PURE__*/function () {\n function __PRIVATE_MemoryLruDelegate(e, t) {\n _classCallCheck(this, __PRIVATE_MemoryLruDelegate);\n\n this.persistence = e, this.Zr = new ObjectMap(function (e) {\n return __PRIVATE_encodeResourcePath(e.path);\n }, function (e, t) {\n return e.isEqual(t);\n }), this.garbageCollector = __PRIVATE_newLruGarbageCollector(this, t);\n }\n\n _createClass(__PRIVATE_MemoryLruDelegate, [{\n key: \"Ur\",\n value: // No-ops, present so memory persistence doesn't have to care which delegate\n // it has.\n function Ur() {}\n }, {\n key: \"Wr\",\n value: function Wr(e) {\n return PersistencePromise.resolve();\n }\n }, {\n key: \"forEachTarget\",\n value: function forEachTarget(e, t) {\n return this.persistence.getTargetCache().forEachTarget(e, t);\n }\n }, {\n key: \"Hn\",\n value: function Hn(e) {\n var t = this.Zn(e);\n return this.persistence.getTargetCache().getTargetCount(e).next(function (e) {\n return t.next(function (t) {\n return e + t;\n });\n });\n }\n }, {\n key: \"Zn\",\n value: function Zn(e) {\n var t = 0;\n return this.Jn(e, function (e) {\n t++;\n }).next(function () {\n return t;\n });\n }\n }, {\n key: \"Jn\",\n value: function Jn(e, t) {\n var _this130 = this;\n\n return PersistencePromise.forEach(this.Zr, function (n, r) {\n return _this130.er(e, n, r).next(function (e) {\n return e ? PersistencePromise.resolve() : t(r);\n });\n });\n }\n }, {\n key: \"removeTargets\",\n value: function removeTargets(e, t, n) {\n return this.persistence.getTargetCache().removeTargets(e, t, n);\n }\n }, {\n key: \"removeOrphanedDocuments\",\n value: function removeOrphanedDocuments(e, t) {\n var _this131 = this;\n\n var n = 0;\n var r = this.persistence.getRemoteDocumentCache(),\n i = r.newChangeBuffer();\n return r.Fr(e, function (r) {\n return _this131.er(e, r, t).next(function (e) {\n e || (n++, i.removeEntry(r, SnapshotVersion.min()));\n });\n }).next(function () {\n return i.apply(e);\n }).next(function () {\n return n;\n });\n }\n }, {\n key: \"markPotentiallyOrphaned\",\n value: function markPotentiallyOrphaned(e, t) {\n return this.Zr.set(t, e.currentSequenceNumber), PersistencePromise.resolve();\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(e, t) {\n var n = t.withSequenceNumber(e.currentSequenceNumber);\n return this.persistence.getTargetCache().updateTargetData(e, n);\n }\n }, {\n key: \"addReference\",\n value: function addReference(e, t, n) {\n return this.Zr.set(n, e.currentSequenceNumber), PersistencePromise.resolve();\n }\n }, {\n key: \"removeReference\",\n value: function removeReference(e, t, n) {\n return this.Zr.set(n, e.currentSequenceNumber), PersistencePromise.resolve();\n }\n }, {\n key: \"updateLimboDocument\",\n value: function updateLimboDocument(e, t) {\n return this.Zr.set(t, e.currentSequenceNumber), PersistencePromise.resolve();\n }\n }, {\n key: \"Kr\",\n value: function Kr(e) {\n var t = e.key.toString().length;\n return e.isFoundDocument() && (t += __PRIVATE_estimateByteSize(e.data.value)), t;\n }\n }, {\n key: \"er\",\n value: function er(e, t, n) {\n var _this132 = this;\n\n return PersistencePromise.or([function () {\n return _this132.persistence.Gr(e, t);\n }, function () {\n return _this132.persistence.getTargetCache().containsKey(e, t);\n }, function () {\n var e = _this132.Zr.get(t);\n\n return PersistencePromise.resolve(void 0 !== e && e > n);\n }]);\n }\n }, {\n key: \"getCacheSize\",\n value: function getCacheSize(e) {\n return this.persistence.getRemoteDocumentCache().getSize(e);\n }\n }], [{\n key: \"Hr\",\n value: function Hr(e, t) {\n return new __PRIVATE_MemoryLruDelegate(e, t);\n }\n }]);\n\n return __PRIVATE_MemoryLruDelegate;\n}();\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Performs database creation and schema upgrades. */\n\n\nvar __PRIVATE_SchemaConverter = /*#__PURE__*/function () {\n function __PRIVATE_SchemaConverter(e) {\n _classCallCheck(this, __PRIVATE_SchemaConverter);\n\n this.serializer = e;\n }\n /**\n * Performs database creation and schema upgrades.\n *\n * Note that in production, this method is only ever used to upgrade the schema\n * to SCHEMA_VERSION. Different values of toVersion are only used for testing\n * and local feature development.\n */\n\n\n _createClass(__PRIVATE_SchemaConverter, [{\n key: \"N\",\n value: function N(e, t, n, r) {\n var _this133 = this;\n\n var i = new __PRIVATE_SimpleDbTransaction(\"createOrUpgrade\", t);\n n < 1 && r >= 1 && (!function __PRIVATE_createPrimaryClientStore(e) {\n e.createObjectStore(\"owner\");\n }(e), function __PRIVATE_createMutationQueue(e) {\n e.createObjectStore(\"mutationQueues\", {\n keyPath: \"userId\"\n });\n e.createObjectStore(\"mutations\", {\n keyPath: \"batchId\",\n autoIncrement: !0\n }).createIndex(\"userMutationsIndex\", M, {\n unique: !0\n }), e.createObjectStore(\"documentMutations\");\n }\n /**\n * Upgrade function to migrate the 'mutations' store from V1 to V3. Loads\n * and rewrites all data.\n */\n (e), __PRIVATE_createQueryCache(e), function __PRIVATE_createLegacyRemoteDocumentCache(e) {\n e.createObjectStore(\"remoteDocuments\");\n }(e)); // Migration 2 to populate the targetGlobal object no longer needed since\n // migration 3 unconditionally clears it.\n\n var s = PersistencePromise.resolve();\n return n < 3 && r >= 3 && ( // Brand new clients don't need to drop and recreate--only clients that\n // potentially have corrupt data.\n 0 !== n && (!function __PRIVATE_dropQueryCache(e) {\n e.deleteObjectStore(\"targetDocuments\"), e.deleteObjectStore(\"targets\"), e.deleteObjectStore(\"targetGlobal\");\n }(e), __PRIVATE_createQueryCache(e)), s = s.next(function () {\n return (\n /**\n * Creates the target global singleton row.\n *\n * @param txn - The version upgrade transaction for indexeddb\n */\n function __PRIVATE_writeEmptyTargetGlobalEntry(e) {\n var t = e.store(\"targetGlobal\"),\n n = {\n highestTargetId: 0,\n highestListenSequenceNumber: 0,\n lastRemoteSnapshotVersion: SnapshotVersion.min().toTimestamp(),\n targetCount: 0\n };\n return t.put(\"targetGlobalKey\", n);\n }(i)\n );\n })), n < 4 && r >= 4 && (0 !== n && ( // Schema version 3 uses auto-generated keys to generate globally unique\n // mutation batch IDs (this was previously ensured internally by the\n // client). To migrate to the new schema, we have to read all mutations\n // and write them back out. We preserve the existing batch IDs to guarantee\n // consistency with other object stores. Any further mutation batch IDs will\n // be auto-generated.\n s = s.next(function () {\n return function __PRIVATE_upgradeMutationBatchSchemaAndMigrateData(e, t) {\n return t.store(\"mutations\").W().next(function (n) {\n e.deleteObjectStore(\"mutations\");\n e.createObjectStore(\"mutations\", {\n keyPath: \"batchId\",\n autoIncrement: !0\n }).createIndex(\"userMutationsIndex\", M, {\n unique: !0\n });\n var r = t.store(\"mutations\"),\n i = n.map(function (e) {\n return r.put(e);\n });\n return PersistencePromise.waitFor(i);\n });\n }(e, i);\n })), s = s.next(function () {\n !function __PRIVATE_createClientMetadataStore(e) {\n e.createObjectStore(\"clientMetadata\", {\n keyPath: \"clientId\"\n });\n }(e);\n })), n < 5 && r >= 5 && (s = s.next(function () {\n return _this133.Xr(i);\n })), n < 6 && r >= 6 && (s = s.next(function () {\n return function __PRIVATE_createDocumentGlobalStore(e) {\n e.createObjectStore(\"remoteDocumentGlobal\");\n }(e), _this133.ei(i);\n })), n < 7 && r >= 7 && (s = s.next(function () {\n return _this133.ti(i);\n })), n < 8 && r >= 8 && (s = s.next(function () {\n return _this133.ni(e, i);\n })), n < 9 && r >= 9 && (s = s.next(function () {\n // Multi-Tab used to manage its own changelog, but this has been moved\n // to the DbRemoteDocument object store itself. Since the previous change\n // log only contained transient data, we can drop its object store.\n !function __PRIVATE_dropRemoteDocumentChangesStore(e) {\n e.objectStoreNames.contains(\"remoteDocumentChanges\") && e.deleteObjectStore(\"remoteDocumentChanges\");\n }(e); // Note: Schema version 9 used to create a read time index for the\n // RemoteDocumentCache. This is now done with schema version 13.\n })), n < 10 && r >= 10 && (s = s.next(function () {\n return _this133.ri(i);\n })), n < 11 && r >= 11 && (s = s.next(function () {\n !function __PRIVATE_createBundlesStore(e) {\n e.createObjectStore(\"bundles\", {\n keyPath: \"bundleId\"\n });\n }(e), function __PRIVATE_createNamedQueriesStore(e) {\n e.createObjectStore(\"namedQueries\", {\n keyPath: \"name\"\n });\n }(e);\n })), n < 12 && r >= 12 && (s = s.next(function () {\n !function __PRIVATE_createDocumentOverlayStore(e) {\n var t = e.createObjectStore(\"documentOverlays\", {\n keyPath: G\n });\n t.createIndex(\"collectionPathOverlayIndex\", z, {\n unique: !1\n }), t.createIndex(\"collectionGroupOverlayIndex\", j, {\n unique: !1\n });\n }(e);\n })), n < 13 && r >= 13 && (s = s.next(function () {\n return function __PRIVATE_createRemoteDocumentCache(e) {\n var t = e.createObjectStore(\"remoteDocumentsV14\", {\n keyPath: O\n });\n t.createIndex(\"documentKeyIndex\", _N), t.createIndex(\"collectionGroupIndex\", B);\n }(e);\n }).next(function () {\n return _this133.ii(e, i);\n }).next(function () {\n return e.deleteObjectStore(\"remoteDocuments\");\n })), n < 14 && r >= 14 && (s = s.next(function () {\n return _this133.si(e, i);\n })), n < 15 && r >= 15 && (s = s.next(function () {\n return function __PRIVATE_createFieldIndex(e) {\n e.createObjectStore(\"indexConfiguration\", {\n keyPath: \"indexId\",\n autoIncrement: !0\n }).createIndex(\"collectionGroupIndex\", \"collectionGroup\", {\n unique: !1\n });\n e.createObjectStore(\"indexState\", {\n keyPath: K\n }).createIndex(\"sequenceNumberIndex\", $, {\n unique: !1\n });\n e.createObjectStore(\"indexEntries\", {\n keyPath: U\n }).createIndex(\"documentKeyIndex\", W, {\n unique: !1\n });\n }(e);\n })), s;\n }\n }, {\n key: \"ei\",\n value: function ei(e) {\n var t = 0;\n return e.store(\"remoteDocuments\").Y(function (e, n) {\n t += __PRIVATE_dbDocumentSize(n);\n }).next(function () {\n var n = {\n byteSize: t\n };\n return e.store(\"remoteDocumentGlobal\").put(\"remoteDocumentGlobalKey\", n);\n });\n }\n }, {\n key: \"Xr\",\n value: function Xr(e) {\n var _this134 = this;\n\n var t = e.store(\"mutationQueues\"),\n n = e.store(\"mutations\");\n return t.W().next(function (t) {\n return PersistencePromise.forEach(t, function (t) {\n var r = IDBKeyRange.bound([t.userId, -1], [t.userId, t.lastAcknowledgedBatchId]);\n return n.W(\"userMutationsIndex\", r).next(function (n) {\n return PersistencePromise.forEach(n, function (n) {\n __PRIVATE_hardAssert(n.userId === t.userId);\n\n var r = __PRIVATE_fromDbMutationBatch(_this134.serializer, n);\n\n return _removeMutationBatch(e, t.userId, r).next(function () {});\n });\n });\n });\n });\n }\n /**\n * Ensures that every document in the remote document cache has a corresponding sentinel row\n * with a sequence number. Missing rows are given the most recently used sequence number.\n */\n\n }, {\n key: \"ti\",\n value: function ti(e) {\n var t = e.store(\"targetDocuments\"),\n n = e.store(\"remoteDocuments\");\n return e.store(\"targetGlobal\").get(\"targetGlobalKey\").next(function (e) {\n var r = [];\n return n.Y(function (n, i) {\n var s = new ResourcePath(n),\n o = function __PRIVATE_sentinelKey(e) {\n return [0, __PRIVATE_encodeResourcePath(e)];\n }(s);\n\n r.push(t.get(o).next(function (n) {\n return n ? PersistencePromise.resolve() : function (n) {\n return t.put({\n targetId: 0,\n path: __PRIVATE_encodeResourcePath(n),\n sequenceNumber: e.highestListenSequenceNumber\n });\n }(s);\n }));\n }).next(function () {\n return PersistencePromise.waitFor(r);\n });\n });\n }\n }, {\n key: \"ni\",\n value: function ni(e, t) {\n // Create the index.\n e.createObjectStore(\"collectionParents\", {\n keyPath: Q\n });\n\n var n = t.store(\"collectionParents\"),\n r = new __PRIVATE_MemoryCollectionParentIndex(),\n addEntry = function addEntry(e) {\n if (r.add(e)) {\n var _t38 = e.lastSegment(),\n _r21 = e.popLast();\n\n return n.put({\n collectionId: _t38,\n parent: __PRIVATE_encodeResourcePath(_r21)\n });\n }\n }; // Helper to add an index entry iff we haven't already written it.\n // Index existing remote documents.\n\n\n return t.store(\"remoteDocuments\").Y({\n J: !0\n }, function (e, t) {\n var n = new ResourcePath(e);\n return addEntry(n.popLast());\n }).next(function () {\n return t.store(\"documentMutations\").Y({\n J: !0\n }, function (_ref16, r) {\n var _ref17 = _slicedToArray(_ref16, 3),\n e = _ref17[0],\n t = _ref17[1],\n n = _ref17[2];\n\n var i = __PRIVATE_decodeResourcePath(t);\n\n return addEntry(i.popLast());\n });\n });\n }\n }, {\n key: \"ri\",\n value: function ri(e) {\n var _this135 = this;\n\n var t = e.store(\"targets\");\n return t.Y(function (e, n) {\n var r = __PRIVATE_fromDbTarget(n),\n i = __PRIVATE_toDbTarget(_this135.serializer, r);\n\n return t.put(i);\n });\n }\n }, {\n key: \"ii\",\n value: function ii(e, t) {\n var n = t.store(\"remoteDocuments\"),\n r = [];\n return n.Y(function (e, n) {\n var i = t.store(\"remoteDocumentsV14\"),\n s = function __PRIVATE_extractKey(e) {\n return e.document ? new DocumentKey(ResourcePath.fromString(e.document.name).popFirst(5)) : e.noDocument ? DocumentKey.fromSegments(e.noDocument.path) : e.unknownDocument ? DocumentKey.fromSegments(e.unknownDocument.path) : fail();\n }\n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n (n).path.toArray(),\n o = {\n prefixPath: s.slice(0, s.length - 2),\n collectionGroup: s[s.length - 2],\n documentId: s[s.length - 1],\n readTime: n.readTime || [0, 0],\n unknownDocument: n.unknownDocument,\n noDocument: n.noDocument,\n document: n.document,\n hasCommittedMutations: !!n.hasCommittedMutations\n };\n\n r.push(i.put(o));\n }).next(function () {\n return PersistencePromise.waitFor(r);\n });\n }\n }, {\n key: \"si\",\n value: function si(e, t) {\n var _this136 = this;\n\n var n = t.store(\"mutations\"),\n r = __PRIVATE_newIndexedDbRemoteDocumentCache(this.serializer),\n i = new __PRIVATE_MemoryPersistence(__PRIVATE_MemoryEagerDelegate.Hr, this.serializer.ct);\n\n return n.W().next(function (e) {\n var n = new Map();\n return e.forEach(function (e) {\n var t;\n var r = null !== (t = n.get(e.userId)) && void 0 !== t ? t : __PRIVATE_documentKeySet();\n __PRIVATE_fromDbMutationBatch(_this136.serializer, e).keys().forEach(function (e) {\n return r = r.add(e);\n }), n.set(e.userId, r);\n }), PersistencePromise.forEach(n, function (e, n) {\n var s = new User(n),\n o = __PRIVATE_IndexedDbDocumentOverlayCache.lt(_this136.serializer, s),\n _ = i.getIndexManager(s),\n a = __PRIVATE_IndexedDbMutationQueue.lt(s, _this136.serializer, _, i.referenceDelegate);\n\n return new LocalDocumentsView(r, a, o, _).recalculateAndSaveOverlaysForDocumentKeys(new __PRIVATE_IndexedDbTransaction(t, __PRIVATE_ListenSequence._e), e).next();\n });\n });\n }\n }]);\n\n return __PRIVATE_SchemaConverter;\n}();\n\nfunction __PRIVATE_createQueryCache(e) {\n e.createObjectStore(\"targetDocuments\", {\n keyPath: k\n }).createIndex(\"documentTargetsIndex\", q, {\n unique: !0\n }); // NOTE: This is unique only because the TargetId is the suffix.\n\n e.createObjectStore(\"targets\", {\n keyPath: \"targetId\"\n }).createIndex(\"queryTargetsIndex\", L, {\n unique: !0\n }), e.createObjectStore(\"targetGlobal\");\n}\n\nvar de = \"Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.\";\n/**\n * Oldest acceptable age in milliseconds for client metadata before the client\n * is considered inactive and its associated data is garbage collected.\n */\n\n/**\n * An IndexedDB-backed instance of Persistence. Data is stored persistently\n * across sessions.\n *\n * On Web only, the Firestore SDKs support shared access to its persistence\n * layer. This allows multiple browser tabs to read and write to IndexedDb and\n * to synchronize state even without network connectivity. Shared access is\n * currently optional and not enabled unless all clients invoke\n * `enablePersistence()` with `{synchronizeTabs:true}`.\n *\n * In multi-tab mode, if multiple clients are active at the same time, the SDK\n * will designate one client as the “primary client”. An effort is made to pick\n * a visible, network-connected and active client, and this client is\n * responsible for letting other clients know about its presence. The primary\n * client writes a unique client-generated identifier (the client ID) to\n * IndexedDb’s “owner” store every 4 seconds. If the primary client fails to\n * update this entry, another client can acquire the lease and take over as\n * primary.\n *\n * Some persistence operations in the SDK are designated as primary-client only\n * operations. This includes the acknowledgment of mutations and all updates of\n * remote documents. The effects of these operations are written to persistence\n * and then broadcast to other tabs via LocalStorage (see\n * `WebStorageSharedClientState`), which then refresh their state from\n * persistence.\n *\n * Similarly, the primary client listens to notifications sent by secondary\n * clients to discover persistence changes written by secondary clients, such as\n * the addition of new mutations and query targets.\n *\n * If multi-tab is not enabled and another tab already obtained the primary\n * lease, IndexedDbPersistence enters a failed state and all subsequent\n * operations will automatically fail.\n *\n * Additionally, there is an optimization so that when a tab is closed, the\n * primary lease is released immediately (this is especially important to make\n * sure that a refreshed tab is able to immediately re-acquire the primary\n * lease). Unfortunately, IndexedDB cannot be reliably used in window.unload\n * since it is an asynchronous API. So in addition to attempting to give up the\n * lease, the leaseholder writes its client ID to a \"zombiedClient\" entry in\n * LocalStorage which acts as an indicator that another tab should go ahead and\n * take the primary lease immediately regardless of the current lease timestamp.\n *\n * TODO(b/114226234): Remove `synchronizeTabs` section when multi-tab is no\n * longer optional.\n */\n\nvar __PRIVATE_IndexedDbPersistence = /*#__PURE__*/function () {\n function __PRIVATE_IndexedDbPersistence(\n /**\n * Whether to synchronize the in-memory state of multiple tabs and share\n * access to local persistence.\n */\n e, t, n, r, i, s, o, _, a,\n /**\n * If set to true, forcefully obtains database access. Existing tabs will\n * no longer be able to access IndexedDB.\n */\n u) {\n var c = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 15;\n\n _classCallCheck(this, __PRIVATE_IndexedDbPersistence);\n\n if (this.allowTabSynchronization = e, this.persistenceKey = t, this.clientId = n, this.oi = i, this.window = s, this.document = o, this._i = a, this.ai = u, this.ui = c, this.kr = null, this.qr = !1, this.isPrimary = !1, this.networkEnabled = !0,\n /** Our window.unload handler, if registered. */\n this.ci = null, this.inForeground = !1,\n /** Our 'visibilitychange' listener if registered. */\n this.li = null,\n /** The client metadata refresh task. */\n this.hi = null,\n /** The last time we garbage collected the client metadata object store. */\n this.Pi = Number.NEGATIVE_INFINITY,\n /** A listener to notify on primary state changes. */\n this.Ii = function (e) {\n return Promise.resolve();\n }, !__PRIVATE_IndexedDbPersistence.D()) throw new FirestoreError(D.UNIMPLEMENTED, \"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.\");\n this.referenceDelegate = new __PRIVATE_IndexedDbLruDelegateImpl(this, r), this.Ti = t + \"main\", this.serializer = new __PRIVATE_LocalSerializer(_), this.Ei = new __PRIVATE_SimpleDb(this.Ti, this.ui, new __PRIVATE_SchemaConverter(this.serializer)), this.Qr = new __PRIVATE_IndexedDbTargetCache(this.referenceDelegate, this.serializer), this.remoteDocumentCache = __PRIVATE_newIndexedDbRemoteDocumentCache(this.serializer), this.$r = new __PRIVATE_IndexedDbBundleCache(), this.window && this.window.localStorage ? this.di = this.window.localStorage : (this.di = null, !1 === u && __PRIVATE_logError(\"IndexedDbPersistence\", \"LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page.\"));\n }\n /**\n * Attempt to start IndexedDb persistence.\n *\n * @returns Whether persistence was enabled.\n */\n\n\n _createClass(__PRIVATE_IndexedDbPersistence, [{\n key: \"start\",\n value: function start() {\n var _this137 = this;\n\n // NOTE: This is expected to fail sometimes (in the case of another tab\n // already having the persistence lock), so it's the first thing we should\n // do.\n return this.Ai().then(function () {\n if (!_this137.isPrimary && !_this137.allowTabSynchronization) // Fail `start()` if `synchronizeTabs` is disabled and we cannot\n // obtain the primary lease.\n throw new FirestoreError(D.FAILED_PRECONDITION, de);\n return _this137.Ri(), _this137.Vi(), _this137.mi(), _this137.runTransaction(\"getHighestListenSequenceNumber\", \"readonly\", function (e) {\n return _this137.Qr.getHighestSequenceNumber(e);\n });\n }).then(function (e) {\n _this137.kr = new __PRIVATE_ListenSequence(e, _this137._i);\n }).then(function () {\n _this137.qr = !0;\n }).catch(function (e) {\n return _this137.Ei && _this137.Ei.close(), Promise.reject(e);\n });\n }\n /**\n * Registers a listener that gets called when the primary state of the\n * instance changes. Upon registering, this listener is invoked immediately\n * with the current primary state.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n\n }, {\n key: \"fi\",\n value: function fi(e) {\n var _this138 = this;\n\n return this.Ii = /*#__PURE__*/function () {\n var _ref18 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(t) {\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!_this138.started) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt(\"return\", e(t));\n\n case 2:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }));\n\n return function (_x7) {\n return _ref18.apply(this, arguments);\n };\n }(), e(this.isPrimary);\n }\n /**\n * Registers a listener that gets called when the database receives a\n * version change event indicating that it has deleted.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n\n }, {\n key: \"setDatabaseDeletedListener\",\n value: function setDatabaseDeletedListener(e) {\n this.Ei.L( /*#__PURE__*/function () {\n var _ref19 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(t) {\n return _regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.t0 = null === t.newVersion;\n\n if (!_context9.t0) {\n _context9.next = 4;\n break;\n }\n\n _context9.next = 4;\n return e();\n\n case 4:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n\n return function (_x8) {\n return _ref19.apply(this, arguments);\n };\n }());\n }\n /**\n * Adjusts the current network state in the client's metadata, potentially\n * affecting the primary lease.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n\n }, {\n key: \"setNetworkEnabled\",\n value: function setNetworkEnabled(e) {\n var _this139 = this;\n\n this.networkEnabled !== e && (this.networkEnabled = e, // Schedule a primary lease refresh for immediate execution. The eventual\n // lease update will be propagated via `primaryStateListener`.\n this.oi.enqueueAndForget( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {\n return _regeneratorRuntime.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.t0 = _this139.started;\n\n if (!_context10.t0) {\n _context10.next = 4;\n break;\n }\n\n _context10.next = 4;\n return _this139.Ai();\n\n case 4:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }))));\n }\n /**\n * Updates the client metadata in IndexedDb and attempts to either obtain or\n * extend the primary lease for the local client. Asynchronously notifies the\n * primary state listener if the client either newly obtained or released its\n * primary lease.\n */\n\n }, {\n key: \"Ai\",\n value: function Ai() {\n var _this140 = this;\n\n return this.runTransaction(\"updateClientMetadataAndTryBecomePrimary\", \"readwrite\", function (e) {\n return __PRIVATE_clientMetadataStore(e).put({\n clientId: _this140.clientId,\n updateTimeMs: Date.now(),\n networkEnabled: _this140.networkEnabled,\n inForeground: _this140.inForeground\n }).next(function () {\n if (_this140.isPrimary) return _this140.gi(e).next(function (e) {\n e || (_this140.isPrimary = !1, _this140.oi.enqueueRetryable(function () {\n return _this140.Ii(!1);\n }));\n });\n }).next(function () {\n return _this140.pi(e);\n }).next(function (t) {\n return _this140.isPrimary && !t ? _this140.yi(e).next(function () {\n return !1;\n }) : !!t && _this140.wi(e).next(function () {\n return !0;\n });\n });\n }).catch(function (e) {\n if (__PRIVATE_isIndexedDbTransactionError(e)) // Proceed with the existing state. Any subsequent access to\n // IndexedDB will verify the lease.\n return __PRIVATE_logDebug(\"IndexedDbPersistence\", \"Failed to extend owner lease: \", e), _this140.isPrimary;\n if (!_this140.allowTabSynchronization) throw e;\n return __PRIVATE_logDebug(\"IndexedDbPersistence\", \"Releasing owner lease after error during lease refresh\", e),\n /* isPrimary= */\n !1;\n }).then(function (e) {\n _this140.isPrimary !== e && _this140.oi.enqueueRetryable(function () {\n return _this140.Ii(e);\n }), _this140.isPrimary = e;\n });\n }\n }, {\n key: \"gi\",\n value: function gi(e) {\n var _this141 = this;\n\n return __PRIVATE_primaryClientStore(e).get(\"owner\").next(function (e) {\n return PersistencePromise.resolve(_this141.Si(e));\n });\n }\n }, {\n key: \"bi\",\n value: function bi(e) {\n return __PRIVATE_clientMetadataStore(e).delete(this.clientId);\n }\n /**\n * If the garbage collection threshold has passed, prunes the\n * RemoteDocumentChanges and the ClientMetadata store based on the last update\n * time of all clients.\n */\n\n }, {\n key: \"Di\",\n value: function () {\n var _Di = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {\n var _this142 = this;\n\n var e, _iterator58, _step58, t;\n\n return _regeneratorRuntime.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!(this.isPrimary && !this.Ci(this.Pi, 18e5))) {\n _context11.next = 6;\n break;\n }\n\n this.Pi = Date.now();\n _context11.next = 4;\n return this.runTransaction(\"maybeGarbageCollectMultiClientState\", \"readwrite-primary\", function (e) {\n var t = __PRIVATE_getStore(e, \"clientMetadata\");\n\n return t.W().next(function (e) {\n var n = _this142.vi(e, 18e5),\n r = e.filter(function (e) {\n return -1 === n.indexOf(e);\n }); // Delete metadata for clients that are no longer considered active.\n\n\n // Delete metadata for clients that are no longer considered active.\n return PersistencePromise.forEach(r, function (e) {\n return t.delete(e.clientId);\n }).next(function () {\n return r;\n });\n });\n }).catch(function () {\n return [];\n });\n\n case 4:\n e = _context11.sent;\n\n // Delete potential leftover entries that may continue to mark the\n // inactive clients as zombied in LocalStorage.\n // Ideally we'd delete the IndexedDb and LocalStorage zombie entries for\n // the client atomically, but we can't. So we opt to delete the IndexedDb\n // entries first to avoid potentially reviving a zombied client.\n if (this.di) {\n _iterator58 = _createForOfIteratorHelper(e);\n\n try {\n for (_iterator58.s(); !(_step58 = _iterator58.n()).done;) {\n t = _step58.value;\n this.di.removeItem(this.Fi(t.clientId));\n }\n } catch (err) {\n _iterator58.e(err);\n } finally {\n _iterator58.f();\n }\n }\n\n case 6:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function Di() {\n return _Di.apply(this, arguments);\n }\n\n return Di;\n }()\n /**\n * Schedules a recurring timer to update the client metadata and to either\n * extend or acquire the primary lease if the client is eligible.\n */\n\n }, {\n key: \"mi\",\n value: function mi() {\n var _this143 = this;\n\n this.hi = this.oi.enqueueAfterDelay(\"client_metadata_refresh\"\n /* TimerId.ClientMetadataRefresh */\n , 4e3, function () {\n return _this143.Ai().then(function () {\n return _this143.Di();\n }).then(function () {\n return _this143.mi();\n });\n });\n }\n /** Checks whether `client` is the local client. */\n\n }, {\n key: \"Si\",\n value: function Si(e) {\n return !!e && e.ownerId === this.clientId;\n }\n /**\n * Evaluate the state of all active clients and determine whether the local\n * client is or can act as the holder of the primary lease. Returns whether\n * the client is eligible for the lease, but does not actually acquire it.\n * May return 'false' even if there is no active leaseholder and another\n * (foreground) client should become leaseholder instead.\n */\n\n }, {\n key: \"pi\",\n value: function pi(e) {\n var _this144 = this;\n\n if (this.ai) return PersistencePromise.resolve(!0);\n return __PRIVATE_primaryClientStore(e).get(\"owner\").next(function (t) {\n // A client is eligible for the primary lease if:\n // - its network is enabled and the client's tab is in the foreground.\n // - its network is enabled and no other client's tab is in the\n // foreground.\n // - every clients network is disabled and the client's tab is in the\n // foreground.\n // - every clients network is disabled and no other client's tab is in\n // the foreground.\n // - the `forceOwningTab` setting was passed in.\n if (null !== t && _this144.Ci(t.leaseTimestampMs, 5e3) && !_this144.Mi(t.ownerId)) {\n if (_this144.Si(t) && _this144.networkEnabled) return !0;\n\n if (!_this144.Si(t)) {\n if (!t.allowTabSynchronization) // Fail the `canActAsPrimary` check if the current leaseholder has\n // not opted into multi-tab synchronization. If this happens at\n // client startup, we reject the Promise returned by\n // `enablePersistence()` and the user can continue to use Firestore\n // with in-memory persistence.\n // If this fails during a lease refresh, we will instead block the\n // AsyncQueue from executing further operations. Note that this is\n // acceptable since mixing & matching different `synchronizeTabs`\n // settings is not supported.\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can\n // no longer be turned off.\n throw new FirestoreError(D.FAILED_PRECONDITION, de);\n return !1;\n }\n }\n\n return !(!_this144.networkEnabled || !_this144.inForeground) || __PRIVATE_clientMetadataStore(e).W().next(function (e) {\n return void 0 === _this144.vi(e, 5e3).find(function (e) {\n if (_this144.clientId !== e.clientId) {\n var _t39 = !_this144.networkEnabled && e.networkEnabled,\n n = !_this144.inForeground && e.inForeground,\n r = _this144.networkEnabled === e.networkEnabled;\n\n if (_t39 || n && r) return !0;\n }\n\n return !1;\n });\n });\n }).next(function (e) {\n return _this144.isPrimary !== e && __PRIVATE_logDebug(\"IndexedDbPersistence\", \"Client \".concat(e ? \"is\" : \"is not\", \" eligible for a primary lease.\")), e;\n });\n }\n }, {\n key: \"shutdown\",\n value: function () {\n var _shutdown = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {\n var _this145 = this;\n\n return _regeneratorRuntime.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n this.qr = !1;\n this.xi();\n this.hi && (this.hi.cancel(), this.hi = null);\n this.Oi();\n this.Ni();\n _context12.next = 7;\n return this.Ei.runTransaction(\"shutdown\", \"readwrite\", [\"owner\", \"clientMetadata\"], function (e) {\n var t = new __PRIVATE_IndexedDbTransaction(e, __PRIVATE_ListenSequence._e);\n return _this145.yi(t).next(function () {\n return _this145.bi(t);\n });\n });\n\n case 7:\n this.Ei.close();\n // Remove the entry marking the client as zombied from LocalStorage since\n // we successfully deleted its metadata from IndexedDb.\n this.Bi();\n\n case 9:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function shutdown() {\n return _shutdown.apply(this, arguments);\n }\n\n return shutdown;\n }()\n /**\n * Returns clients that are not zombied and have an updateTime within the\n * provided threshold.\n */\n\n }, {\n key: \"vi\",\n value: function vi(e, t) {\n var _this146 = this;\n\n return e.filter(function (e) {\n return _this146.Ci(e.updateTimeMs, t) && !_this146.Mi(e.clientId);\n });\n }\n /**\n * Returns the IDs of the clients that are currently active. If multi-tab\n * is not supported, returns an array that only contains the local client's\n * ID.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n\n }, {\n key: \"Li\",\n value: function Li() {\n var _this147 = this;\n\n return this.runTransaction(\"getActiveClients\", \"readonly\", function (e) {\n return __PRIVATE_clientMetadataStore(e).W().next(function (e) {\n return _this147.vi(e, 18e5).map(function (e) {\n return e.clientId;\n });\n });\n });\n }\n }, {\n key: \"started\",\n get: function get() {\n return this.qr;\n }\n }, {\n key: \"getMutationQueue\",\n value: function getMutationQueue(e, t) {\n return __PRIVATE_IndexedDbMutationQueue.lt(e, this.serializer, t, this.referenceDelegate);\n }\n }, {\n key: \"getTargetCache\",\n value: function getTargetCache() {\n return this.Qr;\n }\n }, {\n key: \"getRemoteDocumentCache\",\n value: function getRemoteDocumentCache() {\n return this.remoteDocumentCache;\n }\n }, {\n key: \"getIndexManager\",\n value: function getIndexManager(e) {\n return new __PRIVATE_IndexedDbIndexManager(e, this.serializer.ct.databaseId);\n }\n }, {\n key: \"getDocumentOverlayCache\",\n value: function getDocumentOverlayCache(e) {\n return __PRIVATE_IndexedDbDocumentOverlayCache.lt(this.serializer, e);\n }\n }, {\n key: \"getBundleCache\",\n value: function getBundleCache() {\n return this.$r;\n }\n }, {\n key: \"runTransaction\",\n value: function runTransaction(e, t, n) {\n var _this148 = this;\n\n __PRIVATE_logDebug(\"IndexedDbPersistence\", \"Starting transaction:\", e);\n\n var r = \"readonly\" === t ? \"readonly\" : \"readwrite\",\n i =\n /** Returns the object stores for the provided schema. */\n function __PRIVATE_getObjectStores(e) {\n return 15 === e ? X : 14 === e ? Z : 13 === e ? Y : 12 === e ? J : 11 === e ? H : void fail();\n }(this.ui);\n\n var s; // Do all transactions as readwrite against all object stores, since we\n // are the only reader/writer.\n\n return this.Ei.runTransaction(e, r, i, function (r) {\n return s = new __PRIVATE_IndexedDbTransaction(r, _this148.kr ? _this148.kr.next() : __PRIVATE_ListenSequence._e), \"readwrite-primary\" === t ? _this148.gi(s).next(function (e) {\n return !!e || _this148.pi(s);\n }).next(function (t) {\n if (!t) throw __PRIVATE_logError(\"Failed to obtain primary lease for action '\".concat(e, \"'.\")), _this148.isPrimary = !1, _this148.oi.enqueueRetryable(function () {\n return _this148.Ii(!1);\n }), new FirestoreError(D.FAILED_PRECONDITION, v);\n return n(s);\n }).next(function (e) {\n return _this148.wi(s).next(function () {\n return e;\n });\n }) : _this148.ki(s).next(function () {\n return n(s);\n });\n }).then(function (e) {\n return s.raiseOnCommittedEvent(), e;\n });\n }\n /**\n * Verifies that the current tab is the primary leaseholder or alternatively\n * that the leaseholder has opted into multi-tab synchronization.\n */\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can no longer\n // be turned off.\n\n }, {\n key: \"ki\",\n value: function ki(e) {\n var _this149 = this;\n\n return __PRIVATE_primaryClientStore(e).get(\"owner\").next(function (e) {\n if (null !== e && _this149.Ci(e.leaseTimestampMs, 5e3) && !_this149.Mi(e.ownerId) && !_this149.Si(e) && !(_this149.ai || _this149.allowTabSynchronization && e.allowTabSynchronization)) throw new FirestoreError(D.FAILED_PRECONDITION, de);\n });\n }\n /**\n * Obtains or extends the new primary lease for the local client. This\n * method does not verify that the client is eligible for this lease.\n */\n\n }, {\n key: \"wi\",\n value: function wi(e) {\n var t = {\n ownerId: this.clientId,\n allowTabSynchronization: this.allowTabSynchronization,\n leaseTimestampMs: Date.now()\n };\n return __PRIVATE_primaryClientStore(e).put(\"owner\", t);\n }\n }, {\n key: \"yi\",\n value:\n /** Checks the primary lease and removes it if we are the current primary. */\n function yi(e) {\n var _this150 = this;\n\n var t = __PRIVATE_primaryClientStore(e);\n\n return t.get(\"owner\").next(function (e) {\n return _this150.Si(e) ? (__PRIVATE_logDebug(\"IndexedDbPersistence\", \"Releasing primary lease.\"), t.delete(\"owner\")) : PersistencePromise.resolve();\n });\n }\n /** Verifies that `updateTimeMs` is within `maxAgeMs`. */\n\n }, {\n key: \"Ci\",\n value: function Ci(e, t) {\n var n = Date.now();\n return !(e < n - t) && (!(e > n) || (__PRIVATE_logError(\"Detected an update time that is in the future: \".concat(e, \" > \").concat(n)), !1));\n }\n }, {\n key: \"Ri\",\n value: function Ri() {\n var _this151 = this;\n\n null !== this.document && \"function\" == typeof this.document.addEventListener && (this.li = function () {\n _this151.oi.enqueueAndForget(function () {\n return _this151.inForeground = \"visible\" === _this151.document.visibilityState, _this151.Ai();\n });\n }, this.document.addEventListener(\"visibilitychange\", this.li), this.inForeground = \"visible\" === this.document.visibilityState);\n }\n }, {\n key: \"Oi\",\n value: function Oi() {\n this.li && (this.document.removeEventListener(\"visibilitychange\", this.li), this.li = null);\n }\n /**\n * Attaches a window.unload handler that will synchronously write our\n * clientId to a \"zombie client id\" location in LocalStorage. This can be used\n * by tabs trying to acquire the primary lease to determine that the lease\n * is no longer valid even if the timestamp is recent. This is particularly\n * important for the refresh case (so the tab correctly re-acquires the\n * primary lease). LocalStorage is used for this rather than IndexedDb because\n * it is a synchronous API and so can be used reliably from an unload\n * handler.\n */\n\n }, {\n key: \"Vi\",\n value: function Vi() {\n var _this152 = this;\n\n var e;\n \"function\" == typeof (null === (e = this.window) || void 0 === e ? void 0 : e.addEventListener) && (this.ci = function () {\n // Note: In theory, this should be scheduled on the AsyncQueue since it\n // accesses internal state. We execute this code directly during shutdown\n // to make sure it gets a chance to run.\n _this152.xi();\n\n var e = /(?:Version|Mobile)\\/1[456]/;\n isSafari() && (navigator.appVersion.match(e) || navigator.userAgent.match(e)) && // On Safari 14, 15, and 16, we do not run any cleanup actions as it might\n // trigger a bug that prevents Safari from re-opening IndexedDB during\n // the next page load.\n // See https://bugs.webkit.org/show_bug.cgi?id=226547\n _this152.oi.enterRestrictedMode(\n /* purgeExistingTasks= */\n !0), _this152.oi.enqueueAndForget(function () {\n return _this152.shutdown();\n });\n }, this.window.addEventListener(\"pagehide\", this.ci));\n }\n }, {\n key: \"Ni\",\n value: function Ni() {\n this.ci && (this.window.removeEventListener(\"pagehide\", this.ci), this.ci = null);\n }\n /**\n * Returns whether a client is \"zombied\" based on its LocalStorage entry.\n * Clients become zombied when their tab closes without running all of the\n * cleanup logic in `shutdown()`.\n */\n\n }, {\n key: \"Mi\",\n value: function Mi(e) {\n var t;\n\n try {\n var n = null !== (null === (t = this.di) || void 0 === t ? void 0 : t.getItem(this.Fi(e)));\n return __PRIVATE_logDebug(\"IndexedDbPersistence\", \"Client '\".concat(e, \"' \").concat(n ? \"is\" : \"is not\", \" zombied in LocalStorage\")), n;\n } catch (e) {\n // Gracefully handle if LocalStorage isn't working.\n return __PRIVATE_logError(\"IndexedDbPersistence\", \"Failed to get zombied client id.\", e), !1;\n }\n }\n /**\n * Record client as zombied (a client that had its tab closed). Zombied\n * clients are ignored during primary tab selection.\n */\n\n }, {\n key: \"xi\",\n value: function xi() {\n if (this.di) try {\n this.di.setItem(this.Fi(this.clientId), String(Date.now()));\n } catch (e) {\n // Gracefully handle if LocalStorage isn't available / working.\n __PRIVATE_logError(\"Failed to set zombie client id.\", e);\n }\n }\n /** Removes the zombied client entry if it exists. */\n\n }, {\n key: \"Bi\",\n value: function Bi() {\n if (this.di) try {\n this.di.removeItem(this.Fi(this.clientId));\n } catch (e) {// Ignore\n }\n }\n }, {\n key: \"Fi\",\n value: function Fi(e) {\n return \"firestore_zombie_\".concat(this.persistenceKey, \"_\").concat(e);\n }\n }], [{\n key: \"D\",\n value: function D() {\n return __PRIVATE_SimpleDb.D();\n }\n }]);\n\n return __PRIVATE_IndexedDbPersistence;\n}();\n/**\n * Helper to get a typed SimpleDbStore for the primary client object store.\n */\n\n\nfunction __PRIVATE_primaryClientStore(e) {\n return __PRIVATE_getStore(e, \"owner\");\n}\n/**\n * Helper to get a typed SimpleDbStore for the client metadata object store.\n */\n\n\nfunction __PRIVATE_clientMetadataStore(e) {\n return __PRIVATE_getStore(e, \"clientMetadata\");\n}\n/**\n * Generates a string used as a prefix when storing data in IndexedDB and\n * LocalStorage.\n */\n\n\nfunction __PRIVATE_indexedDbStoragePrefix(e, t) {\n // Use two different prefix formats:\n // * firestore / persistenceKey / projectID . databaseID / ...\n // * firestore / persistenceKey / projectID / ...\n // projectIDs are DNS-compatible names and cannot contain dots\n // so there's no danger of collisions.\n var n = e.projectId;\n return e.isDefaultDatabase || (n += \".\" + e.database), \"firestore/\" + t + \"/\" + n + \"/\";\n}\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A set of changes to what documents are currently in view and out of view for\n * a given query. These changes are sent to the LocalStore by the View (via\n * the SyncEngine) and are used to pin / unpin documents as appropriate.\n */\n\n\nvar __PRIVATE_LocalViewChanges = /*#__PURE__*/function () {\n function __PRIVATE_LocalViewChanges(e, t, n, r) {\n _classCallCheck(this, __PRIVATE_LocalViewChanges);\n\n this.targetId = e, this.fromCache = t, this.qi = n, this.Qi = r;\n }\n\n _createClass(__PRIVATE_LocalViewChanges, null, [{\n key: \"Ki\",\n value: function Ki(e, t) {\n var n = __PRIVATE_documentKeySet(),\n r = __PRIVATE_documentKeySet();\n\n var _iterator59 = _createForOfIteratorHelper(t.docChanges),\n _step59;\n\n try {\n for (_iterator59.s(); !(_step59 = _iterator59.n()).done;) {\n var _e76 = _step59.value;\n\n switch (_e76.type) {\n case 0\n /* ChangeType.Added */\n :\n n = n.add(_e76.doc.key);\n break;\n\n case 1\n /* ChangeType.Removed */\n :\n r = r.add(_e76.doc.key);\n // do nothing\n }\n }\n } catch (err) {\n _iterator59.e(err);\n } finally {\n _iterator59.f();\n }\n\n return new __PRIVATE_LocalViewChanges(e, t.fromCache, n, r);\n }\n }]);\n\n return __PRIVATE_LocalViewChanges;\n}();\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A tracker to keep a record of important details during database local query\n * execution.\n */\n\n\nvar QueryContext = /*#__PURE__*/function () {\n function QueryContext() {\n _classCallCheck(this, QueryContext);\n\n /**\n * Counts the number of documents passed through during local query execution.\n */\n this._documentReadCount = 0;\n }\n\n _createClass(QueryContext, [{\n key: \"documentReadCount\",\n get: function get() {\n return this._documentReadCount;\n }\n }, {\n key: \"incrementDocumentReadCount\",\n value: function incrementDocumentReadCount(e) {\n this._documentReadCount += e;\n }\n }]);\n\n return QueryContext;\n}();\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The Firestore query engine.\n *\n * Firestore queries can be executed in three modes. The Query Engine determines\n * what mode to use based on what data is persisted. The mode only determines\n * the runtime complexity of the query - the result set is equivalent across all\n * implementations.\n *\n * The Query engine will use indexed-based execution if a user has configured\n * any index that can be used to execute query (via `setIndexConfiguration()`).\n * Otherwise, the engine will try to optimize the query by re-using a previously\n * persisted query result. If that is not possible, the query will be executed\n * via a full collection scan.\n *\n * Index-based execution is the default when available. The query engine\n * supports partial indexed execution and merges the result from the index\n * lookup with documents that have not yet been indexed. The index evaluation\n * matches the backend's format and as such, the SDK can use indexing for all\n * queries that the backend supports.\n *\n * If no index exists, the query engine tries to take advantage of the target\n * document mapping in the TargetCache. These mappings exists for all queries\n * that have been synced with the backend at least once and allow the query\n * engine to only read documents that previously matched a query plus any\n * documents that were edited after the query was last listened to.\n *\n * There are some cases when this optimization is not guaranteed to produce\n * the same results as full collection scans. In these cases, query\n * processing falls back to full scans. These cases are:\n *\n * - Limit queries where a document that matched the query previously no longer\n * matches the query.\n *\n * - Limit queries where a document edit may cause the document to sort below\n * another document that is in the local cache.\n *\n * - Queries that have never been CURRENT or free of limbo documents.\n */\n\n\nvar __PRIVATE_QueryEngine = /*#__PURE__*/function () {\n function __PRIVATE_QueryEngine() {\n _classCallCheck(this, __PRIVATE_QueryEngine);\n\n this.$i = !1, this.Ui = !1,\n /**\n * SDK only decides whether it should create index when collection size is\n * larger than this.\n */\n this.Wi = 100, this.Gi =\n /**\n * This cost represents the evaluation result of\n * (([index, docKey] + [docKey, docContent]) per document in the result set)\n * / ([docKey, docContent] per documents in full collection scan) coming from\n * experiment [enter PR experiment URL here].\n */\n function __PRIVATE_getDefaultRelativeIndexReadCostPerDocument() {\n // These values were derived from an experiment where several members of the\n // Firestore SDK team ran a performance test in various environments.\n // Googlers can see b/299284287 for details.\n return isSafari() ? 8 : __PRIVATE_SimpleDb.v(getUA()) > 0 ? 6 : 4;\n }();\n }\n /** Sets the document view to query against. */\n\n\n _createClass(__PRIVATE_QueryEngine, [{\n key: \"initialize\",\n value: function initialize(e, t) {\n this.zi = e, this.indexManager = t, this.$i = !0;\n }\n /** Returns all local documents matching the specified query. */\n\n }, {\n key: \"getDocumentsMatchingQuery\",\n value: function getDocumentsMatchingQuery(e, t, n, r) {\n var _this153 = this;\n\n // Stores the result from executing the query; using this object is more\n // convenient than passing the result between steps of the persistence\n // transaction and improves readability comparatively.\n var i = {\n result: null\n };\n return this.ji(e, t).next(function (e) {\n i.result = e;\n }).next(function () {\n if (!i.result) return _this153.Hi(e, t, r, n).next(function (e) {\n i.result = e;\n });\n }).next(function () {\n if (i.result) return;\n var n = new QueryContext();\n return _this153.Ji(e, t, n).next(function (r) {\n if (i.result = r, _this153.Ui) return _this153.Yi(e, t, n, r.size);\n });\n }).next(function () {\n return i.result;\n });\n }\n }, {\n key: \"Yi\",\n value: function Yi(e, t, n, r) {\n return n.documentReadCount < this.Wi ? (__PRIVATE_getLogLevel() <= LogLevel.DEBUG && __PRIVATE_logDebug(\"QueryEngine\", \"SDK will not create cache indexes for query:\", __PRIVATE_stringifyQuery(t), \"since it only creates cache indexes for collection contains\", \"more than or equal to\", this.Wi, \"documents\"), PersistencePromise.resolve()) : (__PRIVATE_getLogLevel() <= LogLevel.DEBUG && __PRIVATE_logDebug(\"QueryEngine\", \"Query:\", __PRIVATE_stringifyQuery(t), \"scans\", n.documentReadCount, \"local documents and returns\", r, \"documents as results.\"), n.documentReadCount > this.Gi * r ? (__PRIVATE_getLogLevel() <= LogLevel.DEBUG && __PRIVATE_logDebug(\"QueryEngine\", \"The SDK decides to create cache indexes for query:\", __PRIVATE_stringifyQuery(t), \"as using cache indexes may help improve performance.\"), this.indexManager.createTargetIndexes(e, __PRIVATE_queryToTarget(t))) : PersistencePromise.resolve());\n }\n /**\n * Performs an indexed query that evaluates the query based on a collection's\n * persisted index values. Returns `null` if an index is not available.\n */\n\n }, {\n key: \"ji\",\n value: function ji(e, t) {\n var _this154 = this;\n\n if (__PRIVATE_queryMatchesAllDocuments(t)) // Queries that match all documents don't benefit from using\n // key-based lookups. It is more efficient to scan all documents in a\n // collection, rather than to perform individual lookups.\n return PersistencePromise.resolve(null);\n\n var n = __PRIVATE_queryToTarget(t);\n\n return this.indexManager.getIndexType(e, n).next(function (r) {\n return 0\n /* IndexType.NONE */\n === r ? null : (null !== t.limit && 1\n /* IndexType.PARTIAL */\n === r && ( // We cannot apply a limit for targets that are served using a partial\n // index. If a partial index will be used to serve the target, the\n // query may return a superset of documents that match the target\n // (e.g. if the index doesn't include all the target's filters), or\n // may return the correct set of documents in the wrong order (e.g. if\n // the index doesn't include a segment for one of the orderBys).\n // Therefore, a limit should not be applied in such cases.\n t = __PRIVATE_queryWithLimit(t, null, \"F\"\n /* LimitType.First */\n ), n = __PRIVATE_queryToTarget(t)), _this154.indexManager.getDocumentsMatchingTarget(e, n).next(function (r) {\n var i = __PRIVATE_documentKeySet.apply(void 0, _toConsumableArray(r));\n\n return _this154.zi.getDocuments(e, i).next(function (r) {\n return _this154.indexManager.getMinOffset(e, n).next(function (n) {\n var s = _this154.Zi(t, r);\n\n return _this154.Xi(t, s, i, n.readTime) ? _this154.ji(e, __PRIVATE_queryWithLimit(t, null, \"F\"\n /* LimitType.First */\n )) : _this154.es(e, s, t, n);\n });\n });\n }));\n });\n }\n /**\n * Performs a query based on the target's persisted query mapping. Returns\n * `null` if the mapping is not available or cannot be used.\n */\n\n }, {\n key: \"Hi\",\n value: function Hi(e, t, n, r) {\n var _this155 = this;\n\n return __PRIVATE_queryMatchesAllDocuments(t) || r.isEqual(SnapshotVersion.min()) ? PersistencePromise.resolve(null) : this.zi.getDocuments(e, n).next(function (i) {\n var s = _this155.Zi(t, i);\n\n return _this155.Xi(t, s, n, r) ? PersistencePromise.resolve(null) : (__PRIVATE_getLogLevel() <= LogLevel.DEBUG && __PRIVATE_logDebug(\"QueryEngine\", \"Re-using previous result from %s to execute query: %s\", r.toString(), __PRIVATE_stringifyQuery(t)), _this155.es(e, s, t, __PRIVATE_newIndexOffsetSuccessorFromReadTime(r, -1)).next(function (e) {\n return e;\n }));\n }); // Queries that have never seen a snapshot without limbo free documents\n // should also be run as a full collection scan.\n }\n /** Applies the query filter and sorting to the provided documents. */\n\n }, {\n key: \"Zi\",\n value: function Zi(e, t) {\n // Sort the documents and re-apply the query filter since previously\n // matching documents do not necessarily still match the query.\n var n = new SortedSet(__PRIVATE_newQueryComparator(e));\n return t.forEach(function (t, r) {\n __PRIVATE_queryMatches(e, r) && (n = n.add(r));\n }), n;\n }\n /**\n * Determines if a limit query needs to be refilled from cache, making it\n * ineligible for index-free execution.\n *\n * @param query - The query.\n * @param sortedPreviousResults - The documents that matched the query when it\n * was last synchronized, sorted by the query's comparator.\n * @param remoteKeys - The document keys that matched the query at the last\n * snapshot.\n * @param limboFreeSnapshotVersion - The version of the snapshot when the\n * query was last synchronized.\n */\n\n }, {\n key: \"Xi\",\n value: function Xi(e, t, n, r) {\n if (null === e.limit) // Queries without limits do not need to be refilled.\n return !1;\n if (n.size !== t.size) // The query needs to be refilled if a previously matching document no\n // longer matches.\n return !0; // Limit queries are not eligible for index-free query execution if there is\n // a potential that an older document from cache now sorts before a document\n // that was previously part of the limit. This, however, can only happen if\n // the document at the edge of the limit goes out of limit.\n // If a document that is not the limit boundary sorts differently,\n // the boundary of the limit itself did not change and documents from cache\n // will continue to be \"rejected\" by this boundary. Therefore, we can ignore\n // any modifications that don't affect the last document.\n\n var i = \"F\"\n /* LimitType.First */\n === e.limitType ? t.last() : t.first();\n return !!i && (i.hasPendingWrites || i.version.compareTo(r) > 0);\n }\n }, {\n key: \"Ji\",\n value: function Ji(e, t, n) {\n return __PRIVATE_getLogLevel() <= LogLevel.DEBUG && __PRIVATE_logDebug(\"QueryEngine\", \"Using full collection scan to execute query:\", __PRIVATE_stringifyQuery(t)), this.zi.getDocumentsMatchingQuery(e, t, IndexOffset.min(), n);\n }\n /**\n * Combines the results from an indexed execution with the remaining documents\n * that have not yet been indexed.\n */\n\n }, {\n key: \"es\",\n value: function es(e, t, n, r) {\n // Retrieve all results for documents that were updated since the offset.\n return this.zi.getDocumentsMatchingQuery(e, n, r).next(function (e) {\n return (// Merge with existing results\n t.forEach(function (t) {\n e = e.insert(t.key, t);\n }), e\n );\n });\n }\n }]);\n\n return __PRIVATE_QueryEngine;\n}();\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Implements `LocalStore` interface.\n *\n * Note: some field defined in this class might have public access level, but\n * the class is not exported so they are only accessible from this module.\n * This is useful to implement optional features (like bundles) in free\n * functions, such that they are tree-shakeable.\n */\n\n\nvar __PRIVATE_LocalStoreImpl = /*#__PURE__*/function () {\n function __PRIVATE_LocalStoreImpl(\n /** Manages our in-memory or durable persistence. */\n e, t, n, r) {\n _classCallCheck(this, __PRIVATE_LocalStoreImpl);\n\n this.persistence = e, this.ts = t, this.serializer = r,\n /**\n * Maps a targetID to data about its target.\n *\n * PORTING NOTE: We are using an immutable data structure on Web to make re-runs\n * of `applyRemoteEvent()` idempotent.\n */\n this.ns = new SortedMap(__PRIVATE_primitiveComparator),\n /** Maps a target to its targetID. */\n // TODO(wuandy): Evaluate if TargetId can be part of Target.\n this.rs = new ObjectMap(function (e) {\n return __PRIVATE_canonifyTarget(e);\n }, __PRIVATE_targetEquals),\n /**\n * A per collection group index of the last read time processed by\n * `getNewDocumentChanges()`.\n *\n * PORTING NOTE: This is only used for multi-tab synchronization.\n */\n this.ss = new Map(), this.os = e.getRemoteDocumentCache(), this.Qr = e.getTargetCache(), this.$r = e.getBundleCache(), this._s(n);\n }\n\n _createClass(__PRIVATE_LocalStoreImpl, [{\n key: \"_s\",\n value: function _s(e) {\n // TODO(indexing): Add spec tests that test these components change after a\n // user change\n this.documentOverlayCache = this.persistence.getDocumentOverlayCache(e), this.indexManager = this.persistence.getIndexManager(e), this.mutationQueue = this.persistence.getMutationQueue(e, this.indexManager), this.localDocuments = new LocalDocumentsView(this.os, this.mutationQueue, this.documentOverlayCache, this.indexManager), this.os.setIndexManager(this.indexManager), this.ts.initialize(this.localDocuments, this.indexManager);\n }\n }, {\n key: \"collectGarbage\",\n value: function collectGarbage(e) {\n var _this156 = this;\n\n return this.persistence.runTransaction(\"Collect garbage\", \"readwrite-primary\", function (t) {\n return e.collect(t, _this156.ns);\n });\n }\n }]);\n\n return __PRIVATE_LocalStoreImpl;\n}();\n\nfunction __PRIVATE_newLocalStore(\n/** Manages our in-memory or durable persistence. */\ne, t, n, r) {\n return new __PRIVATE_LocalStoreImpl(e, t, n, r);\n}\n/**\n * Tells the LocalStore that the currently authenticated user has changed.\n *\n * In response the local store switches the mutation queue to the new user and\n * returns any resulting document changes.\n */\n// PORTING NOTE: Android and iOS only return the documents affected by the\n// change.\n\n\nfunction __PRIVATE_localStoreHandleUserChange(_x9, _x10) {\n return _PRIVATE_localStoreHandleUserChange.apply(this, arguments);\n}\n/* Accepts locally generated Mutations and commit them to storage. */\n\n/**\n * Acknowledges the given batch.\n *\n * On the happy path when a batch is acknowledged, the local store will\n *\n * + remove the batch from the mutation queue;\n * + apply the changes to the remote document cache;\n * + recalculate the latency compensated view implied by those changes (there\n * may be mutations in the queue that affect the documents but haven't been\n * acknowledged yet); and\n * + give the changed documents back the sync engine\n *\n * @returns The resulting (modified) documents.\n */\n\n\nfunction _PRIVATE_localStoreHandleUserChange() {\n _PRIVATE_localStoreHandleUserChange = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee78(e, t) {\n var n;\n return _regeneratorRuntime.wrap(function _callee78$(_context78) {\n while (1) {\n switch (_context78.prev = _context78.next) {\n case 0:\n n = __PRIVATE_debugCast(e);\n _context78.next = 3;\n return n.persistence.runTransaction(\"Handle user change\", \"readonly\", function (e) {\n // Swap out the mutation queue, grabbing the pending mutation batches\n // before and after.\n var r;\n return n.mutationQueue.getAllMutationBatches(e).next(function (i) {\n return r = i, n._s(t), n.mutationQueue.getAllMutationBatches(e);\n }).next(function (t) {\n var i = [],\n s = []; // Union the old/new changed keys.\n\n // Union the old/new changed keys.\n var o = __PRIVATE_documentKeySet();\n\n var _iterator88 = _createForOfIteratorHelper(r),\n _step88;\n\n try {\n for (_iterator88.s(); !(_step88 = _iterator88.n()).done;) {\n var _e118 = _step88.value;\n i.push(_e118.batchId);\n\n var _iterator90 = _createForOfIteratorHelper(_e118.mutations),\n _step90;\n\n try {\n for (_iterator90.s(); !(_step90 = _iterator90.n()).done;) {\n var _t57 = _step90.value;\n o = o.add(_t57.key);\n }\n } catch (err) {\n _iterator90.e(err);\n } finally {\n _iterator90.f();\n }\n }\n } catch (err) {\n _iterator88.e(err);\n } finally {\n _iterator88.f();\n }\n\n var _iterator89 = _createForOfIteratorHelper(t),\n _step89;\n\n try {\n for (_iterator89.s(); !(_step89 = _iterator89.n()).done;) {\n var _e119 = _step89.value;\n s.push(_e119.batchId);\n\n var _iterator91 = _createForOfIteratorHelper(_e119.mutations),\n _step91;\n\n try {\n for (_iterator91.s(); !(_step91 = _iterator91.n()).done;) {\n var _t58 = _step91.value;\n o = o.add(_t58.key);\n }\n } catch (err) {\n _iterator91.e(err);\n } finally {\n _iterator91.f();\n }\n } // Return the set of all (potentially) changed documents and the list\n // of mutation batch IDs that were affected by change.\n\n } catch (err) {\n _iterator89.e(err);\n } finally {\n _iterator89.f();\n } // Return the set of all (potentially) changed documents and the list\n // of mutation batch IDs that were affected by change.\n\n\n // Return the set of all (potentially) changed documents and the list\n // of mutation batch IDs that were affected by change.\n return n.localDocuments.getDocuments(e, o).next(function (e) {\n return {\n us: e,\n removedBatchIds: i,\n addedBatchIds: s\n };\n });\n });\n });\n\n case 3:\n return _context78.abrupt(\"return\", _context78.sent);\n\n case 4:\n case \"end\":\n return _context78.stop();\n }\n }\n }, _callee78);\n }));\n return _PRIVATE_localStoreHandleUserChange.apply(this, arguments);\n}\n\nfunction __PRIVATE_localStoreAcknowledgeBatch(e, t) {\n var n = __PRIVATE_debugCast(e);\n\n return n.persistence.runTransaction(\"Acknowledge batch\", \"readwrite-primary\", function (e) {\n var r = t.batch.keys(),\n i = n.os.newChangeBuffer({\n trackRemovals: !0\n });\n return function __PRIVATE_applyWriteToRemoteDocuments(e, t, n, r) {\n var i = n.batch,\n s = i.keys();\n var o = PersistencePromise.resolve();\n return s.forEach(function (e) {\n o = o.next(function () {\n return r.getEntry(t, e);\n }).next(function (t) {\n var s = n.docVersions.get(e);\n __PRIVATE_hardAssert(null !== s), t.version.compareTo(s) < 0 && (i.applyToRemoteDocument(t, n), t.isValidDocument() && ( // We use the commitVersion as the readTime rather than the\n // document's updateTime since the updateTime is not advanced\n // for updates that do not modify the underlying document.\n t.setReadTime(n.commitVersion), r.addEntry(t)));\n });\n }), o.next(function () {\n return e.mutationQueue.removeMutationBatch(t, i);\n });\n }\n /** Returns the local view of the documents affected by a mutation batch. */\n // PORTING NOTE: Multi-Tab only.\n (n, e, t, i).next(function () {\n return i.apply(e);\n }).next(function () {\n return n.mutationQueue.performConsistencyCheck(e);\n }).next(function () {\n return n.documentOverlayCache.removeOverlaysForBatchId(e, r, t.batch.batchId);\n }).next(function () {\n return n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e, function __PRIVATE_getKeysWithTransformResults(e) {\n var t = __PRIVATE_documentKeySet();\n\n for (var _n25 = 0; _n25 < e.mutationResults.length; ++_n25) {\n e.mutationResults[_n25].transformResults.length > 0 && (t = t.add(e.batch.mutations[_n25].key));\n }\n\n return t;\n }\n /**\n * Removes mutations from the MutationQueue for the specified batch;\n * LocalDocuments will be recalculated.\n *\n * @returns The resulting modified documents.\n */\n (t));\n }).next(function () {\n return n.localDocuments.getDocuments(e, r);\n });\n });\n}\n/**\n * Returns the last consistent snapshot processed (used by the RemoteStore to\n * determine whether to buffer incoming snapshots from the backend).\n */\n\n\nfunction __PRIVATE_localStoreGetLastRemoteSnapshotVersion(e) {\n var t = __PRIVATE_debugCast(e);\n\n return t.persistence.runTransaction(\"Get last remote snapshot version\", \"readonly\", function (e) {\n return t.Qr.getLastRemoteSnapshotVersion(e);\n });\n}\n/**\n * Updates the \"ground-state\" (remote) documents. We assume that the remote\n * event reflects any write batches that have been acknowledged or rejected\n * (i.e. we do not re-apply local mutations to updates from this event).\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */\n\n\nfunction __PRIVATE_localStoreApplyRemoteEventToLocalCache(e, t) {\n var n = __PRIVATE_debugCast(e),\n r = t.snapshotVersion;\n\n var i = n.ns;\n return n.persistence.runTransaction(\"Apply remote event\", \"readwrite-primary\", function (e) {\n var s = n.os.newChangeBuffer({\n trackRemovals: !0\n }); // Reset newTargetDataByTargetMap in case this transaction gets re-run.\n\n i = n.ns;\n var o = [];\n t.targetChanges.forEach(function (s, _) {\n var a = i.get(_);\n if (!a) return; // Only update the remote keys if the target is still active. This\n // ensures that we can persist the updated target data along with\n // the updated assignment.\n\n o.push(n.Qr.removeMatchingKeys(e, s.removedDocuments, _).next(function () {\n return n.Qr.addMatchingKeys(e, s.addedDocuments, _);\n }));\n var u = a.withSequenceNumber(e.currentSequenceNumber);\n null !== t.targetMismatches.get(_) ? u = u.withResumeToken(ByteString.EMPTY_BYTE_STRING, SnapshotVersion.min()).withLastLimboFreeSnapshotVersion(SnapshotVersion.min()) : s.resumeToken.approximateByteSize() > 0 && (u = u.withResumeToken(s.resumeToken, r)), i = i.insert(_, u), // Update the target data if there are target changes (or if\n // sufficient time has passed since the last update).\n\n /**\n * Returns true if the newTargetData should be persisted during an update of\n * an active target. TargetData should always be persisted when a target is\n * being released and should not call this function.\n *\n * While the target is active, TargetData updates can be omitted when nothing\n * about the target has changed except metadata like the resume token or\n * snapshot version. Occasionally it's worth the extra write to prevent these\n * values from getting too stale after a crash, but this doesn't have to be\n * too frequent.\n */\n function __PRIVATE_shouldPersistTargetData(e, t, n) {\n // Always persist target data if we don't already have a resume token.\n if (0 === e.resumeToken.approximateByteSize()) return !0; // Don't allow resume token changes to be buffered indefinitely. This\n // allows us to be reasonably up-to-date after a crash and avoids needing\n // to loop over all active queries on shutdown. Especially in the browser\n // we may not get time to do anything interesting while the current tab is\n // closing.\n\n if (t.snapshotVersion.toMicroseconds() - e.snapshotVersion.toMicroseconds() >= 3e8) return !0; // Otherwise if the only thing that has changed about a target is its resume\n // token it's not worth persisting. Note that the RemoteStore keeps an\n // in-memory view of the currently active targets which includes the current\n // resume token, so stream failure or user changes will still use an\n // up-to-date resume token regardless of what we do here.\n\n return n.addedDocuments.size + n.modifiedDocuments.size + n.removedDocuments.size > 0;\n }\n /**\n * Notifies local store of the changed views to locally pin documents.\n */\n (a, u, s) && o.push(n.Qr.updateTargetData(e, u));\n });\n\n var _ = __PRIVATE_mutableDocumentMap(),\n a = __PRIVATE_documentKeySet(); // HACK: The only reason we allow a null snapshot version is so that we\n // can synthesize remote events when we get permission denied errors while\n // trying to resolve the state of a locally cached document that is in\n // limbo.\n\n\n if (t.documentUpdates.forEach(function (r) {\n t.resolvedLimboDocuments.has(r) && o.push(n.persistence.referenceDelegate.updateLimboDocument(e, r));\n }), // Each loop iteration only affects its \"own\" doc, so it's safe to get all\n // the remote documents in advance in a single call.\n o.push(__PRIVATE_populateDocumentChangeBuffer(e, s, t.documentUpdates).next(function (e) {\n _ = e.cs, a = e.ls;\n })), !r.isEqual(SnapshotVersion.min())) {\n var _t40 = n.Qr.getLastRemoteSnapshotVersion(e).next(function (t) {\n return n.Qr.setTargetsMetadata(e, e.currentSequenceNumber, r);\n });\n\n o.push(_t40);\n }\n\n return PersistencePromise.waitFor(o).next(function () {\n return s.apply(e);\n }).next(function () {\n return n.localDocuments.getLocalViewOfDocuments(e, _, a);\n }).next(function () {\n return _;\n });\n }).then(function (e) {\n return n.ns = i, e;\n });\n}\n/**\n * Populates document change buffer with documents from backend or a bundle.\n * Returns the document changes resulting from applying those documents, and\n * also a set of documents whose existence state are changed as a result.\n *\n * @param txn - Transaction to use to read existing documents from storage.\n * @param documentBuffer - Document buffer to collect the resulted changes to be\n * applied to storage.\n * @param documents - Documents to be applied.\n */\n\n\nfunction __PRIVATE_populateDocumentChangeBuffer(e, t, n) {\n var r = __PRIVATE_documentKeySet(),\n i = __PRIVATE_documentKeySet();\n\n return n.forEach(function (e) {\n return r = r.add(e);\n }), t.getEntries(e, r).next(function (e) {\n var r = __PRIVATE_mutableDocumentMap();\n\n return n.forEach(function (n, s) {\n var o = e.get(n); // Check if see if there is a existence state change for this document.\n\n s.isFoundDocument() !== o.isFoundDocument() && (i = i.add(n)), // Note: The order of the steps below is important, since we want\n // to ensure that rejected limbo resolutions (which fabricate\n // NoDocuments with SnapshotVersion.min()) never add documents to\n // cache.\n s.isNoDocument() && s.version.isEqual(SnapshotVersion.min()) ? ( // NoDocuments with SnapshotVersion.min() are used in manufactured\n // events. We remove these documents from cache since we lost\n // access.\n t.removeEntry(n, s.readTime), r = r.insert(n, s)) : !o.isValidDocument() || s.version.compareTo(o.version) > 0 || 0 === s.version.compareTo(o.version) && o.hasPendingWrites ? (t.addEntry(s), r = r.insert(n, s)) : __PRIVATE_logDebug(\"LocalStore\", \"Ignoring outdated watch update for \", n, \". Current version:\", o.version, \" Watch version:\", s.version);\n }), {\n cs: r,\n ls: i\n };\n });\n}\n/**\n * Gets the mutation batch after the passed in batchId in the mutation queue\n * or null if empty.\n * @param afterBatchId - If provided, the batch to search after.\n * @returns The next mutation or null if there wasn't one.\n */\n\n\nfunction __PRIVATE_localStoreGetNextMutationBatch(e, t) {\n var n = __PRIVATE_debugCast(e);\n\n return n.persistence.runTransaction(\"Get next mutation batch\", \"readonly\", function (e) {\n return void 0 === t && (t = -1), n.mutationQueue.getNextMutationBatchAfterBatchId(e, t);\n });\n}\n/**\n * Reads the current value of a Document with a given key or null if not\n * found - used for testing.\n */\n\n/**\n * Assigns the given target an internal ID so that its results can be pinned so\n * they don't get GC'd. A target must be allocated in the local store before\n * the store can be used to manage its view.\n *\n * Allocating an already allocated `Target` will return the existing `TargetData`\n * for that `Target`.\n */\n\n\nfunction __PRIVATE_localStoreAllocateTarget(e, t) {\n var n = __PRIVATE_debugCast(e);\n\n return n.persistence.runTransaction(\"Allocate target\", \"readwrite\", function (e) {\n var r;\n return n.Qr.getTargetData(e, t).next(function (i) {\n return i ? ( // This target has been listened to previously, so reuse the\n // previous targetID.\n // TODO(mcg): freshen last accessed date?\n r = i, PersistencePromise.resolve(r)) : n.Qr.allocateTargetId(e).next(function (i) {\n return r = new TargetData(t, i, \"TargetPurposeListen\"\n /* TargetPurpose.Listen */\n , e.currentSequenceNumber), n.Qr.addTargetData(e, r).next(function () {\n return r;\n });\n });\n });\n }).then(function (e) {\n // If Multi-Tab is enabled, the existing target data may be newer than\n // the in-memory data\n var r = n.ns.get(e.targetId);\n return (null === r || e.snapshotVersion.compareTo(r.snapshotVersion) > 0) && (n.ns = n.ns.insert(e.targetId, e), n.rs.set(t, e.targetId)), e;\n });\n}\n/**\n * Returns the TargetData as seen by the LocalStore, including updates that may\n * have not yet been persisted to the TargetCache.\n */\n// Visible for testing.\n\n/**\n * Unpins all the documents associated with the given target. If\n * `keepPersistedTargetData` is set to false and Eager GC enabled, the method\n * directly removes the associated target data from the target cache.\n *\n * Releasing a non-existing `Target` is a no-op.\n */\n// PORTING NOTE: `keepPersistedTargetData` is multi-tab only.\n\n\nfunction __PRIVATE_localStoreReleaseTarget(_x11, _x12, _x13) {\n return _PRIVATE_localStoreReleaseTarget.apply(this, arguments);\n}\n/**\n * Runs the specified query against the local store and returns the results,\n * potentially taking advantage of query data from previous executions (such\n * as the set of remote keys).\n *\n * @param usePreviousResults - Whether results from previous executions can\n * be used to optimize this query execution.\n */\n\n\nfunction _PRIVATE_localStoreReleaseTarget() {\n _PRIVATE_localStoreReleaseTarget = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee79(e, t, n) {\n var r, i, s;\n return _regeneratorRuntime.wrap(function _callee79$(_context79) {\n while (1) {\n switch (_context79.prev = _context79.next) {\n case 0:\n r = __PRIVATE_debugCast(e), i = r.ns.get(t), s = n ? \"readwrite\" : \"readwrite-primary\";\n _context79.prev = 1;\n _context79.t0 = n;\n\n if (_context79.t0) {\n _context79.next = 6;\n break;\n }\n\n _context79.next = 6;\n return r.persistence.runTransaction(\"Release target\", s, function (e) {\n return r.persistence.referenceDelegate.removeTarget(e, i);\n });\n\n case 6:\n _context79.next = 13;\n break;\n\n case 8:\n _context79.prev = 8;\n _context79.t1 = _context79[\"catch\"](1);\n\n if (__PRIVATE_isIndexedDbTransactionError(_context79.t1)) {\n _context79.next = 12;\n break;\n }\n\n throw _context79.t1;\n\n case 12:\n // All `releaseTarget` does is record the final metadata state for the\n // target, but we've been recording this periodically during target\n // activity. If we lose this write this could cause a very slight\n // difference in the order of target deletion during GC, but we\n // don't define exact LRU semantics so this is acceptable.\n __PRIVATE_logDebug(\"LocalStore\", \"Failed to update sequence numbers for target \".concat(t, \": \").concat(_context79.t1));\n\n case 13:\n r.ns = r.ns.remove(t), r.rs.delete(i.target);\n\n case 14:\n case \"end\":\n return _context79.stop();\n }\n }\n }, _callee79, null, [[1, 8]]);\n }));\n return _PRIVATE_localStoreReleaseTarget.apply(this, arguments);\n}\n\nfunction __PRIVATE_localStoreExecuteQuery(e, t, n) {\n var r = __PRIVATE_debugCast(e);\n\n var i = SnapshotVersion.min(),\n s = __PRIVATE_documentKeySet();\n\n return r.persistence.runTransaction(\"Execute query\", \"readwrite\", // Use readwrite instead of readonly so indexes can be created\n // Use readwrite instead of readonly so indexes can be created\n function (e) {\n return function __PRIVATE_localStoreGetTargetData(e, t, n) {\n var r = __PRIVATE_debugCast(e),\n i = r.rs.get(n);\n\n return void 0 !== i ? PersistencePromise.resolve(r.ns.get(i)) : r.Qr.getTargetData(t, n);\n }(r, e, __PRIVATE_queryToTarget(t)).next(function (t) {\n if (t) return i = t.lastLimboFreeSnapshotVersion, r.Qr.getMatchingKeysForTargetId(e, t.targetId).next(function (e) {\n s = e;\n });\n }).next(function () {\n return r.ts.getDocumentsMatchingQuery(e, t, n ? i : SnapshotVersion.min(), n ? s : __PRIVATE_documentKeySet());\n }).next(function (e) {\n return __PRIVATE_setMaxReadTime(r, __PRIVATE_queryCollectionGroup(t), e), {\n documents: e,\n hs: s\n };\n });\n });\n} // PORTING NOTE: Multi-Tab only.\n\n\nfunction __PRIVATE_localStoreGetCachedTarget(e, t) {\n var n = __PRIVATE_debugCast(e),\n r = __PRIVATE_debugCast(n.Qr),\n i = n.ns.get(t);\n\n return i ? Promise.resolve(i.target) : n.persistence.runTransaction(\"Get target data\", \"readonly\", function (e) {\n return r._t(e, t).next(function (e) {\n return e ? e.target : null;\n });\n });\n}\n/**\n * Returns the set of documents that have been updated since the last call.\n * If this is the first call, returns the set of changes since client\n * initialization. Further invocations will return document that have changed\n * since the prior call.\n */\n// PORTING NOTE: Multi-Tab only.\n\n\nfunction __PRIVATE_localStoreGetNewDocumentChanges(e, t) {\n var n = __PRIVATE_debugCast(e),\n r = n.ss.get(t) || SnapshotVersion.min(); // Get the current maximum read time for the collection. This should always\n // exist, but to reduce the chance for regressions we default to\n // SnapshotVersion.Min()\n // TODO(indexing): Consider removing the default value.\n\n\n return n.persistence.runTransaction(\"Get new document changes\", \"readonly\", function (e) {\n return n.os.getAllFromCollectionGroup(e, t, __PRIVATE_newIndexOffsetSuccessorFromReadTime(r, -1),\n /* limit= */\n Number.MAX_SAFE_INTEGER);\n }).then(function (e) {\n return __PRIVATE_setMaxReadTime(n, t, e), e;\n });\n}\n/** Sets the collection group's maximum read time from the given documents. */\n// PORTING NOTE: Multi-Tab only.\n\n\nfunction __PRIVATE_setMaxReadTime(e, t, n) {\n var r = e.ss.get(t) || SnapshotVersion.min();\n n.forEach(function (e, t) {\n t.readTime.compareTo(r) > 0 && (r = t.readTime);\n }), e.ss.set(t, r);\n}\n/**\n * Creates a new target using the given bundle name, which will be used to\n * hold the keys of all documents from the bundle in query-document mappings.\n * This ensures that the loaded documents do not get garbage collected\n * right away.\n */\n\n/**\n * Applies the documents from a bundle to the \"ground-state\" (remote)\n * documents.\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */\n\n\nfunction __PRIVATE_localStoreApplyBundledDocuments(_x14, _x15, _x16, _x17) {\n return _PRIVATE_localStoreApplyBundledDocuments.apply(this, arguments);\n}\n/**\n * Returns a promise of a boolean to indicate if the given bundle has already\n * been loaded and the create time is newer than the current loading bundle.\n */\n\n/**\n * Saves the given `NamedQuery` to local persistence.\n */\n\n\nfunction _PRIVATE_localStoreApplyBundledDocuments() {\n _PRIVATE_localStoreApplyBundledDocuments = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee80(e, t, n, r) {\n var i, s, o, _iterator92, _step92, _e120, _n38, _r37, _, a;\n\n return _regeneratorRuntime.wrap(function _callee80$(_context80) {\n while (1) {\n switch (_context80.prev = _context80.next) {\n case 0:\n i = __PRIVATE_debugCast(e);\n s = __PRIVATE_documentKeySet(), o = __PRIVATE_mutableDocumentMap();\n _iterator92 = _createForOfIteratorHelper(n);\n\n try {\n for (_iterator92.s(); !(_step92 = _iterator92.n()).done;) {\n _e120 = _step92.value;\n _n38 = t.Ps(_e120.metadata.name);\n _e120.document && (s = s.add(_n38));\n _r37 = t.Is(_e120);\n _r37.setReadTime(t.Ts(_e120.metadata.readTime)), o = o.insert(_n38, _r37);\n }\n } catch (err) {\n _iterator92.e(err);\n } finally {\n _iterator92.f();\n }\n\n _ = i.os.newChangeBuffer({\n trackRemovals: !0\n });\n _context80.next = 7;\n return __PRIVATE_localStoreAllocateTarget(i, function __PRIVATE_umbrellaTarget(e) {\n // It is OK that the path used for the query is not valid, because this will\n // not be read and queried.\n return __PRIVATE_queryToTarget(__PRIVATE_newQueryForPath(ResourcePath.fromString(\"__bundle__/docs/\".concat(e))));\n }(r));\n\n case 7:\n a = _context80.sent;\n return _context80.abrupt(\"return\", i.persistence.runTransaction(\"Apply bundle documents\", \"readwrite\", function (e) {\n return __PRIVATE_populateDocumentChangeBuffer(e, _, o).next(function (t) {\n return _.apply(e), t;\n }).next(function (t) {\n return i.Qr.removeMatchingKeysForTargetId(e, a.targetId).next(function () {\n return i.Qr.addMatchingKeys(e, s, a.targetId);\n }).next(function () {\n return i.localDocuments.getLocalViewOfDocuments(e, t.cs, t.ls);\n }).next(function () {\n return t.cs;\n });\n });\n }));\n\n case 9:\n case \"end\":\n return _context80.stop();\n }\n }\n }, _callee80);\n }));\n return _PRIVATE_localStoreApplyBundledDocuments.apply(this, arguments);\n}\n\nfunction __PRIVATE_localStoreSaveNamedQuery(_x18, _x19) {\n return _PRIVATE_localStoreSaveNamedQuery.apply(this, arguments);\n}\n/** Assembles the key for a client state in WebStorage */\n\n\nfunction _PRIVATE_localStoreSaveNamedQuery() {\n _PRIVATE_localStoreSaveNamedQuery = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee81(e, t) {\n var n,\n r,\n i,\n _args81 = arguments;\n return _regeneratorRuntime.wrap(function _callee81$(_context81) {\n while (1) {\n switch (_context81.prev = _context81.next) {\n case 0:\n n = _args81.length > 2 && _args81[2] !== undefined ? _args81[2] : __PRIVATE_documentKeySet();\n _context81.next = 3;\n return __PRIVATE_localStoreAllocateTarget(e, __PRIVATE_queryToTarget(__PRIVATE_fromBundledQuery(t.bundledQuery)));\n\n case 3:\n r = _context81.sent;\n i = __PRIVATE_debugCast(e);\n return _context81.abrupt(\"return\", i.persistence.runTransaction(\"Save named query\", \"readwrite\", function (e) {\n var s = __PRIVATE_fromVersion(t.readTime); // Simply save the query itself if it is older than what the SDK already\n // has.\n\n\n // Simply save the query itself if it is older than what the SDK already\n // has.\n if (r.snapshotVersion.compareTo(s) >= 0) return i.$r.saveNamedQuery(e, t); // Update existing target data because the query from the bundle is newer.\n\n // Update existing target data because the query from the bundle is newer.\n var o = r.withResumeToken(ByteString.EMPTY_BYTE_STRING, s);\n return i.ns = i.ns.insert(o.targetId, o), i.Qr.updateTargetData(e, o).next(function () {\n return i.Qr.removeMatchingKeysForTargetId(e, r.targetId);\n }).next(function () {\n return i.Qr.addMatchingKeys(e, n, r.targetId);\n }).next(function () {\n return i.$r.saveNamedQuery(e, t);\n });\n }));\n\n case 6:\n case \"end\":\n return _context81.stop();\n }\n }\n }, _callee81);\n }));\n return _PRIVATE_localStoreSaveNamedQuery.apply(this, arguments);\n}\n\nfunction createWebStorageClientStateKey(e, t) {\n return \"firestore_clients_\".concat(e, \"_\").concat(t);\n} // The format of the WebStorage key that stores the mutation state is:\n// firestore_mutations_