{"version":3,"file":"js/9227-50c4b2d0f6d59293380f.js","mappings":";0FAAA,IAAIA,EAAOC,EAEXD,EAAKE,OAAS,EAAQ,OAEtBF,EAAKG,OAAS,gBACdH,EAAKI,KAAO,EAAQ,MACpBJ,EAAKK,UAAY,EAAQ,OACzBL,EAAKM,SAAW,EAAQ,OACxBN,EAAKO,SAAW,EAAQ,wBCRxB,IAAIP,EAAO,EAAQ,OACfQ,EAAW,EAAQ,OAQvB,SAASC,EAAOC,EAAMC,GACpBC,KAAKF,KAAOA,EACZE,KAAKD,KAAOA,EAEZC,KAAKN,SAAW,CAAC,EACjBM,KAAKL,SAAW,CAAC,CACnB,CAZUN,EAENE,OAAS,SAAgBO,EAAMC,GACjC,OAAO,IAAIF,EAAOC,EAAMC,EAC1B,EAUAF,EAAOI,UAAUC,aAAe,SAAqBV,GACnD,IAAIW,EACJ,IACEA,EAAQ,mGACN,aAAeH,KAAKF,KAApB,6CAIJ,CAAE,MAAOM,GACPD,EAAQ,SAAUE,GAChBL,KAAKM,WAAWD,EAClB,CACF,CAMA,OALAT,EAASO,EAAOX,GAChBW,EAAMF,UAAUK,WAAa,SAAmBD,GAC9Cb,EAAKe,KAAKP,KAAMK,EAClB,EAEO,IAAIF,EAAMH,KACnB,EAEAH,EAAOI,UAAUO,YAAc,SAAqBC,GAKlD,OAJAA,EAAMA,GAAO,MAERT,KAAKN,SAASgB,eAAeD,KAChCT,KAAKN,SAASe,GAAOT,KAAKE,aAAad,EAAKM,SAASe,KAChDT,KAAKN,SAASe,EACvB,EAEAZ,EAAOI,UAAUU,OAAS,SAAgBC,EAAMH,EAAKI,GACnD,OAAOb,KAAKQ,YAAYC,GAAKE,OAAOC,EAAMC,EAC5C,EAEAhB,EAAOI,UAAUa,YAAc,SAAqBL,GAKlD,OAJAA,EAAMA,GAAO,MAERT,KAAKL,SAASe,eAAeD,KAChCT,KAAKL,SAASc,GAAOT,KAAKE,aAAad,EAAKO,SAASc,KAChDT,KAAKL,SAASc,EACvB,EAEAZ,EAAOI,UAAUc,OAAS,SAAgBH,EAAMH,EAAoBO,GAClE,OAAOhB,KAAKc,YAAYL,GAAKM,OAAOH,EAAMI,EAC5C,mBC5DA,IAAIpB,EAAW,EAAQ,OACnBqB,EAAW,iBACXC,EAAS,gBAEb,SAASC,EAAc3B,EAAMqB,GAC3BI,EAASV,KAAKP,KAAMa,GACfK,EAAOE,SAAS5B,IAKrBQ,KAAKR,KAAOA,EACZQ,KAAKqB,OAAS,EACdrB,KAAKsB,OAAS9B,EAAK8B,QANjBtB,KAAKuB,MAAM,mBAOf,CAkDA,SAASC,EAAcC,EAAOT,GAC5B,GAAIU,MAAMC,QAAQF,GAChBzB,KAAKsB,OAAS,EACdtB,KAAKyB,MAAQA,EAAMG,KAAI,SAASC,GAI9B,OAHMA,aAAgBL,IACpBK,EAAO,IAAIL,EAAcK,EAAMb,IACjChB,KAAKsB,QAAUO,EAAKP,OACbO,CACT,GAAG7B,WACE,GAAqB,kBAAVyB,EAAoB,CACpC,KAAM,GAAKA,GAASA,GAAS,KAC3B,OAAOT,EAASO,MAAM,gCACxBvB,KAAKyB,MAAQA,EACbzB,KAAKsB,OAAS,CAChB,MAAO,GAAqB,kBAAVG,EAChBzB,KAAKyB,MAAQA,EACbzB,KAAKsB,OAASJ,EAAOY,WAAWL,OAC3B,KAAIP,EAAOE,SAASK,GAIzB,OAAOT,EAASO,MAAM,4BAA8BE,GAHpDzB,KAAKyB,MAAQA,EACbzB,KAAKsB,OAASG,EAAMH,MAGtB,CACF,CAxEA1B,EAASuB,EAAeF,GACxB5B,EAAQ,EAAgB8B,EAExBA,EAAclB,UAAU8B,KAAO,WAC7B,MAAO,CAAEV,OAAQrB,KAAKqB,OAAQL,SAAUC,EAAShB,UAAU8B,KAAKxB,KAAKP,MACvE,EAEAmB,EAAclB,UAAU+B,QAAU,SAAiBD,GAEjD,IAAIE,EAAM,IAAId,EAAcnB,KAAKR,MAOjC,OANAyC,EAAIZ,OAASU,EAAKV,OAClBY,EAAIX,OAAStB,KAAKqB,OAElBrB,KAAKqB,OAASU,EAAKV,OACnBJ,EAAShB,UAAU+B,QAAQzB,KAAKP,KAAM+B,EAAKf,UAEpCiB,CACT,EAEAd,EAAclB,UAAUiC,QAAU,WAChC,OAAOlC,KAAKqB,SAAWrB,KAAKsB,MAC9B,EAEAH,EAAclB,UAAUkC,UAAY,SAAmBC,GACrD,OAAIpC,KAAKqB,OAAS,GAAKrB,KAAKsB,OACnBtB,KAAKR,KAAK2C,UAAUnC,KAAKqB,UAAU,GAEnCrB,KAAKuB,MAAMa,GAAQ,wBAC9B,EAEAjB,EAAclB,UAAUoC,KAAO,SAAcC,EAAOF,GAClD,KAAMpC,KAAKqB,OAASiB,GAAStC,KAAKsB,QAChC,OAAOtB,KAAKuB,MAAMa,GAAQ,yBAE5B,IAAIH,EAAM,IAAId,EAAcnB,KAAKR,MAQjC,OALAyC,EAAIM,eAAiBvC,KAAKuC,eAE1BN,EAAIZ,OAASrB,KAAKqB,OAClBY,EAAIX,OAAStB,KAAKqB,OAASiB,EAC3BtC,KAAKqB,QAAUiB,EACRL,CACT,EAEAd,EAAclB,UAAUuC,IAAM,SAAaT,GACzC,OAAO/B,KAAKR,KAAKiD,MAAMV,EAAOA,EAAKV,OAASrB,KAAKqB,OAAQrB,KAAKsB,OAChE,EA0BAjC,EAAQ,EAAgBmC,EAExBA,EAAcvB,UAAUyC,KAAO,SAAcC,EAAKtB,GAMhD,OALKsB,IACHA,EAAM,IAAIzB,EAAOlB,KAAKsB,SACnBD,IACHA,EAAS,GAES,IAAhBrB,KAAKsB,SAGLI,MAAMC,QAAQ3B,KAAKyB,OACrBzB,KAAKyB,MAAMmB,SAAQ,SAASf,GAC1BA,EAAKa,KAAKC,EAAKtB,GACfA,GAAUQ,EAAKP,MACjB,KAE0B,kBAAftB,KAAKyB,MACdkB,EAAItB,GAAUrB,KAAKyB,MACU,kBAAfzB,KAAKyB,MACnBkB,EAAIE,MAAM7C,KAAKyB,MAAOJ,GACfH,EAAOE,SAASpB,KAAKyB,QAC5BzB,KAAKyB,MAAMqB,KAAKH,EAAKtB,GACvBA,GAAUrB,KAAKsB,SAdRqB,CAkBX,kBCnHA,IAAInD,EAAOH,EAEXG,EAAKyB,SAAW,WAChBzB,EAAK2B,cAAgB,WACrB3B,EAAKgC,cAAgB,WACrBhC,EAAKuD,KAAO,EAAQ,wBCLpB,IAAI9B,EAAW,iBACXO,EAAgB,sBAChBL,EAAgB,sBAChB6B,EAAS,EAAQ,OAGjBC,EAAO,CACT,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,YAI7DC,EAAU,CACZ,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,YACPC,OAAOF,GAYT,SAASF,EAAKtC,EAAK2C,GACjB,IAAIC,EAAQ,CAAC,EACbrD,KAAKsD,WAAaD,EAElBA,EAAM5C,IAAMA,EAEZ4C,EAAMD,OAASA,GAAU,KACzBC,EAAME,SAAW,KAGjBF,EAAMG,IAAM,KACZH,EAAMI,KAAO,KACbJ,EAAMK,YAAc,KACpBL,EAAMM,OAAS,KACfN,EAAMO,UAAW,EACjBP,EAAMQ,KAAM,EACZR,EAAMS,KAAM,EACZT,EAAMU,IAAM,KACZV,EAAMW,WAAa,KACnBX,EAAMY,IAAM,KACZZ,EAAe,QAAI,KACnBA,EAAMa,SAAW,KACjBb,EAAMc,SAAW,KACjBd,EAAMe,SAAW,KAGZf,EAAMD,SACTC,EAAME,SAAW,GACjBvD,KAAKqE,QAET,CACAC,EAAOjF,QAAU0D,EAEjB,IAAIwB,EAAa,CACf,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,YAGdxB,EAAK9C,UAAUuE,MAAQ,WACrB,IAAInB,EAAQrD,KAAKsD,WACbmB,EAAS,CAAC,EACdF,EAAW3B,SAAQ,SAAS8B,GAC1BD,EAAOC,GAAQrB,EAAMqB,EACvB,IACA,IAAIzC,EAAM,IAAIjC,KAAK2E,YAAYF,EAAOrB,QAEtC,OADAnB,EAAIqB,WAAamB,EACVxC,CACT,EAEAc,EAAK9C,UAAUoE,MAAQ,WACrB,IAAIhB,EAAQrD,KAAKsD,WACjBJ,EAAQN,SAAQ,SAASgC,GACvB5E,KAAK4E,GAAU,WACb,IAAIJ,EAAQ,IAAIxE,KAAK2E,YAAY3E,MAEjC,OADAqD,EAAME,SAASsB,KAAKL,GACbA,EAAMI,GAAQE,MAAMN,EAAOO,UACpC,CACF,GAAG/E,KACL,EAEA+C,EAAK9C,UAAU+E,MAAQ,SAAcjF,GACnC,IAAIsD,EAAQrD,KAAKsD,WAEjBN,EAAwB,OAAjBK,EAAMD,QACbrD,EAAKQ,KAAKP,MAGVqD,EAAME,SAAWF,EAAME,SAAS0B,QAAO,SAASC,GAC9C,OAAOA,EAAM5B,WAAWF,SAAWpD,IACrC,GAAGA,MACHgD,EAAOmC,MAAM9B,EAAME,SAASjC,OAAQ,EAAG,oCACzC,EAEAyB,EAAK9C,UAAUmF,SAAW,SAAiB3B,GACzC,IAAIJ,EAAQrD,KAAKsD,WAGbC,EAAWE,EAAKwB,QAAO,SAASI,GAClC,OAAOA,aAAerF,KAAK2E,WAC7B,GAAG3E,MACHyD,EAAOA,EAAKwB,QAAO,SAASI,GAC1B,QAASA,aAAerF,KAAK2E,YAC/B,GAAG3E,MAEqB,IAApBuD,EAASjC,SACX0B,EAA0B,OAAnBK,EAAME,UACbF,EAAME,SAAWA,EAGjBA,EAASX,SAAQ,SAASsC,GACxBA,EAAM5B,WAAWF,OAASpD,IAC5B,GAAGA,OAEe,IAAhByD,EAAKnC,SACP0B,EAAsB,OAAfK,EAAMI,MACbJ,EAAMI,KAAOA,EACbJ,EAAMK,YAAcD,EAAK7B,KAAI,SAASyD,GACpC,GAAmB,kBAARA,GAAoBA,EAAIV,cAAgBW,OACjD,OAAOD,EAET,IAAIpD,EAAM,CAAC,EAOX,OANAqD,OAAOC,KAAKF,GAAKzC,SAAQ,SAASqB,GAC5BA,IAAc,EAANA,KACVA,GAAO,GACT,IAAIxC,EAAQ4D,EAAIpB,GAChBhC,EAAIR,GAASwC,CACf,IACOhC,CACT,IAEJ,EAxHgB,CACd,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,eAwHrBW,SAAQ,SAASgC,GACzB7B,EAAK9C,UAAU2E,GAAU,WACvB,IAAIvB,EAAQrD,KAAKsD,WACjB,MAAM,IAAIkC,MAAMZ,EAAS,kCAAoCvB,EAAM5C,IACrE,CACF,IAMAwC,EAAKL,SAAQ,SAASY,GACpBT,EAAK9C,UAAUuD,GAAO,WACpB,IAAIH,EAAQrD,KAAKsD,WACbG,EAAO/B,MAAMzB,UAAUwC,MAAMlC,KAAKwE,WAOtC,OALA/B,EAAqB,OAAdK,EAAMG,KACbH,EAAMG,IAAMA,EAEZxD,KAAKoF,SAAS3B,GAEPzD,IACT,CACF,IAEA+C,EAAK9C,UAAU8D,IAAM,SAAalC,GAChCmB,EAAOnB,GACP,IAAIwB,EAAQrD,KAAKsD,WAKjB,OAHAN,EAAqB,OAAdK,EAAMU,KACbV,EAAMU,IAAMlC,EAEL7B,IACT,EAEA+C,EAAK9C,UAAU2D,SAAW,WAKxB,OAJY5D,KAAKsD,WAEXM,UAAW,EAEV5D,IACT,EAEA+C,EAAK9C,UAAUwF,IAAM,SAAaC,GAChC,IAAIrC,EAAQrD,KAAKsD,WAMjB,OAJAN,EAA4B,OAArBK,EAAe,SACtBA,EAAe,QAAIqC,EACnBrC,EAAMO,UAAW,EAEV5D,IACT,EAEA+C,EAAK9C,UAAUiE,SAAW,SAAkByB,GAC1C,IAAItC,EAAQrD,KAAKsD,WAKjB,OAHAN,EAA0B,OAAnBK,EAAMa,UAAwC,OAAnBb,EAAMc,UACxCd,EAAMa,SAAWyB,EAEV3F,IACT,EAEA+C,EAAK9C,UAAUkE,SAAW,SAAkBwB,GAC1C,IAAItC,EAAQrD,KAAKsD,WAKjB,OAHAN,EAA0B,OAAnBK,EAAMa,UAAwC,OAAnBb,EAAMc,UACxCd,EAAMc,SAAWwB,EAEV3F,IACT,EAEA+C,EAAK9C,UAAU6D,IAAM,WACnB,IAAIT,EAAQrD,KAAKsD,WACbG,EAAO/B,MAAMzB,UAAUwC,MAAMlC,KAAKwE,WAOtC,OALA1B,EAAMS,KAAM,EAEQ,IAAhBL,EAAKnC,QACPtB,KAAKoF,SAAS3B,GAETzD,IACT,EAEA+C,EAAK9C,UAAUgE,IAAM,SAAa2B,GAChC,IAAIvC,EAAQrD,KAAKsD,WAKjB,OAHAN,EAAqB,OAAdK,EAAMY,KACbZ,EAAMY,IAAM2B,EAEL5F,IACT,EAEA+C,EAAK9C,UAAU4D,IAAM,WAKnB,OAJY7D,KAAKsD,WAEXO,KAAM,EAEL7D,IACT,EAEA+C,EAAK9C,UAAU0D,OAAS,SAAgBG,GACtC,IAAIT,EAAQrD,KAAKsD,WAQjB,OANAN,EAAwB,OAAjBK,EAAMM,QACbN,EAAMM,OAASG,EACf9D,KAAKoF,SAASE,OAAOC,KAAKzB,GAAKlC,KAAI,SAASqC,GAC1C,OAAOH,EAAIG,EACb,KAEOjE,IACT,EAEA+C,EAAK9C,UAAUmE,SAAW,SAAkBvC,GAC1C,IAAIwB,EAAQrD,KAAKsD,WAKjB,OAHAN,EAAqB,OAAdK,EAAMU,KACbV,EAAMe,SAAWvC,EAEV7B,IACT,EAMA+C,EAAK9C,UAAU4F,QAAU,SAAgBC,EAAOjF,GAC9C,IAAIwC,EAAQrD,KAAKsD,WAGjB,GAAqB,OAAjBD,EAAMD,OACR,OAAO0C,EAAMC,WAAW1C,EAAME,SAAS,GAAGsC,QAAQC,EAAOjF,IAE3D,IAuCImF,EAvCAC,EAAS5C,EAAe,QACxB6C,GAAU,EAEVC,EAAU,KAKd,GAJkB,OAAd9C,EAAMY,MACRkC,EAAUL,EAAMM,SAAS/C,EAAMY,MAG7BZ,EAAMO,SAAU,CAClB,IAAIJ,EAAM,KAQV,GAPuB,OAAnBH,EAAMa,SACRV,EAAMH,EAAMa,SACc,OAAnBb,EAAMc,SACbX,EAAMH,EAAMc,SACS,OAAdd,EAAMG,MACbA,EAAMH,EAAMG,KAEF,OAARA,GAAiBH,EAAMQ,KAgBzB,GAFAqC,EAAUlG,KAAKqG,SAASP,EAAOtC,EAAKH,EAAMQ,KAEtCiC,EAAMQ,QAAQJ,GAChB,OAAOA,MAjBqB,CAE9B,IAAInE,EAAO+D,EAAM/D,OACjB,IACuB,OAAjBsB,EAAMM,OACR3D,KAAKuG,eAAelD,EAAMG,IAAKsC,EAAOjF,GAEtCb,KAAKwG,cAAcV,EAAOjF,GAC5BqF,GAAU,CACZ,CAAE,MAAO9F,GACP8F,GAAU,CACZ,CACAJ,EAAM9D,QAAQD,EAChB,CAMF,CAOA,GAHIsB,EAAMS,KAAOoC,IACfF,EAAUF,EAAMW,eAEdP,EAAS,CAEX,GAAuB,OAAnB7C,EAAMa,SAAmB,CAC3B,IAAIA,EAAWlE,KAAK0G,WAAWZ,EAAOzC,EAAMa,UAC5C,GAAI4B,EAAMQ,QAAQpC,GAChB,OAAOA,EACT4B,EAAQ5B,CACV,CAEA,IAAIyC,EAAQb,EAAMzE,OAGlB,GAAkB,OAAdgC,EAAMU,KAAiC,OAAjBV,EAAMM,OAAiB,CAC/C,GAAIN,EAAMQ,IACJ9B,EAAO+D,EAAM/D,OACnB,IAAIhC,EAAOC,KAAK0G,WACdZ,EACmB,OAAnBzC,EAAMc,SAAoBd,EAAMc,SAAWd,EAAMG,IACjDH,EAAMQ,KAER,GAAIiC,EAAMQ,QAAQvG,GAChB,OAAOA,EAELsD,EAAMQ,IACRoC,EAASH,EAAMtD,IAAIT,GAEnB+D,EAAQ/F,CACZ,CAgBA,GAdIc,GAAWA,EAAQ+F,OAAuB,OAAdvD,EAAMG,KACpC3C,EAAQ+F,MAAMd,EAAMe,OAAQF,EAAOb,EAAMxE,OAAQ,UAE/CT,GAAWA,EAAQ+F,OAAuB,OAAdvD,EAAMG,KACpC3C,EAAQ+F,MAAMd,EAAMe,OAAQf,EAAMzE,OAAQyE,EAAMxE,OAAQ,WAGtD+B,EAAMQ,MAGRoC,EADwB,OAAjB5C,EAAMM,OACJ3D,KAAKuG,eAAelD,EAAMG,IAAKsC,EAAOjF,GAEtCb,KAAKwG,cAAcV,EAAOjF,IAEjCiF,EAAMQ,QAAQL,GAChB,OAAOA,EAYT,GATK5C,EAAMQ,KAAwB,OAAjBR,EAAMM,QAAsC,OAAnBN,EAAME,UAC/CF,EAAME,SAASX,SAAQ,SAAwBsC,GAG7CA,EAAMW,QAAQC,EAAOjF,EACvB,IAIEwC,EAAMe,WAA2B,WAAdf,EAAMG,KAAkC,WAAdH,EAAMG,KAAmB,CACxE,IAAI5C,EAAO,IAAIO,EAAc8E,GAC7BA,EAASjG,KAAK8G,QAAQzD,EAAMe,SAAU0B,EAAMvD,eAAeuB,KACtD+B,QAAQjF,EAAMC,EACrB,CACF,CAYA,OATIwC,EAAMS,KAAOoC,IACfD,EAASH,EAAMiB,YAAYf,IAGX,OAAd3C,EAAMY,KAA4B,OAAXgC,IAA+B,IAAZC,EAEzB,OAAZC,GACPL,EAAMkB,QAAQb,GAFdL,EAAMmB,SAASd,EAAS9C,EAAMY,IAAKgC,GAI9BA,CACT,EAEAlD,EAAK9C,UAAUsG,eAAiB,SAAuB/C,EAAKsC,EAAOjF,GACjE,IAAIwC,EAAQrD,KAAKsD,WAEjB,MAAY,QAARE,GAAyB,QAARA,EACZ,KACG,UAARA,GAA2B,UAARA,EACdxD,KAAKkH,YAAYpB,EAAOtC,EAAKH,EAAMI,KAAK,GAAI5C,GAC5C,OAAOsG,KAAK3D,GACZxD,KAAKoH,WAAWtB,EAAOtC,EAAK3C,GACpB,UAAR2C,GAAmBH,EAAMI,KACzBzD,KAAKqH,aAAavB,EAAOzC,EAAMI,KAAK,GAAIJ,EAAMI,KAAK,GAAI5C,GAC/C,UAAR2C,EACAxD,KAAKqH,aAAavB,EAAO,KAAM,KAAMjF,GAC7B,YAAR2C,GAA6B,YAARA,EACrBxD,KAAKsH,YAAYxB,EAAOtC,EAAK3C,GACrB,UAAR2C,EACAxD,KAAKuH,YAAYzB,EAAOjF,GAChB,SAAR2C,EACAxD,KAAKwH,YAAY1B,EAAOjF,GAChB,YAAR2C,EACAxD,KAAKoH,WAAWtB,EAAOtC,EAAK3C,GACpB,QAAR2C,GAAyB,SAARA,EACjBxD,KAAKyH,WAAW3B,EAAOzC,EAAMI,MAAQJ,EAAMI,KAAK,GAAI5C,GAE3C,OAAdwC,EAAMU,IACD/D,KAAK8G,QAAQzD,EAAMU,IAAK+B,EAAMvD,eAAeuB,KAC/C+B,QAAQC,EAAOjF,GAEbiF,EAAMvE,MAAM,gBAAkBiC,EAEzC,EAEAT,EAAK9C,UAAU6G,QAAU,SAAiBzG,EAAQyD,GAEhD,IAAIT,EAAQrD,KAAKsD,WASjB,OAPAD,EAAMW,WAAahE,KAAK0H,KAAKrH,EAAQyD,GACrCd,EAA8C,OAAvCK,EAAMW,WAAWV,WAAWF,QACnCC,EAAMW,WAAaX,EAAMW,WAAWV,WAAWC,SAAS,GACpDF,EAAMc,WAAad,EAAMW,WAAWV,WAAWa,WACjDd,EAAMW,WAAaX,EAAMW,WAAWQ,QACpCnB,EAAMW,WAAWV,WAAWa,SAAWd,EAAMc,UAExCd,EAAMW,UACf,EAEAjB,EAAK9C,UAAUuG,cAAgB,SAAsBV,EAAOjF,GAC1D,IAAIwC,EAAQrD,KAAKsD,WACb2C,EAAS,KACT0B,GAAQ,EAmBZ,OAjBArC,OAAOC,KAAKlC,EAAMM,QAAQiE,MAAK,SAAS3D,GACtC,IAAIlC,EAAO+D,EAAM/D,OACb8F,EAAOxE,EAAMM,OAAOM,GACxB,IACE,IAAIxC,EAAQoG,EAAKhC,QAAQC,EAAOjF,GAChC,GAAIiF,EAAMQ,QAAQ7E,GAChB,OAAO,EAETwE,EAAS,CAAE6B,KAAM7D,EAAKxC,MAAOA,GAC7BkG,GAAQ,CACV,CAAE,MAAOvH,GAEP,OADA0F,EAAM9D,QAAQD,IACP,CACT,CACA,OAAO,CACT,GAAG/B,MAEE2H,EAGE1B,EAFEH,EAAMvE,MAAM,qBAGvB,EAMAwB,EAAK9C,UAAU8H,qBAAuB,SAA6BnH,GACjE,OAAO,IAAIY,EAAcZ,EAAMZ,KAAKgB,SACtC,EAEA+B,EAAK9C,UAAU+H,QAAU,SAAgBpH,EAAMI,EAAUoC,GACvD,IAAIC,EAAQrD,KAAKsD,WACjB,GAAyB,OAArBD,EAAe,SAAcA,EAAe,UAAMzC,EAAtD,CAGA,IAAIqF,EAASjG,KAAKiI,aAAarH,EAAMI,EAAUoC,GAC/C,QAAe8E,IAAXjC,IAGAjG,KAAKmI,aAAalC,EAAQjF,EAAUoC,GAGxC,OAAO6C,CATC,CAUV,EAEAlD,EAAK9C,UAAUgI,aAAe,SAAgBrH,EAAMI,EAAUoC,GAC5D,IAAIC,EAAQrD,KAAKsD,WAGjB,GAAqB,OAAjBD,EAAMD,OACR,OAAOC,EAAME,SAAS,GAAGyE,QAAQpH,EAAMI,GAAY,IAAIC,GAEzD,IAAIgF,EAAS,KAMb,GAHAjG,KAAKgB,SAAWA,EAGZqC,EAAMO,eAAqBsE,IAATtH,EAAoB,CACxC,GAAyB,OAArByC,EAAe,QAGjB,OAFAzC,EAAOyC,EAAe,OAG1B,CAGA,IAAI+E,EAAU,KACVC,GAAY,EAChB,GAAIhF,EAAMQ,IAERoC,EAASjG,KAAK+H,qBAAqBnH,QAC9B,GAAIyC,EAAMM,OACfsC,EAASjG,KAAKsI,cAAc1H,EAAMI,QAC7B,GAAIqC,EAAMe,SACfgE,EAAUpI,KAAK8G,QAAQzD,EAAMe,SAAUhB,GAAQ4E,QAAQpH,EAAMI,GAC7DqH,GAAY,OACP,GAAIhF,EAAME,SACf6E,EAAU/E,EAAME,SAAS3B,KAAI,SAASsD,GACpC,GAA6B,UAAzBA,EAAM5B,WAAWE,IACnB,OAAO0B,EAAM8C,QAAQ,KAAMhH,EAAUJ,GAEvC,GAA6B,OAAzBsE,EAAM5B,WAAWW,IACnB,OAAOjD,EAASO,MAAM,2BACxB,IAAI4E,EAAUnF,EAASoF,SAASlB,EAAM5B,WAAWW,KAEjD,GAAoB,kBAATrD,EACT,OAAOI,EAASO,MAAM,2CAExB,IAAIU,EAAMiD,EAAM8C,QAAQpH,EAAKsE,EAAM5B,WAAWW,KAAMjD,EAAUJ,GAG9D,OAFAI,EAASiG,SAASd,GAEXlE,CACT,GAAGjC,MAAMiF,QAAO,SAASC,GACvB,OAAOA,CACT,IACAkD,EAAUpI,KAAK+H,qBAAqBK,QAEpC,GAAkB,UAAd/E,EAAMG,KAAiC,UAAdH,EAAMG,IAAiB,CAElD,IAAMH,EAAMI,MAA8B,IAAtBJ,EAAMI,KAAKnC,OAC7B,OAAON,EAASO,MAAM,uBAAyB8B,EAAMG,KAEvD,IAAK9B,MAAMC,QAAQf,GACjB,OAAOI,EAASO,MAAM,sCAExB,IAAI2D,EAAQlF,KAAKwE,QACjBU,EAAM5B,WAAWa,SAAW,KAC5BiE,EAAUpI,KAAK+H,qBAAqBnH,EAAKgB,KAAI,SAASC,GACpD,IAAIwB,EAAQrD,KAAKsD,WAEjB,OAAOtD,KAAK8G,QAAQzD,EAAMI,KAAK,GAAI7C,GAAMoH,QAAQnG,EAAMb,EACzD,GAAGkE,GACL,MAAyB,OAAd7B,EAAMU,IACfkC,EAASjG,KAAK8G,QAAQzD,EAAMU,IAAKX,GAAQ4E,QAAQpH,EAAMI,IAEvDoH,EAAUpI,KAAKuI,iBAAiBlF,EAAMG,IAAK5C,GAC3CyH,GAAY,GAMhB,IAAKhF,EAAMQ,KAAwB,OAAjBR,EAAMM,OAAiB,CACvC,IAAIH,EAAyB,OAAnBH,EAAMc,SAAoBd,EAAMc,SAAWd,EAAMG,IACvDgF,EAAyB,OAAnBnF,EAAMc,SAAoB,YAAc,UAEtC,OAARX,EACgB,OAAdH,EAAMU,KACR/C,EAASO,MAAM,wCAEC,OAAd8B,EAAMU,MACRkC,EAASjG,KAAKyI,iBAAiBjF,EAAK6E,EAAWG,EAAKJ,GAE1D,CAMA,OAHuB,OAAnB/E,EAAMa,WACR+B,EAASjG,KAAKyI,iBAAiBpF,EAAMa,UAAU,EAAO,UAAW+B,IAE5DA,CACT,EAEAlD,EAAK9C,UAAUqI,cAAgB,SAAsB1H,EAAMI,GACzD,IAAIqC,EAAQrD,KAAKsD,WAEbuE,EAAOxE,EAAMM,OAAO/C,EAAKkH,MAO7B,OANKD,GACH7E,GACI,EACApC,EAAKkH,KAAO,iBACRY,KAAKC,UAAUrD,OAAOC,KAAKlC,EAAMM,UAEpCkE,EAAKG,QAAQpH,EAAKa,MAAOT,EAClC,EAEA+B,EAAK9C,UAAUsI,iBAAmB,SAAyB/E,EAAK5C,GAC9D,IAAIyC,EAAQrD,KAAKsD,WAEjB,GAAI,OAAO6D,KAAK3D,GACd,OAAOxD,KAAK4I,WAAWhI,EAAM4C,GAC1B,GAAY,UAARA,GAAmBH,EAAMI,KAChC,OAAOzD,KAAK6I,aAAajI,EAAMyC,EAAMK,YAAY,GAAIL,EAAMI,KAAK,IAC7D,GAAY,UAARD,EACP,OAAOxD,KAAK6I,aAAajI,EAAM,KAAM,MAClC,GAAY,YAAR4C,GAA6B,YAARA,EAC5B,OAAOxD,KAAK8I,YAAYlI,EAAM4C,GAC3B,GAAY,UAARA,EACP,OAAOxD,KAAK+I,cACT,GAAY,QAARvF,GAAyB,SAARA,EACxB,OAAOxD,KAAKgJ,WAAWpI,EAAMyC,EAAMI,MAAQJ,EAAMK,YAAY,IAC1D,GAAY,SAARF,EACP,OAAOxD,KAAKiJ,YAAYrI,GACrB,GAAY,YAAR4C,EACP,OAAOxD,KAAK4I,WAAWhI,EAAM4C,GAE7B,MAAM,IAAIgC,MAAM,oBAAsBhC,EAC1C,EAEAT,EAAK9C,UAAUiJ,UAAY,SAAkBC,GAC3C,MAAO,YAAYhC,KAAKgC,EAC1B,EAEApG,EAAK9C,UAAUmJ,YAAc,SAAoBD,GAC/C,MAAO,oCAAoChC,KAAKgC,EAClD,mBCznBA,IAAIvJ,EAAW,EAAQ,OAEvB,SAASqB,EAASJ,GAChBb,KAAKuC,eAAiB,CACpBuB,IAAK,KACL+C,KAAM,GACNhG,QAASA,GAAW,CAAC,EACrBwI,OAAQ,GAEZ,CA2FA,SAASC,EAAczC,EAAM0C,GAC3BvJ,KAAK6G,KAAOA,EACZ7G,KAAKwJ,QAAQD,EACf,CA7FAlK,EAAQ,EAAW4B,EAEnBA,EAAShB,UAAUqG,QAAU,SAAiBxC,GAC5C,OAAOA,aAAewF,CACxB,EAEArI,EAAShB,UAAU8B,KAAO,WACxB,IAAIsB,EAAQrD,KAAKuC,eAEjB,MAAO,CAAEuB,IAAKT,EAAMS,IAAK2F,QAASpG,EAAMwD,KAAKvF,OAC/C,EAEAL,EAAShB,UAAU+B,QAAU,SAAiBpB,GAC5C,IAAIyC,EAAQrD,KAAKuC,eAEjBc,EAAMS,IAAMlD,EAAKkD,IACjBT,EAAMwD,KAAOxD,EAAMwD,KAAKpE,MAAM,EAAG7B,EAAK6I,QACxC,EAEAxI,EAAShB,UAAUmG,SAAW,SAAkBnC,GAC9C,OAAOjE,KAAKuC,eAAesE,KAAKhC,KAAKZ,EACvC,EAEAhD,EAAShB,UAAU+G,QAAU,SAAiB0C,GAC5C,IAAIrG,EAAQrD,KAAKuC,eAEjBc,EAAMwD,KAAOxD,EAAMwD,KAAKpE,MAAM,EAAGiH,EAAQ,EAC3C,EAEAzI,EAAShB,UAAUgH,SAAW,SAAkByC,EAAOzF,EAAKxC,GAC1D,IAAI4B,EAAQrD,KAAKuC,eAEjBvC,KAAKgH,QAAQ0C,GACK,OAAdrG,EAAMS,MACRT,EAAMS,IAAIG,GAAOxC,EACrB,EAEAR,EAAShB,UAAU4G,KAAO,WACxB,OAAO7G,KAAKuC,eAAesE,KAAKnE,KAAK,IACvC,EAEAzB,EAAShB,UAAUwG,YAAc,WAC/B,IAAIpD,EAAQrD,KAAKuC,eAEboH,EAAOtG,EAAMS,IAEjB,OADAT,EAAMS,IAAM,CAAC,EACN6F,CACT,EAEA1I,EAAShB,UAAU8G,YAAc,SAAqB4C,GACpD,IAAItG,EAAQrD,KAAKuC,eAEbqH,EAAMvG,EAAMS,IAEhB,OADAT,EAAMS,IAAM6F,EACLC,CACT,EAEA3I,EAAShB,UAAUsB,MAAQ,SAAegI,GACxC,IAAIM,EACAxG,EAAQrD,KAAKuC,eAEbuH,EAAYP,aAAeD,EAS/B,GAPEO,EADEC,EACIP,EAEA,IAAID,EAAcjG,EAAMwD,KAAKjF,KAAI,SAASmI,GAC9C,MAAO,IAAMrB,KAAKC,UAAUoB,GAAQ,GACtC,IAAGrH,KAAK,IAAK6G,EAAIS,SAAWT,EAAKA,EAAIU,QAGlC5G,EAAMxC,QAAQqJ,QACjB,MAAML,EAKR,OAHKC,GACHzG,EAAMgG,OAAOxE,KAAKgF,GAEbA,CACT,EAEA5I,EAAShB,UAAU8F,WAAa,SAAoBE,GAClD,IAAI5C,EAAQrD,KAAKuC,eACjB,OAAKc,EAAMxC,QAAQqJ,QAGZ,CACLjE,OAAQjG,KAAKsG,QAAQL,GAAU,KAAOA,EACtCoD,OAAQhG,EAAMgG,QAJPpD,CAMX,EAMArG,EAAS0J,EAAe9D,OAExB8D,EAAcrJ,UAAUuJ,QAAU,SAAiBD,GAKjD,GAJAvJ,KAAKgK,QAAUT,EAAM,SAAWvJ,KAAK6G,MAAQ,aACzCrB,MAAM2E,mBACR3E,MAAM2E,kBAAkBnK,KAAMsJ,IAE3BtJ,KAAKiK,MACR,IAEE,MAAM,IAAIzE,MAAMxF,KAAKgK,QACvB,CAAE,MAAO5J,GACPJ,KAAKiK,MAAQ7J,EAAE6J,KACjB,CAEF,OAAOjK,IACT,mBCxHA,IAAIP,EAAY,EAAQ,OAExBJ,EAAQ+K,SAAW,CACjB,EAAG,YACH,EAAG,cACH,EAAG,UACH,EAAG,WAEL/K,EAAQgL,eAAiB5K,EAAU6K,SAASjL,EAAQ+K,UAEpD/K,EAAQmE,IAAM,CACZ,EAAM,MACN,EAAM,OACN,EAAM,MACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,UACN,EAAM,WACN,EAAM,OACN,GAAM,OACN,GAAM,QACN,GAAM,UACN,GAAM,cACN,GAAM,MACN,GAAM,MACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,UACN,GAAM,UAERnE,EAAQkL,UAAY9K,EAAU6K,SAASjL,EAAQmE,sBCzC/C,IAAI/D,EAAYJ,EAGhBI,EAAU6K,SAAW,SAAiB1I,GACpC,IAAIK,EAAM,CAAC,EAWX,OATAqD,OAAOC,KAAK3D,GAAKgB,SAAQ,SAASqB,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,IAAIxC,EAAQG,EAAIqC,GAChBhC,EAAIR,GAASwC,CACf,IAEOhC,CACT,EAEAxC,EAAU+K,IAAM,EAAQ,wBClBxB,IAAI5K,EAAW,EAAQ,OAEnBR,EAAO,EAAQ,OACfI,EAAOJ,EAAKI,KACZF,EAASF,EAAKE,OAGdkL,EAAMpL,EAAKK,UAAU+K,IAEzB,SAASC,EAAWpK,GAClBL,KAAKS,IAAM,MACXT,KAAKF,KAAOO,EAAOP,KACnBE,KAAKK,OAASA,EAGdL,KAAK0K,KAAO,IAAIC,EAChB3K,KAAK0K,KAAK1F,MAAM3E,EAAON,KACzB,CAYA,SAAS4K,EAAQvH,GACf5D,EAAKuD,KAAKxC,KAAKP,KAAM,MAAOoD,EAC9B,CAqOA,SAASwH,EAAaC,EAAKzI,GACzB,IAAIoB,EAAMqH,EAAI1I,UAAUC,GACxB,GAAIyI,EAAIvE,QAAQ9C,GACd,OAAOA,EAET,IAAIgF,EAAMgC,EAAIJ,SAAS5G,GAAO,GAC1B6E,EAA6B,KAAV,GAAN7E,GAGjB,GAAqB,MAAV,GAANA,GAAsB,CACzB,IAAIsH,EAAMtH,EAEV,IADAA,EAAM,EACkB,OAAV,IAANsH,IAAsB,CAE5B,GADAA,EAAMD,EAAI1I,UAAUC,GAChByI,EAAIvE,QAAQwE,GACd,OAAOA,EAETtH,IAAQ,EACRA,GAAa,IAANsH,CACT,CACF,MACEtH,GAAO,GAIT,MAAO,CACLgF,IAAKA,EACLH,UAAWA,EACX7E,IAAKA,EACLuH,OANWP,EAAIhH,IAAIA,GAQvB,CAEA,SAASwH,EAAaH,EAAKxC,EAAWjG,GACpC,IAAI6I,EAAMJ,EAAI1I,UAAUC,GACxB,GAAIyI,EAAIvE,QAAQ2E,GACd,OAAOA,EAGT,IAAK5C,GAAqB,MAAR4C,EAChB,OAAO,KAGT,GAAqB,KAAV,IAANA,GAEH,OAAOA,EAIT,IAAItF,EAAY,IAANsF,EACV,GAAItF,EAAM,EACR,OAAOkF,EAAItJ,MAAM,6BAEnB0J,EAAM,EACN,IAAK,IAAIC,EAAI,EAAGA,EAAIvF,EAAKuF,IAAK,CAC5BD,IAAQ,EACR,IAAIE,EAAIN,EAAI1I,UAAUC,GACtB,GAAIyI,EAAIvE,QAAQ6E,GACd,OAAOA,EACTF,GAAOE,CACT,CAEA,OAAOF,CACT,CAjTA3G,EAAOjF,QAAUoL,EAEjBA,EAAWxK,UAAUU,OAAS,SAAgBC,EAAMC,GAIlD,OAHMD,aAAgBpB,EAAK2B,gBACzBP,EAAO,IAAIpB,EAAK2B,cAAcP,EAAMC,IAE/Bb,KAAK0K,KAAK7E,QAAQjF,EAAMC,EACjC,EAOAjB,EAAS+K,EAASnL,EAAKuD,MAEvB4H,EAAQ1K,UAAUoG,SAAW,SAAiB+E,EAAQ5H,EAAKK,GACzD,GAAIuH,EAAOlJ,UACT,OAAO,EAET,IAAImB,EAAQ+H,EAAOrJ,OACfsJ,EAAaT,EAAaQ,EAAQ,wBAA0B5H,EAAM,KACtE,OAAI4H,EAAO9E,QAAQ+E,GACVA,GAETD,EAAOpJ,QAAQqB,GAERgI,EAAW7H,MAAQA,GAAO6H,EAAWN,SAAWvH,GACpD6H,EAAWN,OAAS,OAAUvH,GAAOK,EAC1C,EAEA8G,EAAQ1K,UAAUyG,WAAa,SAAmB0E,EAAQ5H,EAAKK,GAC7D,IAAIwH,EAAaT,EAAaQ,EACA,4BAA8B5H,EAAM,KAClE,GAAI4H,EAAO9E,QAAQ+E,GACjB,OAAOA,EAET,IAAIJ,EAAMD,EAAaI,EACAC,EAAWhD,UACX,4BAA8B7E,EAAM,KAG3D,GAAI4H,EAAO9E,QAAQ2E,GACjB,OAAOA,EAET,IAAKpH,GACDwH,EAAW7H,MAAQA,GACnB6H,EAAWN,SAAWvH,GACtB6H,EAAWN,OAAS,OAASvH,EAC/B,OAAO4H,EAAO7J,MAAM,yBAA2BiC,EAAM,KAGvD,GAAI6H,EAAWhD,WAAqB,OAAR4C,EAC1B,OAAOG,EAAO/I,KAAK4I,EAAK,6BAA+BzH,EAAM,KAG/D,IAAIH,EAAQ+H,EAAOrJ,OACfE,EAAMjC,KAAKsL,cACXF,EACA,2CAA6CpL,KAAKwD,IAAM,KAC5D,OAAI4H,EAAO9E,QAAQrE,GACVA,GAETgJ,EAAMG,EAAO/J,OAASgC,EAAMhC,OAC5B+J,EAAOpJ,QAAQqB,GACR+H,EAAO/I,KAAK4I,EAAK,6BAA+BzH,EAAM,KAC/D,EAEAmH,EAAQ1K,UAAUqL,cAAgB,SAAsBF,EAAQhJ,GAC9D,OAAa,CACX,IAAIoB,EAAMoH,EAAaQ,EAAQhJ,GAC/B,GAAIgJ,EAAO9E,QAAQ9C,GACjB,OAAOA,EACT,IAIIvB,EAJAgJ,EAAMD,EAAaI,EAAQ5H,EAAI6E,UAAWjG,GAC9C,GAAIgJ,EAAO9E,QAAQ2E,GACjB,OAAOA,EAST,GALEhJ,EADEuB,EAAI6E,WAAqB,OAAR4C,EACbG,EAAO/I,KAAK4I,GAEZjL,KAAKsL,cAAcF,EAAQhJ,GAG/BgJ,EAAO9E,QAAQrE,GACjB,OAAOA,EAET,GAAmB,QAAfuB,EAAIuH,OACN,KACJ,CACF,EAEAJ,EAAQ1K,UAAUiH,YAAc,SAAoBkE,EAAQ5H,EAAK+H,EACb1K,GAElD,IADA,IAAIoF,EAAS,IACLmF,EAAOlJ,WAAW,CACxB,IAAIsJ,EAAcxL,KAAKqG,SAAS+E,EAAQ,OACxC,GAAIA,EAAO9E,QAAQkF,GACjB,OAAOA,EAET,IAAIvJ,EAAMsJ,EAAQ5K,OAAOyK,EAAQ,MAAOvK,GACxC,GAAIuK,EAAO9E,QAAQrE,IAAQuJ,EACzB,MACFvF,EAAOpB,KAAK5C,EACd,CACA,OAAOgE,CACT,EAEA0E,EAAQ1K,UAAUmH,WAAa,SAAmBgE,EAAQ5H,GACxD,GAAY,WAARA,EAAkB,CACpB,IAAIiI,EAASL,EAAOjJ,YACpB,OAAIiJ,EAAO9E,QAAQmF,GACVA,EACF,CAAEA,OAAQA,EAAQ7K,KAAMwK,EAAO5I,MACxC,CAAO,GAAY,WAARgB,EAAkB,CAC3B,IAAIhB,EAAM4I,EAAO5I,MACjB,GAAIA,EAAIlB,OAAS,IAAM,EACrB,OAAO8J,EAAO7J,MAAM,mDAGtB,IADA,IAAI4H,EAAM,GACD+B,EAAI,EAAGA,EAAI1I,EAAIlB,OAAS,EAAG4J,IAClC/B,GAAOuC,OAAOC,aAAanJ,EAAIoJ,aAAiB,EAAJV,IAE9C,OAAO/B,CACT,CAAO,GAAY,WAAR3F,EAAkB,CAC3B,IAAIqI,EAAST,EAAO5I,MAAMsJ,SAAS,SACnC,OAAK9L,KAAKkJ,UAAU2C,GAIbA,EAHET,EAAO7J,MAAM,yDAIxB,CAAO,GAAY,WAARiC,EACT,OAAO4H,EAAO5I,MACT,GAAY,YAARgB,EACT,OAAO4H,EAAO5I,MACT,GAAY,aAARgB,EAAoB,CAC7B,IAAIuI,EAAWX,EAAO5I,MAAMsJ,SAAS,SACrC,OAAK9L,KAAKoJ,YAAY2C,GAIfA,EAHEX,EAAO7J,MAAM,2DAIxB,CAAO,MAAI,OAAO4F,KAAK3D,GACd4H,EAAO5I,MAAMsJ,WAEbV,EAAO7J,MAAM,4BAA8BiC,EAAM,eAE5D,EAEAmH,EAAQ1K,UAAUoH,aAAe,SAAqB+D,EAAQY,EAAQC,GAIpE,IAHA,IAAIhG,EACAiG,EAAc,GACdC,EAAQ,GACJf,EAAOlJ,WAAW,CACxB,IAAIkK,EAAWhB,EAAOjJ,YACtBgK,IAAU,EACVA,GAAoB,IAAXC,EACiB,KAAV,IAAXA,KACHF,EAAYrH,KAAKsH,GACjBA,EAAQ,EAEZ,CACe,IAAXC,GACFF,EAAYrH,KAAKsH,GAEnB,IAAIE,EAASH,EAAY,GAAK,GAAM,EAChCI,EAASJ,EAAY,GAAK,GAO9B,GAJEjG,EADEgG,EACOC,EAEA,CAACG,EAAOC,GAAQnJ,OAAO+I,EAAYzJ,MAAM,IAEhDuJ,EAAQ,CACV,IAAIO,EAAMP,EAAO/F,EAAOvD,KAAK,WACjBwF,IAARqE,IACFA,EAAMP,EAAO/F,EAAOvD,KAAK,YACfwF,IAARqE,IACFtG,EAASsG,EACb,CAEA,OAAOtG,CACT,EAEA0E,EAAQ1K,UAAUqH,YAAc,SAAoB8D,EAAQ5H,GAC1D,IAAI2F,EAAMiC,EAAO5I,MAAMsJ,WACvB,GAAY,YAARtI,EACF,IAAIgJ,EAAyB,EAAlBrD,EAAI1G,MAAM,EAAG,GACpBgK,EAAwB,EAAlBtD,EAAI1G,MAAM,EAAG,GACnBiK,EAAwB,EAAlBvD,EAAI1G,MAAM,EAAG,GACnBkK,EAA0B,EAAnBxD,EAAI1G,MAAM,EAAG,IACpBmK,EAA0B,EAApBzD,EAAI1G,MAAM,GAAI,IACpBoK,EAA0B,EAApB1D,EAAI1G,MAAM,GAAI,QACnB,IAAY,YAARe,EAYT,OAAO4H,EAAO7J,MAAM,YAAciC,EAAM,8BAXpCgJ,EAAyB,EAAlBrD,EAAI1G,MAAM,EAAG,GACpBgK,EAAwB,EAAlBtD,EAAI1G,MAAM,EAAG,GACnBiK,EAAwB,EAAlBvD,EAAI1G,MAAM,EAAG,GACnBkK,EAAyB,EAAlBxD,EAAI1G,MAAM,EAAG,GACpBmK,EAAyB,EAAnBzD,EAAI1G,MAAM,EAAG,IACnBoK,EAA0B,EAApB1D,EAAI1G,MAAM,GAAI,IAEtB+J,EADEA,EAAO,GACF,IAAOA,EAEP,KAAOA,CAGlB,CAEA,OAAOM,KAAKC,IAAIP,EAAMC,EAAM,EAAGC,EAAKC,EAAMC,EAAKC,EAAK,EACtD,EAEAlC,EAAQ1K,UAAUsH,YAAc,SAAoB6D,GAClD,OAAO,IACT,EAEAT,EAAQ1K,UAAUuH,YAAc,SAAoB4D,GAClD,IAAInJ,EAAMmJ,EAAOjJ,YACjB,OAAIiJ,EAAO9E,QAAQrE,GACVA,EAEQ,IAARA,CACX,EAEA0I,EAAQ1K,UAAUwH,WAAa,SAAmB2D,EAAQY,GAExD,IAAIxJ,EAAM4I,EAAO5I,MACbP,EAAM,IAAI3C,EAAOkD,GAKrB,OAHIwJ,IACF/J,EAAM+J,EAAO/J,EAAI6J,SAAS,MAAQ7J,GAE7BA,CACT,EAEA0I,EAAQ1K,UAAUyH,KAAO,SAAarH,EAAQyD,GAG5C,MAFsB,oBAAXzD,IACTA,EAASA,EAAOyD,IACXzD,EAAOG,YAAY,OAAOkK,IACnC,mBChQA,IAAIhL,EAAWL,EAEfK,EAAS8K,IAAM,EAAQ,OACvB9K,EAASsN,IAAM,EAAQ,wBCHvB,IAAIpN,EAAW,EAAQ,OACnBsB,EAAS,gBAETuJ,EAAa,EAAQ,OAEzB,SAASwC,EAAW5M,GAClBoK,EAAWlK,KAAKP,KAAMK,GACtBL,KAAKS,IAAM,KACb,CACAb,EAASqN,EAAYxC,GACrBnG,EAAOjF,QAAU4N,EAEjBA,EAAWhN,UAAUU,OAAS,SAAgBC,EAAMC,GAQlD,IAPA,IAAIqM,EAAQtM,EAAKkL,WAAWqB,MAAM,YAE9BC,EAAQvM,EAAQuM,MAAMC,cAEtBC,EAAK,kCACL3G,GAAS,EACT4G,GAAO,EACFrC,EAAI,EAAGA,EAAIgC,EAAM5L,OAAQ4J,IAAK,CACrC,IAAIvD,EAAQuF,EAAMhC,GAAGvD,MAAM2F,GAC3B,GAAc,OAAV3F,GAGAA,EAAM,KAAOyF,EAAjB,CAGA,IAAe,IAAXzG,EAIG,CACL,GAAiB,QAAbgB,EAAM,GACR,MACF4F,EAAMrC,EACN,KACF,CARE,GAAiB,UAAbvD,EAAM,GACR,MACFhB,EAAQuE,CALA,CAYZ,CACA,IAAe,IAAXvE,IAAyB,IAAT4G,EAClB,MAAM,IAAI/H,MAAM,8BAAgC4H,GAElD,IAAII,EAASN,EAAMzK,MAAMkE,EAAQ,EAAG4G,GAAK7K,KAAK,IAE9C8K,EAAOC,QAAQ,oBAAqB,IAEpC,IAAI3H,EAAQ,IAAI5E,EAAOsM,EAAQ,UAC/B,OAAO/C,EAAWxK,UAAUU,OAAOJ,KAAKP,KAAM8F,EAAOjF,EACvD,mBChDA,IAAIjB,EAAW,EAAQ,OACnBsB,EAAS,gBAET9B,EAAO,EAAQ,OACfI,EAAOJ,EAAKI,KAGZgL,EAAMpL,EAAKK,UAAU+K,IAEzB,SAASkD,EAAWrN,GAClBL,KAAKS,IAAM,MACXT,KAAKF,KAAOO,EAAOP,KACnBE,KAAKK,OAASA,EAGdL,KAAK0K,KAAO,IAAIC,EAChB3K,KAAK0K,KAAK1F,MAAM3E,EAAON,KACzB,CASA,SAAS4K,EAAQvH,GACf5D,EAAKuD,KAAKxC,KAAKP,KAAM,MAAOoD,EAC9B,CAkHA,SAASuK,EAAIhI,GACX,OAAIA,EAAM,GACD,IAAMA,EAENA,CACX,CAjIArB,EAAOjF,QAAUqO,EAEjBA,EAAWzN,UAAUc,OAAS,SAAgBH,EAAMI,GAClD,OAAOhB,KAAK0K,KAAK1C,QAAQpH,EAAMI,GAAU0B,MAC3C,EAOA9C,EAAS+K,EAASnL,EAAKuD,MAEvB4H,EAAQ1K,UAAUwI,iBAAmB,SAAyBjF,EACA6E,EACAG,EACAJ,GAC5D,IAgBIwF,EAhBAC,EA2ON,SAAmBrK,EAAK6E,EAAWG,EAAKxH,GACtC,IAAIiB,EAEQ,UAARuB,EACFA,EAAM,MACS,UAARA,IACPA,EAAM,OAER,GAAIgH,EAAID,UAAU7J,eAAe8C,GAC/BvB,EAAMuI,EAAID,UAAU/G,OACjB,IAAmB,kBAARA,IAA2B,EAANA,KAAaA,EAGhD,OAAOxC,EAASO,MAAM,gBAAkBiC,GAFxCvB,EAAMuB,CAEsC,CAE9C,GAAIvB,GAAO,GACT,OAAOjB,EAASO,MAAM,wCAEnB8G,IACHpG,GAAO,IAIT,OAFAA,GAAQuI,EAAIH,eAAe7B,GAAO,cAAgB,EAE3CvG,CACT,CAnQmB6L,CAAUtK,EAAK6E,EAAWG,EAAKxI,KAAKgB,UAGrD,GAAIoH,EAAQ9G,OAAS,IAInB,OAHIsM,EAAS,IAAI1M,EAAO,IACjB,GAAK2M,EACZD,EAAO,GAAKxF,EAAQ9G,OACbtB,KAAK+H,qBAAqB,CAAE6F,EAAQxF,IAM7C,IADA,IAAI2F,EAAY,EACP7C,EAAI9C,EAAQ9G,OAAQ4J,GAAK,IAAOA,IAAM,EAC7C6C,KAEEH,EAAS,IAAI1M,EAAO,EAAQ6M,IACzB,GAAKF,EACZD,EAAO,GAAK,IAAOG,EAEV7C,EAAI,EAAI6C,EAAjB,IAAK,IAAuB5C,EAAI/C,EAAQ9G,OAAQ6J,EAAI,EAAGD,IAAKC,IAAM,EAChEyC,EAAO1C,GAAS,IAAJC,EAEd,OAAOnL,KAAK+H,qBAAqB,CAAE6F,EAAQxF,GAC7C,EAEAuC,EAAQ1K,UAAU2I,WAAa,SAAmBO,EAAK3F,GACrD,GAAY,WAARA,EACF,OAAOxD,KAAK+H,qBAAqB,CAAe,EAAboB,EAAIsC,OAAYtC,EAAIvI,OAClD,GAAY,WAAR4C,EAAkB,CAE3B,IADA,IAAIqH,EAAM,IAAI3J,EAAoB,EAAbiI,EAAI7H,QAChB4J,EAAI,EAAGA,EAAI/B,EAAI7H,OAAQ4J,IAC9BL,EAAImD,cAAc7E,EAAI8E,WAAW/C,GAAQ,EAAJA,GAEvC,OAAOlL,KAAK+H,qBAAqB8C,EACnC,CAAO,MAAY,WAARrH,EACJxD,KAAKkJ,UAAUC,GAIbnJ,KAAK+H,qBAAqBoB,GAHxBnJ,KAAKgB,SAASO,MAAM,kEAIZ,aAARiC,EACJxD,KAAKoJ,YAAYD,GAQfnJ,KAAK+H,qBAAqBoB,GAPxBnJ,KAAKgB,SAASO,MAAM,qNAQpB,OAAO4F,KAAK3D,IAEJ,YAARA,EADFxD,KAAK+H,qBAAqBoB,GAI1BnJ,KAAKgB,SAASO,MAAM,4BAA8BiC,EAC9B,eAE/B,EAEAmH,EAAQ1K,UAAU4I,aAAe,SAAqBqF,EAAIlC,EAAQC,GAChE,GAAkB,kBAAPiC,EAAiB,CAC1B,IAAKlC,EACH,OAAOhM,KAAKgB,SAASO,MAAM,+CAC7B,IAAKyK,EAAOtL,eAAewN,GACzB,OAAOlO,KAAKgB,SAASO,MAAM,iCAC7B2M,EAAKlC,EAAOkC,GAAIf,MAAM,YACtB,IAAK,IAAIjC,EAAI,EAAGA,EAAIgD,EAAG5M,OAAQ4J,IAC7BgD,EAAGhD,IAAM,CACb,MAAO,GAAIxJ,MAAMC,QAAQuM,GAAK,CAC5BA,EAAKA,EAAGzL,QACR,IAASyI,EAAI,EAAGA,EAAIgD,EAAG5M,OAAQ4J,IAC7BgD,EAAGhD,IAAM,CACb,CAEA,IAAKxJ,MAAMC,QAAQuM,GACjB,OAAOlO,KAAKgB,SAASO,MAAM,kDACUmH,KAAKC,UAAUuF,IAGtD,IAAKjC,EAAU,CACb,GAAIiC,EAAG,IAAM,GACX,OAAOlO,KAAKgB,SAASO,MAAM,+BAC7B2M,EAAGC,OAAO,EAAG,EAAW,GAARD,EAAG,GAAUA,EAAG,GAClC,CAGA,IAAIE,EAAO,EACX,IAASlD,EAAI,EAAGA,EAAIgD,EAAG5M,OAAQ4J,IAAK,CAClC,IAAIiB,EAAQ+B,EAAGhD,GACf,IAAKkD,IAAQjC,GAAS,IAAMA,IAAU,EACpCiC,GACJ,CAEA,IAAIC,EAAQ,IAAInN,EAAOkN,GACnB/M,EAASgN,EAAM/M,OAAS,EAC5B,IAAS4J,EAAIgD,EAAG5M,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACnCiB,EAAQ+B,EAAGhD,GAEf,IADAmD,EAAMhN,KAAoB,IAAR8K,GACVA,IAAU,GAAK,GACrBkC,EAAMhN,KAAY,IAAgB,IAAR8K,CAC9B,CAEA,OAAOnM,KAAK+H,qBAAqBsG,EACnC,EASA1D,EAAQ1K,UAAU6I,YAAc,SAAoBwF,EAAM9K,GACxD,IAAI2F,EACAoF,EAAO,IAAIzB,KAAKwB,GA0BpB,MAxBY,YAAR9K,EACF2F,EAAM,CACJwE,EAAIY,EAAKC,eACTb,EAAIY,EAAKE,cAAgB,GACzBd,EAAIY,EAAKG,cACTf,EAAIY,EAAKI,eACThB,EAAIY,EAAKK,iBACTjB,EAAIY,EAAKM,iBACT,KACAnM,KAAK,IACU,YAARc,EACT2F,EAAM,CACJwE,EAAIY,EAAKC,cAAgB,KACzBb,EAAIY,EAAKE,cAAgB,GACzBd,EAAIY,EAAKG,cACTf,EAAIY,EAAKI,eACThB,EAAIY,EAAKK,iBACTjB,EAAIY,EAAKM,iBACT,KACAnM,KAAK,IAEP1C,KAAKgB,SAASO,MAAM,YAAciC,EAAM,8BAGnCxD,KAAK4I,WAAWO,EAAK,SAC9B,EAEAwB,EAAQ1K,UAAU8I,YAAc,WAC9B,OAAO/I,KAAK+H,qBAAqB,GACnC,EAEA4C,EAAQ1K,UAAU+I,WAAa,SAAmBrD,EAAKqG,GACrD,GAAmB,kBAARrG,EAAkB,CAC3B,IAAKqG,EACH,OAAOhM,KAAKgB,SAASO,MAAM,+CAC7B,IAAKyK,EAAOtL,eAAeiF,GACzB,OAAO3F,KAAKgB,SAASO,MAAM,+BACAmH,KAAKC,UAAUhD,IAE5CA,EAAMqG,EAAOrG,EACf,CAGA,GAAmB,kBAARA,IAAqBzE,EAAOE,SAASuE,GAAM,CACpD,IAAImJ,EAAWnJ,EAAIoJ,WACdpJ,EAAIqJ,MAAsB,IAAdF,EAAS,IACxBA,EAASG,QAAQ,GAEnBtJ,EAAM,IAAIzE,EAAO4N,EACnB,CAEA,GAAI5N,EAAOE,SAASuE,GAAM,CACxB,IAAIyI,EAAOzI,EAAIrE,OACI,IAAfqE,EAAIrE,QACN8M,IAEF,IAAIzL,EAAM,IAAIzB,EAAOkN,GAIrB,OAHAzI,EAAI7C,KAAKH,GACU,IAAfgD,EAAIrE,SACNqB,EAAI,GAAK,GACJ3C,KAAK+H,qBAAqBpF,EACnC,CAEA,GAAIgD,EAAM,IACR,OAAO3F,KAAK+H,qBAAqBpC,GAEnC,GAAIA,EAAM,IACR,OAAO3F,KAAK+H,qBAAqB,CAAC,EAAGpC,IAEnCyI,EAAO,EACX,IADA,IACSlD,EAAIvF,EAAKuF,GAAK,IAAOA,IAAM,EAClCkD,IAGF,IAASlD,GADLvI,EAAM,IAAIjB,MAAM0M,IACH9M,OAAS,EAAG4J,GAAK,EAAGA,IACnCvI,EAAIuI,GAAW,IAANvF,EACTA,IAAQ,EAMV,OAJY,IAAThD,EAAI,IACLA,EAAIsM,QAAQ,GAGPjP,KAAK+H,qBAAqB,IAAI7G,EAAOyB,GAC9C,EAEAgI,EAAQ1K,UAAUgJ,YAAc,SAAoBxH,GAClD,OAAOzB,KAAK+H,qBAAqBtG,EAAQ,IAAO,EAClD,EAEAkJ,EAAQ1K,UAAUyH,KAAO,SAAarH,EAAQyD,GAG5C,MAFsB,oBAAXzD,IACTA,EAASA,EAAOyD,IACXzD,EAAOS,YAAY,OAAO4J,IACnC,EAEAC,EAAQ1K,UAAUkI,aAAe,SAAqB+G,EAAYlO,EAAUoC,GAC1E,IACI8H,EADA7H,EAAQrD,KAAKsD,WAEjB,GAAyB,OAArBD,EAAe,QACjB,OAAO,EAET,IAAIzC,EAAOsO,EAAWxM,OAItB,QAH4BwF,IAAxB7E,EAAM8L,gBACR9L,EAAM8L,cAAgBnP,KAAKiI,aAAa5E,EAAe,QAAGrC,EAAUoC,GAAQV,QAE1E9B,EAAKU,SAAW+B,EAAM8L,cAAc7N,OACtC,OAAO,EAET,IAAK4J,EAAE,EAAGA,EAAItK,EAAKU,OAAQ4J,IACzB,GAAItK,EAAKsK,KAAO7H,EAAM8L,cAAcjE,GAClC,OAAO,EAEX,OAAO,CACT,mBC1QA,IAAIvL,EAAWN,EAEfM,EAAS6K,IAAM,EAAQ,OACvB7K,EAASqN,IAAM,EAAQ,wBCHvB,IAAIpN,EAAW,EAAQ,OAEnB8N,EAAa,EAAQ,OAEzB,SAAS0B,EAAW/O,GAClBqN,EAAWnN,KAAKP,KAAMK,GACtBL,KAAKS,IAAM,KACb,CACAb,EAASwP,EAAY1B,GACrBpJ,EAAOjF,QAAU+P,EAEjBA,EAAWnP,UAAUc,OAAS,SAAgBH,EAAMC,GAKlD,IAJA,IAEIwO,EAFM3B,EAAWzN,UAAUc,OAAOR,KAAKP,KAAMY,GAErCkL,SAAS,UACjBnJ,EAAM,CAAE,cAAgB9B,EAAQuM,MAAQ,SACnClC,EAAI,EAAGA,EAAImE,EAAE/N,OAAQ4J,GAAK,GACjCvI,EAAIkC,KAAKwK,EAAE5M,MAAMyI,EAAGA,EAAI,KAE1B,OADAvI,EAAIkC,KAAK,YAAchE,EAAQuM,MAAQ,SAChCzK,EAAID,KAAK,KAClB,0BCpBA,SAAW4B,EAAQjF,GACjB,aAGA,SAAS2D,EAAQ0C,EAAK6D,GACpB,IAAK7D,EAAK,MAAM,IAAIF,MAAM+D,GAAO,mBACnC,CAIA,SAAS3J,EAAU0P,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASxP,UAAYsP,EAAUtP,UAC/BqP,EAAKrP,UAAY,IAAIwP,EACrBH,EAAKrP,UAAU0E,YAAc2K,CAC/B,CAIA,SAASI,EAAIC,EAAQnQ,EAAMoQ,GACzB,GAAIF,EAAGG,KAAKF,GACV,OAAOA,EAGT3P,KAAK8P,SAAW,EAChB9P,KAAK+P,MAAQ,KACb/P,KAAKsB,OAAS,EAGdtB,KAAKgQ,IAAM,KAEI,OAAXL,IACW,OAATnQ,GAA0B,OAATA,IACnBoQ,EAASpQ,EACTA,EAAO,IAGTQ,KAAKgF,MAAM2K,GAAU,EAAGnQ,GAAQ,GAAIoQ,GAAU,MAElD,CAUA,IAAI1O,EATkB,kBAAXoD,EACTA,EAAOjF,QAAUqQ,EAEjBrQ,EAAQqQ,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGO,SAAW,GAGd,IAEI/O,EADoB,qBAAXgP,QAAmD,qBAAlBA,OAAOhP,OACxCgP,OAAOhP,OAEP,eAEb,CAAE,MAAOd,GACT,CA+HA,SAAS+P,EAAeC,EAAQ1G,GAC9B,IAAI2G,EAAID,EAAOnC,WAAWvE,GAE1B,OAAI2G,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,EAEtB,CAEA,SAASC,EAAcF,EAAQG,EAAY7G,GACzC,IAAI8G,EAAIL,EAAcC,EAAQ1G,GAI9B,OAHIA,EAAQ,GAAK6G,IACfC,GAAKL,EAAcC,EAAQ1G,EAAQ,IAAM,GAEpC8G,CACT,CA6CA,SAASC,EAAWtH,EAAKxC,EAAO4G,EAAKmD,GAGnC,IAFA,IAAIF,EAAI,EACJvF,EAAM0F,KAAK/D,IAAIzD,EAAI7H,OAAQiM,GACtBrC,EAAIvE,EAAOuE,EAAID,EAAKC,IAAK,CAChC,IAAImF,EAAIlH,EAAI8E,WAAW/C,GAAK,GAE5BsF,GAAKE,EAIHF,GADEH,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,CAET,CACA,OAAOG,CACT,CApNAd,EAAGG,KAAO,SAAelK,GACvB,OAAIA,aAAe+J,GAIJ,OAAR/J,GAA+B,kBAARA,GAC5BA,EAAIhB,YAAYsL,WAAaP,EAAGO,UAAYvO,MAAMC,QAAQgE,EAAIoK,MAClE,EAEAL,EAAGkB,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEApB,EAAG9C,IAAM,SAAciE,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEApB,EAAGzP,UAAU+E,MAAQ,SAAe2K,EAAQnQ,EAAMoQ,GAChD,GAAsB,kBAAXD,EACT,OAAO3P,KAAKgR,YAAYrB,EAAQnQ,EAAMoQ,GAGxC,GAAsB,kBAAXD,EACT,OAAO3P,KAAKiR,WAAWtB,EAAQnQ,EAAMoQ,GAG1B,QAATpQ,IACFA,EAAO,IAETwD,EAAOxD,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAImH,EAAQ,EACM,OAFlBgJ,EAASA,EAAO7D,WAAW2B,QAAQ,OAAQ,KAEhC,KACT9G,IACA3G,KAAK8P,SAAW,GAGdnJ,EAAQgJ,EAAOrO,SACJ,KAAT9B,EACFQ,KAAKkR,UAAUvB,EAAQhJ,EAAOiJ,IAE9B5P,KAAKmR,WAAWxB,EAAQnQ,EAAMmH,GACf,OAAXiJ,GACF5P,KAAKiR,WAAWjR,KAAK+O,UAAWvP,EAAMoQ,IAI9C,EAEAF,EAAGzP,UAAU+Q,YAAc,SAAsBrB,EAAQnQ,EAAMoQ,GACzDD,EAAS,IACX3P,KAAK8P,SAAW,EAChBH,GAAUA,GAERA,EAAS,UACX3P,KAAK+P,MAAQ,CAAW,SAATJ,GACf3P,KAAKsB,OAAS,GACLqO,EAAS,kBAClB3P,KAAK+P,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,UAEzB3P,KAAKsB,OAAS,IAEd0B,EAAO2M,EAAS,kBAChB3P,KAAK+P,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,SACvB,GAEF3P,KAAKsB,OAAS,GAGD,OAAXsO,GAGJ5P,KAAKiR,WAAWjR,KAAK+O,UAAWvP,EAAMoQ,EACxC,EAEAF,EAAGzP,UAAUgR,WAAa,SAAqBtB,EAAQnQ,EAAMoQ,GAG3D,GADA5M,EAAgC,kBAAlB2M,EAAOrO,QACjBqO,EAAOrO,QAAU,EAGnB,OAFAtB,KAAK+P,MAAQ,CAAE,GACf/P,KAAKsB,OAAS,EACPtB,KAGTA,KAAKsB,OAASqP,KAAKS,KAAKzB,EAAOrO,OAAS,GACxCtB,KAAK+P,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/BlL,KAAK+P,MAAM7E,GAAK,EAGlB,IAAIC,EAAGkG,EACHC,EAAM,EACV,GAAe,OAAX1B,EACF,IAAK1E,EAAIyE,EAAOrO,OAAS,EAAG6J,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CmG,EAAI1B,EAAOzE,GAAMyE,EAAOzE,EAAI,IAAM,EAAMyE,EAAOzE,EAAI,IAAM,GACzDlL,KAAK+P,MAAM5E,IAAOkG,GAAKC,EAAO,SAC9BtR,KAAK+P,MAAM5E,EAAI,GAAMkG,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPnG,UAGC,GAAe,OAAXyE,EACT,IAAK1E,EAAI,EAAGC,EAAI,EAAGD,EAAIyE,EAAOrO,OAAQ4J,GAAK,EACzCmG,EAAI1B,EAAOzE,GAAMyE,EAAOzE,EAAI,IAAM,EAAMyE,EAAOzE,EAAI,IAAM,GACzDlL,KAAK+P,MAAM5E,IAAOkG,GAAKC,EAAO,SAC9BtR,KAAK+P,MAAM5E,EAAI,GAAMkG,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPnG,KAIN,OAAOnL,KAAKuR,OACd,EAwBA7B,EAAGzP,UAAUiR,UAAY,SAAoBvB,EAAQhJ,EAAOiJ,GAE1D5P,KAAKsB,OAASqP,KAAKS,MAAMzB,EAAOrO,OAASqF,GAAS,GAClD3G,KAAK+P,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/BlL,KAAK+P,MAAM7E,GAAK,EAIlB,IAGImG,EAHAC,EAAM,EACNnG,EAAI,EAGR,GAAe,OAAXyE,EACF,IAAK1E,EAAIyE,EAAOrO,OAAS,EAAG4J,GAAKvE,EAAOuE,GAAK,EAC3CmG,EAAIf,EAAaX,EAAQhJ,EAAOuE,IAAMoG,EACtCtR,KAAK+P,MAAM5E,IAAU,SAAJkG,EACbC,GAAO,IACTA,GAAO,GACPnG,GAAK,EACLnL,KAAK+P,MAAM5E,IAAMkG,IAAM,IAEvBC,GAAO,OAKX,IAAKpG,GADayE,EAAOrO,OAASqF,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOuE,EAAIyE,EAAOrO,OAAQ4J,GAAK,EAC1EmG,EAAIf,EAAaX,EAAQhJ,EAAOuE,IAAMoG,EACtCtR,KAAK+P,MAAM5E,IAAU,SAAJkG,EACbC,GAAO,IACTA,GAAO,GACPnG,GAAK,EACLnL,KAAK+P,MAAM5E,IAAMkG,IAAM,IAEvBC,GAAO,EAKbtR,KAAKuR,OACP,EA0BA7B,EAAGzP,UAAUkR,WAAa,SAAqBxB,EAAQnQ,EAAMmH,GAE3D3G,KAAK+P,MAAQ,CAAE,GACf/P,KAAKsB,OAAS,EAGd,IAAK,IAAIkQ,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWjS,EAClEgS,IAEFA,IACAC,EAAWA,EAAUjS,EAAQ,EAO7B,IALA,IAAIkS,EAAQ/B,EAAOrO,OAASqF,EACxBgL,EAAMD,EAAQF,EACdjE,EAAMoD,KAAK/D,IAAI8E,EAAOA,EAAQC,GAAOhL,EAErCiL,EAAO,EACF1G,EAAIvE,EAAOuE,EAAIqC,EAAKrC,GAAKsG,EAChCI,EAAOnB,EAAUd,EAAQzE,EAAGA,EAAIsG,EAAShS,GAEzCQ,KAAK6R,MAAMJ,GACPzR,KAAK+P,MAAM,GAAK6B,EAAO,SACzB5R,KAAK+P,MAAM,IAAM6B,EAEjB5R,KAAK8R,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAOnB,EAAUd,EAAQzE,EAAGyE,EAAOrO,OAAQ9B,GAEtC0L,EAAI,EAAGA,EAAIyG,EAAKzG,IACnB6G,GAAOvS,EAGTQ,KAAK6R,MAAME,GACP/R,KAAK+P,MAAM,GAAK6B,EAAO,SACzB5R,KAAK+P,MAAM,IAAM6B,EAEjB5R,KAAK8R,OAAOF,EAEhB,CAEA5R,KAAKuR,OACP,EAEA7B,EAAGzP,UAAU6C,KAAO,SAAekP,GACjCA,EAAKjC,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/B8G,EAAKjC,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAE7B8G,EAAK1Q,OAAStB,KAAKsB,OACnB0Q,EAAKlC,SAAW9P,KAAK8P,SACrBkC,EAAKhC,IAAMhQ,KAAKgQ,GAClB,EAEAN,EAAGzP,UAAUuE,MAAQ,WACnB,IAAIgM,EAAI,IAAId,EAAG,MAEf,OADA1P,KAAK8C,KAAK0N,GACHA,CACT,EAEAd,EAAGzP,UAAUgS,QAAU,SAAkB7D,GACvC,KAAOpO,KAAKsB,OAAS8M,GACnBpO,KAAK+P,MAAM/P,KAAKsB,UAAY,EAE9B,OAAOtB,IACT,EAGA0P,EAAGzP,UAAUsR,MAAQ,WACnB,KAAOvR,KAAKsB,OAAS,GAAqC,IAAhCtB,KAAK+P,MAAM/P,KAAKsB,OAAS,IACjDtB,KAAKsB,SAEP,OAAOtB,KAAKkS,WACd,EAEAxC,EAAGzP,UAAUiS,UAAY,WAKvB,OAHoB,IAAhBlS,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,KAClC/P,KAAK8P,SAAW,GAEX9P,IACT,EAEA0P,EAAGzP,UAAUkS,QAAU,WACrB,OAAQnS,KAAKgQ,IAAM,UAAY,SAAWhQ,KAAK8L,SAAS,IAAM,GAChE,EAgCA,IAAIsG,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAYC,EAAM7M,EAAKhD,GAC9BA,EAAImN,SAAWnK,EAAImK,SAAW0C,EAAK1C,SACnC,IAAI7E,EAAOuH,EAAKlR,OAASqE,EAAIrE,OAAU,EACvCqB,EAAIrB,OAAS2J,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIwH,EAAoB,EAAhBD,EAAKzC,MAAM,GACf2C,EAAmB,EAAf/M,EAAIoK,MAAM,GACdS,EAAIiC,EAAIC,EAERC,EAAS,SAAJnC,EACLoC,EAASpC,EAAI,SAAa,EAC9B7N,EAAIoN,MAAM,GAAK4C,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAI5H,EAAK4H,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAOrC,KAAK/D,IAAIiG,EAAGlN,EAAIrE,OAAS,GAC3B6J,EAAIwF,KAAKC,IAAI,EAAGiC,EAAIL,EAAKlR,OAAS,GAAI6J,GAAK6H,EAAM7H,IAAK,CAC7D,IAAID,EAAK2H,EAAI1H,EAAK,EAIlB2H,IADAtC,GAFAiC,EAAoB,EAAhBD,EAAKzC,MAAM7E,KACfwH,EAAmB,EAAf/M,EAAIoK,MAAM5E,IACF4H,GACG,SAAa,EAC5BA,EAAY,SAAJvC,CACV,CACA7N,EAAIoN,MAAM8C,GAAa,EAARE,EACfH,EAAiB,EAATE,CACV,CAOA,OANc,IAAVF,EACFjQ,EAAIoN,MAAM8C,GAAa,EAARD,EAEfjQ,EAAIrB,SAGCqB,EAAI4O,OACb,CA1lBA7B,EAAGzP,UAAU6L,SAAW,SAAmBtM,EAAMyT,GAI/C,IAAItQ,EACJ,GAHAsQ,EAAoB,EAAVA,GAAe,EAGZ,MAJbzT,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCmD,EAAM,GAGN,IAFA,IAAI2O,EAAM,EACNsB,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAImG,EAAIrR,KAAK+P,MAAM7E,GACf0G,GAA+B,UAArBP,GAAKC,EAAOsB,IAAmB9G,SAAS,IACtD8G,EAASvB,IAAO,GAAKC,EAAQ,UAC7BA,GAAO,IACI,KACTA,GAAO,GACPpG,KAGAvI,EADY,IAAViQ,GAAe1H,IAAMlL,KAAKsB,OAAS,EAC/B8Q,EAAM,EAAIR,EAAKtQ,QAAUsQ,EAAOjP,EAEhCiP,EAAOjP,CAEjB,CAIA,IAHc,IAAViQ,IACFjQ,EAAMiQ,EAAM9G,SAAS,IAAMnJ,GAEtBA,EAAIrB,OAAS2R,IAAY,GAC9BtQ,EAAM,IAAMA,EAKd,OAHsB,IAAlB3C,KAAK8P,WACPnN,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAInD,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI0T,EAAYb,EAAW7S,GAEvB2T,EAAYb,EAAW9S,GAC3BmD,EAAM,GACN,IAAI0N,EAAIrQ,KAAKwE,QAEb,IADA6L,EAAEP,SAAW,GACLO,EAAE+C,UAAU,CAClB,IAAI5C,EAAIH,EAAEgD,KAAKF,GAAWrH,SAAStM,GAMjCmD,GALF0N,EAAIA,EAAEiD,MAAMH,IAELC,SAGC5C,EAAI7N,EAFJyP,EAAMc,EAAY1C,EAAElP,QAAUkP,EAAI7N,CAI5C,CAIA,IAHI3C,KAAKoT,WACPzQ,EAAM,IAAMA,GAEPA,EAAIrB,OAAS2R,IAAY,GAC9BtQ,EAAM,IAAMA,EAKd,OAHsB,IAAlB3C,KAAK8P,WACPnN,EAAM,IAAMA,GAEPA,CACT,CAEAK,GAAO,EAAO,kCAChB,EAEA0M,EAAGzP,UAAUsT,SAAW,WACtB,IAAIC,EAAMxT,KAAK+P,MAAM,GASrB,OARoB,IAAhB/P,KAAKsB,OACPkS,GAAuB,SAAhBxT,KAAK+P,MAAM,GACO,IAAhB/P,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,GAEzCyD,GAAO,iBAAoC,SAAhBxT,KAAK+P,MAAM,GAC7B/P,KAAKsB,OAAS,GACvB0B,GAAO,EAAO,8CAEU,IAAlBhD,KAAK8P,UAAmB0D,EAAMA,CACxC,EAEA9D,EAAGzP,UAAUwT,OAAS,WACpB,OAAOzT,KAAK8L,SAAS,GACvB,EAEA4D,EAAGzP,UAAUyT,SAAW,SAAmB9D,EAAQtO,GAEjD,OADA0B,EAAyB,qBAAX9B,GACPlB,KAAK2T,YAAYzS,EAAQ0O,EAAQtO,EAC1C,EAEAoO,EAAGzP,UAAU8O,QAAU,SAAkBa,EAAQtO,GAC/C,OAAOtB,KAAK2T,YAAYjS,MAAOkO,EAAQtO,EACzC,EAEAoO,EAAGzP,UAAU0T,YAAc,SAAsBC,EAAWhE,EAAQtO,GAClE,IAAIQ,EAAa9B,KAAK8B,aAClB+R,EAAYvS,GAAUqP,KAAKC,IAAI,EAAG9O,GACtCkB,EAAOlB,GAAc+R,EAAW,yCAChC7Q,EAAO6Q,EAAY,EAAG,+BAEtB7T,KAAKuR,QACL,IAGImB,EAAGxH,EAHH4I,EAA0B,OAAXlE,EACf3N,EAAM,IAAI2R,EAAUC,GAGpBE,EAAI/T,KAAKwE,QACb,GAAKsP,EAYE,CACL,IAAK5I,EAAI,GAAI6I,EAAEX,SAAUlI,IACvBwH,EAAIqB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAEThS,EAAIiJ,GAAKwH,EAGX,KAAOxH,EAAI2I,EAAW3I,IACpBjJ,EAAIiJ,GAAK,CAEb,KAvBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAI2I,EAAY/R,EAAYoJ,IACtCjJ,EAAIiJ,GAAK,EAGX,IAAKA,EAAI,GAAI6I,EAAEX,SAAUlI,IACvBwH,EAAIqB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAEThS,EAAI4R,EAAY3I,EAAI,GAAKwH,CAE7B,CAaA,OAAOzQ,CACT,EAEI0O,KAAKuD,MACPxE,EAAGzP,UAAUkU,WAAa,SAAqB9C,GAC7C,OAAO,GAAKV,KAAKuD,MAAM7C,EACzB,EAEA3B,EAAGzP,UAAUkU,WAAa,SAAqB9C,GAC7C,IAAI+C,EAAI/C,EACJb,EAAI,EAiBR,OAhBI4D,GAAK,OACP5D,GAAK,GACL4D,KAAO,IAELA,GAAK,KACP5D,GAAK,EACL4D,KAAO,GAELA,GAAK,IACP5D,GAAK,EACL4D,KAAO,GAELA,GAAK,IACP5D,GAAK,EACL4D,KAAO,GAEF5D,EAAI4D,CACb,EAGF1E,EAAGzP,UAAUoU,UAAY,SAAoBhD,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI+C,EAAI/C,EACJb,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ4D,KACH5D,GAAK,GACL4D,KAAO,IAEU,KAAV,IAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,GAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,EAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,EAAJA,IACH5D,IAEKA,CACT,EAGAd,EAAGzP,UAAUqU,UAAY,WACvB,IAAIjD,EAAIrR,KAAK+P,MAAM/P,KAAKsB,OAAS,GAC7BiT,EAAKvU,KAAKmU,WAAW9C,GACzB,OAA2B,IAAnBrR,KAAKsB,OAAS,GAAUiT,CAClC,EAgBA7E,EAAGzP,UAAUuU,SAAW,WACtB,GAAIxU,KAAKoT,SAAU,OAAO,EAG1B,IADA,IAAI5C,EAAI,EACCtF,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAIwH,EAAI1S,KAAKqU,UAAUrU,KAAK+P,MAAM7E,IAElC,GADAsF,GAAKkC,EACK,KAANA,EAAU,KAChB,CACA,OAAOlC,CACT,EAEAd,EAAGzP,UAAU6B,WAAa,WACxB,OAAO6O,KAAKS,KAAKpR,KAAKsU,YAAc,EACtC,EAEA5E,EAAGzP,UAAUwU,OAAS,SAAiBC,GACrC,OAAsB,IAAlB1U,KAAK8P,SACA9P,KAAK2U,MAAMC,MAAMF,GAAOG,MAAM,GAEhC7U,KAAKwE,OACd,EAEAkL,EAAGzP,UAAU6U,SAAW,SAAmBJ,GACzC,OAAI1U,KAAK+U,MAAML,EAAQ,GACd1U,KAAKgV,KAAKN,GAAOG,MAAM,GAAGI,OAE5BjV,KAAKwE,OACd,EAEAkL,EAAGzP,UAAUiV,MAAQ,WACnB,OAAyB,IAAlBlV,KAAK8P,QACd,EAGAJ,EAAGzP,UAAUkV,IAAM,WACjB,OAAOnV,KAAKwE,QAAQyQ,MACtB,EAEAvF,EAAGzP,UAAUgV,KAAO,WAKlB,OAJKjV,KAAKoT,WACRpT,KAAK8P,UAAY,GAGZ9P,IACT,EAGA0P,EAAGzP,UAAUmV,KAAO,SAAezP,GACjC,KAAO3F,KAAKsB,OAASqE,EAAIrE,QACvBtB,KAAK+P,MAAM/P,KAAKsB,UAAY,EAG9B,IAAK,IAAI4J,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAC9BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAAKvF,EAAIoK,MAAM7E,GAG5C,OAAOlL,KAAKuR,OACd,EAEA7B,EAAGzP,UAAUoV,IAAM,SAAc1P,GAE/B,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAKoV,KAAKzP,EACnB,EAGA+J,EAAGzP,UAAUqV,GAAK,SAAa3P,GAC7B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ6Q,IAAI1P,GAC/CA,EAAInB,QAAQ6Q,IAAIrV,KACzB,EAEA0P,EAAGzP,UAAUsV,IAAM,SAAc5P,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ4Q,KAAKzP,GAChDA,EAAInB,QAAQ4Q,KAAKpV,KAC1B,EAGA0P,EAAGzP,UAAUuV,MAAQ,SAAgB7P,GAEnC,IAAI+M,EAEFA,EADE1S,KAAKsB,OAASqE,EAAIrE,OAChBqE,EAEA3F,KAGN,IAAK,IAAIkL,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAAKvF,EAAIoK,MAAM7E,GAK5C,OAFAlL,KAAKsB,OAASoR,EAAEpR,OAETtB,KAAKuR,OACd,EAEA7B,EAAGzP,UAAUwV,KAAO,SAAe9P,GAEjC,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAKwV,MAAM7P,EACpB,EAGA+J,EAAGzP,UAAUyV,IAAM,SAAc/P,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQiR,KAAK9P,GAChDA,EAAInB,QAAQiR,KAAKzV,KAC1B,EAEA0P,EAAGzP,UAAU0V,KAAO,SAAehQ,GACjC,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQgR,MAAM7P,GACjDA,EAAInB,QAAQgR,MAAMxV,KAC3B,EAGA0P,EAAGzP,UAAU2V,MAAQ,SAAgBjQ,GAEnC,IAAI8M,EACAC,EACA1S,KAAKsB,OAASqE,EAAIrE,QACpBmR,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAGN,IAAK,IAAIkL,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAAKwH,EAAE3C,MAAM7E,GAGvC,GAAIlL,OAASyS,EACX,KAAOvH,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAM5B,OAFAlL,KAAKsB,OAASmR,EAAEnR,OAETtB,KAAKuR,OACd,EAEA7B,EAAGzP,UAAU4V,KAAO,SAAelQ,GAEjC,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAK4V,MAAMjQ,EACpB,EAGA+J,EAAGzP,UAAU6V,IAAM,SAAcnQ,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQqR,KAAKlQ,GAChDA,EAAInB,QAAQqR,KAAK7V,KAC1B,EAEA0P,EAAGzP,UAAU8V,KAAO,SAAepQ,GACjC,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQoR,MAAMjQ,GACjDA,EAAInB,QAAQoR,MAAM5V,KAC3B,EAGA0P,EAAGzP,UAAU2U,MAAQ,SAAgBF,GACnC1R,EAAwB,kBAAV0R,GAAsBA,GAAS,GAE7C,IAAIsB,EAAsC,EAAxBrF,KAAKS,KAAKsD,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvB1U,KAAKiS,QAAQ+D,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAa9K,IAC/BlL,KAAK+P,MAAM7E,GAAsB,UAAhBlL,KAAK+P,MAAM7E,GAS9B,OALI+K,EAAW,IACbjW,KAAK+P,MAAM7E,IAAMlL,KAAK+P,MAAM7E,GAAM,UAAc,GAAK+K,GAIhDjW,KAAKuR,OACd,EAEA7B,EAAGzP,UAAU+U,KAAO,SAAeN,GACjC,OAAO1U,KAAKwE,QAAQoQ,MAAMF,EAC5B,EAGAhF,EAAGzP,UAAUiW,KAAO,SAAeC,EAAKzQ,GACtC1C,EAAsB,kBAARmT,GAAoBA,GAAO,GAEzC,IAAI7E,EAAO6E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAnW,KAAKiS,QAAQX,EAAM,GAGjBtR,KAAK+P,MAAMuB,GADT5L,EACgB1F,KAAK+P,MAAMuB,GAAQ,GAAK8E,EAExBpW,KAAK+P,MAAMuB,KAAS,GAAK8E,GAGtCpW,KAAKuR,OACd,EAGA7B,EAAGzP,UAAUoW,KAAO,SAAe1Q,GACjC,IAAI6K,EAkBAiC,EAAGC,EAfP,GAAsB,IAAlB1S,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAI7B,OAHA9P,KAAK8P,SAAW,EAChBU,EAAIxQ,KAAKsW,KAAK3Q,GACd3F,KAAK8P,UAAY,EACV9P,KAAKkS,YAGP,GAAsB,IAAlBlS,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAIpC,OAHAnK,EAAImK,SAAW,EACfU,EAAIxQ,KAAKsW,KAAK3Q,GACdA,EAAImK,SAAW,EACRU,EAAE0B,YAKPlS,KAAKsB,OAASqE,EAAIrE,QACpBmR,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAIN,IADA,IAAI4S,EAAQ,EACH1H,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BsF,GAAkB,EAAbiC,EAAE1C,MAAM7E,KAAwB,EAAbwH,EAAE3C,MAAM7E,IAAU0H,EAC1C5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAChBoC,EAAQpC,IAAM,GAEhB,KAAiB,IAAVoC,GAAe1H,EAAIuH,EAAEnR,OAAQ4J,IAClCsF,GAAkB,EAAbiC,EAAE1C,MAAM7E,IAAU0H,EACvB5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAChBoC,EAAQpC,IAAM,GAIhB,GADAxQ,KAAKsB,OAASmR,EAAEnR,OACF,IAAVsR,EACF5S,KAAK+P,MAAM/P,KAAKsB,QAAUsR,EAC1B5S,KAAKsB,cAEA,GAAImR,IAAMzS,KACf,KAAOkL,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAI5B,OAAOlL,IACT,EAGA0P,EAAGzP,UAAUsW,IAAM,SAAc5Q,GAC/B,IAAI1D,EACJ,OAAqB,IAAjB0D,EAAImK,UAAoC,IAAlB9P,KAAK8P,UAC7BnK,EAAImK,SAAW,EACf7N,EAAMjC,KAAKwW,IAAI7Q,GACfA,EAAImK,UAAY,EACT7N,GACmB,IAAjB0D,EAAImK,UAAoC,IAAlB9P,KAAK8P,UACpC9P,KAAK8P,SAAW,EAChB7N,EAAM0D,EAAI6Q,IAAIxW,MACdA,KAAK8P,SAAW,EACT7N,GAGLjC,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ6R,KAAK1Q,GAEhDA,EAAInB,QAAQ6R,KAAKrW,KAC1B,EAGA0P,EAAGzP,UAAUqW,KAAO,SAAe3Q,GAEjC,GAAqB,IAAjBA,EAAImK,SAAgB,CACtBnK,EAAImK,SAAW,EACf,IAAIU,EAAIxQ,KAAKqW,KAAK1Q,GAElB,OADAA,EAAImK,SAAW,EACRU,EAAE0B,WAGX,CAAO,GAAsB,IAAlBlS,KAAK8P,SAId,OAHA9P,KAAK8P,SAAW,EAChB9P,KAAKqW,KAAK1Q,GACV3F,KAAK8P,SAAW,EACT9P,KAAKkS,YAId,IAWIO,EAAGC,EAXH3B,EAAM/Q,KAAK+Q,IAAIpL,GAGnB,GAAY,IAARoL,EAIF,OAHA/Q,KAAK8P,SAAW,EAChB9P,KAAKsB,OAAS,EACdtB,KAAK+P,MAAM,GAAK,EACT/P,KAKL+Q,EAAM,GACR0B,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAIN,IADA,IAAI4S,EAAQ,EACH1H,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAE5B0H,GADApC,GAAkB,EAAbiC,EAAE1C,MAAM7E,KAAwB,EAAbwH,EAAE3C,MAAM7E,IAAU0H,IAC7B,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAElB,KAAiB,IAAVoC,GAAe1H,EAAIuH,EAAEnR,OAAQ4J,IAElC0H,GADApC,GAAkB,EAAbiC,EAAE1C,MAAM7E,IAAU0H,IACV,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAIlB,GAAc,IAAVoC,GAAe1H,EAAIuH,EAAEnR,QAAUmR,IAAMzS,KACvC,KAAOkL,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAU5B,OANAlL,KAAKsB,OAASqP,KAAKC,IAAI5Q,KAAKsB,OAAQ4J,GAEhCuH,IAAMzS,OACRA,KAAK8P,SAAW,GAGX9P,KAAKuR,OACd,EAGA7B,EAAGzP,UAAUuW,IAAM,SAAc7Q,GAC/B,OAAO3F,KAAKwE,QAAQ8R,KAAK3Q,EAC3B,EA8CA,IAAI8Q,EAAc,SAAsBjE,EAAM7M,EAAKhD,GACjD,IAIIgQ,EACA+D,EACAnC,EANA9B,EAAID,EAAKzC,MACT2C,EAAI/M,EAAIoK,MACR4G,EAAIhU,EAAIoN,MACRM,EAAI,EAIJuG,EAAY,EAAPnE,EAAE,GACPoE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtE,EAAE,GACPuE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzE,EAAE,GACP0E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5E,EAAE,GACP6E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/E,EAAE,GACPgF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlF,EAAE,GACPmF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrF,EAAE,GACPsF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxF,EAAE,GACPyF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3F,EAAE,GACP4F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9F,EAAE,GACP+F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhG,EAAE,GACPiG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnG,EAAE,GACPoG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtG,EAAE,GACPuG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzG,EAAE,GACP0G,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5G,EAAE,GACP6G,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP/G,EAAE,GACPgH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlH,EAAE,GACPmH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPrH,EAAE,GACPsH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPxH,EAAE,GACPyH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP3H,EAAE,GACP4H,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB1X,EAAImN,SAAW0C,EAAK1C,SAAWnK,EAAImK,SACnCnN,EAAIrB,OAAS,GAMb,IAAIkZ,IAAQnK,GAJZsC,EAAKhC,KAAK8J,KAAK5D,EAAK8B,IAIE,KAAa,MAFnCjC,GADAA,EAAM/F,KAAK8J,KAAK5D,EAAK+B,IACRjI,KAAK8J,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDtI,IAFAkE,EAAK5D,KAAK8J,KAAK3D,EAAK8B,KAEPlC,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKhC,KAAK8J,KAAKzD,EAAK2B,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKzD,EAAK4B,IACRjI,KAAK8J,KAAKxD,EAAK0B,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQrK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKkC,GAAQ,GACvBpI,KAAK8J,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDzI,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKiC,GAAQ,IAErBrC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAKhC,KAAK8J,KAAKtD,EAAKwB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKtD,EAAKyB,IACRjI,KAAK8J,KAAKrD,EAAKuB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKrD,EAAKwB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK8B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK+B,GAAQ,GACvBpI,KAAK8J,KAAKxD,EAAK6B,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQtK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKqC,GAAQ,GACvBvI,KAAK8J,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD5I,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKoC,GAAQ,IAErBxC,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAKhC,KAAK8J,KAAKnD,EAAKqB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKnD,EAAKsB,IACRjI,KAAK8J,KAAKlD,EAAKoB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKlD,EAAKqB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK2B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK4B,GAAQ,GACvBpI,KAAK8J,KAAKrD,EAAK0B,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK2B,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKiC,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKkC,GAAQ,GACvBvI,KAAK8J,KAAKxD,EAAKgC,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQvK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKwC,GAAQ,GACvB1I,KAAK8J,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrD/I,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKuC,GAAQ,IAErB3C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAKhC,KAAK8J,KAAKhD,EAAKkB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKhD,EAAKmB,IACRjI,KAAK8J,KAAK/C,EAAKiB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAK/C,EAAKkB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKwB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKyB,GAAQ,GACvBpI,KAAK8J,KAAKlD,EAAKuB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKwB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK8B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK+B,GAAQ,GACvBvI,KAAK8J,KAAKrD,EAAK6B,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK8B,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKoC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKqC,GAAQ,GACvB1I,KAAK8J,KAAKxD,EAAKmC,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQxK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK2C,IAAQ,GACvB7I,KAAK8J,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDlJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAK0C,IAAQ,IAErB9C,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAKhC,KAAK8J,KAAK7C,EAAKe,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAK7C,EAAKgB,IACRjI,KAAK8J,KAAK5C,EAAKc,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAK5C,EAAKe,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKqB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKsB,GAAQ,GACvBpI,KAAK8J,KAAK/C,EAAKoB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKqB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK2B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK4B,GAAQ,GACvBvI,KAAK8J,KAAKlD,EAAK0B,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK2B,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKiC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKkC,GAAQ,GACvB1I,KAAK8J,KAAKrD,EAAKgC,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKiC,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKuC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKwC,IAAQ,GACvB7I,KAAK8J,KAAKxD,EAAKsC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQzK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK8C,IAAQ,GACvBhJ,KAAK8J,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDrJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAK6C,IAAQ,IAErBjD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAKhC,KAAK8J,KAAK1C,EAAKY,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAK1C,EAAKa,IACRjI,KAAK8J,KAAKzC,EAAKW,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKzC,EAAKY,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKkB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKmB,GAAQ,GACvBpI,KAAK8J,KAAK5C,EAAKiB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKkB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKwB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKyB,GAAQ,GACvBvI,KAAK8J,KAAK/C,EAAKuB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKwB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK8B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK+B,GAAQ,GACvB1I,KAAK8J,KAAKlD,EAAK6B,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK8B,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKoC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKqC,IAAQ,GACvB7I,KAAK8J,KAAKrD,EAAKmC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKoC,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK0C,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK2C,IAAQ,GACvBhJ,KAAK8J,KAAKxD,EAAKyC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ1K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKiD,IAAQ,GACvBnJ,KAAK8J,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDxJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKgD,IAAQ,IAErBpD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENpI,EAAKhC,KAAK8J,KAAKvC,EAAKS,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKvC,EAAKU,IACRjI,KAAK8J,KAAKtC,EAAKQ,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKtC,EAAKS,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKe,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKgB,GAAQ,GACvBpI,KAAK8J,KAAKzC,EAAKc,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKe,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKqB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKsB,GAAQ,GACvBvI,KAAK8J,KAAK5C,EAAKoB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKqB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK2B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK4B,GAAQ,GACvB1I,KAAK8J,KAAK/C,EAAK0B,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK2B,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKiC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKkC,IAAQ,GACvB7I,KAAK8J,KAAKlD,EAAKgC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKiC,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKuC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKwC,IAAQ,GACvBhJ,KAAK8J,KAAKrD,EAAKsC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKuC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK6C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK8C,IAAQ,GACvBnJ,KAAK8J,KAAKxD,EAAK4C,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ3K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKoD,IAAQ,GACvBtJ,KAAK8J,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD3J,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKmD,IAAQ,IAErBvD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENrI,EAAKhC,KAAK8J,KAAKpC,EAAKM,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKpC,EAAKO,IACRjI,KAAK8J,KAAKnC,EAAKK,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKnC,EAAKM,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKY,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKa,GAAQ,GACvBpI,KAAK8J,KAAKtC,EAAKW,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKY,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKkB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKmB,GAAQ,GACvBvI,KAAK8J,KAAKzC,EAAKiB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKkB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKwB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKyB,GAAQ,GACvB1I,KAAK8J,KAAK5C,EAAKuB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKwB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK8B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK+B,IAAQ,GACvB7I,KAAK8J,KAAK/C,EAAK6B,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK8B,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKoC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKqC,IAAQ,GACvBhJ,KAAK8J,KAAKlD,EAAKmC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKoC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK0C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK2C,IAAQ,GACvBnJ,KAAK8J,KAAKrD,EAAKyC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK0C,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKgD,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKiD,IAAQ,GACvBtJ,KAAK8J,KAAKxD,EAAK+C,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ5K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKuD,IAAQ,GACvBzJ,KAAK8J,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrD9J,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKsD,IAAQ,IAErB1D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENtI,EAAKhC,KAAK8J,KAAKjC,EAAKG,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKI,IACRjI,KAAK8J,KAAKhC,EAAKE,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKhC,EAAKG,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKS,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKU,GAAQ,GACvBpI,KAAK8J,KAAKnC,EAAKQ,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKS,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKe,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKgB,GAAQ,GACvBvI,KAAK8J,KAAKtC,EAAKc,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKe,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKqB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKsB,GAAQ,GACvB1I,KAAK8J,KAAKzC,EAAKoB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKqB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK2B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK4B,IAAQ,GACvB7I,KAAK8J,KAAK5C,EAAK0B,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK2B,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKiC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKkC,IAAQ,GACvBhJ,KAAK8J,KAAK/C,EAAKgC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKiC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKuC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKwC,IAAQ,GACvBnJ,KAAK8J,KAAKlD,EAAKsC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKuC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK6C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK8C,IAAQ,GACvBtJ,KAAK8J,KAAKrD,EAAK4C,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK6C,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKmD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKoD,IAAQ,GACvBzJ,KAAK8J,KAAKxD,EAAKkD,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQ7K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK0D,IAAQ,GACvB5J,KAAK8J,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKyD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMwE,KAAO,IAAO,EAChDA,IAAM,SAENvI,EAAKhC,KAAK8J,KAAKjC,EAAKM,GAEpBpC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKO,IACRpI,KAAK8J,KAAKhC,EAAKK,GAAQ,EACpCvE,EAAK5D,KAAK8J,KAAKhC,EAAKM,GACpBpG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKY,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKa,GAAQ,GACvBvI,KAAK8J,KAAKnC,EAAKW,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKY,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKkB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKmB,GAAQ,GACvB1I,KAAK8J,KAAKtC,EAAKiB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKkB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKwB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKyB,IAAQ,GACvB7I,KAAK8J,KAAKzC,EAAKuB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKwB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK8B,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK+B,IAAQ,GACvBhJ,KAAK8J,KAAK5C,EAAK6B,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK8B,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKoC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKqC,IAAQ,GACvBnJ,KAAK8J,KAAK/C,EAAKmC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKoC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK0C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK2C,IAAQ,GACvBtJ,KAAK8J,KAAKlD,EAAKyC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK0C,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKgD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKiD,IAAQ,GACvBzJ,KAAK8J,KAAKrD,EAAK+C,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAS9K,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKuD,IAAQ,GACvB5J,KAAK8J,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKsD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAKhC,KAAK8J,KAAKjC,EAAKS,GAEpBvC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKU,IACRvI,KAAK8J,KAAKhC,EAAKQ,GAAQ,EACpC1E,EAAK5D,KAAK8J,KAAKhC,EAAKS,GACpBvG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKe,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKgB,GAAQ,GACvB1I,KAAK8J,KAAKnC,EAAKc,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKe,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKqB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKsB,IAAQ,GACvB7I,KAAK8J,KAAKtC,EAAKoB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKqB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAK2B,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAK4B,IAAQ,GACvBhJ,KAAK8J,KAAKzC,EAAK0B,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAK2B,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKiC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKkC,IAAQ,GACvBnJ,KAAK8J,KAAK5C,EAAKgC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKiC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKuC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKwC,IAAQ,GACvBtJ,KAAK8J,KAAK/C,EAAKsC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKuC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK6C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK8C,IAAQ,GACvBzJ,KAAK8J,KAAKlD,EAAK4C,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAAS/K,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKoD,IAAQ,GACvB5J,KAAK8J,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKmD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAKhC,KAAK8J,KAAKjC,EAAKY,GAEpB1C,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKa,IACR1I,KAAK8J,KAAKhC,EAAKW,GAAQ,EACpC7E,EAAK5D,KAAK8J,KAAKhC,EAAKY,GACpB1G,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKkB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKmB,IAAQ,GACvB7I,KAAK8J,KAAKnC,EAAKiB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKkB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKwB,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKyB,IAAQ,GACvBhJ,KAAK8J,KAAKtC,EAAKuB,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKwB,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAK8B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAK+B,IAAQ,GACvBnJ,KAAK8J,KAAKzC,EAAK6B,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAK8B,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKoC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKqC,IAAQ,GACvBtJ,KAAK8J,KAAK5C,EAAKmC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKoC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK0C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK2C,IAAQ,GACvBzJ,KAAK8J,KAAK/C,EAAKyC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAShL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKiD,IAAQ,GACvB5J,KAAK8J,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKgD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAKhC,KAAK8J,KAAKjC,EAAKe,GAEpB7C,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKgB,KACR7I,KAAK8J,KAAKhC,EAAKc,GAAQ,EACpChF,EAAK5D,KAAK8J,KAAKhC,EAAKe,IACpB7G,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKqB,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKsB,IAAQ,GACvBhJ,KAAK8J,KAAKnC,EAAKoB,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKqB,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAK2B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAK4B,IAAQ,GACvBnJ,KAAK8J,KAAKtC,EAAK0B,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAK2B,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKiC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKkC,IAAQ,GACvBtJ,KAAK8J,KAAKzC,EAAKgC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKiC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKuC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKwC,IAAQ,GACvBzJ,KAAK8J,KAAK5C,EAAKsC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASjL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK8C,IAAQ,GACvB5J,KAAK8J,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK6C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP3I,EAAKhC,KAAK8J,KAAKjC,EAAKkB,IAEpBhD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKmB,KACRhJ,KAAK8J,KAAKhC,EAAKiB,IAAQ,EACpCnF,EAAK5D,KAAK8J,KAAKhC,EAAKkB,IACpBhH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKwB,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKyB,IAAQ,GACvBnJ,KAAK8J,KAAKnC,EAAKuB,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKwB,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAK8B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAK+B,IAAQ,GACvBtJ,KAAK8J,KAAKtC,EAAK6B,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAK8B,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKoC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKqC,IAAQ,GACvBzJ,KAAK8J,KAAKzC,EAAKmC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASlL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK2C,IAAQ,GACvB5J,KAAK8J,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK0C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP5I,EAAKhC,KAAK8J,KAAKjC,EAAKqB,IAEpBnD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKsB,KACRnJ,KAAK8J,KAAKhC,EAAKoB,IAAQ,EACpCtF,EAAK5D,KAAK8J,KAAKhC,EAAKqB,IACpBnH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAK2B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAK4B,IAAQ,GACvBtJ,KAAK8J,KAAKnC,EAAK0B,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAK2B,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKiC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKkC,IAAQ,GACvBzJ,KAAK8J,KAAKtC,EAAKgC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASnL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKwC,IAAQ,GACvB5J,KAAK8J,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKuC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP7I,EAAKhC,KAAK8J,KAAKjC,EAAKwB,IAEpBtD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKyB,KACRtJ,KAAK8J,KAAKhC,EAAKuB,IAAQ,EACpCzF,EAAK5D,KAAK8J,KAAKhC,EAAKwB,IACpBtH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAK8B,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAK+B,IAAQ,GACvBzJ,KAAK8J,KAAKnC,EAAK6B,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASpL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKqC,IAAQ,GACvB5J,KAAK8J,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKoC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP9I,EAAKhC,KAAK8J,KAAKjC,EAAK2B,IAEpBzD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAK4B,KACRzJ,KAAK8J,KAAKhC,EAAK0B,IAAQ,EACpC5F,EAAK5D,KAAK8J,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASrL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKkC,IAAQ,GACvB5J,KAAK8J,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKiC,IAAQ,IAErB7D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAStL,GAJbsC,EAAKhC,KAAK8J,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC5D,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAK+B,KACR5J,KAAK8J,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAjK,IAFAkE,EAAK5D,KAAK8J,KAAKhC,EAAK8B,MAEP7D,IAAQ,IAAO,IAAMiF,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK6D,GACP7D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACE,IAANtL,IACFsG,EAAE,IAAMtG,EACR1N,EAAIrB,UAECqB,CACT,EAgDA,SAASiZ,EAAYpJ,EAAM7M,EAAKhD,GAE9B,OADW,IAAIkZ,GACHC,KAAKtJ,EAAM7M,EAAKhD,EAC9B,CAqBA,SAASkZ,EAAME,EAAGC,GAChBhc,KAAK+b,EAAIA,EACT/b,KAAKgc,EAAIA,CACX,CAxEKrL,KAAK8J,OACRhE,EAAclE,GAiDhB7C,EAAGzP,UAAUgc,MAAQ,SAAgBtW,EAAKhD,GACxC,IAAIV,EACAgJ,EAAMjL,KAAKsB,OAASqE,EAAIrE,OAW5B,OATEW,EADkB,KAAhBjC,KAAKsB,QAAgC,KAAfqE,EAAIrE,OACtBmV,EAAYzW,KAAM2F,EAAKhD,GACpBsI,EAAM,GACTsH,EAAWvS,KAAM2F,EAAKhD,GACnBsI,EAAM,KArDnB,SAAmBuH,EAAM7M,EAAKhD,GAC5BA,EAAImN,SAAWnK,EAAImK,SAAW0C,EAAK1C,SACnCnN,EAAIrB,OAASkR,EAAKlR,OAASqE,EAAIrE,OAI/B,IAFA,IAAIsR,EAAQ,EACRsJ,EAAU,EACLrJ,EAAI,EAAGA,EAAIlQ,EAAIrB,OAAS,EAAGuR,IAAK,CAGvC,IAAIC,EAASoJ,EACbA,EAAU,EAGV,IAFA,IAAInJ,EAAgB,SAARH,EACRI,EAAOrC,KAAK/D,IAAIiG,EAAGlN,EAAIrE,OAAS,GAC3B6J,EAAIwF,KAAKC,IAAI,EAAGiC,EAAIL,EAAKlR,OAAS,GAAI6J,GAAK6H,EAAM7H,IAAK,CAC7D,IAAID,EAAI2H,EAAI1H,EAGRqF,GAFoB,EAAhBgC,EAAKzC,MAAM7E,KACI,EAAfvF,EAAIoK,MAAM5E,IAGdwH,EAAS,SAAJnC,EAGTuC,EAAa,UADbJ,EAAMA,EAAKI,EAAS,GAIpBmJ,IAFApJ,GAHAA,EAAUA,GAAWtC,EAAI,SAAa,GAAM,IAGxBmC,IAAO,IAAO,KAEZ,GACtBG,GAAU,QACZ,CACAnQ,EAAIoN,MAAM8C,GAAKE,EACfH,EAAQE,EACRA,EAASoJ,CACX,CAOA,OANc,IAAVtJ,EACFjQ,EAAIoN,MAAM8C,GAAKD,EAEfjQ,EAAIrB,SAGCqB,EAAI4O,OACb,CAeU4K,CAASnc,KAAM2F,EAAKhD,GAEpBiZ,EAAW5b,KAAM2F,EAAKhD,GAGvBV,CACT,EAUA4Z,EAAK5b,UAAUmc,QAAU,SAAkBC,GAGzC,IAFA,IAAIjI,EAAI,IAAI1S,MAAM2a,GACdC,EAAI5M,EAAGzP,UAAUkU,WAAWkI,GAAK,EAC5BnR,EAAI,EAAGA,EAAImR,EAAGnR,IACrBkJ,EAAElJ,GAAKlL,KAAKuc,OAAOrR,EAAGoR,EAAGD,GAG3B,OAAOjI,CACT,EAGAyH,EAAK5b,UAAUsc,OAAS,SAAiBR,EAAGO,EAAGD,GAC7C,GAAU,IAANN,GAAWA,IAAMM,EAAI,EAAG,OAAON,EAGnC,IADA,IAAIS,EAAK,EACAtR,EAAI,EAAGA,EAAIoR,EAAGpR,IACrBsR,IAAW,EAAJT,IAAWO,EAAIpR,EAAI,EAC1B6Q,IAAM,EAGR,OAAOS,CACT,EAIAX,EAAK5b,UAAUwc,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAInR,EAAI,EAAGA,EAAImR,EAAGnR,IACrB2R,EAAK3R,GAAKyR,EAAID,EAAIxR,IAClB4R,EAAK5R,GAAK0R,EAAIF,EAAIxR,GAEtB,EAEA2Q,EAAK5b,UAAU8c,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtE1c,KAAKyc,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQtM,KAAKuM,IAAI,EAAIvM,KAAKwM,GAAKb,GAC/Bc,EAAQzM,KAAK0M,IAAI,EAAI1M,KAAKwM,GAAKb,GAE1BjN,EAAI,EAAGA,EAAIgN,EAAGhN,GAAKiN,EAI1B,IAHA,IAAIgB,EAASL,EACTM,EAASH,EAEJjS,EAAI,EAAGA,EAAI6R,EAAG7R,IAAK,CAC1B,IAAImC,EAAKuP,EAAKxN,EAAIlE,GACdqS,EAAKV,EAAKzN,EAAIlE,GAEdsS,EAAKZ,EAAKxN,EAAIlE,EAAI6R,GAClBU,EAAKZ,EAAKzN,EAAIlE,EAAI6R,GAElBW,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELd,EAAKxN,EAAIlE,GAAKmC,EAAKmQ,EACnBX,EAAKzN,EAAIlE,GAAKqS,EAAKE,EAEnBb,EAAKxN,EAAIlE,EAAI6R,GAAK1P,EAAKmQ,EACvBX,EAAKzN,EAAIlE,EAAI6R,GAAKQ,EAAKE,EAGnBvS,IAAMmR,IACRqB,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,EAEb,CAGN,EAEA9B,EAAK5b,UAAU2d,YAAc,SAAsBC,EAAGC,GACpD,IAAIzB,EAAqB,EAAjB1L,KAAKC,IAAIkN,EAAGD,GAChBE,EAAU,EAAJ1B,EACNnR,EAAI,EACR,IAAKmR,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BnR,IAGF,OAAO,GAAKA,EAAI,EAAI6S,CACtB,EAEAlC,EAAK5b,UAAU+d,UAAY,SAAoBrB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAInR,EAAI,EAAGA,EAAImR,EAAI,EAAGnR,IAAK,CAC9B,IAAIkJ,EAAIuI,EAAIzR,GAEZyR,EAAIzR,GAAKyR,EAAIN,EAAInR,EAAI,GACrByR,EAAIN,EAAInR,EAAI,GAAKkJ,EAEjBA,EAAIwI,EAAI1R,GAER0R,EAAI1R,IAAM0R,EAAIP,EAAInR,EAAI,GACtB0R,EAAIP,EAAInR,EAAI,IAAMkJ,CACpB,CACF,EAEAyH,EAAK5b,UAAUge,aAAe,SAAuBC,EAAI7B,GAEvD,IADA,IAAIzJ,EAAQ,EACH1H,EAAI,EAAGA,EAAImR,EAAI,EAAGnR,IAAK,CAC9B,IAAImG,EAAoC,KAAhCV,KAAKwN,MAAMD,EAAG,EAAIhT,EAAI,GAAKmR,GACjC1L,KAAKwN,MAAMD,EAAG,EAAIhT,GAAKmR,GACvBzJ,EAEFsL,EAAGhT,GAAS,SAAJmG,EAGNuB,EADEvB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAO6M,CACT,EAEArC,EAAK5b,UAAUme,WAAa,SAAqBF,EAAIjT,EAAK0R,EAAKN,GAE7D,IADA,IAAIzJ,EAAQ,EACH1H,EAAI,EAAGA,EAAID,EAAKC,IACvB0H,GAAyB,EAARsL,EAAGhT,GAEpByR,EAAI,EAAIzR,GAAa,KAAR0H,EAAgBA,KAAkB,GAC/C+J,EAAI,EAAIzR,EAAI,GAAa,KAAR0H,EAAgBA,KAAkB,GAIrD,IAAK1H,EAAI,EAAID,EAAKC,EAAImR,IAAKnR,EACzByR,EAAIzR,GAAK,EAGXlI,EAAiB,IAAV4P,GACP5P,EAA6B,MAAb,KAAR4P,GACV,EAEAiJ,EAAK5b,UAAUoe,KAAO,SAAehC,GAEnC,IADA,IAAIiC,EAAK,IAAI5c,MAAM2a,GACVnR,EAAI,EAAGA,EAAImR,EAAGnR,IACrBoT,EAAGpT,GAAK,EAGV,OAAOoT,CACT,EAEAzC,EAAK5b,UAAU6b,KAAO,SAAeC,EAAGC,EAAGrZ,GACzC,IAAI0Z,EAAI,EAAIrc,KAAK4d,YAAY7B,EAAEza,OAAQ0a,EAAE1a,QAErCob,EAAM1c,KAAKoc,QAAQC,GAEnBkC,EAAIve,KAAKqe,KAAKhC,GAEdM,EAAM,IAAIjb,MAAM2a,GAChBmC,EAAO,IAAI9c,MAAM2a,GACjBoC,EAAO,IAAI/c,MAAM2a,GAEjBqC,EAAO,IAAIhd,MAAM2a,GACjBsC,EAAQ,IAAIjd,MAAM2a,GAClBuC,EAAQ,IAAIld,MAAM2a,GAElBwC,EAAOlc,EAAIoN,MACf8O,EAAKvd,OAAS+a,EAEdrc,KAAKoe,WAAWrC,EAAEhM,MAAOgM,EAAEza,OAAQqb,EAAKN,GACxCrc,KAAKoe,WAAWpC,EAAEjM,MAAOiM,EAAE1a,OAAQod,EAAMrC,GAEzCrc,KAAK+c,UAAUJ,EAAK4B,EAAGC,EAAMC,EAAMpC,EAAGK,GACtC1c,KAAK+c,UAAU2B,EAAMH,EAAGI,EAAOC,EAAOvC,EAAGK,GAEzC,IAAK,IAAIxR,EAAI,EAAGA,EAAImR,EAAGnR,IAAK,CAC1B,IAAIyS,EAAKa,EAAKtT,GAAKyT,EAAMzT,GAAKuT,EAAKvT,GAAK0T,EAAM1T,GAC9CuT,EAAKvT,GAAKsT,EAAKtT,GAAK0T,EAAM1T,GAAKuT,EAAKvT,GAAKyT,EAAMzT,GAC/CsT,EAAKtT,GAAKyS,CACZ,CASA,OAPA3d,KAAKge,UAAUQ,EAAMC,EAAMpC,GAC3Brc,KAAK+c,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGlC,EAAGK,GACvC1c,KAAKge,UAAUa,EAAMN,EAAGlC,GACxBrc,KAAKie,aAAaY,EAAMxC,GAExB1Z,EAAImN,SAAWiM,EAAEjM,SAAWkM,EAAElM,SAC9BnN,EAAIrB,OAASya,EAAEza,OAAS0a,EAAE1a,OACnBqB,EAAI4O,OACb,EAGA7B,EAAGzP,UAAUyQ,IAAM,SAAc/K,GAC/B,IAAIhD,EAAM,IAAI+M,EAAG,MAEjB,OADA/M,EAAIoN,MAAQ,IAAIrO,MAAM1B,KAAKsB,OAASqE,EAAIrE,QACjCtB,KAAKic,MAAMtW,EAAKhD,EACzB,EAGA+M,EAAGzP,UAAU6e,KAAO,SAAenZ,GACjC,IAAIhD,EAAM,IAAI+M,EAAG,MAEjB,OADA/M,EAAIoN,MAAQ,IAAIrO,MAAM1B,KAAKsB,OAASqE,EAAIrE,QACjCsa,EAAW5b,KAAM2F,EAAKhD,EAC/B,EAGA+M,EAAGzP,UAAUwa,KAAO,SAAe9U,GACjC,OAAO3F,KAAKwE,QAAQyX,MAAMtW,EAAK3F,KACjC,EAEA0P,EAAGzP,UAAU4R,MAAQ,SAAgBlM,GACnC3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UAIb,IADA,IAAIiN,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAImG,GAAqB,EAAhBrR,KAAK+P,MAAM7E,IAAUvF,EAC1BgN,GAAU,SAAJtB,IAA0B,SAARuB,GAC5BA,IAAU,GACVA,GAAUvB,EAAI,SAAa,EAE3BuB,GAASD,IAAO,GAChB3S,KAAK+P,MAAM7E,GAAU,SAALyH,CAClB,CAOA,OALc,IAAVC,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,UAGAtB,IACT,EAEA0P,EAAGzP,UAAU8e,KAAO,SAAepZ,GACjC,OAAO3F,KAAKwE,QAAQqN,MAAMlM,EAC5B,EAGA+J,EAAGzP,UAAU+e,IAAM,WACjB,OAAOhf,KAAK0Q,IAAI1Q,KAClB,EAGA0P,EAAGzP,UAAUgf,KAAO,WAClB,OAAOjf,KAAKya,KAAKza,KAAKwE,QACxB,EAGAkL,EAAGzP,UAAU8R,IAAM,SAAcpM,GAC/B,IAAI0L,EAxxCN,SAAqB1L,GAGnB,IAFA,IAAI0L,EAAI,IAAI3P,MAAMiE,EAAI2O,aAEb6B,EAAM,EAAGA,EAAM9E,EAAE/P,OAAQ6U,IAAO,CACvC,IAAI7E,EAAO6E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB9E,EAAE8E,IAAQxQ,EAAIoK,MAAMuB,GAAQ,GAAK8E,KAAWA,CAC9C,CAEA,OAAO/E,CACT,CA6wCU6N,CAAWvZ,GACnB,GAAiB,IAAb0L,EAAE/P,OAAc,OAAO,IAAIoO,EAAG,GAIlC,IADA,IAAIzN,EAAMjC,KACDkL,EAAI,EAAGA,EAAImG,EAAE/P,QACP,IAAT+P,EAAEnG,GADsBA,IAAKjJ,EAAMA,EAAI+c,OAI7C,KAAM9T,EAAImG,EAAE/P,OACV,IAAK,IAAIyS,EAAI9R,EAAI+c,MAAO9T,EAAImG,EAAE/P,OAAQ4J,IAAK6I,EAAIA,EAAEiL,MAClC,IAAT3N,EAAEnG,KAENjJ,EAAMA,EAAIyO,IAAIqD,IAIlB,OAAO9R,CACT,EAGAyN,EAAGzP,UAAUkf,OAAS,SAAiBC,GACrCpc,EAAuB,kBAAToc,GAAqBA,GAAQ,GAC3C,IAGIlU,EAHAsF,EAAI4O,EAAO,GACXpC,GAAKoC,EAAO5O,GAAK,GACjB6O,EAAa,WAAe,GAAK7O,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIoC,EAAQ,EAEZ,IAAK1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAChC,IAAIoU,EAAWtf,KAAK+P,MAAM7E,GAAKmU,EAC3BhP,GAAsB,EAAhBrQ,KAAK+P,MAAM7E,IAAUoU,GAAa9O,EAC5CxQ,KAAK+P,MAAM7E,GAAKmF,EAAIuC,EACpBA,EAAQ0M,IAAc,GAAK9O,CAC7B,CAEIoC,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,SAET,CAEA,GAAU,IAAN0b,EAAS,CACX,IAAK9R,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAChClL,KAAK+P,MAAM7E,EAAI8R,GAAKhd,KAAK+P,MAAM7E,GAGjC,IAAKA,EAAI,EAAGA,EAAI8R,EAAG9R,IACjBlL,KAAK+P,MAAM7E,GAAK,EAGlBlL,KAAKsB,QAAU0b,CACjB,CAEA,OAAOhd,KAAKuR,OACd,EAEA7B,EAAGzP,UAAUsf,MAAQ,SAAgBH,GAGnC,OADApc,EAAyB,IAAlBhD,KAAK8P,UACL9P,KAAKmf,OAAOC,EACrB,EAKA1P,EAAGzP,UAAUgU,OAAS,SAAiBmL,EAAMI,EAAMC,GAEjD,IAAIC,EADJ1c,EAAuB,kBAAToc,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIhP,EAAI4O,EAAO,GACXpC,EAAIrM,KAAK/D,KAAKwS,EAAO5O,GAAK,GAAIxQ,KAAKsB,QACnCqe,EAAO,SAAc,WAAcnP,GAAMA,EACzCoP,EAAcH,EAMlB,GAJAC,GAAK1C,EACL0C,EAAI/O,KAAKC,IAAI,EAAG8O,GAGZE,EAAa,CACf,IAAK,IAAI1U,EAAI,EAAGA,EAAI8R,EAAG9R,IACrB0U,EAAY7P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAEpC0U,EAAYte,OAAS0b,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIhd,KAAKsB,OAAS0b,EAEvB,IADAhd,KAAKsB,QAAU0b,EACV9R,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC3BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,EAAI8R,QAGjChd,KAAK+P,MAAM,GAAK,EAChB/P,KAAKsB,OAAS,EAGhB,IAAIsR,EAAQ,EACZ,IAAK1H,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,IAAgB,IAAV0H,GAAe1H,GAAKwU,GAAIxU,IAAK,CAChE,IAAI0G,EAAuB,EAAhB5R,KAAK+P,MAAM7E,GACtBlL,KAAK+P,MAAM7E,GAAM0H,GAAU,GAAKpC,EAAOoB,IAASpB,EAChDoC,EAAQhB,EAAO+N,CACjB,CAYA,OATIC,GAAyB,IAAVhN,IACjBgN,EAAY7P,MAAM6P,EAAYte,UAAYsR,GAGxB,IAAhB5S,KAAKsB,SACPtB,KAAK+P,MAAM,GAAK,EAChB/P,KAAKsB,OAAS,GAGTtB,KAAKuR,OACd,EAEA7B,EAAGzP,UAAU4f,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAzc,EAAyB,IAAlBhD,KAAK8P,UACL9P,KAAKiU,OAAOmL,EAAMI,EAAMC,EACjC,EAGA/P,EAAGzP,UAAU6f,KAAO,SAAeV,GACjC,OAAOpf,KAAKwE,QAAQ+a,MAAMH,EAC5B,EAEA1P,EAAGzP,UAAU8f,MAAQ,SAAgBX,GACnC,OAAOpf,KAAKwE,QAAQ2a,OAAOC,EAC7B,EAGA1P,EAAGzP,UAAU+f,KAAO,SAAeZ,GACjC,OAAOpf,KAAKwE,QAAQqb,MAAMT,EAC5B,EAEA1P,EAAGzP,UAAUggB,MAAQ,SAAgBb,GACnC,OAAOpf,KAAKwE,QAAQyP,OAAOmL,EAC7B,EAGA1P,EAAGzP,UAAU8U,MAAQ,SAAgBoB,GACnCnT,EAAsB,kBAARmT,GAAoBA,GAAO,GACzC,IAAI3F,EAAI2F,EAAM,GACV6G,GAAK7G,EAAM3F,GAAK,GAChBuD,EAAI,GAAKvD,EAGb,QAAIxQ,KAAKsB,QAAU0b,OAGXhd,KAAK+P,MAAMiN,GAELjJ,EAChB,EAGArE,EAAGzP,UAAUigB,OAAS,SAAiBd,GACrCpc,EAAuB,kBAAToc,GAAqBA,GAAQ,GAC3C,IAAI5O,EAAI4O,EAAO,GACXpC,GAAKoC,EAAO5O,GAAK,GAIrB,GAFAxN,EAAyB,IAAlBhD,KAAK8P,SAAgB,2CAExB9P,KAAKsB,QAAU0b,EACjB,OAAOhd,KAQT,GALU,IAANwQ,GACFwM,IAEFhd,KAAKsB,OAASqP,KAAK/D,IAAIoQ,EAAGhd,KAAKsB,QAErB,IAANkP,EAAS,CACX,IAAImP,EAAO,SAAc,WAAcnP,GAAMA,EAC7CxQ,KAAK+P,MAAM/P,KAAKsB,OAAS,IAAMqe,CACjC,CAEA,OAAO3f,KAAKuR,OACd,EAGA7B,EAAGzP,UAAUkgB,MAAQ,SAAgBf,GACnC,OAAOpf,KAAKwE,QAAQ0b,OAAOd,EAC7B,EAGA1P,EAAGzP,UAAU4U,MAAQ,SAAgBlP,GAGnC,OAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAU3F,KAAKogB,OAAOza,GAGV,IAAlB3F,KAAK8P,SACa,IAAhB9P,KAAKsB,SAAiC,EAAhBtB,KAAK+P,MAAM,IAAUpK,GAC7C3F,KAAK+P,MAAM,GAAKpK,GAAuB,EAAhB3F,KAAK+P,MAAM,IAClC/P,KAAK8P,SAAW,EACT9P,OAGTA,KAAK8P,SAAW,EAChB9P,KAAKogB,MAAMza,GACX3F,KAAK8P,SAAW,EACT9P,MAIFA,KAAK8R,OAAOnM,EACrB,EAEA+J,EAAGzP,UAAU6R,OAAS,SAAiBnM,GACrC3F,KAAK+P,MAAM,IAAMpK,EAGjB,IAAK,IAAIuF,EAAI,EAAGA,EAAIlL,KAAKsB,QAAUtB,KAAK+P,MAAM7E,IAAM,SAAWA,IAC7DlL,KAAK+P,MAAM7E,IAAM,SACbA,IAAMlL,KAAKsB,OAAS,EACtBtB,KAAK+P,MAAM7E,EAAI,GAAK,EAEpBlL,KAAK+P,MAAM7E,EAAI,KAKnB,OAFAlL,KAAKsB,OAASqP,KAAKC,IAAI5Q,KAAKsB,OAAQ4J,EAAI,GAEjClL,IACT,EAGA0P,EAAGzP,UAAUmgB,MAAQ,SAAgBza,GAGnC,GAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAG,OAAO3F,KAAK6U,OAAOlP,GAEhC,GAAsB,IAAlB3F,KAAK8P,SAIP,OAHA9P,KAAK8P,SAAW,EAChB9P,KAAK6U,MAAMlP,GACX3F,KAAK8P,SAAW,EACT9P,KAKT,GAFAA,KAAK+P,MAAM,IAAMpK,EAEG,IAAhB3F,KAAKsB,QAAgBtB,KAAK+P,MAAM,GAAK,EACvC/P,KAAK+P,MAAM,IAAM/P,KAAK+P,MAAM,GAC5B/P,KAAK8P,SAAW,OAGhB,IAAK,IAAI5E,EAAI,EAAGA,EAAIlL,KAAKsB,QAAUtB,KAAK+P,MAAM7E,GAAK,EAAGA,IACpDlL,KAAK+P,MAAM7E,IAAM,SACjBlL,KAAK+P,MAAM7E,EAAI,IAAM,EAIzB,OAAOlL,KAAKuR,OACd,EAEA7B,EAAGzP,UAAUogB,KAAO,SAAe1a,GACjC,OAAO3F,KAAKwE,QAAQqQ,MAAMlP,EAC5B,EAEA+J,EAAGzP,UAAUqgB,KAAO,SAAe3a,GACjC,OAAO3F,KAAKwE,QAAQ4b,MAAMza,EAC5B,EAEA+J,EAAGzP,UAAUsgB,KAAO,WAGlB,OAFAvgB,KAAK8P,SAAW,EAET9P,IACT,EAEA0P,EAAGzP,UAAU0U,IAAM,WACjB,OAAO3U,KAAKwE,QAAQ+b,MACtB,EAEA7Q,EAAGzP,UAAUugB,aAAe,SAAuB7a,EAAK+K,EAAK+P,GAC3D,IACIvV,EAIAmG,EALApG,EAAMtF,EAAIrE,OAASmf,EAGvBzgB,KAAKiS,QAAQhH,GAGb,IAAI2H,EAAQ,EACZ,IAAK1H,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CAC/BmG,GAA6B,EAAxBrR,KAAK+P,MAAM7E,EAAIuV,IAAc7N,EAClC,IAAI9B,GAAwB,EAAfnL,EAAIoK,MAAM7E,IAAUwF,EAEjCkC,IADAvB,GAAa,SAARP,IACS,KAAQA,EAAQ,SAAa,GAC3C9Q,KAAK+P,MAAM7E,EAAIuV,GAAa,SAAJpP,CAC1B,CACA,KAAOnG,EAAIlL,KAAKsB,OAASmf,EAAOvV,IAE9B0H,GADAvB,GAA6B,EAAxBrR,KAAK+P,MAAM7E,EAAIuV,IAAc7N,IACrB,GACb5S,KAAK+P,MAAM7E,EAAIuV,GAAa,SAAJpP,EAG1B,GAAc,IAAVuB,EAAa,OAAO5S,KAAKuR,QAK7B,IAFAvO,GAAkB,IAAX4P,GACPA,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAE3B0H,GADAvB,IAAsB,EAAhBrR,KAAK+P,MAAM7E,IAAU0H,IACd,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJmG,EAIlB,OAFArR,KAAK8P,SAAW,EAET9P,KAAKuR,OACd,EAEA7B,EAAGzP,UAAUygB,SAAW,SAAmB/a,EAAKgb,GAC9C,IAAIF,GAAQzgB,KAAKsB,OAASqE,EAAIrE,QAE1BmR,EAAIzS,KAAKwE,QACTkO,EAAI/M,EAGJib,EAA8B,EAAxBlO,EAAE3C,MAAM2C,EAAEpR,OAAS,GAGf,KADdmf,EAAQ,GADMzgB,KAAKmU,WAAWyM,MAG5BlO,EAAIA,EAAEqN,MAAMU,GACZhO,EAAE0M,OAAOsB,GACTG,EAA8B,EAAxBlO,EAAE3C,MAAM2C,EAAEpR,OAAS,IAI3B,IACIyS,EADA+J,EAAIrL,EAAEnR,OAASoR,EAAEpR,OAGrB,GAAa,QAATqf,EAAgB,EAClB5M,EAAI,IAAIrE,EAAG,OACTpO,OAASwc,EAAI,EACf/J,EAAEhE,MAAQ,IAAIrO,MAAMqS,EAAEzS,QACtB,IAAK,IAAI4J,EAAI,EAAGA,EAAI6I,EAAEzS,OAAQ4J,IAC5B6I,EAAEhE,MAAM7E,GAAK,CAEjB,CAEA,IAAI2V,EAAOpO,EAAEjO,QAAQgc,aAAa9N,EAAG,EAAGoL,GAClB,IAAlB+C,EAAK/Q,WACP2C,EAAIoO,EACA9M,IACFA,EAAEhE,MAAM+N,GAAK,IAIjB,IAAK,IAAI3S,EAAI2S,EAAI,EAAG3S,GAAK,EAAGA,IAAK,CAC/B,IAAI2V,EAAmC,UAAL,EAAxBrO,EAAE1C,MAAM2C,EAAEpR,OAAS6J,KACE,EAA5BsH,EAAE1C,MAAM2C,EAAEpR,OAAS6J,EAAI,IAO1B,IAHA2V,EAAKnQ,KAAK/D,IAAKkU,EAAKF,EAAO,EAAG,UAE9BnO,EAAE+N,aAAa9N,EAAGoO,EAAI3V,GACA,IAAfsH,EAAE3C,UACPgR,IACArO,EAAE3C,SAAW,EACb2C,EAAE+N,aAAa9N,EAAG,EAAGvH,GAChBsH,EAAEW,WACLX,EAAE3C,UAAY,GAGdiE,IACFA,EAAEhE,MAAM5E,GAAK2V,EAEjB,CAWA,OAVI/M,GACFA,EAAExC,QAEJkB,EAAElB,QAGW,QAAToP,GAA4B,IAAVF,GACpBhO,EAAEwB,OAAOwM,GAGJ,CACLM,IAAKhN,GAAK,KACVpC,IAAKc,EAET,EAMA/C,EAAGzP,UAAU+gB,OAAS,SAAiBrb,EAAKgb,EAAMM,GAGhD,OAFAje,GAAQ2C,EAAIyN,UAERpT,KAAKoT,SACA,CACL2N,IAAK,IAAIrR,EAAG,GACZiC,IAAK,IAAIjC,EAAG,IAKM,IAAlB1P,KAAK8P,UAAmC,IAAjBnK,EAAImK,UAC7B7N,EAAMjC,KAAKmV,MAAM6L,OAAOrb,EAAKgb,GAEhB,QAATA,IACFI,EAAM9e,EAAI8e,IAAI5L,OAGH,QAATwL,IACFhP,EAAM1P,EAAI0P,IAAIwD,MACV8L,GAA6B,IAAjBtP,EAAI7B,UAClB6B,EAAI0E,KAAK1Q,IAIN,CACLob,IAAKA,EACLpP,IAAKA,IAIa,IAAlB3R,KAAK8P,UAAmC,IAAjBnK,EAAImK,UAC7B7N,EAAMjC,KAAKghB,OAAOrb,EAAIwP,MAAOwL,GAEhB,QAATA,IACFI,EAAM9e,EAAI8e,IAAI5L,OAGT,CACL4L,IAAKA,EACLpP,IAAK1P,EAAI0P,MAI0B,KAAlC3R,KAAK8P,SAAWnK,EAAImK,WACvB7N,EAAMjC,KAAKmV,MAAM6L,OAAOrb,EAAIwP,MAAOwL,GAEtB,QAATA,IACFhP,EAAM1P,EAAI0P,IAAIwD,MACV8L,GAA6B,IAAjBtP,EAAI7B,UAClB6B,EAAI2E,KAAK3Q,IAIN,CACLob,IAAK9e,EAAI8e,IACTpP,IAAKA,IAOLhM,EAAIrE,OAAStB,KAAKsB,QAAUtB,KAAK+Q,IAAIpL,GAAO,EACvC,CACLob,IAAK,IAAIrR,EAAG,GACZiC,IAAK3R,MAKU,IAAf2F,EAAIrE,OACO,QAATqf,EACK,CACLI,IAAK/gB,KAAKkhB,KAAKvb,EAAIoK,MAAM,IACzB4B,IAAK,MAII,QAATgP,EACK,CACLI,IAAK,KACLpP,IAAK,IAAIjC,EAAG1P,KAAKqT,KAAK1N,EAAIoK,MAAM,MAI7B,CACLgR,IAAK/gB,KAAKkhB,KAAKvb,EAAIoK,MAAM,IACzB4B,IAAK,IAAIjC,EAAG1P,KAAKqT,KAAK1N,EAAIoK,MAAM,MAI7B/P,KAAK0gB,SAAS/a,EAAKgb,GAlF1B,IAAII,EAAKpP,EAAK1P,CAmFhB,EAGAyN,EAAGzP,UAAU8gB,IAAM,SAAcpb,GAC/B,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAOob,GACxC,EAGArR,EAAGzP,UAAU0R,IAAM,SAAchM,GAC/B,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAOgM,GACxC,EAEAjC,EAAGzP,UAAUkhB,KAAO,SAAexb,GACjC,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAMgM,GACvC,EAGAjC,EAAGzP,UAAUmhB,SAAW,SAAmBzb,GACzC,IAAI0b,EAAKrhB,KAAKghB,OAAOrb,GAGrB,GAAI0b,EAAG1P,IAAIyB,SAAU,OAAOiO,EAAGN,IAE/B,IAAIpP,EAA0B,IAApB0P,EAAGN,IAAIjR,SAAiBuR,EAAG1P,IAAI2E,KAAK3Q,GAAO0b,EAAG1P,IAEpD2P,EAAO3b,EAAIsa,MAAM,GACjBsB,EAAK5b,EAAIqO,MAAM,GACfjD,EAAMY,EAAIZ,IAAIuQ,GAGlB,OAAIvQ,EAAM,GAAY,IAAPwQ,GAAoB,IAARxQ,EAAkBsQ,EAAGN,IAGrB,IAApBM,EAAGN,IAAIjR,SAAiBuR,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIlM,MAAM,EAChE,EAEAnF,EAAGzP,UAAUoT,KAAO,SAAe1N,GACjC3C,EAAO2C,GAAO,UAId,IAHA,IAAI0J,GAAK,GAAK,IAAM1J,EAEhB6b,EAAM,EACDtW,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IACpCsW,GAAOnS,EAAImS,GAAuB,EAAhBxhB,KAAK+P,MAAM7E,KAAWvF,EAG1C,OAAO6b,CACT,EAGA9R,EAAGzP,UAAUqT,MAAQ,SAAgB3N,GACnC3C,EAAO2C,GAAO,UAGd,IADA,IAAIiN,EAAQ,EACH1H,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACzC,IAAImG,GAAqB,EAAhBrR,KAAK+P,MAAM7E,IAAkB,SAAR0H,EAC9B5S,KAAK+P,MAAM7E,GAAMmG,EAAI1L,EAAO,EAC5BiN,EAAQvB,EAAI1L,CACd,CAEA,OAAO3F,KAAKuR,OACd,EAEA7B,EAAGzP,UAAUihB,KAAO,SAAevb,GACjC,OAAO3F,KAAKwE,QAAQ8O,MAAM3N,EAC5B,EAEA+J,EAAGzP,UAAUwhB,KAAO,SAAepS,GACjCrM,EAAsB,IAAfqM,EAAES,UACT9M,GAAQqM,EAAE+D,UAEV,IAAI2I,EAAI/b,KACJgc,EAAI3M,EAAE7K,QAGRuX,EADiB,IAAfA,EAAEjM,SACAiM,EAAEoF,KAAK9R,GAEP0M,EAAEvX,QAaR,IATA,IAAIkd,EAAI,IAAIhS,EAAG,GACXiS,EAAI,IAAIjS,EAAG,GAGXkS,EAAI,IAAIlS,EAAG,GACXmS,EAAI,IAAInS,EAAG,GAEXoS,EAAI,EAED/F,EAAEgG,UAAY/F,EAAE+F,UACrBhG,EAAE9H,OAAO,GACT+H,EAAE/H,OAAO,KACP6N,EAMJ,IAHA,IAAIE,EAAKhG,EAAExX,QACPyd,EAAKlG,EAAEvX,SAEHuX,EAAE3I,UAAU,CAClB,IAAK,IAAIlI,EAAI,EAAGgX,EAAK,EAAyB,KAArBnG,EAAEhM,MAAM,GAAKmS,IAAahX,EAAI,KAAMA,EAAGgX,IAAO,GACvE,GAAIhX,EAAI,EAEN,IADA6Q,EAAE9H,OAAO/I,GACFA,KAAM,IACPwW,EAAES,SAAWR,EAAEQ,WACjBT,EAAErL,KAAK2L,GACPL,EAAErL,KAAK2L,IAGTP,EAAEzN,OAAO,GACT0N,EAAE1N,OAAO,GAIb,IAAK,IAAI9I,EAAI,EAAGiX,EAAK,EAAyB,KAArBpG,EAAEjM,MAAM,GAAKqS,IAAajX,EAAI,KAAMA,EAAGiX,IAAO,GACvE,GAAIjX,EAAI,EAEN,IADA6Q,EAAE/H,OAAO9I,GACFA,KAAM,IACPyW,EAAEO,SAAWN,EAAEM,WACjBP,EAAEvL,KAAK2L,GACPH,EAAEvL,KAAK2L,IAGTL,EAAE3N,OAAO,GACT4N,EAAE5N,OAAO,GAIT8H,EAAEhL,IAAIiL,IAAM,GACdD,EAAEzF,KAAK0F,GACP0F,EAAEpL,KAAKsL,GACPD,EAAErL,KAAKuL,KAEP7F,EAAE1F,KAAKyF,GACP6F,EAAEtL,KAAKoL,GACPG,EAAEvL,KAAKqL,GAEX,CAEA,MAAO,CACLlP,EAAGmP,EACHlP,EAAGmP,EACHQ,IAAKrG,EAAEmD,OAAO2C,GAElB,EAKApS,EAAGzP,UAAUqiB,OAAS,SAAiBjT,GACrCrM,EAAsB,IAAfqM,EAAES,UACT9M,GAAQqM,EAAE+D,UAEV,IAAIX,EAAIzS,KACJ0S,EAAIrD,EAAE7K,QAGRiO,EADiB,IAAfA,EAAE3C,SACA2C,EAAE0O,KAAK9R,GAEPoD,EAAEjO,QAQR,IALA,IAuCIvC,EAvCAsgB,EAAK,IAAI7S,EAAG,GACZ8S,EAAK,IAAI9S,EAAG,GAEZ+S,EAAQ/P,EAAElO,QAEPiO,EAAEiQ,KAAK,GAAK,GAAKhQ,EAAEgQ,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIxX,EAAI,EAAGgX,EAAK,EAAyB,KAArBzP,EAAE1C,MAAM,GAAKmS,IAAahX,EAAI,KAAMA,EAAGgX,IAAO,GACvE,GAAIhX,EAAI,EAEN,IADAuH,EAAEwB,OAAO/I,GACFA,KAAM,GACPqX,EAAGJ,SACLI,EAAGlM,KAAKoM,GAGVF,EAAGtO,OAAO,GAId,IAAK,IAAI9I,EAAI,EAAGiX,EAAK,EAAyB,KAArB1P,EAAE3C,MAAM,GAAKqS,IAAajX,EAAI,KAAMA,EAAGiX,IAAO,GACvE,GAAIjX,EAAI,EAEN,IADAuH,EAAEuB,OAAO9I,GACFA,KAAM,GACPqX,EAAGL,SACLK,EAAGnM,KAAKoM,GAGVD,EAAGvO,OAAO,GAIVxB,EAAE1B,IAAI2B,IAAM,GACdD,EAAE6D,KAAK5D,GACP6P,EAAGjM,KAAKkM,KAER9P,EAAE4D,KAAK7D,GACP+P,EAAGlM,KAAKiM,GAEZ,CAaA,OATEtgB,EADgB,IAAdwQ,EAAEiQ,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKhH,GAGJpN,CACT,EAEAyN,EAAGzP,UAAUoiB,IAAM,SAAc1c,GAC/B,GAAI3F,KAAKoT,SAAU,OAAOzN,EAAIgP,MAC9B,GAAIhP,EAAIyN,SAAU,OAAOpT,KAAK2U,MAE9B,IAAIlC,EAAIzS,KAAKwE,QACTkO,EAAI/M,EAAInB,QACZiO,EAAE3C,SAAW,EACb4C,EAAE5C,SAAW,EAGb,IAAK,IAAI2Q,EAAQ,EAAGhO,EAAEsP,UAAYrP,EAAEqP,SAAUtB,IAC5ChO,EAAEwB,OAAO,GACTvB,EAAEuB,OAAO,GAGX,OAAG,CACD,KAAOxB,EAAEsP,UACPtP,EAAEwB,OAAO,GAEX,KAAOvB,EAAEqP,UACPrP,EAAEuB,OAAO,GAGX,IAAIzD,EAAIiC,EAAE1B,IAAI2B,GACd,GAAIlC,EAAI,EAAG,CAET,IAAI4D,EAAI3B,EACRA,EAAIC,EACJA,EAAI0B,CACN,MAAO,GAAU,IAAN5D,GAAyB,IAAdkC,EAAEgQ,KAAK,GAC3B,MAGFjQ,EAAE6D,KAAK5D,EACT,CAEA,OAAOA,EAAEyM,OAAOsB,EAClB,EAGA/Q,EAAGzP,UAAU0iB,KAAO,SAAehd,GACjC,OAAO3F,KAAKyhB,KAAK9b,GAAK8M,EAAE0O,KAAKxb,EAC/B,EAEA+J,EAAGzP,UAAU8hB,OAAS,WACpB,OAA+B,KAAP,EAAhB/hB,KAAK+P,MAAM,GACrB,EAEAL,EAAGzP,UAAUkiB,MAAQ,WACnB,OAA+B,KAAP,EAAhBniB,KAAK+P,MAAM,GACrB,EAGAL,EAAGzP,UAAU+T,MAAQ,SAAgBrO,GACnC,OAAO3F,KAAK+P,MAAM,GAAKpK,CACzB,EAGA+J,EAAGzP,UAAU2iB,MAAQ,SAAgBzM,GACnCnT,EAAsB,kBAARmT,GACd,IAAI3F,EAAI2F,EAAM,GACV6G,GAAK7G,EAAM3F,GAAK,GAChBuD,EAAI,GAAKvD,EAGb,GAAIxQ,KAAKsB,QAAU0b,EAGjB,OAFAhd,KAAKiS,QAAQ+K,EAAI,GACjBhd,KAAK+P,MAAMiN,IAAMjJ,EACV/T,KAKT,IADA,IAAI4S,EAAQmB,EACH7I,EAAI8R,EAAa,IAAVpK,GAAe1H,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACnD,IAAImG,EAAoB,EAAhBrR,KAAK+P,MAAM7E,GAEnB0H,GADAvB,GAAKuB,KACS,GACdvB,GAAK,SACLrR,KAAK+P,MAAM7E,GAAKmG,CAClB,CAKA,OAJc,IAAVuB,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,UAEAtB,IACT,EAEA0P,EAAGzP,UAAUmT,OAAS,WACpB,OAAuB,IAAhBpT,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,EACzC,EAEAL,EAAGzP,UAAUyiB,KAAO,SAAe/c,GACjC,IAOI1D,EAPA6N,EAAWnK,EAAM,EAErB,GAAsB,IAAlB3F,KAAK8P,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB9P,KAAK8P,UAAkBA,EAAU,OAAO,EAK5C,GAHA9P,KAAKuR,QAGDvR,KAAKsB,OAAS,EAChBW,EAAM,MACD,CACD6N,IACFnK,GAAOA,GAGT3C,EAAO2C,GAAO,SAAW,qBAEzB,IAAI0L,EAAoB,EAAhBrR,KAAK+P,MAAM,GACnB9N,EAAMoP,IAAM1L,EAAM,EAAI0L,EAAI1L,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlB3F,KAAK8P,SAA8B,GAAN7N,EAC1BA,CACT,EAMAyN,EAAGzP,UAAU8Q,IAAM,SAAcpL,GAC/B,GAAsB,IAAlB3F,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAAgB,OAAQ,EACvD,GAAsB,IAAlB9P,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAAgB,OAAO,EAEtD,IAAI7N,EAAMjC,KAAK6iB,KAAKld,GACpB,OAAsB,IAAlB3F,KAAK8P,SAA8B,GAAN7N,EAC1BA,CACT,EAGAyN,EAAGzP,UAAU4iB,KAAO,SAAeld,GAEjC,GAAI3F,KAAKsB,OAASqE,EAAIrE,OAAQ,OAAO,EACrC,GAAItB,KAAKsB,OAASqE,EAAIrE,OAAQ,OAAQ,EAGtC,IADA,IAAIW,EAAM,EACDiJ,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACzC,IAAIuH,EAAoB,EAAhBzS,KAAK+P,MAAM7E,GACfwH,EAAmB,EAAf/M,EAAIoK,MAAM7E,GAElB,GAAIuH,IAAMC,EAAV,CACID,EAAIC,EACNzQ,GAAO,EACEwQ,EAAIC,IACbzQ,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAyN,EAAGzP,UAAU6iB,IAAM,SAAcnd,GAC/B,OAA0B,IAAnB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAU8iB,GAAK,SAAapd,GAC7B,OAAyB,IAAlB3F,KAAK+Q,IAAIpL,EAClB,EAEA+J,EAAGzP,UAAU+iB,KAAO,SAAerd,GACjC,OAAO3F,KAAK0iB,KAAK/c,IAAQ,CAC3B,EAEA+J,EAAGzP,UAAUgjB,IAAM,SAActd,GAC/B,OAAO3F,KAAK+Q,IAAIpL,IAAQ,CAC1B,EAEA+J,EAAGzP,UAAUijB,IAAM,SAAcvd,GAC/B,OAA2B,IAApB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAUkjB,GAAK,SAAaxd,GAC7B,OAA0B,IAAnB3F,KAAK+Q,IAAIpL,EAClB,EAEA+J,EAAGzP,UAAUmjB,KAAO,SAAezd,GACjC,OAAO3F,KAAK0iB,KAAK/c,IAAQ,CAC3B,EAEA+J,EAAGzP,UAAUojB,IAAM,SAAc1d,GAC/B,OAAO3F,KAAK+Q,IAAIpL,IAAQ,CAC1B,EAEA+J,EAAGzP,UAAUqjB,IAAM,SAAc3d,GAC/B,OAA0B,IAAnB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAUsjB,GAAK,SAAa5d,GAC7B,OAAyB,IAAlB3F,KAAK+Q,IAAIpL,EAClB,EAMA+J,EAAGM,IAAM,SAAcrK,GACrB,OAAO,IAAI6d,EAAI7d,EACjB,EAEA+J,EAAGzP,UAAUwjB,MAAQ,SAAgBC,GAGnC,OAFA1gB,GAAQhD,KAAKgQ,IAAK,yCAClBhN,EAAyB,IAAlBhD,KAAK8P,SAAgB,iCACrB4T,EAAIC,UAAU3jB,MAAM4jB,UAAUF,EACvC,EAEAhU,EAAGzP,UAAU4jB,QAAU,WAErB,OADA7gB,EAAOhD,KAAKgQ,IAAK,wDACVhQ,KAAKgQ,IAAI8T,YAAY9jB,KAC9B,EAEA0P,EAAGzP,UAAU2jB,UAAY,SAAoBF,GAE3C,OADA1jB,KAAKgQ,IAAM0T,EACJ1jB,IACT,EAEA0P,EAAGzP,UAAU8jB,SAAW,SAAmBL,GAEzC,OADA1gB,GAAQhD,KAAKgQ,IAAK,yCACXhQ,KAAK4jB,UAAUF,EACxB,EAEAhU,EAAGzP,UAAU+jB,OAAS,SAAiBre,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIuG,IAAIvW,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUgkB,QAAU,SAAkBte,GAEvC,OADA3C,EAAOhD,KAAKgQ,IAAK,uCACVhQ,KAAKgQ,IAAIqG,KAAKrW,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUikB,OAAS,SAAiBve,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIwG,IAAIxW,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUkkB,QAAU,SAAkBxe,GAEvC,OADA3C,EAAOhD,KAAKgQ,IAAK,uCACVhQ,KAAKgQ,IAAIsG,KAAKtW,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUmkB,OAAS,SAAiBze,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIqU,IAAIrkB,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUqkB,OAAS,SAAiB3e,GAGrC,OAFA3C,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAIuU,SAASvkB,KAAM2F,GACjB3F,KAAKgQ,IAAIU,IAAI1Q,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUukB,QAAU,SAAkB7e,GAGvC,OAFA3C,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAIuU,SAASvkB,KAAM2F,GACjB3F,KAAKgQ,IAAIyK,KAAKza,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUwkB,OAAS,WAGpB,OAFAzhB,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAIgP,IAAIhf,KACtB,EAEA0P,EAAGzP,UAAU0kB,QAAU,WAGrB,OAFA3hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAIiP,KAAKjf,KACvB,EAGA0P,EAAGzP,UAAU2kB,QAAU,WAGrB,OAFA5hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI6U,KAAK7kB,KACvB,EAEA0P,EAAGzP,UAAU6kB,QAAU,WAGrB,OAFA9hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI2S,KAAK3iB,KACvB,EAGA0P,EAAGzP,UAAU8kB,OAAS,WAGpB,OAFA/hB,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAImF,IAAInV,KACtB,EAEA0P,EAAGzP,UAAU+kB,OAAS,SAAiBrf,GAGrC,OAFA3C,EAAOhD,KAAKgQ,MAAQrK,EAAIqK,IAAK,qBAC7BhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI+B,IAAI/R,KAAM2F,EAC5B,EAGA,IAAIsf,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQxlB,EAAMuP,GAErBrP,KAAKF,KAAOA,EACZE,KAAKqP,EAAI,IAAIK,EAAGL,EAAG,IACnBrP,KAAK6d,EAAI7d,KAAKqP,EAAEiF,YAChBtU,KAAK6S,EAAI,IAAInD,EAAG,GAAGyP,OAAOnf,KAAK6d,GAAGvH,KAAKtW,KAAKqP,GAE5CrP,KAAKuM,IAAMvM,KAAKulB,MAClB,CAgDA,SAASC,IACPF,EAAO/kB,KACLP,KACA,OACA,0EACJ,CA8DA,SAASylB,IACPH,EAAO/kB,KACLP,KACA,OACA,iEACJ,CAGA,SAAS0lB,IACPJ,EAAO/kB,KACLP,KACA,OACA,wDACJ,CAGA,SAAS2lB,IAEPL,EAAO/kB,KACLP,KACA,QACA,sEACJ,CA6CA,SAASwjB,EAAK1F,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI8H,EAAQlW,EAAGmW,OAAO/H,GACtB9d,KAAK8d,EAAI8H,EAAMvW,EACfrP,KAAK4lB,MAAQA,CACf,MACE5iB,EAAO8a,EAAEgF,IAAI,GAAI,kCACjB9iB,KAAK8d,EAAIA,EACT9d,KAAK4lB,MAAQ,IAEjB,CAgOA,SAASE,EAAMhI,GACb0F,EAAIjjB,KAAKP,KAAM8d,GAEf9d,KAAKygB,MAAQzgB,KAAK8d,EAAExJ,YAChBtU,KAAKygB,MAAQ,KAAO,IACtBzgB,KAAKygB,OAAS,GAAMzgB,KAAKygB,MAAQ,IAGnCzgB,KAAKwQ,EAAI,IAAId,EAAG,GAAGyP,OAAOnf,KAAKygB,OAC/BzgB,KAAKuhB,GAAKvhB,KAAK+lB,KAAK/lB,KAAKwQ,EAAEwO,OAC3Bhf,KAAKgmB,KAAOhmB,KAAKwQ,EAAE8R,OAAOtiB,KAAK8d,GAE/B9d,KAAKimB,KAAOjmB,KAAKgmB,KAAKtV,IAAI1Q,KAAKwQ,GAAG4P,MAAM,GAAGW,IAAI/gB,KAAK8d,GACpD9d,KAAKimB,KAAOjmB,KAAKimB,KAAK9E,KAAKnhB,KAAKwQ,GAChCxQ,KAAKimB,KAAOjmB,KAAKwQ,EAAEgG,IAAIxW,KAAKimB,KAC9B,CA7aAX,EAAOrlB,UAAUslB,KAAO,WACtB,IAAIhZ,EAAM,IAAImD,EAAG,MAEjB,OADAnD,EAAIwD,MAAQ,IAAIrO,MAAMiP,KAAKS,KAAKpR,KAAK6d,EAAI,KAClCtR,CACT,EAEA+Y,EAAOrlB,UAAUimB,QAAU,SAAkBvgB,GAG3C,IACIwgB,EADA3V,EAAI7K,EAGR,GACE3F,KAAKmN,MAAMqD,EAAGxQ,KAAKuM,KAGnB4Z,GADA3V,GADAA,EAAIxQ,KAAKomB,MAAM5V,IACT6F,KAAKrW,KAAKuM,MACP+H,kBACF6R,EAAOnmB,KAAK6d,GAErB,IAAI9M,EAAMoV,EAAOnmB,KAAK6d,GAAK,EAAIrN,EAAEqS,KAAK7iB,KAAKqP,GAgB3C,OAfY,IAAR0B,GACFP,EAAET,MAAM,GAAK,EACbS,EAAElP,OAAS,GACFyP,EAAM,EACfP,EAAE8F,KAAKtW,KAAKqP,QAEInH,IAAZsI,EAAEe,MAEJf,EAAEe,QAGFf,EAAE6V,SAIC7V,CACT,EAEA8U,EAAOrlB,UAAUkN,MAAQ,SAAgBrH,EAAOnD,GAC9CmD,EAAMmO,OAAOjU,KAAK6d,EAAG,EAAGlb,EAC1B,EAEA2iB,EAAOrlB,UAAUmmB,MAAQ,SAAgBzgB,GACvC,OAAOA,EAAI8U,KAAKza,KAAK6S,EACvB,EAQAjT,EAAS4lB,EAAMF,GAEfE,EAAKvlB,UAAUkN,MAAQ,SAAgBrH,EAAOwgB,GAK5C,IAHA,IAAI3G,EAAO,QAEP4G,EAAS5V,KAAK/D,IAAI9G,EAAMxE,OAAQ,GAC3B4J,EAAI,EAAGA,EAAIqb,EAAQrb,IAC1Bob,EAAOvW,MAAM7E,GAAKpF,EAAMiK,MAAM7E,GAIhC,GAFAob,EAAOhlB,OAASilB,EAEZzgB,EAAMxE,QAAU,EAGlB,OAFAwE,EAAMiK,MAAM,GAAK,OACjBjK,EAAMxE,OAAS,GAKjB,IAAIqI,EAAO7D,EAAMiK,MAAM,GAGvB,IAFAuW,EAAOvW,MAAMuW,EAAOhlB,UAAYqI,EAAOgW,EAElCzU,EAAI,GAAIA,EAAIpF,EAAMxE,OAAQ4J,IAAK,CAClC,IAAIsb,EAAwB,EAAjB1gB,EAAMiK,MAAM7E,GACvBpF,EAAMiK,MAAM7E,EAAI,KAAQsb,EAAO7G,IAAS,EAAMhW,IAAS,GACvDA,EAAO6c,CACT,CACA7c,KAAU,GACV7D,EAAMiK,MAAM7E,EAAI,IAAMvB,EACT,IAATA,GAAc7D,EAAMxE,OAAS,GAC/BwE,EAAMxE,QAAU,GAEhBwE,EAAMxE,QAAU,CAEpB,EAEAkkB,EAAKvlB,UAAUmmB,MAAQ,SAAgBzgB,GAErCA,EAAIoK,MAAMpK,EAAIrE,QAAU,EACxBqE,EAAIoK,MAAMpK,EAAIrE,OAAS,GAAK,EAC5BqE,EAAIrE,QAAU,EAId,IADA,IAAIqR,EAAK,EACAzH,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CACnC,IAAImG,EAAmB,EAAf1L,EAAIoK,MAAM7E,GAClByH,GAAU,IAAJtB,EACN1L,EAAIoK,MAAM7E,GAAU,SAALyH,EACfA,EAAS,GAAJtB,GAAasB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BhN,EAAIoK,MAAMpK,EAAIrE,OAAS,KACzBqE,EAAIrE,SAC8B,IAA9BqE,EAAIoK,MAAMpK,EAAIrE,OAAS,IACzBqE,EAAIrE,UAGDqE,CACT,EAQA/F,EAAS6lB,EAAMH,GAQf1lB,EAAS8lB,EAAMJ,GASf1lB,EAAS+lB,EAAQL,GAEjBK,EAAO1lB,UAAUmmB,MAAQ,SAAgBzgB,GAGvC,IADA,IAAIiN,EAAQ,EACH1H,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CACnC,IAAIqJ,EAA0B,IAAL,EAAf5O,EAAIoK,MAAM7E,IAAiB0H,EACjCD,EAAU,SAAL4B,EACTA,KAAQ,GAER5O,EAAIoK,MAAM7E,GAAKyH,EACfC,EAAQ2B,CACV,CAIA,OAHc,IAAV3B,IACFjN,EAAIoK,MAAMpK,EAAIrE,UAAYsR,GAErBjN,CACT,EAGA+J,EAAGmW,OAAS,SAAgB/lB,GAE1B,GAAImlB,EAAOnlB,GAAO,OAAOmlB,EAAOnlB,GAEhC,IAAI8lB,EACJ,GAAa,SAAT9lB,EACF8lB,EAAQ,IAAIJ,OACP,GAAa,SAAT1lB,EACT8lB,EAAQ,IAAIH,OACP,GAAa,SAAT3lB,EACT8lB,EAAQ,IAAIF,MACP,IAAa,WAAT5lB,EAGT,MAAM,IAAI0F,MAAM,iBAAmB1F,GAFnC8lB,EAAQ,IAAID,CAGd,CAGA,OAFAV,EAAOnlB,GAAQ8lB,EAERA,CACT,EAiBApC,EAAIvjB,UAAUykB,SAAW,SAAmBjS,GAC1CzP,EAAsB,IAAfyP,EAAE3C,SAAgB,iCACzB9M,EAAOyP,EAAEzC,IAAK,kCAChB,EAEAwT,EAAIvjB,UAAUskB,SAAW,SAAmB9R,EAAGC,GAC7C1P,EAAqC,KAA7ByP,EAAE3C,SAAW4C,EAAE5C,UAAiB,iCACxC9M,EAAOyP,EAAEzC,KAAOyC,EAAEzC,MAAQ0C,EAAE1C,IAC1B,kCACJ,EAEAwT,EAAIvjB,UAAU8lB,KAAO,SAAetT,GAClC,OAAIzS,KAAK4lB,MAAc5lB,KAAK4lB,MAAMM,QAAQzT,GAAGmR,UAAU5jB,MAChDyS,EAAE0O,KAAKnhB,KAAK8d,GAAG8F,UAAU5jB,KAClC,EAEAwjB,EAAIvjB,UAAUkV,IAAM,SAAc1C,GAChC,OAAIA,EAAEW,SACGX,EAAEjO,QAGJxE,KAAK8d,EAAEtH,IAAI/D,GAAGmR,UAAU5jB,KACjC,EAEAwjB,EAAIvjB,UAAUsW,IAAM,SAAc9D,EAAGC,GACnC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE8D,IAAI7D,GAIhB,OAHIzQ,EAAI8O,IAAI/Q,KAAK8d,IAAM,GACrB7b,EAAIqU,KAAKtW,KAAK8d,GAET7b,EAAI2hB,UAAU5jB,KACvB,EAEAwjB,EAAIvjB,UAAUoW,KAAO,SAAe5D,EAAGC,GACrC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE4D,KAAK3D,GAIjB,OAHIzQ,EAAI8O,IAAI/Q,KAAK8d,IAAM,GACrB7b,EAAIqU,KAAKtW,KAAK8d,GAET7b,CACT,EAEAuhB,EAAIvjB,UAAUuW,IAAM,SAAc/D,EAAGC,GACnC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE+D,IAAI9D,GAIhB,OAHIzQ,EAAIygB,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKrW,KAAK8d,GAET7b,EAAI2hB,UAAU5jB,KACvB,EAEAwjB,EAAIvjB,UAAUqW,KAAO,SAAe7D,EAAGC,GACrC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE6D,KAAK5D,GAIjB,OAHIzQ,EAAIygB,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKrW,KAAK8d,GAET7b,CACT,EAEAuhB,EAAIvjB,UAAUokB,IAAM,SAAc5R,EAAG9M,GAEnC,OADA3F,KAAK0kB,SAASjS,GACPzS,KAAK+lB,KAAKtT,EAAEsN,MAAMpa,GAC3B,EAEA6d,EAAIvjB,UAAUwa,KAAO,SAAehI,EAAGC,GAErC,OADA1S,KAAKukB,SAAS9R,EAAGC,GACV1S,KAAK+lB,KAAKtT,EAAEgI,KAAK/H,GAC1B,EAEA8Q,EAAIvjB,UAAUyQ,IAAM,SAAc+B,EAAGC,GAEnC,OADA1S,KAAKukB,SAAS9R,EAAGC,GACV1S,KAAK+lB,KAAKtT,EAAE/B,IAAIgC,GACzB,EAEA8Q,EAAIvjB,UAAUgf,KAAO,SAAexM,GAClC,OAAOzS,KAAKya,KAAKhI,EAAGA,EAAEjO,QACxB,EAEAgf,EAAIvjB,UAAU+e,IAAM,SAAcvM,GAChC,OAAOzS,KAAK0Q,IAAI+B,EAAGA,EACrB,EAEA+Q,EAAIvjB,UAAU4kB,KAAO,SAAepS,GAClC,GAAIA,EAAEW,SAAU,OAAOX,EAAEjO,QAEzB,IAAIiiB,EAAOzmB,KAAK8d,EAAE9J,MAAM,GAIxB,GAHAhR,EAAOyjB,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI1U,EAAM/R,KAAK8d,EAAEvH,IAAI,IAAI7G,EAAG,IAAIuE,OAAO,GACvC,OAAOjU,KAAK+R,IAAIU,EAAGV,EACrB,CAOA,IAFA,IAAIgC,EAAI/T,KAAK8d,EAAEwC,KAAK,GAChBtD,EAAI,GACAjJ,EAAEX,UAA2B,IAAfW,EAAEC,MAAM,IAC5BgJ,IACAjJ,EAAEE,OAAO,GAEXjR,GAAQ+Q,EAAEX,UAEV,IAAIsT,EAAM,IAAIhX,EAAG,GAAG+T,MAAMzjB,MACtB2mB,EAAOD,EAAI3B,SAIX6B,EAAO5mB,KAAK8d,EAAEwC,KAAK,GAAGrM,OAAO,GAC7B4S,EAAI7mB,KAAK8d,EAAExJ,YAGf,IAFAuS,EAAI,IAAInX,EAAG,EAAImX,EAAIA,GAAGpD,MAAMzjB,MAEW,IAAhCA,KAAK+R,IAAI8U,EAAGD,GAAM7V,IAAI4V,IAC3BE,EAAE5C,QAAQ0C,GAOZ,IAJA,IAAItW,EAAIrQ,KAAK+R,IAAI8U,EAAG9S,GAChBvD,EAAIxQ,KAAK+R,IAAIU,EAAGsB,EAAEsM,KAAK,GAAGpM,OAAO,IACjCG,EAAIpU,KAAK+R,IAAIU,EAAGsB,GAChB+J,EAAId,EACc,IAAf5I,EAAErD,IAAI2V,IAAY,CAEvB,IADA,IAAIna,EAAM6H,EACDlJ,EAAI,EAAoB,IAAjBqB,EAAIwE,IAAI2V,GAAYxb,IAClCqB,EAAMA,EAAIkY,SAEZzhB,EAAOkI,EAAI4S,GACX,IAAIpL,EAAI1S,KAAK+R,IAAI1B,EAAG,IAAIX,EAAG,GAAGyP,OAAOrB,EAAI5S,EAAI,IAE7CsF,EAAIA,EAAE8T,OAAO5R,GACbrC,EAAIqC,EAAE+R,SACNrQ,EAAIA,EAAEkQ,OAAOjU,GACbyN,EAAI5S,CACN,CAEA,OAAOsF,CACT,EAEAgT,EAAIvjB,UAAU0iB,KAAO,SAAelQ,GAClC,IAAIqU,EAAMrU,EAAE6P,OAAOtiB,KAAK8d,GACxB,OAAqB,IAAjBgJ,EAAIhX,UACNgX,EAAIhX,SAAW,EACR9P,KAAK+lB,KAAKe,GAAK/B,UAEf/kB,KAAK+lB,KAAKe,EAErB,EAEAtD,EAAIvjB,UAAU8R,IAAM,SAAcU,EAAG9M,GACnC,GAAIA,EAAIyN,SAAU,OAAO,IAAI1D,EAAG,GAAG+T,MAAMzjB,MACzC,GAAoB,IAAhB2F,EAAI+c,KAAK,GAAU,OAAOjQ,EAAEjO,QAEhC,IACIuiB,EAAM,IAAIrlB,MAAM,IACpBqlB,EAAI,GAAK,IAAIrX,EAAG,GAAG+T,MAAMzjB,MACzB+mB,EAAI,GAAKtU,EACT,IAAK,IAAIvH,EAAI,EAAGA,EAAI6b,EAAIzlB,OAAQ4J,IAC9B6b,EAAI7b,GAAKlL,KAAK0Q,IAAIqW,EAAI7b,EAAI,GAAIuH,GAGhC,IAAIxQ,EAAM8kB,EAAI,GACVC,EAAU,EACVC,EAAa,EACbtgB,EAAQhB,EAAI2O,YAAc,GAK9B,IAJc,IAAV3N,IACFA,EAAQ,IAGLuE,EAAIvF,EAAIrE,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAI0G,EAAOjM,EAAIoK,MAAM7E,GACZC,EAAIxE,EAAQ,EAAGwE,GAAK,EAAGA,IAAK,CACnC,IAAIgL,EAAOvE,GAAQzG,EAAK,EACpBlJ,IAAQ8kB,EAAI,KACd9kB,EAAMjC,KAAKgf,IAAI/c,IAGL,IAARkU,GAAyB,IAAZ6Q,GAKjBA,IAAY,EACZA,GAAW7Q,GA9BE,MA+Bb8Q,GACwC,IAAN/b,GAAiB,IAANC,KAE7ClJ,EAAMjC,KAAK0Q,IAAIzO,EAAK8kB,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAtgB,EAAQ,EACV,CAEA,OAAO1E,CACT,EAEAuhB,EAAIvjB,UAAU0jB,UAAY,SAAoBhe,GAC5C,IAAI6K,EAAI7K,EAAIwb,KAAKnhB,KAAK8d,GAEtB,OAAOtN,IAAM7K,EAAM6K,EAAEhM,QAAUgM,CACjC,EAEAgT,EAAIvjB,UAAU6jB,YAAc,SAAsBne,GAChD,IAAI1D,EAAM0D,EAAInB,QAEd,OADAvC,EAAI+N,IAAM,KACH/N,CACT,EAMAyN,EAAGwX,KAAO,SAAevhB,GACvB,OAAO,IAAImgB,EAAKngB,EAClB,EAkBA/F,EAASkmB,EAAMtC,GAEfsC,EAAK7lB,UAAU0jB,UAAY,SAAoBhe,GAC7C,OAAO3F,KAAK+lB,KAAKpgB,EAAIoa,MAAM/f,KAAKygB,OAClC,EAEAqF,EAAK7lB,UAAU6jB,YAAc,SAAsBne,GACjD,IAAI6K,EAAIxQ,KAAK+lB,KAAKpgB,EAAI+K,IAAI1Q,KAAKgmB,OAE/B,OADAxV,EAAER,IAAM,KACDQ,CACT,EAEAsV,EAAK7lB,UAAUwa,KAAO,SAAehI,EAAGC,GACtC,GAAID,EAAEW,UAAYV,EAAEU,SAGlB,OAFAX,EAAE1C,MAAM,GAAK,EACb0C,EAAEnR,OAAS,EACJmR,EAGT,IAAI2B,EAAI3B,EAAEgI,KAAK/H,GACXrC,EAAI+D,EAAE+L,MAAMngB,KAAKygB,OAAO/P,IAAI1Q,KAAKimB,MAAM/F,OAAOlgB,KAAKygB,OAAO/P,IAAI1Q,KAAK8d,GACnEqJ,EAAI/S,EAAEkC,KAAKjG,GAAG4D,OAAOjU,KAAKygB,OAC1Bxe,EAAMklB,EAQV,OANIA,EAAEpW,IAAI/Q,KAAK8d,IAAM,EACnB7b,EAAMklB,EAAE7Q,KAAKtW,KAAK8d,GACTqJ,EAAEzE,KAAK,GAAK,IACrBzgB,EAAMklB,EAAE9Q,KAAKrW,KAAK8d,IAGb7b,EAAI2hB,UAAU5jB,KACvB,EAEA8lB,EAAK7lB,UAAUyQ,IAAM,SAAc+B,EAAGC,GACpC,GAAID,EAAEW,UAAYV,EAAEU,SAAU,OAAO,IAAI1D,EAAG,GAAGkU,UAAU5jB,MAEzD,IAAIoU,EAAI3B,EAAE/B,IAAIgC,GACVrC,EAAI+D,EAAE+L,MAAMngB,KAAKygB,OAAO/P,IAAI1Q,KAAKimB,MAAM/F,OAAOlgB,KAAKygB,OAAO/P,IAAI1Q,KAAK8d,GACnEqJ,EAAI/S,EAAEkC,KAAKjG,GAAG4D,OAAOjU,KAAKygB,OAC1Bxe,EAAMklB,EAOV,OANIA,EAAEpW,IAAI/Q,KAAK8d,IAAM,EACnB7b,EAAMklB,EAAE7Q,KAAKtW,KAAK8d,GACTqJ,EAAEzE,KAAK,GAAK,IACrBzgB,EAAMklB,EAAE9Q,KAAKrW,KAAK8d,IAGb7b,EAAI2hB,UAAU5jB,KACvB,EAEA8lB,EAAK7lB,UAAU0iB,KAAO,SAAelQ,GAGnC,OADUzS,KAAK+lB,KAAKtT,EAAE6P,OAAOtiB,KAAK8d,GAAGpN,IAAI1Q,KAAKuhB,KACnCqC,UAAU5jB,KACvB,CACD,CAr3GD,YAq3G4CA,uBCr3G5C,IAAIwQ,EASJ,SAAS4W,EAAKC,GACZrnB,KAAKqnB,KAAOA,CACd,CAkBA,GA3BA/iB,EAAOjF,QAAU,SAAc4L,GAI7B,OAHKuF,IACHA,EAAI,IAAI4W,EAAK,OAER5W,EAAE8W,SAASrc,EACpB,EAKA3G,EAAOjF,QAAQ+nB,KAAOA,EAEtBA,EAAKnnB,UAAUqnB,SAAW,SAAkBrc,GAC1C,OAAOjL,KAAKunB,MAAMtc,EACpB,EAGAmc,EAAKnnB,UAAUsnB,MAAQ,SAAe1J,GACpC,GAAI7d,KAAKqnB,KAAKG,SACZ,OAAOxnB,KAAKqnB,KAAKG,SAAS3J,GAG5B,IADA,IAAI5b,EAAM,IAAIwlB,WAAW5J,GAChB3S,EAAI,EAAGA,EAAIjJ,EAAIX,OAAQ4J,IAC9BjJ,EAAIiJ,GAAKlL,KAAKqnB,KAAKK,UACrB,OAAOzlB,CACT,EAEoB,kBAATuQ,KACLA,KAAKmV,QAAUnV,KAAKmV,OAAOC,gBAE7BR,EAAKnnB,UAAUsnB,MAAQ,SAAe1J,GACpC,IAAIgK,EAAM,IAAIJ,WAAW5J,GAEzB,OADArL,KAAKmV,OAAOC,gBAAgBC,GACrBA,CACT,EACSrV,KAAKsV,UAAYtV,KAAKsV,SAASF,gBAExCR,EAAKnnB,UAAUsnB,MAAQ,SAAe1J,GACpC,IAAIgK,EAAM,IAAIJ,WAAW5J,GAEzB,OADArL,KAAKsV,SAASF,gBAAgBC,GACvBA,CACT,EAG2B,kBAAX3X,SAEhBkX,EAAKnnB,UAAUsnB,MAAQ,WACrB,MAAM,IAAI/hB,MAAM,sBAClB,QAIF,IACE,IAAImiB,EAAS,EAAQ,OACrB,GAAkC,oBAAvBA,EAAOI,YAChB,MAAM,IAAIviB,MAAM,iBAElB4hB,EAAKnnB,UAAUsnB,MAAQ,SAAe1J,GACpC,OAAO8J,EAAOI,YAAYlK,EAC5B,CACF,CAAE,MAAOzd,GACT,mBC1DF,IAAIc,EAAS,gBAEb,SAAS8mB,EAAend,GACjB3J,EAAOE,SAASyJ,KAAMA,EAAM3J,EAAO+mB,KAAKpd,IAK7C,IAHA,IAAII,EAAOJ,EAAIvJ,OAAS,EAAK,EACzBqB,EAAM,IAAIjB,MAAMuJ,GAEXC,EAAI,EAAGA,EAAID,EAAKC,IACvBvI,EAAIuI,GAAKL,EAAIqd,aAAiB,EAAJhd,GAG5B,OAAOvI,CACT,CAEA,SAASwlB,EAAUC,GACjB,KAAa,EAAOA,EAAE9mB,OAAQ8mB,IAC5BA,EADW,GACJ,CAEX,CAEA,SAASC,EAAYC,EAAGC,EAAaC,EAASC,EAAMC,GAalD,IAZA,IASIC,EAAIC,EAAIC,EAAIC,EATZC,EAAWP,EAAQ,GACnBQ,EAAWR,EAAQ,GACnBS,EAAWT,EAAQ,GACnBU,EAAWV,EAAQ,GAEnBW,EAAKb,EAAE,GAAKC,EAAY,GACxBa,EAAKd,EAAE,GAAKC,EAAY,GACxBc,EAAKf,EAAE,GAAKC,EAAY,GACxBe,EAAKhB,EAAE,GAAKC,EAAY,GAExBgB,EAAQ,EAEHpL,EAAQ,EAAGA,EAAQuK,EAASvK,IACnCwK,EAAKI,EAASI,IAAO,IAAMH,EAAUI,IAAO,GAAM,KAAQH,EAAUI,IAAO,EAAK,KAAQH,EAAc,IAALI,GAAaf,EAAYgB,KAC1HX,EAAKG,EAASK,IAAO,IAAMJ,EAAUK,IAAO,GAAM,KAAQJ,EAAUK,IAAO,EAAK,KAAQJ,EAAc,IAALC,GAAaZ,EAAYgB,KAC1HV,EAAKE,EAASM,IAAO,IAAML,EAAUM,IAAO,GAAM,KAAQL,EAAUE,IAAO,EAAK,KAAQD,EAAc,IAALE,GAAab,EAAYgB,KAC1HT,EAAKC,EAASO,IAAO,IAAMN,EAAUG,IAAO,GAAM,KAAQF,EAAUG,IAAO,EAAK,KAAQF,EAAc,IAALG,GAAad,EAAYgB,KAC1HJ,EAAKR,EACLS,EAAKR,EACLS,EAAKR,EACLS,EAAKR,EAYP,OATAH,GAAOF,EAAKU,IAAO,KAAO,GAAOV,EAAMW,IAAO,GAAM,MAAS,GAAOX,EAAMY,IAAO,EAAK,MAAS,EAAKZ,EAAU,IAALa,IAAcf,EAAYgB,KACnIX,GAAOH,EAAKW,IAAO,KAAO,GAAOX,EAAMY,IAAO,GAAM,MAAS,GAAOZ,EAAMa,IAAO,EAAK,MAAS,EAAKb,EAAU,IAALU,IAAcZ,EAAYgB,KACnIV,GAAOJ,EAAKY,IAAO,KAAO,GAAOZ,EAAMa,IAAO,GAAM,MAAS,GAAOb,EAAMU,IAAO,EAAK,MAAS,EAAKV,EAAU,IAALW,IAAcb,EAAYgB,KACnIT,GAAOL,EAAKa,IAAO,KAAO,GAAOb,EAAMU,IAAO,GAAM,MAAS,GAAOV,EAAMW,IAAO,EAAK,MAAS,EAAKX,EAAU,IAALY,IAAcd,EAAYgB,KAM5H,CALPZ,KAAY,EACZC,KAAY,EACZC,KAAY,EACZC,KAAY,EAGd,CAGA,IAAIU,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IACpEC,EAAI,WAGN,IADA,IAAIC,EAAI,IAAIhoB,MAAM,KACTyJ,EAAI,EAAGA,EAAI,IAAKA,IAErBue,EAAEve,GADAA,EAAI,IACCA,GAAK,EAEJA,GAAK,EAAK,IAYtB,IARA,IAAIsd,EAAO,GACPkB,EAAW,GACXnB,EAAU,CAAC,GAAI,GAAI,GAAI,IACvBoB,EAAc,CAAC,GAAI,GAAI,GAAI,IAG3B7N,EAAI,EACJ8N,EAAK,EACA3e,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAE5B,IAAI4e,EAAKD,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EACzDC,EAAMA,IAAO,EAAW,IAALA,EAAa,GAChCrB,EAAK1M,GAAK+N,EACVH,EAASG,GAAM/N,EAGf,IAAIyG,EAAKkH,EAAE3N,GACPgO,EAAKL,EAAElH,GACPwH,EAAKN,EAAEK,GAGP3V,EAAa,IAARsV,EAAEI,GAAqB,SAALA,EAC3BtB,EAAQ,GAAGzM,GAAM3H,GAAK,GAAOA,IAAM,EACnCoU,EAAQ,GAAGzM,GAAM3H,GAAK,GAAOA,IAAM,GACnCoU,EAAQ,GAAGzM,GAAM3H,GAAK,EAAMA,IAAM,GAClCoU,EAAQ,GAAGzM,GAAK3H,EAGhBA,EAAU,SAAL4V,EAAwB,MAALD,EAAsB,IAALvH,EAAmB,SAAJzG,EACxD6N,EAAY,GAAGE,GAAO1V,GAAK,GAAOA,IAAM,EACxCwV,EAAY,GAAGE,GAAO1V,GAAK,GAAOA,IAAM,GACxCwV,EAAY,GAAGE,GAAO1V,GAAK,EAAMA,IAAM,GACvCwV,EAAY,GAAGE,GAAM1V,EAEX,IAAN2H,EACFA,EAAI8N,EAAK,GAET9N,EAAIyG,EAAKkH,EAAEA,EAAEA,EAAEM,EAAKxH,KACpBqH,GAAMH,EAAEA,EAAEG,IAEd,CAEA,MAAO,CACLpB,KAAMA,EACNkB,SAAUA,EACVnB,QAASA,EACToB,YAAaA,EAEhB,CA3DO,GA6DR,SAASK,EAAKhmB,GACZjE,KAAKkqB,KAAOlC,EAAc/jB,GAC1BjE,KAAKmqB,QACP,CAEAF,EAAIG,UAAY,GAChBH,EAAII,QAAU,GACdJ,EAAIhqB,UAAUmqB,UAAYH,EAAIG,UAC9BH,EAAIhqB,UAAUoqB,QAAUJ,EAAII,QAC5BJ,EAAIhqB,UAAUkqB,OAAS,WAOrB,IANA,IAAIG,EAAWtqB,KAAKkqB,KAChBG,EAAUC,EAAShpB,OACnBonB,EAAU2B,EAAU,EACpBE,EAAyB,GAAf7B,EAAU,GAEpBH,EAAc,GACT1V,EAAI,EAAGA,EAAIwX,EAASxX,IAC3B0V,EAAY1V,GAAKyX,EAASzX,GAG5B,IAAKA,EAAIwX,EAASxX,EAAI0X,EAAQ1X,IAAK,CACjC,IAAIuB,EAAImU,EAAY1V,EAAI,GAEpBA,EAAIwX,IAAY,GAClBjW,EAAKA,GAAK,EAAMA,IAAM,GACtBA,EACGqV,EAAEhB,KAAKrU,IAAM,KAAO,GACpBqV,EAAEhB,KAAMrU,IAAM,GAAM,MAAS,GAC7BqV,EAAEhB,KAAMrU,IAAM,EAAK,MAAS,EAC5BqV,EAAEhB,KAAS,IAAJrU,GAEVA,GAAKoV,EAAM3W,EAAIwX,EAAW,IAAM,IACvBA,EAAU,GAAKxX,EAAIwX,IAAY,IACxCjW,EACGqV,EAAEhB,KAAKrU,IAAM,KAAO,GACpBqV,EAAEhB,KAAMrU,IAAM,GAAM,MAAS,GAC7BqV,EAAEhB,KAAMrU,IAAM,EAAK,MAAS,EAC5BqV,EAAEhB,KAAS,IAAJrU,IAGZmU,EAAY1V,GAAK0V,EAAY1V,EAAIwX,GAAWjW,CAC9C,CAGA,IADA,IAAIoW,EAAiB,GACZC,EAAK,EAAGA,EAAKF,EAAQE,IAAM,CAClC,IAAIC,EAAMH,EAASE,EACfE,EAAKpC,EAAYmC,GAAOD,EAAK,EAAI,EAAI,IAGvCD,EAAeC,GADbA,EAAK,GAAKC,GAAO,EACEC,EAGnBlB,EAAEG,YAAY,GAAGH,EAAEhB,KAAKkC,IAAO,KAC/BlB,EAAEG,YAAY,GAAGH,EAAEhB,KAAMkC,IAAO,GAAM,MACtClB,EAAEG,YAAY,GAAGH,EAAEhB,KAAMkC,IAAO,EAAK,MACrClB,EAAEG,YAAY,GAAGH,EAAEhB,KAAU,IAALkC,GAE9B,CAEA3qB,KAAK4qB,SAAWlC,EAChB1oB,KAAK6qB,aAAetC,EACpBvoB,KAAK8qB,gBAAkBN,CACzB,EAEAP,EAAIhqB,UAAU8qB,gBAAkB,SAAUzC,GAExC,OAAOD,EADPC,EAAIN,EAAcM,GACGtoB,KAAK6qB,aAAcpB,EAAEjB,QAASiB,EAAEhB,KAAMzoB,KAAK4qB,SAClE,EAEAX,EAAIhqB,UAAU+qB,aAAe,SAAU1C,GACrC,IAAI3lB,EAAM3C,KAAK+qB,gBAAgBzC,GAC3Bzd,EAAM3J,EAAO+pB,YAAY,IAK7B,OAJApgB,EAAIqgB,cAAcvoB,EAAI,GAAI,GAC1BkI,EAAIqgB,cAAcvoB,EAAI,GAAI,GAC1BkI,EAAIqgB,cAAcvoB,EAAI,GAAI,GAC1BkI,EAAIqgB,cAAcvoB,EAAI,GAAI,IACnBkI,CACT,EAEAof,EAAIhqB,UAAUkrB,aAAe,SAAU7C,GAIrC,IAAI8C,GAHJ9C,EAAIN,EAAcM,IAGP,GACXA,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK8C,EAEP,IAAIzoB,EAAM0lB,EAAWC,EAAGtoB,KAAK8qB,gBAAiBrB,EAAEG,YAAaH,EAAEE,SAAU3pB,KAAK4qB,UAC1E/f,EAAM3J,EAAO+pB,YAAY,IAK7B,OAJApgB,EAAIqgB,cAAcvoB,EAAI,GAAI,GAC1BkI,EAAIqgB,cAAcvoB,EAAI,GAAI,GAC1BkI,EAAIqgB,cAAcvoB,EAAI,GAAI,GAC1BkI,EAAIqgB,cAAcvoB,EAAI,GAAI,IACnBkI,CACT,EAEAof,EAAIhqB,UAAUorB,MAAQ,WACpBlD,EAASnoB,KAAK6qB,cACd1C,EAASnoB,KAAK8qB,iBACd3C,EAASnoB,KAAKkqB,KAChB,EAEA5lB,EAAOjF,QAAQ4qB,IAAMA,mBCnOrB,IAAIqB,EAAM,EAAQ,OACdpqB,EAAS,gBACTqqB,EAAY,EAAQ,OACpB3rB,EAAW,EAAQ,OACnB4rB,EAAQ,EAAQ,OAChB1V,EAAM,EAAQ,OACd2V,EAAS,EAAQ,OAqCrB,SAASC,EAAc/K,EAAM1c,EAAK0nB,EAAIC,GACpCL,EAAUhrB,KAAKP,MAEf,IAAI0f,EAAIxe,EAAO2qB,MAAM,EAAG,GAExB7rB,KAAK8rB,QAAU,IAAIR,EAAIrB,IAAIhmB,GAC3B,IAAI8nB,EAAK/rB,KAAK8rB,QAAQd,aAAatL,GACnC1f,KAAKgsB,OAAS,IAAIR,EAAMO,GACxBJ,EA/BF,SAAiBnZ,EAAMmZ,EAAII,GACzB,GAAkB,KAAdJ,EAAGrqB,OAEL,OADAkR,EAAKyZ,OAAS/qB,EAAOiC,OAAO,CAACwoB,EAAIzqB,EAAO+mB,KAAK,CAAC,EAAG,EAAG,EAAG,MAChD/mB,EAAOiC,OAAO,CAACwoB,EAAIzqB,EAAO+mB,KAAK,CAAC,EAAG,EAAG,EAAG,MAElD,IAAIiE,EAAQ,IAAIV,EAAMO,GAClB9gB,EAAM0gB,EAAGrqB,OACT6qB,EAAQlhB,EAAM,GAClBihB,EAAME,OAAOT,GACTQ,IACFA,EAAQ,GAAKA,EACbD,EAAME,OAAOlrB,EAAO2qB,MAAMM,EAAO,KAEnCD,EAAME,OAAOlrB,EAAO2qB,MAAM,EAAG,IAC7B,IAAIQ,EAAe,EAANphB,EACTqhB,EAAOprB,EAAO2qB,MAAM,GACxBS,EAAKC,YAAYF,EAAQ,EAAG,GAC5BH,EAAME,OAAOE,GACb9Z,EAAKyZ,OAASC,EAAM7oB,MACpB,IAAIV,EAAMzB,EAAO+mB,KAAKzV,EAAKyZ,QAE3B,OADAR,EAAO9oB,GACAA,CACT,CASO6pB,CAAOxsB,KAAM2rB,EAAII,GAEtB/rB,KAAKysB,MAAQvrB,EAAO+mB,KAAK0D,GACzB3rB,KAAK0sB,OAASxrB,EAAO+pB,YAAY,GACjCjrB,KAAK2sB,UAAYzrB,EAAO+pB,YAAY,GACpCjrB,KAAK4sB,SAAWhB,EAChB5rB,KAAK6sB,MAAQ,EACb7sB,KAAK8sB,KAAO,EACZ9sB,KAAK+sB,MAAQpM,EAEb3gB,KAAKgtB,SAAW,KAChBhtB,KAAKitB,SAAU,CACjB,CAEArtB,EAAS8rB,EAAcH,GAEvBG,EAAazrB,UAAUitB,QAAU,SAAUC,GACzC,IAAKntB,KAAKitB,SAAWjtB,KAAK6sB,MAAO,CAC/B,IAAIO,EAAO,GAAMptB,KAAK6sB,MAAQ,GAC1BO,EAAO,KACTA,EAAOlsB,EAAO2qB,MAAMuB,EAAM,GAC1BptB,KAAKgsB,OAAOI,OAAOgB,GAEvB,CAEAptB,KAAKitB,SAAU,EACf,IAAItqB,EAAM3C,KAAK+sB,MAAMM,QAAQrtB,KAAMmtB,GAOnC,OANIntB,KAAK4sB,SACP5sB,KAAKgsB,OAAOI,OAAOe,GAEnBntB,KAAKgsB,OAAOI,OAAOzpB,GAErB3C,KAAK8sB,MAAQK,EAAM7rB,OACZqB,CACT,EAEA+oB,EAAazrB,UAAUqtB,OAAS,WAC9B,GAAIttB,KAAK4sB,WAAa5sB,KAAKgtB,SAAU,MAAM,IAAIxnB,MAAM,oDAErD,IAAIhC,EAAMsS,EAAI9V,KAAKgsB,OAAOuB,MAAmB,EAAbvtB,KAAK6sB,MAAuB,EAAZ7sB,KAAK8sB,MAAW9sB,KAAK8rB,QAAQd,aAAahrB,KAAKisB,SAC/F,GAAIjsB,KAAK4sB,UAnFX,SAAkBna,EAAGC,GACnB,IAAI/P,EAAM,EACN8P,EAAEnR,SAAWoR,EAAEpR,QAAQqB,IAG3B,IADA,IAAIsI,EAAM0F,KAAK/D,IAAI6F,EAAEnR,OAAQoR,EAAEpR,QACtB4J,EAAI,EAAGA,EAAID,IAAOC,EACzBvI,GAAQ8P,EAAEvH,GAAKwH,EAAExH,GAGnB,OAAOvI,CACT,CAyEuB6qB,CAAQhqB,EAAKxD,KAAKgtB,UAAW,MAAM,IAAIxnB,MAAM,oDAElExF,KAAKgtB,SAAWxpB,EAChBxD,KAAK8rB,QAAQT,OACf,EAEAK,EAAazrB,UAAUwtB,WAAa,WAClC,GAAIztB,KAAK4sB,WAAa1rB,EAAOE,SAASpB,KAAKgtB,UAAW,MAAM,IAAIxnB,MAAM,mDAEtE,OAAOxF,KAAKgtB,QACd,EAEAtB,EAAazrB,UAAUytB,WAAa,SAAqBlqB,GACvD,IAAKxD,KAAK4sB,SAAU,MAAM,IAAIpnB,MAAM,mDAEpCxF,KAAKgtB,SAAWxpB,CAClB,EAEAkoB,EAAazrB,UAAU0tB,OAAS,SAAiB9iB,GAC/C,GAAI7K,KAAKitB,QAAS,MAAM,IAAIznB,MAAM,8CAElCxF,KAAKgsB,OAAOI,OAAOvhB,GACnB7K,KAAK6sB,OAAShiB,EAAIvJ,MACpB,EAEAgD,EAAOjF,QAAUqsB,kBCpHjB,IAAIkC,EAAU,EAAQ,OAClBC,EAAY,EAAQ,OACpBC,EAAQ,EAAQ,MAMpBzuB,EAAQ0uB,aAAe1uB,EAAQ2uB,OAASJ,EAAQG,aAChD1uB,EAAQ4uB,eAAiB5uB,EAAQ6uB,SAAWN,EAAQK,eACpD5uB,EAAQ8uB,eAAiB9uB,EAAQ+uB,SAAWP,EAAUM,eACtD9uB,EAAQgvB,iBAAmBhvB,EAAQivB,WAAaT,EAAUQ,iBAC1DhvB,EAAQkvB,YAAclvB,EAAQmvB,WAR9B,WACE,OAAOlpB,OAAOC,KAAKuoB,EACrB,mBCNA,IAAIW,EAAa,EAAQ,OACrBvtB,EAAS,gBACTwtB,EAAQ,EAAQ,KAChBhD,EAAe,EAAQ,OACvBH,EAAY,EAAQ,OACpBD,EAAM,EAAQ,OACdqD,EAAO,EAAQ,OAGnB,SAASP,EAAUzN,EAAM1c,EAAK0nB,GAC5BJ,EAAUhrB,KAAKP,MAEfA,KAAK0sB,OAAS,IAAIkC,EAClB5uB,KAAK6uB,WAAQ,EACb7uB,KAAK8rB,QAAU,IAAIR,EAAIrB,IAAIhmB,GAC3BjE,KAAKysB,MAAQvrB,EAAO+mB,KAAK0D,GACzB3rB,KAAK+sB,MAAQpM,EACb3gB,KAAK8uB,cAAe,CACtB,CA8BA,SAASF,IACP5uB,KAAK+uB,MAAQ7tB,EAAO+pB,YAAY,EAClC,CA6CA,SAASoD,EAAkBW,EAAOC,EAAUtD,GAC1C,IAAIuD,EAASR,EAAMM,EAAMG,eACzB,IAAKD,EAAQ,MAAM,IAAIE,UAAU,sBAGjC,GADkB,kBAAPzD,IAAiBA,EAAKzqB,EAAO+mB,KAAK0D,IACzB,QAAhBuD,EAAOvO,MAAkBgL,EAAGrqB,SAAW4tB,EAAOvD,GAAI,MAAM,IAAIyD,UAAU,qBAAuBzD,EAAGrqB,QAGpG,GADwB,kBAAb2tB,IAAuBA,EAAW/tB,EAAO+mB,KAAKgH,IACrDA,EAAS3tB,SAAW4tB,EAAOjrB,IAAM,EAAG,MAAM,IAAImrB,UAAU,sBAAwBH,EAAS3tB,QAE7F,MAAoB,WAAhB4tB,EAAOpnB,KACF,IAAI4jB,EAAawD,EAAO5qB,OAAQ2qB,EAAUtD,GAAI,GAC5B,SAAhBuD,EAAOpnB,KACT,IAAI2mB,EAAWS,EAAO5qB,OAAQ2qB,EAAUtD,GAAI,GAG9C,IAAIyC,EAASc,EAAO5qB,OAAQ2qB,EAAUtD,EAC/C,CAzGe,EAAQ,MAavB/rB,CAASwuB,EAAU7C,GAEnB6C,EAASnuB,UAAUitB,QAAU,SAAUtsB,GAErC,IAAIusB,EACAkC,EAFJrvB,KAAK0sB,OAAOnW,IAAI3V,GAIhB,IADA,IAAI+B,EAAM,GACFwqB,EAAQntB,KAAK0sB,OAAO4C,IAAItvB,KAAK8uB,eACnCO,EAAQrvB,KAAK+sB,MAAMnB,QAAQ5rB,KAAMmtB,GACjCxqB,EAAIkC,KAAKwqB,GAEX,OAAOnuB,EAAOiC,OAAOR,EACvB,EAEAyrB,EAASnuB,UAAUqtB,OAAS,WAC1B,IAAIH,EAAQntB,KAAK0sB,OAAO6C,QACxB,GAAIvvB,KAAK8uB,aACP,OA0CJ,SAAgBU,GACd,IAAIC,EAASD,EAAK,IAClB,GAAIC,EAAS,GAAKA,EAAS,GACzB,MAAM,IAAIjqB,MAAM,0BAElB,IAAI0F,GAAK,EACT,OAASA,EAAIukB,GACX,GAAID,EAAMtkB,GAAK,GAAKukB,MAAcA,EAChC,MAAM,IAAIjqB,MAAM,0BAGpB,GAAe,KAAXiqB,EAAe,OAEnB,OAAOD,EAAK/sB,MAAM,EAAG,GAAKgtB,EAC5B,CAxDWC,CAAM1vB,KAAK+sB,MAAMnB,QAAQ5rB,KAAMmtB,IACjC,GAAIA,EACT,MAAM,IAAI3nB,MAAM,oCAEpB,EAEA4oB,EAASnuB,UAAU0vB,eAAiB,SAAUC,GAE5C,OADA5vB,KAAK8uB,eAAiBc,EACf5vB,IACT,EAMA4uB,EAAS3uB,UAAUsW,IAAM,SAAU3V,GACjCZ,KAAK+uB,MAAQ7tB,EAAOiC,OAAO,CAACnD,KAAK+uB,MAAOnuB,GAC1C,EAEAguB,EAAS3uB,UAAUqvB,IAAM,SAAUO,GACjC,IAAIltB,EACJ,GAAIktB,GACF,GAAI7vB,KAAK+uB,MAAMztB,OAAS,GAGtB,OAFAqB,EAAM3C,KAAK+uB,MAAMtsB,MAAM,EAAG,IAC1BzC,KAAK+uB,MAAQ/uB,KAAK+uB,MAAMtsB,MAAM,IACvBE,OAGT,GAAI3C,KAAK+uB,MAAMztB,QAAU,GAGvB,OAFAqB,EAAM3C,KAAK+uB,MAAMtsB,MAAM,EAAG,IAC1BzC,KAAK+uB,MAAQ/uB,KAAK+uB,MAAMtsB,MAAM,IACvBE,EAIX,OAAO,IACT,EAEAisB,EAAS3uB,UAAUsvB,MAAQ,WACzB,GAAIvvB,KAAK+uB,MAAMztB,OAAQ,OAAOtB,KAAK+uB,KACrC,EA6CA1vB,EAAQ8uB,eARR,SAAyBa,EAAOC,GAC9B,IAAIC,EAASR,EAAMM,EAAMG,eACzB,IAAKD,EAAQ,MAAM,IAAIE,UAAU,sBAEjC,IAAI7pB,EAAOopB,EAAKM,GAAU,EAAOC,EAAOjrB,IAAKirB,EAAOvD,IACpD,OAAO0C,EAAiBW,EAAOzpB,EAAKtB,IAAKsB,EAAKomB,GAChD,EAGAtsB,EAAQgvB,iBAAmBA,mBC3H3B,IAAIK,EAAQ,EAAQ,KAChBD,EAAa,EAAQ,OACrBvtB,EAAS,gBACTwqB,EAAe,EAAQ,OACvBH,EAAY,EAAQ,OACpBD,EAAM,EAAQ,OACdqD,EAAO,EAAQ,OAGnB,SAASX,EAAQrN,EAAM1c,EAAK0nB,GAC1BJ,EAAUhrB,KAAKP,MAEfA,KAAK0sB,OAAS,IAAIkC,EAClB5uB,KAAK8rB,QAAU,IAAIR,EAAIrB,IAAIhmB,GAC3BjE,KAAKysB,MAAQvrB,EAAO+mB,KAAK0D,GACzB3rB,KAAK+sB,MAAQpM,EACb3gB,KAAK8uB,cAAe,CACtB,CAVe,EAAQ,MAYvBlvB,CAASouB,EAAQzC,GAEjByC,EAAO/tB,UAAUitB,QAAU,SAAUtsB,GAEnC,IAAIusB,EACAkC,EAFJrvB,KAAK0sB,OAAOnW,IAAI3V,GAKhB,IAFA,IAAI+B,EAAM,GAEFwqB,EAAQntB,KAAK0sB,OAAO4C,OAC1BD,EAAQrvB,KAAK+sB,MAAMM,QAAQrtB,KAAMmtB,GACjCxqB,EAAIkC,KAAKwqB,GAGX,OAAOnuB,EAAOiC,OAAOR,EACvB,EAEA,IAAImtB,EAAU5uB,EAAO2qB,MAAM,GAAI,IAqB/B,SAAS+C,IACP5uB,KAAK+uB,MAAQ7tB,EAAO+pB,YAAY,EAClC,CA2BA,SAASgD,EAAgBe,EAAOC,EAAUtD,GACxC,IAAIuD,EAASR,EAAMM,EAAMG,eACzB,IAAKD,EAAQ,MAAM,IAAIE,UAAU,sBAGjC,GADwB,kBAAbH,IAAuBA,EAAW/tB,EAAO+mB,KAAKgH,IACrDA,EAAS3tB,SAAW4tB,EAAOjrB,IAAM,EAAG,MAAM,IAAImrB,UAAU,sBAAwBH,EAAS3tB,QAG7F,GADkB,kBAAPqqB,IAAiBA,EAAKzqB,EAAO+mB,KAAK0D,IACzB,QAAhBuD,EAAOvO,MAAkBgL,EAAGrqB,SAAW4tB,EAAOvD,GAAI,MAAM,IAAIyD,UAAU,qBAAuBzD,EAAGrqB,QAEpG,MAAoB,WAAhB4tB,EAAOpnB,KACF,IAAI4jB,EAAawD,EAAO5qB,OAAQ2qB,EAAUtD,GACxB,SAAhBuD,EAAOpnB,KACT,IAAI2mB,EAAWS,EAAO5qB,OAAQ2qB,EAAUtD,GAG1C,IAAIqC,EAAOkB,EAAO5qB,OAAQ2qB,EAAUtD,EAC7C,CAjEAqC,EAAO/tB,UAAUqtB,OAAS,WACxB,IAAIH,EAAQntB,KAAK0sB,OAAO6C,QACxB,GAAIvvB,KAAK8uB,aAGP,OAFA3B,EAAQntB,KAAK+sB,MAAMM,QAAQrtB,KAAMmtB,GACjCntB,KAAK8rB,QAAQT,QACN8B,EAGT,IAAKA,EAAM4C,OAAOD,GAEhB,MADA9vB,KAAK8rB,QAAQT,QACP,IAAI7lB,MAAM,oCAEpB,EAEAwoB,EAAO/tB,UAAU0vB,eAAiB,SAAUC,GAE1C,OADA5vB,KAAK8uB,eAAiBc,EACf5vB,IACT,EAMA4uB,EAAS3uB,UAAUsW,IAAM,SAAU3V,GACjCZ,KAAK+uB,MAAQ7tB,EAAOiC,OAAO,CAACnD,KAAK+uB,MAAOnuB,GAC1C,EAEAguB,EAAS3uB,UAAUqvB,IAAM,WACvB,GAAItvB,KAAK+uB,MAAMztB,OAAS,GAAI,CAC1B,IAAIqB,EAAM3C,KAAK+uB,MAAMtsB,MAAM,EAAG,IAE9B,OADAzC,KAAK+uB,MAAQ/uB,KAAK+uB,MAAMtsB,MAAM,IACvBE,CACT,CACA,OAAO,IACT,EAEAisB,EAAS3uB,UAAUsvB,MAAQ,WAKzB,IAJA,IAAItkB,EAAM,GAAKjL,KAAK+uB,MAAMztB,OACtB0uB,EAAU9uB,EAAO+pB,YAAYhgB,GAE7BC,GAAK,IACAA,EAAID,GACX+kB,EAAQC,WAAWhlB,EAAKC,GAG1B,OAAOhK,EAAOiC,OAAO,CAACnD,KAAK+uB,MAAOiB,GACpC,EA6BA3wB,EAAQ4uB,eAAiBA,EACzB5uB,EAAQ0uB,aATR,SAAuBiB,EAAOC,GAC5B,IAAIC,EAASR,EAAMM,EAAMG,eACzB,IAAKD,EAAQ,MAAM,IAAIE,UAAU,sBAEjC,IAAI7pB,EAAOopB,EAAKM,GAAU,EAAOC,EAAOjrB,IAAKirB,EAAOvD,IACpD,OAAOsC,EAAee,EAAOzpB,EAAKtB,IAAKsB,EAAKomB,GAC9C,mBC9GA,IAAIzqB,EAAS,gBACTgvB,EAAShvB,EAAO2qB,MAAM,GAAI,GAW9B,SAASsE,EAAWxtB,GAClB,IAAIkI,EAAM3J,EAAO+pB,YAAY,IAK7B,OAJApgB,EAAIqgB,cAAcvoB,EAAI,KAAO,EAAG,GAChCkI,EAAIqgB,cAAcvoB,EAAI,KAAO,EAAG,GAChCkI,EAAIqgB,cAAcvoB,EAAI,KAAO,EAAG,GAChCkI,EAAIqgB,cAAcvoB,EAAI,KAAO,EAAG,IACzBkI,CACT,CAEA,SAAS2gB,EAAOvnB,GACdjE,KAAK0f,EAAIzb,EACTjE,KAAKqD,MAAQnC,EAAO2qB,MAAM,GAAI,GAC9B7rB,KAAK+uB,MAAQ7tB,EAAO+pB,YAAY,EAClC,CAIAO,EAAMvrB,UAAUisB,MAAQ,SAAUkE,GAEhC,IADA,IAAIllB,GAAK,IACAA,EAAIklB,EAAM9uB,QACjBtB,KAAKqD,MAAM6H,IAAMklB,EAAMllB,GAEzBlL,KAAKqwB,WACP,EAEA7E,EAAMvrB,UAAUowB,UAAY,WAK1B,IAJA,IAnCgBxlB,EAqCZM,EAAOmlB,EAFPC,EAlCG,EADS1lB,EAmCC7K,KAAK0f,GAjChBwI,aAAa,GACjBrd,EAAIqd,aAAa,GACjBrd,EAAIqd,aAAa,GACjBrd,EAAIqd,aAAa,KA+BfsI,EAAK,CAAC,EAAG,EAAG,EAAG,GAEftlB,GAAK,IACAA,EAAI,KAAK,CAchB,IAbwD,KAAlDlL,KAAKqD,SAAS6H,EAAI,IAAO,GAAM,EAAKA,EAAI,KAG5CslB,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,IAIdD,EAAwB,KAAP,EAARC,EAAG,IAGPplB,EAAI,EAAGA,EAAI,EAAGA,IACjBolB,EAAGplB,GAAMolB,EAAGplB,KAAO,GAAmB,EAAZolB,EAAGplB,EAAI,KAAW,GAE9ColB,EAAG,GAAKA,EAAG,KAAO,EAGdD,IACFC,EAAG,GAAKA,EAAG,GAAM,KAAQ,GAE7B,CACAvwB,KAAKqD,MAAQ8sB,EAAUK,EACzB,EAEAhF,EAAMvrB,UAAUmsB,OAAS,SAAUvhB,GAEjC,IAAIsiB,EACJ,IAFAntB,KAAK+uB,MAAQ7tB,EAAOiC,OAAO,CAACnD,KAAK+uB,MAAOlkB,IAEjC7K,KAAK+uB,MAAMztB,QAAU,IAC1B6rB,EAAQntB,KAAK+uB,MAAMtsB,MAAM,EAAG,IAC5BzC,KAAK+uB,MAAQ/uB,KAAK+uB,MAAMtsB,MAAM,IAC9BzC,KAAKksB,MAAMiB,EAEf,EAEA3B,EAAMvrB,UAAUstB,MAAQ,SAAUkD,EAAKC,GAMrC,OALI1wB,KAAK+uB,MAAMztB,QACbtB,KAAKksB,MAAMhrB,EAAOiC,OAAO,CAACnD,KAAK+uB,MAAOmB,GAAS,KAGjDlwB,KAAKksB,MAAMiE,EAAU,CAAC,EAAGM,EAAK,EAAGC,KAC1B1wB,KAAKqD,KACd,EAEAiB,EAAOjF,QAAUmsB,aC1EjBlnB,EAAOjF,QAdP,SAAiBssB,GAGf,IAFA,IACI9pB,EADAoJ,EAAM0gB,EAAGrqB,OAEN2J,KAAO,CAEZ,GAAa,OADbpJ,EAAO8pB,EAAGxpB,UAAU8I,IAGb,CACLpJ,IACA8pB,EAAGsE,WAAWpuB,EAAMoJ,GACpB,KACF,CALE0gB,EAAGsE,WAAW,EAAGhlB,EAMrB,CACF,mBCbA,IAAI6K,EAAM,EAAQ,OAElBzW,EAAQguB,QAAU,SAAU7a,EAAM4d,GAChC,IAAIxvB,EAAOkV,EAAIsa,EAAO5d,EAAKia,OAG3B,OADAja,EAAKia,MAAQja,EAAKsZ,QAAQd,aAAapqB,GAChC4R,EAAKia,KACd,EAEAptB,EAAQusB,QAAU,SAAUpZ,EAAM4d,GAChC,IAAIO,EAAMne,EAAKia,MAEfja,EAAKia,MAAQ2D,EACb,IAAIztB,EAAM6P,EAAKsZ,QAAQX,aAAaiF,GAEpC,OAAOta,EAAInT,EAAKguB,EAClB,mBChBA,IAAIzvB,EAAS,gBACT4U,EAAM,EAAQ,OAElB,SAAS8a,EAAcpe,EAAM5R,EAAMgrB,GACjC,IAAI3gB,EAAMrK,EAAKU,OACXqB,EAAMmT,EAAIlV,EAAM4R,EAAKka,QAGzB,OAFAla,EAAKka,OAASla,EAAKka,OAAOjqB,MAAMwI,GAChCuH,EAAKia,MAAQvrB,EAAOiC,OAAO,CAACqP,EAAKia,MAAOb,EAAUhrB,EAAO+B,IAClDA,CACT,CAEAtD,EAAQguB,QAAU,SAAU7a,EAAM5R,EAAMgrB,GAItC,IAHA,IACI3gB,EADAtI,EAAMzB,EAAO+pB,YAAY,GAGtBrqB,EAAKU,QAAQ,CAMlB,GAL2B,IAAvBkR,EAAKka,OAAOprB,SACdkR,EAAKka,OAASla,EAAKsZ,QAAQd,aAAaxY,EAAKia,OAC7Cja,EAAKia,MAAQvrB,EAAO+pB,YAAY,MAG9BzY,EAAKka,OAAOprB,QAAUV,EAAKU,QAIxB,CACLqB,EAAMzB,EAAOiC,OAAO,CAACR,EAAKiuB,EAAape,EAAM5R,EAAMgrB,KACnD,KACF,CANE3gB,EAAMuH,EAAKka,OAAOprB,OAClBqB,EAAMzB,EAAOiC,OAAO,CAACR,EAAKiuB,EAAape,EAAM5R,EAAK6B,MAAM,EAAGwI,GAAM2gB,KACjEhrB,EAAOA,EAAK6B,MAAMwI,EAKtB,CAEA,OAAOtI,CACT,mBChCA,IAAIzB,EAAS,gBAEb,SAAS2vB,EAAare,EAAMse,EAAWlF,GAMrC,IALA,IAIIzV,EAAK1U,EAHLyJ,GAAK,EAELvI,EAAM,IAEDuI,EAHC,GAKRiL,EAAO2a,EAAa,GAAM,EAAI5lB,EAAO,IAAO,EAE5CvI,IAAiB,KADjBlB,EAFM+Q,EAAKsZ,QAAQd,aAAaxY,EAAKia,OAEzB,GAAKtW,KACUjL,EAAI,EAC/BsH,EAAKia,MAAQsE,EAAQve,EAAKia,MAAOb,EAAUzV,EAAM1U,GAEnD,OAAOkB,CACT,CAEA,SAASouB,EAAS3lB,EAAQ3J,GACxB,IAAIwJ,EAAMG,EAAO9J,OACb4J,GAAK,EACLvI,EAAMzB,EAAO+pB,YAAY7f,EAAO9J,QAGpC,IAFA8J,EAASlK,EAAOiC,OAAO,CAACiI,EAAQlK,EAAO+mB,KAAK,CAACxmB,QAEpCyJ,EAAID,GACXtI,EAAIuI,GAAKE,EAAOF,IAAM,EAAIE,EAAOF,EAAI,IAAM,EAG7C,OAAOvI,CACT,CAEAtD,EAAQguB,QAAU,SAAU7a,EAAM2a,EAAOvB,GAKvC,IAJA,IAAI3gB,EAAMkiB,EAAM7rB,OACZqB,EAAMzB,EAAO+pB,YAAYhgB,GACzBC,GAAK,IAEAA,EAAID,GACXtI,EAAIuI,GAAK2lB,EAAYre,EAAM2a,EAAMjiB,GAAI0gB,GAGvC,OAAOjpB,CACT,mBCzCA,IAAIzB,EAAS,gBAEb,SAAS2vB,EAAare,EAAMse,EAAWlF,GACrC,IACIjpB,EADM6P,EAAKsZ,QAAQd,aAAaxY,EAAKia,OAC3B,GAAKqE,EAOnB,OALAte,EAAKia,MAAQvrB,EAAOiC,OAAO,CACzBqP,EAAKia,MAAMhqB,MAAM,GACjBvB,EAAO+mB,KAAK,CAAC2D,EAAUkF,EAAYnuB,MAG9BA,CACT,CAEAtD,EAAQguB,QAAU,SAAU7a,EAAM2a,EAAOvB,GAKvC,IAJA,IAAI3gB,EAAMkiB,EAAM7rB,OACZqB,EAAMzB,EAAO+pB,YAAYhgB,GACzBC,GAAK,IAEAA,EAAID,GACXtI,EAAIuI,GAAK2lB,EAAYre,EAAM2a,EAAMjiB,GAAI0gB,GAGvC,OAAOjpB,CACT,mBCxBA,IAAImT,EAAM,EAAQ,OACd5U,EAAS,gBACTuqB,EAAS,EAAQ,OAErB,SAASuF,EAAUxe,GACjB,IAAI7P,EAAM6P,EAAKsZ,QAAQf,gBAAgBvY,EAAKia,OAE5C,OADAhB,EAAOjZ,EAAKia,OACL9pB,CACT,CAGAtD,EAAQguB,QAAU,SAAU7a,EAAM2a,GAChC,IAAI8D,EAAWtgB,KAAKS,KAAK+b,EAAM7rB,OAFjB,IAGVqF,EAAQ6L,EAAKka,OAAOprB,OACxBkR,EAAKka,OAASxrB,EAAOiC,OAAO,CAC1BqP,EAAKka,OACLxrB,EAAO+pB,YANK,GAMOgG,KAErB,IAAK,IAAI/lB,EAAI,EAAGA,EAAI+lB,EAAU/lB,IAAK,CACjC,IAAIvI,EAAMquB,EAASxe,GACfnR,EAASsF,EAVD,GAUSuE,EACrBsH,EAAKka,OAAOxB,cAAcvoB,EAAI,GAAItB,EAAS,GAC3CmR,EAAKka,OAAOxB,cAAcvoB,EAAI,GAAItB,EAAS,GAC3CmR,EAAKka,OAAOxB,cAAcvoB,EAAI,GAAItB,EAAS,GAC3CmR,EAAKka,OAAOxB,cAAcvoB,EAAI,GAAItB,EAAS,GAC7C,CACA,IAAIsvB,EAAMne,EAAKka,OAAOjqB,MAAM,EAAG0qB,EAAM7rB,QAErC,OADAkR,EAAKka,OAASla,EAAKka,OAAOjqB,MAAM0qB,EAAM7rB,QAC/BwU,EAAIqX,EAAOwD,EACpB,iBC7BAtxB,EAAQguB,QAAU,SAAU7a,EAAM4d,GAChC,OAAO5d,EAAKsZ,QAAQd,aAAaoF,EACnC,EAEA/wB,EAAQusB,QAAU,SAAUpZ,EAAM4d,GAChC,OAAO5d,EAAKsZ,QAAQX,aAAaiF,EACnC,iBCNA,IAAIc,EAAc,CAChBC,IAAK,EAAQ,OACbC,IAAK,EAAQ,OACbC,IAAK,EAAQ,OACbC,KAAM,EAAQ,OACdC,KAAM,EAAQ,OACdC,IAAK,EAAQ,OACbC,IAAK,EAAQ,OACbC,IAAK,EAAQ,QAGX5D,EAAQ,EAAQ,MAEpB,IAAK,IAAI7pB,KAAO6pB,EACdA,EAAM7pB,GAAKK,OAAS4sB,EAAYpD,EAAM7pB,GAAK0c,MAG7Crc,EAAOjF,QAAUyuB,yCCjBbhY,EAAM,EAAQ,OAElB,SAASkb,EAAUxe,GAEjB,OADAA,EAAKia,MAAQja,EAAKsZ,QAAQd,aAAaxY,EAAKia,OACrCja,EAAKia,KACd,CAEAptB,EAAQguB,QAAU,SAAU7a,EAAM2a,GAChC,KAAO3a,EAAKka,OAAOprB,OAAS6rB,EAAM7rB,QAChCkR,EAAKka,OAASxrB,EAAOiC,OAAO,CAACqP,EAAKka,OAAQsE,EAASxe,KAGrD,IAAIme,EAAMne,EAAKka,OAAOjqB,MAAM,EAAG0qB,EAAM7rB,QAErC,OADAkR,EAAKka,OAASla,EAAKka,OAAOjqB,MAAM0qB,EAAM7rB,QAC/BwU,EAAIqX,EAAOwD,EACpB,mBCfA,IAAIrF,EAAM,EAAQ,OACdpqB,EAAS,gBACTqqB,EAAY,EAAQ,OAGxB,SAASG,EAAc/K,EAAM1c,EAAK0nB,EAAIC,GACpCL,EAAUhrB,KAAKP,MAEfA,KAAK8rB,QAAU,IAAIR,EAAIrB,IAAIhmB,GAC3BjE,KAAKysB,MAAQvrB,EAAO+mB,KAAK0D,GACzB3rB,KAAK0sB,OAASxrB,EAAO+pB,YAAY,GACjCjrB,KAAK2sB,UAAYzrB,EAAO+pB,YAAY,GACpCjrB,KAAK4sB,SAAWhB,EAChB5rB,KAAK+sB,MAAQpM,CACf,CAXe,EAAQ,MAavB/gB,CAAS8rB,EAAcH,GAEvBG,EAAazrB,UAAUitB,QAAU,SAAUC,GACzC,OAAOntB,KAAK+sB,MAAMM,QAAQrtB,KAAMmtB,EAAOntB,KAAK4sB,SAC9C,EAEAlB,EAAazrB,UAAUqtB,OAAS,WAC9BttB,KAAK8rB,QAAQT,OACf,EAEA/mB,EAAOjF,QAAUqsB,mBC1BjB,IAAIiG,EAAM,EAAQ,OACdrG,EAAM,EAAQ,MACdsG,EAAW,EAAQ,KACnBC,EAAW,EAAQ,OACnBlD,EAAO,EAAQ,OAsCnB,SAASV,EAAgBe,EAAO/qB,EAAK0nB,GAEnC,GADAqD,EAAQA,EAAMG,cACVyC,EAAS5C,GAAQ,OAAO1D,EAAI2C,eAAee,EAAO/qB,EAAK0nB,GAC3D,GAAIkG,EAAS7C,GAAQ,OAAO,IAAI2C,EAAI,CAAE1tB,IAAKA,EAAK0nB,GAAIA,EAAIhL,KAAMqO,IAE9D,MAAM,IAAII,UAAU,qBACtB,CAEA,SAASf,EAAkBW,EAAO/qB,EAAK0nB,GAErC,GADAqD,EAAQA,EAAMG,cACVyC,EAAS5C,GAAQ,OAAO1D,EAAI+C,iBAAiBW,EAAO/qB,EAAK0nB,GAC7D,GAAIkG,EAAS7C,GAAQ,OAAO,IAAI2C,EAAI,CAAE1tB,IAAKA,EAAK0nB,GAAIA,EAAIhL,KAAMqO,EAAOpD,SAAS,IAE9E,MAAM,IAAIwD,UAAU,qBACtB,CAMA/vB,EAAQ0uB,aAAe1uB,EAAQ2uB,OAxD/B,SAAuBgB,EAAOC,GAG5B,IAAI6C,EAAQC,EACZ,GAHA/C,EAAQA,EAAMG,cAGVyC,EAAS5C,GACX8C,EAASF,EAAS5C,GAAO/qB,IACzB8tB,EAAQH,EAAS5C,GAAOrD,OACnB,KAAIkG,EAAS7C,GAIlB,MAAM,IAAII,UAAU,sBAHpB0C,EAA+B,EAAtBD,EAAS7C,GAAO/qB,IACzB8tB,EAAQF,EAAS7C,GAAOrD,EAG1B,CAEA,IAAIpmB,EAAOopB,EAAKM,GAAU,EAAO6C,EAAQC,GACzC,OAAO9D,EAAee,EAAOzpB,EAAKtB,IAAKsB,EAAKomB,GAC9C,EAyCAtsB,EAAQ4uB,eAAiB5uB,EAAQ6uB,SAAWD,EAC5C5uB,EAAQ8uB,eAAiB9uB,EAAQ+uB,SAxCjC,SAAyBY,EAAOC,GAG9B,IAAI6C,EAAQC,EACZ,GAHA/C,EAAQA,EAAMG,cAGVyC,EAAS5C,GACX8C,EAASF,EAAS5C,GAAO/qB,IACzB8tB,EAAQH,EAAS5C,GAAOrD,OACnB,KAAIkG,EAAS7C,GAIlB,MAAM,IAAII,UAAU,sBAHpB0C,EAA+B,EAAtBD,EAAS7C,GAAO/qB,IACzB8tB,EAAQF,EAAS7C,GAAOrD,EAG1B,CAEA,IAAIpmB,EAAOopB,EAAKM,GAAU,EAAO6C,EAAQC,GACzC,OAAO1D,EAAiBW,EAAOzpB,EAAKtB,IAAKsB,EAAKomB,GAChD,EAyBAtsB,EAAQgvB,iBAAmBhvB,EAAQivB,WAAaD,EAChDhvB,EAAQkvB,YAAclvB,EAAQmvB,WAR9B,WACE,OAAOlpB,OAAOC,KAAKssB,GAAU1uB,OAAOmoB,EAAIkD,aAC1C,mBC5DA,IAAIwD,EAAa,EAAQ,OACrBC,EAAM,EAAQ,OACdryB,EAAW,EAAQ,OACnBsB,EAAS,gBAET4sB,EAAQ,CACV,eAAgBmE,EAAIb,IAAIc,YAAYD,EAAIE,KACxC,WAAYF,EAAIE,IAChB,cAAeF,EAAIb,IAAIc,YAAYD,EAAIE,KACvC,UAAWF,EAAIE,IACf,UAAWF,EAAIb,IAAIc,YAAYD,EAAIN,KACnC,UAAWM,EAAIN,KAMjB,SAASA,EAAKS,GACZJ,EAAWzxB,KAAKP,MAChB,IAEI8H,EAFAuqB,EAAWD,EAAKzR,KAAKwO,cACrBxO,EAAOmN,EAAMuE,GAGfvqB,EADEsqB,EAAKxG,QACA,UAEA,UAET,IAAI3nB,EAAMmuB,EAAKnuB,IACV/C,EAAOE,SAAS6C,KACnBA,EAAM/C,EAAO+mB,KAAKhkB,IAEH,YAAbouB,GAAuC,gBAAbA,IAC5BpuB,EAAM/C,EAAOiC,OAAO,CAACc,EAAKA,EAAIxB,MAAM,EAAG,MAEzC,IAAIkpB,EAAKyG,EAAKzG,GACTzqB,EAAOE,SAASuqB,KACnBA,EAAKzqB,EAAO+mB,KAAK0D,IAEnB3rB,KAAKsyB,KAAO3R,EAAK4R,OAAO,CACtBtuB,IAAKA,EACL0nB,GAAIA,EACJ7jB,KAAMA,GAEV,CA9BAgmB,EAAMmE,IAAMnE,EAAM,WAClBA,EAAM0E,KAAO1E,EAAM,gBACnBxpB,EAAOjF,QAAUsyB,EACjB/xB,EAAS+xB,EAAKK,GA4BdL,EAAI1xB,UAAUitB,QAAU,SAAUtsB,GAChC,OAAOM,EAAO+mB,KAAKjoB,KAAKsyB,KAAKlG,OAAOxrB,GACtC,EACA+wB,EAAI1xB,UAAUqtB,OAAS,WACrB,OAAOpsB,EAAO+mB,KAAKjoB,KAAKsyB,KAAK/E,QAC/B,iBCjDAluB,EAAQ,WAAa,CACnB4E,IAAK,EACL0nB,GAAI,GAENtsB,EAAQ,WAAaA,EAAQ4yB,IAAM,CACjChuB,IAAK,EACL0nB,GAAI,GAENtsB,EAAQ,gBAAkBA,EAAQmzB,KAAO,CACvCvuB,IAAK,GACL0nB,GAAI,GAENtsB,EAAQ,YAAc,CACpB4E,IAAK,GACL0nB,GAAI,GAENtsB,EAAQ,eAAiB,CACvB4E,IAAK,GACL0nB,GAAI,GAENtsB,EAAQ,WAAa,CACnB4E,IAAK,GACL0nB,GAAI,iCCpBN,IAAIjc,EAAK,EAAQ,OACbqY,EAAc,EAAQ,OACtB7mB,EAAS,gBAEb,SAASuxB,EAAKC,GACb,IACIliB,EADAvF,EAAMynB,EAAKC,QAAQ7wB,aAEvB,GACC0O,EAAI,IAAId,EAAGqY,EAAY9c,UACfuF,EAAEO,IAAI2hB,EAAKC,UAAY,IAAMniB,EAAE2Q,KAAKuR,EAAKE,UAAYpiB,EAAE2Q,KAAKuR,EAAKG,SAC1E,OAAOriB,CACR,CAQA,SAASsiB,EAAIvpB,EAAKmpB,GACjB,IAAIK,EAPL,SAAeL,GACd,IAAIliB,EAAIiiB,EAAKC,GAEb,MAAO,CAAEM,QADKxiB,EAAEiT,MAAM/T,EAAGwX,KAAKwL,EAAKC,UAAU3N,OAAO,IAAItV,EAAGgjB,EAAKO,iBAAiBpP,UACtDqP,UAAW1iB,EAAEmS,KAAK+P,EAAKC,SACnD,CAGcQ,CAAMT,GACfznB,EAAMynB,EAAKC,QAAQ7wB,aACnBsxB,EAAU,IAAI1jB,EAAGnG,GAAKmH,IAAIqiB,EAAOC,SAAS7R,KAAKuR,EAAKC,SACpDU,EAAKD,EAAQ3P,MAAM/T,EAAGwX,KAAKwL,EAAKE,SAChCU,EAAKF,EAAQ3P,MAAM/T,EAAGwX,KAAKwL,EAAKG,SAChCU,EAAOb,EAAKc,YACZnkB,EAAIqjB,EAAKE,OACT7e,EAAI2e,EAAKG,OACTzH,EAAKiI,EAAGrO,OAAO0N,EAAKe,WAAW5P,UAC/B6P,EAAKJ,EAAGtO,OAAO0N,EAAKiB,WAAW9P,UAC/BnE,EAAI0L,EAAG9U,KAAKod,GAAIjZ,KAAK8Y,GAAMpS,KAAK9R,GAAGoL,KAAK1G,GAC5C,OAAO2f,EAAGrd,KAAKqJ,GAAGjF,KAAKsY,EAAOG,WAAW/R,KAAKuR,EAAKC,SAAShf,YAAYzS,EAAQ,KAAM+J,EACvF,CACA6nB,EAAIL,KAAOA,EAEXnuB,EAAOjF,QAAUyzB,0BCrCjB,SAAWxuB,EAAQjF,GACjB,aAGA,SAAS2D,EAAQ0C,EAAK6D,GACpB,IAAK7D,EAAK,MAAM,IAAIF,MAAM+D,GAAO,mBACnC,CAIA,SAAS3J,EAAU0P,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASxP,UAAYsP,EAAUtP,UAC/BqP,EAAKrP,UAAY,IAAIwP,EACrBH,EAAKrP,UAAU0E,YAAc2K,CAC/B,CAIA,SAASI,EAAIC,EAAQnQ,EAAMoQ,GACzB,GAAIF,EAAGG,KAAKF,GACV,OAAOA,EAGT3P,KAAK8P,SAAW,EAChB9P,KAAK+P,MAAQ,KACb/P,KAAKsB,OAAS,EAGdtB,KAAKgQ,IAAM,KAEI,OAAXL,IACW,OAATnQ,GAA0B,OAATA,IACnBoQ,EAASpQ,EACTA,EAAO,IAGTQ,KAAKgF,MAAM2K,GAAU,EAAGnQ,GAAQ,GAAIoQ,GAAU,MAElD,CAUA,IAAI1O,EATkB,kBAAXoD,EACTA,EAAOjF,QAAUqQ,EAEjBrQ,EAAQqQ,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGO,SAAW,GAGd,IAEI/O,EADoB,qBAAXgP,QAAmD,qBAAlBA,OAAOhP,OACxCgP,OAAOhP,OAEP,eAEb,CAAE,MAAOd,GACT,CA+HA,SAAS+P,EAAeC,EAAQ1G,GAC9B,IAAI2G,EAAID,EAAOnC,WAAWvE,GAE1B,OAAI2G,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXrN,GAAO,EAAO,wBAA0BoN,EAE5C,CAEA,SAASE,EAAcF,EAAQG,EAAY7G,GACzC,IAAI8G,EAAIL,EAAcC,EAAQ1G,GAI9B,OAHIA,EAAQ,GAAK6G,IACfC,GAAKL,EAAcC,EAAQ1G,EAAQ,IAAM,GAEpC8G,CACT,CA6CA,SAASC,EAAWtH,EAAKxC,EAAO4G,EAAKmD,GAInC,IAHA,IAAIF,EAAI,EACJkC,EAAI,EACJzH,EAAM0F,KAAK/D,IAAIzD,EAAI7H,OAAQiM,GACtBrC,EAAIvE,EAAOuE,EAAID,EAAKC,IAAK,CAChC,IAAImF,EAAIlH,EAAI8E,WAAW/C,GAAK,GAE5BsF,GAAKE,EAIHgC,EADErC,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENrN,EAAOqN,GAAK,GAAKqC,EAAIhC,EAAK,qBAC1BF,GAAKkC,CACP,CACA,OAAOlC,CACT,CA2DA,SAASojB,EAAM5hB,EAAM6hB,GACnB7hB,EAAKjC,MAAQ8jB,EAAI9jB,MACjBiC,EAAK1Q,OAASuyB,EAAIvyB,OAClB0Q,EAAKlC,SAAW+jB,EAAI/jB,SACpBkC,EAAKhC,IAAM6jB,EAAI7jB,GACjB,CAqCA,GA9TAN,EAAGG,KAAO,SAAelK,GACvB,OAAIA,aAAe+J,GAIJ,OAAR/J,GAA+B,kBAARA,GAC5BA,EAAIhB,YAAYsL,WAAaP,EAAGO,UAAYvO,MAAMC,QAAQgE,EAAIoK,MAClE,EAEAL,EAAGkB,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEApB,EAAG9C,IAAM,SAAciE,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEApB,EAAGzP,UAAU+E,MAAQ,SAAe2K,EAAQnQ,EAAMoQ,GAChD,GAAsB,kBAAXD,EACT,OAAO3P,KAAKgR,YAAYrB,EAAQnQ,EAAMoQ,GAGxC,GAAsB,kBAAXD,EACT,OAAO3P,KAAKiR,WAAWtB,EAAQnQ,EAAMoQ,GAG1B,QAATpQ,IACFA,EAAO,IAETwD,EAAOxD,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAImH,EAAQ,EACM,OAFlBgJ,EAASA,EAAO7D,WAAW2B,QAAQ,OAAQ,KAEhC,KACT9G,IACA3G,KAAK8P,SAAW,GAGdnJ,EAAQgJ,EAAOrO,SACJ,KAAT9B,EACFQ,KAAKkR,UAAUvB,EAAQhJ,EAAOiJ,IAE9B5P,KAAKmR,WAAWxB,EAAQnQ,EAAMmH,GACf,OAAXiJ,GACF5P,KAAKiR,WAAWjR,KAAK+O,UAAWvP,EAAMoQ,IAI9C,EAEAF,EAAGzP,UAAU+Q,YAAc,SAAsBrB,EAAQnQ,EAAMoQ,GACzDD,EAAS,IACX3P,KAAK8P,SAAW,EAChBH,GAAUA,GAERA,EAAS,UACX3P,KAAK+P,MAAQ,CAAU,SAATJ,GACd3P,KAAKsB,OAAS,GACLqO,EAAS,kBAClB3P,KAAK+P,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,UAEzB3P,KAAKsB,OAAS,IAEd0B,EAAO2M,EAAS,kBAChB3P,KAAK+P,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,SACvB,GAEF3P,KAAKsB,OAAS,GAGD,OAAXsO,GAGJ5P,KAAKiR,WAAWjR,KAAK+O,UAAWvP,EAAMoQ,EACxC,EAEAF,EAAGzP,UAAUgR,WAAa,SAAqBtB,EAAQnQ,EAAMoQ,GAG3D,GADA5M,EAAgC,kBAAlB2M,EAAOrO,QACjBqO,EAAOrO,QAAU,EAGnB,OAFAtB,KAAK+P,MAAQ,CAAC,GACd/P,KAAKsB,OAAS,EACPtB,KAGTA,KAAKsB,OAASqP,KAAKS,KAAKzB,EAAOrO,OAAS,GACxCtB,KAAK+P,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/BlL,KAAK+P,MAAM7E,GAAK,EAGlB,IAAIC,EAAGkG,EACHC,EAAM,EACV,GAAe,OAAX1B,EACF,IAAK1E,EAAIyE,EAAOrO,OAAS,EAAG6J,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CmG,EAAI1B,EAAOzE,GAAMyE,EAAOzE,EAAI,IAAM,EAAMyE,EAAOzE,EAAI,IAAM,GACzDlL,KAAK+P,MAAM5E,IAAOkG,GAAKC,EAAO,SAC9BtR,KAAK+P,MAAM5E,EAAI,GAAMkG,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPnG,UAGC,GAAe,OAAXyE,EACT,IAAK1E,EAAI,EAAGC,EAAI,EAAGD,EAAIyE,EAAOrO,OAAQ4J,GAAK,EACzCmG,EAAI1B,EAAOzE,GAAMyE,EAAOzE,EAAI,IAAM,EAAMyE,EAAOzE,EAAI,IAAM,GACzDlL,KAAK+P,MAAM5E,IAAOkG,GAAKC,EAAO,SAC9BtR,KAAK+P,MAAM5E,EAAI,GAAMkG,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPnG,KAIN,OAAOnL,KAAKqmB,QACd,EA0BA3W,EAAGzP,UAAUiR,UAAY,SAAoBvB,EAAQhJ,EAAOiJ,GAE1D5P,KAAKsB,OAASqP,KAAKS,MAAMzB,EAAOrO,OAASqF,GAAS,GAClD3G,KAAK+P,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/BlL,KAAK+P,MAAM7E,GAAK,EAIlB,IAGImG,EAHAC,EAAM,EACNnG,EAAI,EAGR,GAAe,OAAXyE,EACF,IAAK1E,EAAIyE,EAAOrO,OAAS,EAAG4J,GAAKvE,EAAOuE,GAAK,EAC3CmG,EAAIf,EAAaX,EAAQhJ,EAAOuE,IAAMoG,EACtCtR,KAAK+P,MAAM5E,IAAU,SAAJkG,EACbC,GAAO,IACTA,GAAO,GACPnG,GAAK,EACLnL,KAAK+P,MAAM5E,IAAMkG,IAAM,IAEvBC,GAAO,OAKX,IAAKpG,GADayE,EAAOrO,OAASqF,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOuE,EAAIyE,EAAOrO,OAAQ4J,GAAK,EAC1EmG,EAAIf,EAAaX,EAAQhJ,EAAOuE,IAAMoG,EACtCtR,KAAK+P,MAAM5E,IAAU,SAAJkG,EACbC,GAAO,IACTA,GAAO,GACPnG,GAAK,EACLnL,KAAK+P,MAAM5E,IAAMkG,IAAM,IAEvBC,GAAO,EAKbtR,KAAKqmB,QACP,EA6BA3W,EAAGzP,UAAUkR,WAAa,SAAqBxB,EAAQnQ,EAAMmH,GAE3D3G,KAAK+P,MAAQ,CAAC,GACd/P,KAAKsB,OAAS,EAGd,IAAK,IAAIkQ,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWjS,EAClEgS,IAEFA,IACAC,EAAWA,EAAUjS,EAAQ,EAO7B,IALA,IAAIkS,EAAQ/B,EAAOrO,OAASqF,EACxBgL,EAAMD,EAAQF,EACdjE,EAAMoD,KAAK/D,IAAI8E,EAAOA,EAAQC,GAAOhL,EAErCiL,EAAO,EACF1G,EAAIvE,EAAOuE,EAAIqC,EAAKrC,GAAKsG,EAChCI,EAAOnB,EAAUd,EAAQzE,EAAGA,EAAIsG,EAAShS,GAEzCQ,KAAK6R,MAAMJ,GACPzR,KAAK+P,MAAM,GAAK6B,EAAO,SACzB5R,KAAK+P,MAAM,IAAM6B,EAEjB5R,KAAK8R,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAOnB,EAAUd,EAAQzE,EAAGyE,EAAOrO,OAAQ9B,GAEtC0L,EAAI,EAAGA,EAAIyG,EAAKzG,IACnB6G,GAAOvS,EAGTQ,KAAK6R,MAAME,GACP/R,KAAK+P,MAAM,GAAK6B,EAAO,SACzB5R,KAAK+P,MAAM,IAAM6B,EAEjB5R,KAAK8R,OAAOF,EAEhB,CAEA5R,KAAKqmB,QACP,EAEA3W,EAAGzP,UAAU6C,KAAO,SAAekP,GACjCA,EAAKjC,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/B8G,EAAKjC,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAE7B8G,EAAK1Q,OAAStB,KAAKsB,OACnB0Q,EAAKlC,SAAW9P,KAAK8P,SACrBkC,EAAKhC,IAAMhQ,KAAKgQ,GAClB,EASAN,EAAGzP,UAAU6zB,MAAQ,SAAgB9hB,GACnC4hB,EAAK5hB,EAAMhS,KACb,EAEA0P,EAAGzP,UAAUuE,MAAQ,WACnB,IAAIgM,EAAI,IAAId,EAAG,MAEf,OADA1P,KAAK8C,KAAK0N,GACHA,CACT,EAEAd,EAAGzP,UAAUgS,QAAU,SAAkB7D,GACvC,KAAOpO,KAAKsB,OAAS8M,GACnBpO,KAAK+P,MAAM/P,KAAKsB,UAAY,EAE9B,OAAOtB,IACT,EAGA0P,EAAGzP,UAAUomB,OAAS,WACpB,KAAOrmB,KAAKsB,OAAS,GAAqC,IAAhCtB,KAAK+P,MAAM/P,KAAKsB,OAAS,IACjDtB,KAAKsB,SAEP,OAAOtB,KAAKkS,WACd,EAEAxC,EAAGzP,UAAUiS,UAAY,WAKvB,OAHoB,IAAhBlS,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,KAClC/P,KAAK8P,SAAW,GAEX9P,IACT,EAIsB,qBAAX+zB,QAAgD,oBAAfA,OAAOC,IACjD,IACEtkB,EAAGzP,UAAU8zB,OAAOC,IAAI,+BAAiC7hB,CAC3D,CAAE,MAAO/R,GACPsP,EAAGzP,UAAUkS,QAAUA,CACzB,MAEAzC,EAAGzP,UAAUkS,QAAUA,EAGzB,SAASA,IACP,OAAQnS,KAAKgQ,IAAM,UAAY,SAAWhQ,KAAK8L,SAAS,IAAM,GAChE,CAgCA,IAAIsG,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAG9D5C,EAAGzP,UAAU6L,SAAW,SAAmBtM,EAAMyT,GAI/C,IAAItQ,EACJ,GAHAsQ,EAAoB,EAAVA,GAAe,EAGZ,MAJbzT,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCmD,EAAM,GAGN,IAFA,IAAI2O,EAAM,EACNsB,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAImG,EAAIrR,KAAK+P,MAAM7E,GACf0G,GAA+B,UAArBP,GAAKC,EAAOsB,IAAmB9G,SAAS,IACtD8G,EAASvB,IAAO,GAAKC,EAAQ,UAC7BA,GAAO,IACI,KACTA,GAAO,GACPpG,KAGAvI,EADY,IAAViQ,GAAe1H,IAAMlL,KAAKsB,OAAS,EAC/B8Q,EAAM,EAAIR,EAAKtQ,QAAUsQ,EAAOjP,EAEhCiP,EAAOjP,CAEjB,CAIA,IAHc,IAAViQ,IACFjQ,EAAMiQ,EAAM9G,SAAS,IAAMnJ,GAEtBA,EAAIrB,OAAS2R,IAAY,GAC9BtQ,EAAM,IAAMA,EAKd,OAHsB,IAAlB3C,KAAK8P,WACPnN,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAInD,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI0T,EAAYb,EAAW7S,GAEvB2T,EAAYb,EAAW9S,GAC3BmD,EAAM,GACN,IAAI0N,EAAIrQ,KAAKwE,QAEb,IADA6L,EAAEP,SAAW,GACLO,EAAE+C,UAAU,CAClB,IAAI5C,EAAIH,EAAE4jB,MAAM9gB,GAAWrH,SAAStM,GAMlCmD,GALF0N,EAAIA,EAAEiD,MAAMH,IAELC,SAGC5C,EAAI7N,EAFJyP,EAAMc,EAAY1C,EAAElP,QAAUkP,EAAI7N,CAI5C,CAIA,IAHI3C,KAAKoT,WACPzQ,EAAM,IAAMA,GAEPA,EAAIrB,OAAS2R,IAAY,GAC9BtQ,EAAM,IAAMA,EAKd,OAHsB,IAAlB3C,KAAK8P,WACPnN,EAAM,IAAMA,GAEPA,CACT,CAEAK,GAAO,EAAO,kCAChB,EAEA0M,EAAGzP,UAAUsT,SAAW,WACtB,IAAIC,EAAMxT,KAAK+P,MAAM,GASrB,OARoB,IAAhB/P,KAAKsB,OACPkS,GAAuB,SAAhBxT,KAAK+P,MAAM,GACO,IAAhB/P,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,GAEzCyD,GAAO,iBAAoC,SAAhBxT,KAAK+P,MAAM,GAC7B/P,KAAKsB,OAAS,GACvB0B,GAAO,EAAO,8CAEU,IAAlBhD,KAAK8P,UAAmB0D,EAAMA,CACxC,EAEA9D,EAAGzP,UAAUwT,OAAS,WACpB,OAAOzT,KAAK8L,SAAS,GAAI,EAC3B,EAEI5K,IACFwO,EAAGzP,UAAUyT,SAAW,SAAmB9D,EAAQtO,GACjD,OAAOtB,KAAK2T,YAAYzS,EAAQ0O,EAAQtO,EAC1C,GAGFoO,EAAGzP,UAAU8O,QAAU,SAAkBa,EAAQtO,GAC/C,OAAOtB,KAAK2T,YAAYjS,MAAOkO,EAAQtO,EACzC,EA2gBA,SAASiR,EAAYC,EAAM7M,EAAKhD,GAC9BA,EAAImN,SAAWnK,EAAImK,SAAW0C,EAAK1C,SACnC,IAAI7E,EAAOuH,EAAKlR,OAASqE,EAAIrE,OAAU,EACvCqB,EAAIrB,OAAS2J,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIwH,EAAoB,EAAhBD,EAAKzC,MAAM,GACf2C,EAAmB,EAAf/M,EAAIoK,MAAM,GACdS,EAAIiC,EAAIC,EAERC,EAAS,SAAJnC,EACLoC,EAASpC,EAAI,SAAa,EAC9B7N,EAAIoN,MAAM,GAAK4C,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAI5H,EAAK4H,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAOrC,KAAK/D,IAAIiG,EAAGlN,EAAIrE,OAAS,GAC3B6J,EAAIwF,KAAKC,IAAI,EAAGiC,EAAIL,EAAKlR,OAAS,GAAI6J,GAAK6H,EAAM7H,IAAK,CAC7D,IAAID,EAAK2H,EAAI1H,EAAK,EAIlB2H,IADAtC,GAFAiC,EAAoB,EAAhBD,EAAKzC,MAAM7E,KACfwH,EAAmB,EAAf/M,EAAIoK,MAAM5E,IACF4H,GACG,SAAa,EAC5BA,EAAY,SAAJvC,CACV,CACA7N,EAAIoN,MAAM8C,GAAa,EAARE,EACfH,EAAiB,EAATE,CACV,CAOA,OANc,IAAVF,EACFjQ,EAAIoN,MAAM8C,GAAa,EAARD,EAEfjQ,EAAIrB,SAGCqB,EAAI0jB,QACb,CAziBA3W,EAAGzP,UAAU0T,YAAc,SAAsBC,EAAWhE,EAAQtO,GAClEtB,KAAKqmB,SAEL,IAAIvkB,EAAa9B,KAAK8B,aAClB+R,EAAYvS,GAAUqP,KAAKC,IAAI,EAAG9O,GACtCkB,EAAOlB,GAAc+R,EAAW,yCAChC7Q,EAAO6Q,EAAY,EAAG,+BAEtB,IAAI5R,EAfS,SAAmB2R,EAAWxF,GAC3C,OAAIwF,EAAUqX,YACLrX,EAAUqX,YAAY7c,GAExB,IAAIwF,EAAUxF,EACvB,CAUY8lB,CAAStgB,EAAWC,GAG9B,OADA7T,KAAK,gBADoB,OAAX4P,EAAkB,KAAO,OACR3N,EAAKH,GAC7BG,CACT,EAEAyN,EAAGzP,UAAUk0B,eAAiB,SAAyBlyB,EAAKH,GAI1D,IAHA,IAAIsyB,EAAW,EACXxhB,EAAQ,EAEH1H,EAAI,EAAGuV,EAAQ,EAAGvV,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAC/C,IAAI0G,EAAQ5R,KAAK+P,MAAM7E,IAAMuV,EAAS7N,EAEtC3Q,EAAImyB,KAAqB,IAAPxiB,EACdwiB,EAAWnyB,EAAIX,SACjBW,EAAImyB,KAAexiB,GAAQ,EAAK,KAE9BwiB,EAAWnyB,EAAIX,SACjBW,EAAImyB,KAAexiB,GAAQ,GAAM,KAGrB,IAAV6O,GACE2T,EAAWnyB,EAAIX,SACjBW,EAAImyB,KAAexiB,GAAQ,GAAM,KAEnCgB,EAAQ,EACR6N,EAAQ,IAER7N,EAAQhB,IAAS,GACjB6O,GAAS,EAEb,CAEA,GAAI2T,EAAWnyB,EAAIX,OAGjB,IAFAW,EAAImyB,KAAcxhB,EAEXwhB,EAAWnyB,EAAIX,QACpBW,EAAImyB,KAAc,CAGxB,EAEA1kB,EAAGzP,UAAUo0B,eAAiB,SAAyBpyB,EAAKH,GAI1D,IAHA,IAAIsyB,EAAWnyB,EAAIX,OAAS,EACxBsR,EAAQ,EAEH1H,EAAI,EAAGuV,EAAQ,EAAGvV,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAC/C,IAAI0G,EAAQ5R,KAAK+P,MAAM7E,IAAMuV,EAAS7N,EAEtC3Q,EAAImyB,KAAqB,IAAPxiB,EACdwiB,GAAY,IACdnyB,EAAImyB,KAAexiB,GAAQ,EAAK,KAE9BwiB,GAAY,IACdnyB,EAAImyB,KAAexiB,GAAQ,GAAM,KAGrB,IAAV6O,GACE2T,GAAY,IACdnyB,EAAImyB,KAAexiB,GAAQ,GAAM,KAEnCgB,EAAQ,EACR6N,EAAQ,IAER7N,EAAQhB,IAAS,GACjB6O,GAAS,EAEb,CAEA,GAAI2T,GAAY,EAGd,IAFAnyB,EAAImyB,KAAcxhB,EAEXwhB,GAAY,GACjBnyB,EAAImyB,KAAc,CAGxB,EAEIzjB,KAAKuD,MACPxE,EAAGzP,UAAUkU,WAAa,SAAqB9C,GAC7C,OAAO,GAAKV,KAAKuD,MAAM7C,EACzB,EAEA3B,EAAGzP,UAAUkU,WAAa,SAAqB9C,GAC7C,IAAI+C,EAAI/C,EACJb,EAAI,EAiBR,OAhBI4D,GAAK,OACP5D,GAAK,GACL4D,KAAO,IAELA,GAAK,KACP5D,GAAK,EACL4D,KAAO,GAELA,GAAK,IACP5D,GAAK,EACL4D,KAAO,GAELA,GAAK,IACP5D,GAAK,EACL4D,KAAO,GAEF5D,EAAI4D,CACb,EAGF1E,EAAGzP,UAAUoU,UAAY,SAAoBhD,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI+C,EAAI/C,EACJb,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ4D,KACH5D,GAAK,GACL4D,KAAO,IAEU,KAAV,IAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,GAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,EAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,EAAJA,IACH5D,IAEKA,CACT,EAGAd,EAAGzP,UAAUqU,UAAY,WACvB,IAAIjD,EAAIrR,KAAK+P,MAAM/P,KAAKsB,OAAS,GAC7BiT,EAAKvU,KAAKmU,WAAW9C,GACzB,OAA2B,IAAnBrR,KAAKsB,OAAS,GAAUiT,CAClC,EAgBA7E,EAAGzP,UAAUuU,SAAW,WACtB,GAAIxU,KAAKoT,SAAU,OAAO,EAG1B,IADA,IAAI5C,EAAI,EACCtF,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAIwH,EAAI1S,KAAKqU,UAAUrU,KAAK+P,MAAM7E,IAElC,GADAsF,GAAKkC,EACK,KAANA,EAAU,KAChB,CACA,OAAOlC,CACT,EAEAd,EAAGzP,UAAU6B,WAAa,WACxB,OAAO6O,KAAKS,KAAKpR,KAAKsU,YAAc,EACtC,EAEA5E,EAAGzP,UAAUwU,OAAS,SAAiBC,GACrC,OAAsB,IAAlB1U,KAAK8P,SACA9P,KAAK2U,MAAMC,MAAMF,GAAOG,MAAM,GAEhC7U,KAAKwE,OACd,EAEAkL,EAAGzP,UAAU6U,SAAW,SAAmBJ,GACzC,OAAI1U,KAAK+U,MAAML,EAAQ,GACd1U,KAAKgV,KAAKN,GAAOG,MAAM,GAAGI,OAE5BjV,KAAKwE,OACd,EAEAkL,EAAGzP,UAAUiV,MAAQ,WACnB,OAAyB,IAAlBlV,KAAK8P,QACd,EAGAJ,EAAGzP,UAAUkV,IAAM,WACjB,OAAOnV,KAAKwE,QAAQyQ,MACtB,EAEAvF,EAAGzP,UAAUgV,KAAO,WAKlB,OAJKjV,KAAKoT,WACRpT,KAAK8P,UAAY,GAGZ9P,IACT,EAGA0P,EAAGzP,UAAUmV,KAAO,SAAezP,GACjC,KAAO3F,KAAKsB,OAASqE,EAAIrE,QACvBtB,KAAK+P,MAAM/P,KAAKsB,UAAY,EAG9B,IAAK,IAAI4J,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAC9BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAAKvF,EAAIoK,MAAM7E,GAG5C,OAAOlL,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUoV,IAAM,SAAc1P,GAE/B,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAKoV,KAAKzP,EACnB,EAGA+J,EAAGzP,UAAUqV,GAAK,SAAa3P,GAC7B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ6Q,IAAI1P,GAC/CA,EAAInB,QAAQ6Q,IAAIrV,KACzB,EAEA0P,EAAGzP,UAAUsV,IAAM,SAAc5P,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ4Q,KAAKzP,GAChDA,EAAInB,QAAQ4Q,KAAKpV,KAC1B,EAGA0P,EAAGzP,UAAUuV,MAAQ,SAAgB7P,GAEnC,IAAI+M,EAEFA,EADE1S,KAAKsB,OAASqE,EAAIrE,OAChBqE,EAEA3F,KAGN,IAAK,IAAIkL,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAAKvF,EAAIoK,MAAM7E,GAK5C,OAFAlL,KAAKsB,OAASoR,EAAEpR,OAETtB,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUwV,KAAO,SAAe9P,GAEjC,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAKwV,MAAM7P,EACpB,EAGA+J,EAAGzP,UAAUyV,IAAM,SAAc/P,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQiR,KAAK9P,GAChDA,EAAInB,QAAQiR,KAAKzV,KAC1B,EAEA0P,EAAGzP,UAAU0V,KAAO,SAAehQ,GACjC,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQgR,MAAM7P,GACjDA,EAAInB,QAAQgR,MAAMxV,KAC3B,EAGA0P,EAAGzP,UAAU2V,MAAQ,SAAgBjQ,GAEnC,IAAI8M,EACAC,EACA1S,KAAKsB,OAASqE,EAAIrE,QACpBmR,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAGN,IAAK,IAAIkL,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAAKwH,EAAE3C,MAAM7E,GAGvC,GAAIlL,OAASyS,EACX,KAAOvH,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAM5B,OAFAlL,KAAKsB,OAASmR,EAAEnR,OAETtB,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAU4V,KAAO,SAAelQ,GAEjC,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAK4V,MAAMjQ,EACpB,EAGA+J,EAAGzP,UAAU6V,IAAM,SAAcnQ,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQqR,KAAKlQ,GAChDA,EAAInB,QAAQqR,KAAK7V,KAC1B,EAEA0P,EAAGzP,UAAU8V,KAAO,SAAepQ,GACjC,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQoR,MAAMjQ,GACjDA,EAAInB,QAAQoR,MAAM5V,KAC3B,EAGA0P,EAAGzP,UAAU2U,MAAQ,SAAgBF,GACnC1R,EAAwB,kBAAV0R,GAAsBA,GAAS,GAE7C,IAAIsB,EAAsC,EAAxBrF,KAAKS,KAAKsD,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvB1U,KAAKiS,QAAQ+D,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAa9K,IAC/BlL,KAAK+P,MAAM7E,GAAsB,UAAhBlL,KAAK+P,MAAM7E,GAS9B,OALI+K,EAAW,IACbjW,KAAK+P,MAAM7E,IAAMlL,KAAK+P,MAAM7E,GAAM,UAAc,GAAK+K,GAIhDjW,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAU+U,KAAO,SAAeN,GACjC,OAAO1U,KAAKwE,QAAQoQ,MAAMF,EAC5B,EAGAhF,EAAGzP,UAAUiW,KAAO,SAAeC,EAAKzQ,GACtC1C,EAAsB,kBAARmT,GAAoBA,GAAO,GAEzC,IAAI7E,EAAO6E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAnW,KAAKiS,QAAQX,EAAM,GAGjBtR,KAAK+P,MAAMuB,GADT5L,EACgB1F,KAAK+P,MAAMuB,GAAQ,GAAK8E,EAExBpW,KAAK+P,MAAMuB,KAAS,GAAK8E,GAGtCpW,KAAKqmB,QACd,EAGA3W,EAAGzP,UAAUoW,KAAO,SAAe1Q,GACjC,IAAI6K,EAkBAiC,EAAGC,EAfP,GAAsB,IAAlB1S,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAI7B,OAHA9P,KAAK8P,SAAW,EAChBU,EAAIxQ,KAAKsW,KAAK3Q,GACd3F,KAAK8P,UAAY,EACV9P,KAAKkS,YAGP,GAAsB,IAAlBlS,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAIpC,OAHAnK,EAAImK,SAAW,EACfU,EAAIxQ,KAAKsW,KAAK3Q,GACdA,EAAImK,SAAW,EACRU,EAAE0B,YAKPlS,KAAKsB,OAASqE,EAAIrE,QACpBmR,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAIN,IADA,IAAI4S,EAAQ,EACH1H,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BsF,GAAkB,EAAbiC,EAAE1C,MAAM7E,KAAwB,EAAbwH,EAAE3C,MAAM7E,IAAU0H,EAC1C5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAChBoC,EAAQpC,IAAM,GAEhB,KAAiB,IAAVoC,GAAe1H,EAAIuH,EAAEnR,OAAQ4J,IAClCsF,GAAkB,EAAbiC,EAAE1C,MAAM7E,IAAU0H,EACvB5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAChBoC,EAAQpC,IAAM,GAIhB,GADAxQ,KAAKsB,OAASmR,EAAEnR,OACF,IAAVsR,EACF5S,KAAK+P,MAAM/P,KAAKsB,QAAUsR,EAC1B5S,KAAKsB,cAEA,GAAImR,IAAMzS,KACf,KAAOkL,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAI5B,OAAOlL,IACT,EAGA0P,EAAGzP,UAAUsW,IAAM,SAAc5Q,GAC/B,IAAI1D,EACJ,OAAqB,IAAjB0D,EAAImK,UAAoC,IAAlB9P,KAAK8P,UAC7BnK,EAAImK,SAAW,EACf7N,EAAMjC,KAAKwW,IAAI7Q,GACfA,EAAImK,UAAY,EACT7N,GACmB,IAAjB0D,EAAImK,UAAoC,IAAlB9P,KAAK8P,UACpC9P,KAAK8P,SAAW,EAChB7N,EAAM0D,EAAI6Q,IAAIxW,MACdA,KAAK8P,SAAW,EACT7N,GAGLjC,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ6R,KAAK1Q,GAEhDA,EAAInB,QAAQ6R,KAAKrW,KAC1B,EAGA0P,EAAGzP,UAAUqW,KAAO,SAAe3Q,GAEjC,GAAqB,IAAjBA,EAAImK,SAAgB,CACtBnK,EAAImK,SAAW,EACf,IAAIU,EAAIxQ,KAAKqW,KAAK1Q,GAElB,OADAA,EAAImK,SAAW,EACRU,EAAE0B,WAGX,CAAO,GAAsB,IAAlBlS,KAAK8P,SAId,OAHA9P,KAAK8P,SAAW,EAChB9P,KAAKqW,KAAK1Q,GACV3F,KAAK8P,SAAW,EACT9P,KAAKkS,YAId,IAWIO,EAAGC,EAXH3B,EAAM/Q,KAAK+Q,IAAIpL,GAGnB,GAAY,IAARoL,EAIF,OAHA/Q,KAAK8P,SAAW,EAChB9P,KAAKsB,OAAS,EACdtB,KAAK+P,MAAM,GAAK,EACT/P,KAKL+Q,EAAM,GACR0B,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAIN,IADA,IAAI4S,EAAQ,EACH1H,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAE5B0H,GADApC,GAAkB,EAAbiC,EAAE1C,MAAM7E,KAAwB,EAAbwH,EAAE3C,MAAM7E,IAAU0H,IAC7B,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAElB,KAAiB,IAAVoC,GAAe1H,EAAIuH,EAAEnR,OAAQ4J,IAElC0H,GADApC,GAAkB,EAAbiC,EAAE1C,MAAM7E,IAAU0H,IACV,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAIlB,GAAc,IAAVoC,GAAe1H,EAAIuH,EAAEnR,QAAUmR,IAAMzS,KACvC,KAAOkL,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAU5B,OANAlL,KAAKsB,OAASqP,KAAKC,IAAI5Q,KAAKsB,OAAQ4J,GAEhCuH,IAAMzS,OACRA,KAAK8P,SAAW,GAGX9P,KAAKqmB,QACd,EAGA3W,EAAGzP,UAAUuW,IAAM,SAAc7Q,GAC/B,OAAO3F,KAAKwE,QAAQ8R,KAAK3Q,EAC3B,EA8CA,IAAI8Q,EAAc,SAAsBjE,EAAM7M,EAAKhD,GACjD,IAIIgQ,EACA+D,EACAnC,EANA9B,EAAID,EAAKzC,MACT2C,EAAI/M,EAAIoK,MACR4G,EAAIhU,EAAIoN,MACRM,EAAI,EAIJuG,EAAY,EAAPnE,EAAE,GACPoE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtE,EAAE,GACPuE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzE,EAAE,GACP0E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5E,EAAE,GACP6E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/E,EAAE,GACPgF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlF,EAAE,GACPmF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrF,EAAE,GACPsF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxF,EAAE,GACPyF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3F,EAAE,GACP4F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9F,EAAE,GACP+F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhG,EAAE,GACPiG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnG,EAAE,GACPoG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtG,EAAE,GACPuG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzG,EAAE,GACP0G,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5G,EAAE,GACP6G,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP/G,EAAE,GACPgH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlH,EAAE,GACPmH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPrH,EAAE,GACPsH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPxH,EAAE,GACPyH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP3H,EAAE,GACP4H,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB1X,EAAImN,SAAW0C,EAAK1C,SAAWnK,EAAImK,SACnCnN,EAAIrB,OAAS,GAMb,IAAIkZ,IAAQnK,GAJZsC,EAAKhC,KAAK8J,KAAK5D,EAAK8B,IAIE,KAAa,MAFnCjC,GADAA,EAAM/F,KAAK8J,KAAK5D,EAAK+B,IACRjI,KAAK8J,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDtI,IAFAkE,EAAK5D,KAAK8J,KAAK3D,EAAK8B,KAEPlC,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKhC,KAAK8J,KAAKzD,EAAK2B,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKzD,EAAK4B,IACRjI,KAAK8J,KAAKxD,EAAK0B,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQrK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKkC,GAAQ,GACvBpI,KAAK8J,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDzI,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKiC,GAAQ,IAErBrC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAKhC,KAAK8J,KAAKtD,EAAKwB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKtD,EAAKyB,IACRjI,KAAK8J,KAAKrD,EAAKuB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKrD,EAAKwB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK8B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK+B,GAAQ,GACvBpI,KAAK8J,KAAKxD,EAAK6B,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQtK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKqC,GAAQ,GACvBvI,KAAK8J,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD5I,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKoC,GAAQ,IAErBxC,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAKhC,KAAK8J,KAAKnD,EAAKqB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKnD,EAAKsB,IACRjI,KAAK8J,KAAKlD,EAAKoB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKlD,EAAKqB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK2B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK4B,GAAQ,GACvBpI,KAAK8J,KAAKrD,EAAK0B,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK2B,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKiC,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKkC,GAAQ,GACvBvI,KAAK8J,KAAKxD,EAAKgC,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQvK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKwC,GAAQ,GACvB1I,KAAK8J,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrD/I,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKuC,GAAQ,IAErB3C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAKhC,KAAK8J,KAAKhD,EAAKkB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKhD,EAAKmB,IACRjI,KAAK8J,KAAK/C,EAAKiB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAK/C,EAAKkB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKwB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKyB,GAAQ,GACvBpI,KAAK8J,KAAKlD,EAAKuB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKwB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK8B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK+B,GAAQ,GACvBvI,KAAK8J,KAAKrD,EAAK6B,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK8B,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKoC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKqC,GAAQ,GACvB1I,KAAK8J,KAAKxD,EAAKmC,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQxK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK2C,IAAQ,GACvB7I,KAAK8J,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDlJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAK0C,IAAQ,IAErB9C,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAKhC,KAAK8J,KAAK7C,EAAKe,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAK7C,EAAKgB,IACRjI,KAAK8J,KAAK5C,EAAKc,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAK5C,EAAKe,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKqB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKsB,GAAQ,GACvBpI,KAAK8J,KAAK/C,EAAKoB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKqB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK2B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK4B,GAAQ,GACvBvI,KAAK8J,KAAKlD,EAAK0B,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK2B,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKiC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKkC,GAAQ,GACvB1I,KAAK8J,KAAKrD,EAAKgC,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKiC,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKuC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKwC,IAAQ,GACvB7I,KAAK8J,KAAKxD,EAAKsC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQzK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK8C,IAAQ,GACvBhJ,KAAK8J,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDrJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAK6C,IAAQ,IAErBjD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAKhC,KAAK8J,KAAK1C,EAAKY,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAK1C,EAAKa,IACRjI,KAAK8J,KAAKzC,EAAKW,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKzC,EAAKY,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKkB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKmB,GAAQ,GACvBpI,KAAK8J,KAAK5C,EAAKiB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKkB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKwB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKyB,GAAQ,GACvBvI,KAAK8J,KAAK/C,EAAKuB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKwB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK8B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK+B,GAAQ,GACvB1I,KAAK8J,KAAKlD,EAAK6B,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK8B,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKoC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKqC,IAAQ,GACvB7I,KAAK8J,KAAKrD,EAAKmC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKoC,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK0C,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK2C,IAAQ,GACvBhJ,KAAK8J,KAAKxD,EAAKyC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ1K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKiD,IAAQ,GACvBnJ,KAAK8J,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDxJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKgD,IAAQ,IAErBpD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENpI,EAAKhC,KAAK8J,KAAKvC,EAAKS,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKvC,EAAKU,IACRjI,KAAK8J,KAAKtC,EAAKQ,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKtC,EAAKS,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKe,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKgB,GAAQ,GACvBpI,KAAK8J,KAAKzC,EAAKc,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKe,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKqB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKsB,GAAQ,GACvBvI,KAAK8J,KAAK5C,EAAKoB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKqB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK2B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK4B,GAAQ,GACvB1I,KAAK8J,KAAK/C,EAAK0B,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK2B,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKiC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKkC,IAAQ,GACvB7I,KAAK8J,KAAKlD,EAAKgC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKiC,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKuC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKwC,IAAQ,GACvBhJ,KAAK8J,KAAKrD,EAAKsC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKuC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK6C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK8C,IAAQ,GACvBnJ,KAAK8J,KAAKxD,EAAK4C,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ3K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKoD,IAAQ,GACvBtJ,KAAK8J,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD3J,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKmD,IAAQ,IAErBvD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENrI,EAAKhC,KAAK8J,KAAKpC,EAAKM,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKpC,EAAKO,IACRjI,KAAK8J,KAAKnC,EAAKK,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKnC,EAAKM,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKY,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKa,GAAQ,GACvBpI,KAAK8J,KAAKtC,EAAKW,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKY,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKkB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKmB,GAAQ,GACvBvI,KAAK8J,KAAKzC,EAAKiB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKkB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKwB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKyB,GAAQ,GACvB1I,KAAK8J,KAAK5C,EAAKuB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKwB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK8B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK+B,IAAQ,GACvB7I,KAAK8J,KAAK/C,EAAK6B,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK8B,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKoC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKqC,IAAQ,GACvBhJ,KAAK8J,KAAKlD,EAAKmC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKoC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK0C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK2C,IAAQ,GACvBnJ,KAAK8J,KAAKrD,EAAKyC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK0C,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKgD,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKiD,IAAQ,GACvBtJ,KAAK8J,KAAKxD,EAAK+C,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ5K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKuD,IAAQ,GACvBzJ,KAAK8J,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrD9J,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKsD,IAAQ,IAErB1D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENtI,EAAKhC,KAAK8J,KAAKjC,EAAKG,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKI,IACRjI,KAAK8J,KAAKhC,EAAKE,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKhC,EAAKG,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKS,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKU,GAAQ,GACvBpI,KAAK8J,KAAKnC,EAAKQ,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKS,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKe,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKgB,GAAQ,GACvBvI,KAAK8J,KAAKtC,EAAKc,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKe,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKqB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKsB,GAAQ,GACvB1I,KAAK8J,KAAKzC,EAAKoB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKqB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK2B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK4B,IAAQ,GACvB7I,KAAK8J,KAAK5C,EAAK0B,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK2B,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKiC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKkC,IAAQ,GACvBhJ,KAAK8J,KAAK/C,EAAKgC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKiC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKuC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKwC,IAAQ,GACvBnJ,KAAK8J,KAAKlD,EAAKsC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKuC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK6C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK8C,IAAQ,GACvBtJ,KAAK8J,KAAKrD,EAAK4C,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK6C,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKmD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKoD,IAAQ,GACvBzJ,KAAK8J,KAAKxD,EAAKkD,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQ7K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK0D,IAAQ,GACvB5J,KAAK8J,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKyD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMwE,KAAO,IAAO,EAChDA,IAAM,SAENvI,EAAKhC,KAAK8J,KAAKjC,EAAKM,GAEpBpC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKO,IACRpI,KAAK8J,KAAKhC,EAAKK,GAAQ,EACpCvE,EAAK5D,KAAK8J,KAAKhC,EAAKM,GACpBpG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKY,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKa,GAAQ,GACvBvI,KAAK8J,KAAKnC,EAAKW,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKY,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKkB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKmB,GAAQ,GACvB1I,KAAK8J,KAAKtC,EAAKiB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKkB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKwB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKyB,IAAQ,GACvB7I,KAAK8J,KAAKzC,EAAKuB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKwB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK8B,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK+B,IAAQ,GACvBhJ,KAAK8J,KAAK5C,EAAK6B,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK8B,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKoC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKqC,IAAQ,GACvBnJ,KAAK8J,KAAK/C,EAAKmC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKoC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK0C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK2C,IAAQ,GACvBtJ,KAAK8J,KAAKlD,EAAKyC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK0C,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKgD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKiD,IAAQ,GACvBzJ,KAAK8J,KAAKrD,EAAK+C,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAS9K,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKuD,IAAQ,GACvB5J,KAAK8J,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKsD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAKhC,KAAK8J,KAAKjC,EAAKS,GAEpBvC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKU,IACRvI,KAAK8J,KAAKhC,EAAKQ,GAAQ,EACpC1E,EAAK5D,KAAK8J,KAAKhC,EAAKS,GACpBvG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKe,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKgB,GAAQ,GACvB1I,KAAK8J,KAAKnC,EAAKc,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKe,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKqB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKsB,IAAQ,GACvB7I,KAAK8J,KAAKtC,EAAKoB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKqB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAK2B,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAK4B,IAAQ,GACvBhJ,KAAK8J,KAAKzC,EAAK0B,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAK2B,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKiC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKkC,IAAQ,GACvBnJ,KAAK8J,KAAK5C,EAAKgC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKiC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKuC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKwC,IAAQ,GACvBtJ,KAAK8J,KAAK/C,EAAKsC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKuC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK6C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK8C,IAAQ,GACvBzJ,KAAK8J,KAAKlD,EAAK4C,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAAS/K,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKoD,IAAQ,GACvB5J,KAAK8J,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKmD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAKhC,KAAK8J,KAAKjC,EAAKY,GAEpB1C,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKa,IACR1I,KAAK8J,KAAKhC,EAAKW,GAAQ,EACpC7E,EAAK5D,KAAK8J,KAAKhC,EAAKY,GACpB1G,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKkB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKmB,IAAQ,GACvB7I,KAAK8J,KAAKnC,EAAKiB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKkB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKwB,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKyB,IAAQ,GACvBhJ,KAAK8J,KAAKtC,EAAKuB,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKwB,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAK8B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAK+B,IAAQ,GACvBnJ,KAAK8J,KAAKzC,EAAK6B,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAK8B,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKoC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKqC,IAAQ,GACvBtJ,KAAK8J,KAAK5C,EAAKmC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKoC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK0C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK2C,IAAQ,GACvBzJ,KAAK8J,KAAK/C,EAAKyC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAShL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKiD,IAAQ,GACvB5J,KAAK8J,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKgD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAKhC,KAAK8J,KAAKjC,EAAKe,GAEpB7C,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKgB,KACR7I,KAAK8J,KAAKhC,EAAKc,GAAQ,EACpChF,EAAK5D,KAAK8J,KAAKhC,EAAKe,IACpB7G,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKqB,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKsB,IAAQ,GACvBhJ,KAAK8J,KAAKnC,EAAKoB,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKqB,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAK2B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAK4B,IAAQ,GACvBnJ,KAAK8J,KAAKtC,EAAK0B,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAK2B,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKiC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKkC,IAAQ,GACvBtJ,KAAK8J,KAAKzC,EAAKgC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKiC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKuC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKwC,IAAQ,GACvBzJ,KAAK8J,KAAK5C,EAAKsC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASjL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK8C,IAAQ,GACvB5J,KAAK8J,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK6C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP3I,EAAKhC,KAAK8J,KAAKjC,EAAKkB,IAEpBhD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKmB,KACRhJ,KAAK8J,KAAKhC,EAAKiB,IAAQ,EACpCnF,EAAK5D,KAAK8J,KAAKhC,EAAKkB,IACpBhH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKwB,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKyB,IAAQ,GACvBnJ,KAAK8J,KAAKnC,EAAKuB,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKwB,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAK8B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAK+B,IAAQ,GACvBtJ,KAAK8J,KAAKtC,EAAK6B,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAK8B,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKoC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKqC,IAAQ,GACvBzJ,KAAK8J,KAAKzC,EAAKmC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASlL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK2C,IAAQ,GACvB5J,KAAK8J,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK0C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP5I,EAAKhC,KAAK8J,KAAKjC,EAAKqB,IAEpBnD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKsB,KACRnJ,KAAK8J,KAAKhC,EAAKoB,IAAQ,EACpCtF,EAAK5D,KAAK8J,KAAKhC,EAAKqB,IACpBnH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAK2B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAK4B,IAAQ,GACvBtJ,KAAK8J,KAAKnC,EAAK0B,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAK2B,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKiC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKkC,IAAQ,GACvBzJ,KAAK8J,KAAKtC,EAAKgC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASnL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKwC,IAAQ,GACvB5J,KAAK8J,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKuC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP7I,EAAKhC,KAAK8J,KAAKjC,EAAKwB,IAEpBtD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKyB,KACRtJ,KAAK8J,KAAKhC,EAAKuB,IAAQ,EACpCzF,EAAK5D,KAAK8J,KAAKhC,EAAKwB,IACpBtH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAK8B,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAK+B,IAAQ,GACvBzJ,KAAK8J,KAAKnC,EAAK6B,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASpL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKqC,IAAQ,GACvB5J,KAAK8J,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKoC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP9I,EAAKhC,KAAK8J,KAAKjC,EAAK2B,IAEpBzD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAK4B,KACRzJ,KAAK8J,KAAKhC,EAAK0B,IAAQ,EACpC5F,EAAK5D,KAAK8J,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASrL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKkC,IAAQ,GACvB5J,KAAK8J,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKiC,IAAQ,IAErB7D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAStL,GAJbsC,EAAKhC,KAAK8J,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC5D,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAK+B,KACR5J,KAAK8J,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAjK,IAFAkE,EAAK5D,KAAK8J,KAAKhC,EAAK8B,MAEP7D,IAAQ,IAAO,IAAMiF,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK6D,GACP7D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACE,IAANtL,IACFsG,EAAE,IAAMtG,EACR1N,EAAIrB,UAECqB,CACT,EAOA,SAASwZ,EAAU3J,EAAM7M,EAAKhD,GAC5BA,EAAImN,SAAWnK,EAAImK,SAAW0C,EAAK1C,SACnCnN,EAAIrB,OAASkR,EAAKlR,OAASqE,EAAIrE,OAI/B,IAFA,IAAIsR,EAAQ,EACRsJ,EAAU,EACLrJ,EAAI,EAAGA,EAAIlQ,EAAIrB,OAAS,EAAGuR,IAAK,CAGvC,IAAIC,EAASoJ,EACbA,EAAU,EAGV,IAFA,IAAInJ,EAAgB,SAARH,EACRI,EAAOrC,KAAK/D,IAAIiG,EAAGlN,EAAIrE,OAAS,GAC3B6J,EAAIwF,KAAKC,IAAI,EAAGiC,EAAIL,EAAKlR,OAAS,GAAI6J,GAAK6H,EAAM7H,IAAK,CAC7D,IAAID,EAAI2H,EAAI1H,EAGRqF,GAFoB,EAAhBgC,EAAKzC,MAAM7E,KACI,EAAfvF,EAAIoK,MAAM5E,IAGdwH,EAAS,SAAJnC,EAGTuC,EAAa,UADbJ,EAAMA,EAAKI,EAAS,GAIpBmJ,IAFApJ,GAHAA,EAAUA,GAAWtC,EAAI,SAAa,GAAM,IAGxBmC,IAAO,IAAO,KAEZ,GACtBG,GAAU,QACZ,CACAnQ,EAAIoN,MAAM8C,GAAKE,EACfH,EAAQE,EACRA,EAASoJ,CACX,CAOA,OANc,IAAVtJ,EACFjQ,EAAIoN,MAAM8C,GAAKD,EAEfjQ,EAAIrB,SAGCqB,EAAI0jB,QACb,CAEA,SAASzK,EAAYpJ,EAAM7M,EAAKhD,GAI9B,OAAOwZ,EAAS3J,EAAM7M,EAAKhD,EAC7B,CAqBA,SAASkZ,EAAME,EAAGC,GAChBhc,KAAK+b,EAAIA,EACT/b,KAAKgc,EAAIA,CACX,CA1EKrL,KAAK8J,OACRhE,EAAclE,GAmDhB7C,EAAGzP,UAAUgc,MAAQ,SAAgBtW,EAAKhD,GACxC,IACIsI,EAAMjL,KAAKsB,OAASqE,EAAIrE,OAW5B,OAVoB,KAAhBtB,KAAKsB,QAAgC,KAAfqE,EAAIrE,OACtBmV,EAAYzW,KAAM2F,EAAKhD,GACpBsI,EAAM,GACTsH,EAAWvS,KAAM2F,EAAKhD,GACnBsI,EAAM,KACTkR,EAASnc,KAAM2F,EAAKhD,GAEpBiZ,EAAW5b,KAAM2F,EAAKhD,EAIhC,EAUAkZ,EAAK5b,UAAUmc,QAAU,SAAkBC,GAGzC,IAFA,IAAIjI,EAAI,IAAI1S,MAAM2a,GACdC,EAAI5M,EAAGzP,UAAUkU,WAAWkI,GAAK,EAC5BnR,EAAI,EAAGA,EAAImR,EAAGnR,IACrBkJ,EAAElJ,GAAKlL,KAAKuc,OAAOrR,EAAGoR,EAAGD,GAG3B,OAAOjI,CACT,EAGAyH,EAAK5b,UAAUsc,OAAS,SAAiBR,EAAGO,EAAGD,GAC7C,GAAU,IAANN,GAAWA,IAAMM,EAAI,EAAG,OAAON,EAGnC,IADA,IAAIS,EAAK,EACAtR,EAAI,EAAGA,EAAIoR,EAAGpR,IACrBsR,IAAW,EAAJT,IAAWO,EAAIpR,EAAI,EAC1B6Q,IAAM,EAGR,OAAOS,CACT,EAIAX,EAAK5b,UAAUwc,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAInR,EAAI,EAAGA,EAAImR,EAAGnR,IACrB2R,EAAK3R,GAAKyR,EAAID,EAAIxR,IAClB4R,EAAK5R,GAAK0R,EAAIF,EAAIxR,GAEtB,EAEA2Q,EAAK5b,UAAU8c,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtE1c,KAAKyc,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQtM,KAAKuM,IAAI,EAAIvM,KAAKwM,GAAKb,GAC/Bc,EAAQzM,KAAK0M,IAAI,EAAI1M,KAAKwM,GAAKb,GAE1BjN,EAAI,EAAGA,EAAIgN,EAAGhN,GAAKiN,EAI1B,IAHA,IAAIgB,EAASL,EACTM,EAASH,EAEJjS,EAAI,EAAGA,EAAI6R,EAAG7R,IAAK,CAC1B,IAAImC,EAAKuP,EAAKxN,EAAIlE,GACdqS,EAAKV,EAAKzN,EAAIlE,GAEdsS,EAAKZ,EAAKxN,EAAIlE,EAAI6R,GAClBU,EAAKZ,EAAKzN,EAAIlE,EAAI6R,GAElBW,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELd,EAAKxN,EAAIlE,GAAKmC,EAAKmQ,EACnBX,EAAKzN,EAAIlE,GAAKqS,EAAKE,EAEnBb,EAAKxN,EAAIlE,EAAI6R,GAAK1P,EAAKmQ,EACvBX,EAAKzN,EAAIlE,EAAI6R,GAAKQ,EAAKE,EAGnBvS,IAAMmR,IACRqB,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,EAEb,CAGN,EAEA9B,EAAK5b,UAAU2d,YAAc,SAAsBC,EAAGC,GACpD,IAAIzB,EAAqB,EAAjB1L,KAAKC,IAAIkN,EAAGD,GAChBE,EAAU,EAAJ1B,EACNnR,EAAI,EACR,IAAKmR,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BnR,IAGF,OAAO,GAAKA,EAAI,EAAI6S,CACtB,EAEAlC,EAAK5b,UAAU+d,UAAY,SAAoBrB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAInR,EAAI,EAAGA,EAAImR,EAAI,EAAGnR,IAAK,CAC9B,IAAIkJ,EAAIuI,EAAIzR,GAEZyR,EAAIzR,GAAKyR,EAAIN,EAAInR,EAAI,GACrByR,EAAIN,EAAInR,EAAI,GAAKkJ,EAEjBA,EAAIwI,EAAI1R,GAER0R,EAAI1R,IAAM0R,EAAIP,EAAInR,EAAI,GACtB0R,EAAIP,EAAInR,EAAI,IAAMkJ,CACpB,CACF,EAEAyH,EAAK5b,UAAUge,aAAe,SAAuBC,EAAI7B,GAEvD,IADA,IAAIzJ,EAAQ,EACH1H,EAAI,EAAGA,EAAImR,EAAI,EAAGnR,IAAK,CAC9B,IAAImG,EAAoC,KAAhCV,KAAKwN,MAAMD,EAAG,EAAIhT,EAAI,GAAKmR,GACjC1L,KAAKwN,MAAMD,EAAG,EAAIhT,GAAKmR,GACvBzJ,EAEFsL,EAAGhT,GAAS,SAAJmG,EAGNuB,EADEvB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAO6M,CACT,EAEArC,EAAK5b,UAAUme,WAAa,SAAqBF,EAAIjT,EAAK0R,EAAKN,GAE7D,IADA,IAAIzJ,EAAQ,EACH1H,EAAI,EAAGA,EAAID,EAAKC,IACvB0H,GAAyB,EAARsL,EAAGhT,GAEpByR,EAAI,EAAIzR,GAAa,KAAR0H,EAAgBA,KAAkB,GAC/C+J,EAAI,EAAIzR,EAAI,GAAa,KAAR0H,EAAgBA,KAAkB,GAIrD,IAAK1H,EAAI,EAAID,EAAKC,EAAImR,IAAKnR,EACzByR,EAAIzR,GAAK,EAGXlI,EAAiB,IAAV4P,GACP5P,EAA6B,MAAb,KAAR4P,GACV,EAEAiJ,EAAK5b,UAAUoe,KAAO,SAAehC,GAEnC,IADA,IAAIiC,EAAK,IAAI5c,MAAM2a,GACVnR,EAAI,EAAGA,EAAImR,EAAGnR,IACrBoT,EAAGpT,GAAK,EAGV,OAAOoT,CACT,EAEAzC,EAAK5b,UAAU6b,KAAO,SAAeC,EAAGC,EAAGrZ,GACzC,IAAI0Z,EAAI,EAAIrc,KAAK4d,YAAY7B,EAAEza,OAAQ0a,EAAE1a,QAErCob,EAAM1c,KAAKoc,QAAQC,GAEnBkC,EAAIve,KAAKqe,KAAKhC,GAEdM,EAAM,IAAIjb,MAAM2a,GAChBmC,EAAO,IAAI9c,MAAM2a,GACjBoC,EAAO,IAAI/c,MAAM2a,GAEjBqC,EAAO,IAAIhd,MAAM2a,GACjBsC,EAAQ,IAAIjd,MAAM2a,GAClBuC,EAAQ,IAAIld,MAAM2a,GAElBwC,EAAOlc,EAAIoN,MACf8O,EAAKvd,OAAS+a,EAEdrc,KAAKoe,WAAWrC,EAAEhM,MAAOgM,EAAEza,OAAQqb,EAAKN,GACxCrc,KAAKoe,WAAWpC,EAAEjM,MAAOiM,EAAE1a,OAAQod,EAAMrC,GAEzCrc,KAAK+c,UAAUJ,EAAK4B,EAAGC,EAAMC,EAAMpC,EAAGK,GACtC1c,KAAK+c,UAAU2B,EAAMH,EAAGI,EAAOC,EAAOvC,EAAGK,GAEzC,IAAK,IAAIxR,EAAI,EAAGA,EAAImR,EAAGnR,IAAK,CAC1B,IAAIyS,EAAKa,EAAKtT,GAAKyT,EAAMzT,GAAKuT,EAAKvT,GAAK0T,EAAM1T,GAC9CuT,EAAKvT,GAAKsT,EAAKtT,GAAK0T,EAAM1T,GAAKuT,EAAKvT,GAAKyT,EAAMzT,GAC/CsT,EAAKtT,GAAKyS,CACZ,CASA,OAPA3d,KAAKge,UAAUQ,EAAMC,EAAMpC,GAC3Brc,KAAK+c,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGlC,EAAGK,GACvC1c,KAAKge,UAAUa,EAAMN,EAAGlC,GACxBrc,KAAKie,aAAaY,EAAMxC,GAExB1Z,EAAImN,SAAWiM,EAAEjM,SAAWkM,EAAElM,SAC9BnN,EAAIrB,OAASya,EAAEza,OAAS0a,EAAE1a,OACnBqB,EAAI0jB,QACb,EAGA3W,EAAGzP,UAAUyQ,IAAM,SAAc/K,GAC/B,IAAIhD,EAAM,IAAI+M,EAAG,MAEjB,OADA/M,EAAIoN,MAAQ,IAAIrO,MAAM1B,KAAKsB,OAASqE,EAAIrE,QACjCtB,KAAKic,MAAMtW,EAAKhD,EACzB,EAGA+M,EAAGzP,UAAU6e,KAAO,SAAenZ,GACjC,IAAIhD,EAAM,IAAI+M,EAAG,MAEjB,OADA/M,EAAIoN,MAAQ,IAAIrO,MAAM1B,KAAKsB,OAASqE,EAAIrE,QACjCsa,EAAW5b,KAAM2F,EAAKhD,EAC/B,EAGA+M,EAAGzP,UAAUwa,KAAO,SAAe9U,GACjC,OAAO3F,KAAKwE,QAAQyX,MAAMtW,EAAK3F,KACjC,EAEA0P,EAAGzP,UAAU4R,MAAQ,SAAgBlM,GACnC,IAAI2uB,EAAW3uB,EAAM,EACjB2uB,IAAU3uB,GAAOA,GAErB3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UAIb,IADA,IAAIiN,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAImG,GAAqB,EAAhBrR,KAAK+P,MAAM7E,IAAUvF,EAC1BgN,GAAU,SAAJtB,IAA0B,SAARuB,GAC5BA,IAAU,GACVA,GAAUvB,EAAI,SAAa,EAE3BuB,GAASD,IAAO,GAChB3S,KAAK+P,MAAM7E,GAAU,SAALyH,CAClB,CAOA,OALc,IAAVC,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,UAGAgzB,EAAWt0B,KAAKiV,OAASjV,IAClC,EAEA0P,EAAGzP,UAAU8e,KAAO,SAAepZ,GACjC,OAAO3F,KAAKwE,QAAQqN,MAAMlM,EAC5B,EAGA+J,EAAGzP,UAAU+e,IAAM,WACjB,OAAOhf,KAAK0Q,IAAI1Q,KAClB,EAGA0P,EAAGzP,UAAUgf,KAAO,WAClB,OAAOjf,KAAKya,KAAKza,KAAKwE,QACxB,EAGAkL,EAAGzP,UAAU8R,IAAM,SAAcpM,GAC/B,IAAI0L,EA7xCN,SAAqB1L,GAGnB,IAFA,IAAI0L,EAAI,IAAI3P,MAAMiE,EAAI2O,aAEb6B,EAAM,EAAGA,EAAM9E,EAAE/P,OAAQ6U,IAAO,CACvC,IAAI7E,EAAO6E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB9E,EAAE8E,GAAQxQ,EAAIoK,MAAMuB,KAAS8E,EAAQ,CACvC,CAEA,OAAO/E,CACT,CAkxCU6N,CAAWvZ,GACnB,GAAiB,IAAb0L,EAAE/P,OAAc,OAAO,IAAIoO,EAAG,GAIlC,IADA,IAAIzN,EAAMjC,KACDkL,EAAI,EAAGA,EAAImG,EAAE/P,QACP,IAAT+P,EAAEnG,GADsBA,IAAKjJ,EAAMA,EAAI+c,OAI7C,KAAM9T,EAAImG,EAAE/P,OACV,IAAK,IAAIyS,EAAI9R,EAAI+c,MAAO9T,EAAImG,EAAE/P,OAAQ4J,IAAK6I,EAAIA,EAAEiL,MAClC,IAAT3N,EAAEnG,KAENjJ,EAAMA,EAAIyO,IAAIqD,IAIlB,OAAO9R,CACT,EAGAyN,EAAGzP,UAAUkf,OAAS,SAAiBC,GACrCpc,EAAuB,kBAAToc,GAAqBA,GAAQ,GAC3C,IAGIlU,EAHAsF,EAAI4O,EAAO,GACXpC,GAAKoC,EAAO5O,GAAK,GACjB6O,EAAa,WAAe,GAAK7O,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIoC,EAAQ,EAEZ,IAAK1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAChC,IAAIoU,EAAWtf,KAAK+P,MAAM7E,GAAKmU,EAC3BhP,GAAsB,EAAhBrQ,KAAK+P,MAAM7E,IAAUoU,GAAa9O,EAC5CxQ,KAAK+P,MAAM7E,GAAKmF,EAAIuC,EACpBA,EAAQ0M,IAAc,GAAK9O,CAC7B,CAEIoC,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,SAET,CAEA,GAAU,IAAN0b,EAAS,CACX,IAAK9R,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAChClL,KAAK+P,MAAM7E,EAAI8R,GAAKhd,KAAK+P,MAAM7E,GAGjC,IAAKA,EAAI,EAAGA,EAAI8R,EAAG9R,IACjBlL,KAAK+P,MAAM7E,GAAK,EAGlBlL,KAAKsB,QAAU0b,CACjB,CAEA,OAAOhd,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUsf,MAAQ,SAAgBH,GAGnC,OADApc,EAAyB,IAAlBhD,KAAK8P,UACL9P,KAAKmf,OAAOC,EACrB,EAKA1P,EAAGzP,UAAUgU,OAAS,SAAiBmL,EAAMI,EAAMC,GAEjD,IAAIC,EADJ1c,EAAuB,kBAAToc,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIhP,EAAI4O,EAAO,GACXpC,EAAIrM,KAAK/D,KAAKwS,EAAO5O,GAAK,GAAIxQ,KAAKsB,QACnCqe,EAAO,SAAc,WAAcnP,GAAMA,EACzCoP,EAAcH,EAMlB,GAJAC,GAAK1C,EACL0C,EAAI/O,KAAKC,IAAI,EAAG8O,GAGZE,EAAa,CACf,IAAK,IAAI1U,EAAI,EAAGA,EAAI8R,EAAG9R,IACrB0U,EAAY7P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAEpC0U,EAAYte,OAAS0b,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIhd,KAAKsB,OAAS0b,EAEvB,IADAhd,KAAKsB,QAAU0b,EACV9R,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC3BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,EAAI8R,QAGjChd,KAAK+P,MAAM,GAAK,EAChB/P,KAAKsB,OAAS,EAGhB,IAAIsR,EAAQ,EACZ,IAAK1H,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,IAAgB,IAAV0H,GAAe1H,GAAKwU,GAAIxU,IAAK,CAChE,IAAI0G,EAAuB,EAAhB5R,KAAK+P,MAAM7E,GACtBlL,KAAK+P,MAAM7E,GAAM0H,GAAU,GAAKpC,EAAOoB,IAASpB,EAChDoC,EAAQhB,EAAO+N,CACjB,CAYA,OATIC,GAAyB,IAAVhN,IACjBgN,EAAY7P,MAAM6P,EAAYte,UAAYsR,GAGxB,IAAhB5S,KAAKsB,SACPtB,KAAK+P,MAAM,GAAK,EAChB/P,KAAKsB,OAAS,GAGTtB,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAU4f,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAzc,EAAyB,IAAlBhD,KAAK8P,UACL9P,KAAKiU,OAAOmL,EAAMI,EAAMC,EACjC,EAGA/P,EAAGzP,UAAU6f,KAAO,SAAeV,GACjC,OAAOpf,KAAKwE,QAAQ+a,MAAMH,EAC5B,EAEA1P,EAAGzP,UAAU8f,MAAQ,SAAgBX,GACnC,OAAOpf,KAAKwE,QAAQ2a,OAAOC,EAC7B,EAGA1P,EAAGzP,UAAU+f,KAAO,SAAeZ,GACjC,OAAOpf,KAAKwE,QAAQqb,MAAMT,EAC5B,EAEA1P,EAAGzP,UAAUggB,MAAQ,SAAgBb,GACnC,OAAOpf,KAAKwE,QAAQyP,OAAOmL,EAC7B,EAGA1P,EAAGzP,UAAU8U,MAAQ,SAAgBoB,GACnCnT,EAAsB,kBAARmT,GAAoBA,GAAO,GACzC,IAAI3F,EAAI2F,EAAM,GACV6G,GAAK7G,EAAM3F,GAAK,GAChBuD,EAAI,GAAKvD,EAGb,QAAIxQ,KAAKsB,QAAU0b,OAGXhd,KAAK+P,MAAMiN,GAELjJ,EAChB,EAGArE,EAAGzP,UAAUigB,OAAS,SAAiBd,GACrCpc,EAAuB,kBAAToc,GAAqBA,GAAQ,GAC3C,IAAI5O,EAAI4O,EAAO,GACXpC,GAAKoC,EAAO5O,GAAK,GAIrB,GAFAxN,EAAyB,IAAlBhD,KAAK8P,SAAgB,2CAExB9P,KAAKsB,QAAU0b,EACjB,OAAOhd,KAQT,GALU,IAANwQ,GACFwM,IAEFhd,KAAKsB,OAASqP,KAAK/D,IAAIoQ,EAAGhd,KAAKsB,QAErB,IAANkP,EAAS,CACX,IAAImP,EAAO,SAAc,WAAcnP,GAAMA,EAC7CxQ,KAAK+P,MAAM/P,KAAKsB,OAAS,IAAMqe,CACjC,CAEA,OAAO3f,KAAKqmB,QACd,EAGA3W,EAAGzP,UAAUkgB,MAAQ,SAAgBf,GACnC,OAAOpf,KAAKwE,QAAQ0b,OAAOd,EAC7B,EAGA1P,EAAGzP,UAAU4U,MAAQ,SAAgBlP,GAGnC,OAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAU3F,KAAKogB,OAAOza,GAGV,IAAlB3F,KAAK8P,SACa,IAAhB9P,KAAKsB,SAAiC,EAAhBtB,KAAK+P,MAAM,KAAWpK,GAC9C3F,KAAK+P,MAAM,GAAKpK,GAAuB,EAAhB3F,KAAK+P,MAAM,IAClC/P,KAAK8P,SAAW,EACT9P,OAGTA,KAAK8P,SAAW,EAChB9P,KAAKogB,MAAMza,GACX3F,KAAK8P,SAAW,EACT9P,MAIFA,KAAK8R,OAAOnM,EACrB,EAEA+J,EAAGzP,UAAU6R,OAAS,SAAiBnM,GACrC3F,KAAK+P,MAAM,IAAMpK,EAGjB,IAAK,IAAIuF,EAAI,EAAGA,EAAIlL,KAAKsB,QAAUtB,KAAK+P,MAAM7E,IAAM,SAAWA,IAC7DlL,KAAK+P,MAAM7E,IAAM,SACbA,IAAMlL,KAAKsB,OAAS,EACtBtB,KAAK+P,MAAM7E,EAAI,GAAK,EAEpBlL,KAAK+P,MAAM7E,EAAI,KAKnB,OAFAlL,KAAKsB,OAASqP,KAAKC,IAAI5Q,KAAKsB,OAAQ4J,EAAI,GAEjClL,IACT,EAGA0P,EAAGzP,UAAUmgB,MAAQ,SAAgBza,GAGnC,GAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAG,OAAO3F,KAAK6U,OAAOlP,GAEhC,GAAsB,IAAlB3F,KAAK8P,SAIP,OAHA9P,KAAK8P,SAAW,EAChB9P,KAAK6U,MAAMlP,GACX3F,KAAK8P,SAAW,EACT9P,KAKT,GAFAA,KAAK+P,MAAM,IAAMpK,EAEG,IAAhB3F,KAAKsB,QAAgBtB,KAAK+P,MAAM,GAAK,EACvC/P,KAAK+P,MAAM,IAAM/P,KAAK+P,MAAM,GAC5B/P,KAAK8P,SAAW,OAGhB,IAAK,IAAI5E,EAAI,EAAGA,EAAIlL,KAAKsB,QAAUtB,KAAK+P,MAAM7E,GAAK,EAAGA,IACpDlL,KAAK+P,MAAM7E,IAAM,SACjBlL,KAAK+P,MAAM7E,EAAI,IAAM,EAIzB,OAAOlL,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUogB,KAAO,SAAe1a,GACjC,OAAO3F,KAAKwE,QAAQqQ,MAAMlP,EAC5B,EAEA+J,EAAGzP,UAAUqgB,KAAO,SAAe3a,GACjC,OAAO3F,KAAKwE,QAAQ4b,MAAMza,EAC5B,EAEA+J,EAAGzP,UAAUsgB,KAAO,WAGlB,OAFAvgB,KAAK8P,SAAW,EAET9P,IACT,EAEA0P,EAAGzP,UAAU0U,IAAM,WACjB,OAAO3U,KAAKwE,QAAQ+b,MACtB,EAEA7Q,EAAGzP,UAAUugB,aAAe,SAAuB7a,EAAK+K,EAAK+P,GAC3D,IACIvV,EAIAmG,EALApG,EAAMtF,EAAIrE,OAASmf,EAGvBzgB,KAAKiS,QAAQhH,GAGb,IAAI2H,EAAQ,EACZ,IAAK1H,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CAC/BmG,GAA6B,EAAxBrR,KAAK+P,MAAM7E,EAAIuV,IAAc7N,EAClC,IAAI9B,GAAwB,EAAfnL,EAAIoK,MAAM7E,IAAUwF,EAEjCkC,IADAvB,GAAa,SAARP,IACS,KAAQA,EAAQ,SAAa,GAC3C9Q,KAAK+P,MAAM7E,EAAIuV,GAAa,SAAJpP,CAC1B,CACA,KAAOnG,EAAIlL,KAAKsB,OAASmf,EAAOvV,IAE9B0H,GADAvB,GAA6B,EAAxBrR,KAAK+P,MAAM7E,EAAIuV,IAAc7N,IACrB,GACb5S,KAAK+P,MAAM7E,EAAIuV,GAAa,SAAJpP,EAG1B,GAAc,IAAVuB,EAAa,OAAO5S,KAAKqmB,SAK7B,IAFArjB,GAAkB,IAAX4P,GACPA,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAE3B0H,GADAvB,IAAsB,EAAhBrR,KAAK+P,MAAM7E,IAAU0H,IACd,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJmG,EAIlB,OAFArR,KAAK8P,SAAW,EAET9P,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUygB,SAAW,SAAmB/a,EAAKgb,GAC9C,IAAIF,GAAQzgB,KAAKsB,OAASqE,EAAIrE,QAE1BmR,EAAIzS,KAAKwE,QACTkO,EAAI/M,EAGJib,EAA8B,EAAxBlO,EAAE3C,MAAM2C,EAAEpR,OAAS,GAGf,KADdmf,EAAQ,GADMzgB,KAAKmU,WAAWyM,MAG5BlO,EAAIA,EAAEqN,MAAMU,GACZhO,EAAE0M,OAAOsB,GACTG,EAA8B,EAAxBlO,EAAE3C,MAAM2C,EAAEpR,OAAS,IAI3B,IACIyS,EADA+J,EAAIrL,EAAEnR,OAASoR,EAAEpR,OAGrB,GAAa,QAATqf,EAAgB,EAClB5M,EAAI,IAAIrE,EAAG,OACTpO,OAASwc,EAAI,EACf/J,EAAEhE,MAAQ,IAAIrO,MAAMqS,EAAEzS,QACtB,IAAK,IAAI4J,EAAI,EAAGA,EAAI6I,EAAEzS,OAAQ4J,IAC5B6I,EAAEhE,MAAM7E,GAAK,CAEjB,CAEA,IAAI2V,EAAOpO,EAAEjO,QAAQgc,aAAa9N,EAAG,EAAGoL,GAClB,IAAlB+C,EAAK/Q,WACP2C,EAAIoO,EACA9M,IACFA,EAAEhE,MAAM+N,GAAK,IAIjB,IAAK,IAAI3S,EAAI2S,EAAI,EAAG3S,GAAK,EAAGA,IAAK,CAC/B,IAAI2V,EAAmC,UAAL,EAAxBrO,EAAE1C,MAAM2C,EAAEpR,OAAS6J,KACE,EAA5BsH,EAAE1C,MAAM2C,EAAEpR,OAAS6J,EAAI,IAO1B,IAHA2V,EAAKnQ,KAAK/D,IAAKkU,EAAKF,EAAO,EAAG,UAE9BnO,EAAE+N,aAAa9N,EAAGoO,EAAI3V,GACA,IAAfsH,EAAE3C,UACPgR,IACArO,EAAE3C,SAAW,EACb2C,EAAE+N,aAAa9N,EAAG,EAAGvH,GAChBsH,EAAEW,WACLX,EAAE3C,UAAY,GAGdiE,IACFA,EAAEhE,MAAM5E,GAAK2V,EAEjB,CAWA,OAVI/M,GACFA,EAAEsS,SAEJ5T,EAAE4T,SAGW,QAAT1F,GAA4B,IAAVF,GACpBhO,EAAEwB,OAAOwM,GAGJ,CACLM,IAAKhN,GAAK,KACVpC,IAAKc,EAET,EAMA/C,EAAGzP,UAAU+gB,OAAS,SAAiBrb,EAAKgb,EAAMM,GAGhD,OAFAje,GAAQ2C,EAAIyN,UAERpT,KAAKoT,SACA,CACL2N,IAAK,IAAIrR,EAAG,GACZiC,IAAK,IAAIjC,EAAG,IAKM,IAAlB1P,KAAK8P,UAAmC,IAAjBnK,EAAImK,UAC7B7N,EAAMjC,KAAKmV,MAAM6L,OAAOrb,EAAKgb,GAEhB,QAATA,IACFI,EAAM9e,EAAI8e,IAAI5L,OAGH,QAATwL,IACFhP,EAAM1P,EAAI0P,IAAIwD,MACV8L,GAA6B,IAAjBtP,EAAI7B,UAClB6B,EAAI0E,KAAK1Q,IAIN,CACLob,IAAKA,EACLpP,IAAKA,IAIa,IAAlB3R,KAAK8P,UAAmC,IAAjBnK,EAAImK,UAC7B7N,EAAMjC,KAAKghB,OAAOrb,EAAIwP,MAAOwL,GAEhB,QAATA,IACFI,EAAM9e,EAAI8e,IAAI5L,OAGT,CACL4L,IAAKA,EACLpP,IAAK1P,EAAI0P,MAI0B,KAAlC3R,KAAK8P,SAAWnK,EAAImK,WACvB7N,EAAMjC,KAAKmV,MAAM6L,OAAOrb,EAAIwP,MAAOwL,GAEtB,QAATA,IACFhP,EAAM1P,EAAI0P,IAAIwD,MACV8L,GAA6B,IAAjBtP,EAAI7B,UAClB6B,EAAI2E,KAAK3Q,IAIN,CACLob,IAAK9e,EAAI8e,IACTpP,IAAKA,IAOLhM,EAAIrE,OAAStB,KAAKsB,QAAUtB,KAAK+Q,IAAIpL,GAAO,EACvC,CACLob,IAAK,IAAIrR,EAAG,GACZiC,IAAK3R,MAKU,IAAf2F,EAAIrE,OACO,QAATqf,EACK,CACLI,IAAK/gB,KAAKkhB,KAAKvb,EAAIoK,MAAM,IACzB4B,IAAK,MAII,QAATgP,EACK,CACLI,IAAK,KACLpP,IAAK,IAAIjC,EAAG1P,KAAKi0B,MAAMtuB,EAAIoK,MAAM,MAI9B,CACLgR,IAAK/gB,KAAKkhB,KAAKvb,EAAIoK,MAAM,IACzB4B,IAAK,IAAIjC,EAAG1P,KAAKi0B,MAAMtuB,EAAIoK,MAAM,MAI9B/P,KAAK0gB,SAAS/a,EAAKgb,GAlF1B,IAAII,EAAKpP,EAAK1P,CAmFhB,EAGAyN,EAAGzP,UAAU8gB,IAAM,SAAcpb,GAC/B,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAOob,GACxC,EAGArR,EAAGzP,UAAU0R,IAAM,SAAchM,GAC/B,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAOgM,GACxC,EAEAjC,EAAGzP,UAAUkhB,KAAO,SAAexb,GACjC,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAMgM,GACvC,EAGAjC,EAAGzP,UAAUmhB,SAAW,SAAmBzb,GACzC,IAAI0b,EAAKrhB,KAAKghB,OAAOrb,GAGrB,GAAI0b,EAAG1P,IAAIyB,SAAU,OAAOiO,EAAGN,IAE/B,IAAIpP,EAA0B,IAApB0P,EAAGN,IAAIjR,SAAiBuR,EAAG1P,IAAI2E,KAAK3Q,GAAO0b,EAAG1P,IAEpD2P,EAAO3b,EAAIsa,MAAM,GACjBsB,EAAK5b,EAAIqO,MAAM,GACfjD,EAAMY,EAAIZ,IAAIuQ,GAGlB,OAAIvQ,EAAM,GAAa,IAAPwQ,GAAoB,IAARxQ,EAAmBsQ,EAAGN,IAGvB,IAApBM,EAAGN,IAAIjR,SAAiBuR,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIlM,MAAM,EAChE,EAEAnF,EAAGzP,UAAUg0B,MAAQ,SAAgBtuB,GACnC,IAAI2uB,EAAW3uB,EAAM,EACjB2uB,IAAU3uB,GAAOA,GAErB3C,EAAO2C,GAAO,UAId,IAHA,IAAI0J,GAAK,GAAK,IAAM1J,EAEhB6b,EAAM,EACDtW,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IACpCsW,GAAOnS,EAAImS,GAAuB,EAAhBxhB,KAAK+P,MAAM7E,KAAWvF,EAG1C,OAAO2uB,GAAY9S,EAAMA,CAC3B,EAGA9R,EAAGzP,UAAUoT,KAAO,SAAe1N,GACjC,OAAO3F,KAAKi0B,MAAMtuB,EACpB,EAGA+J,EAAGzP,UAAUqT,MAAQ,SAAgB3N,GACnC,IAAI2uB,EAAW3uB,EAAM,EACjB2uB,IAAU3uB,GAAOA,GAErB3C,EAAO2C,GAAO,UAGd,IADA,IAAIiN,EAAQ,EACH1H,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACzC,IAAImG,GAAqB,EAAhBrR,KAAK+P,MAAM7E,IAAkB,SAAR0H,EAC9B5S,KAAK+P,MAAM7E,GAAMmG,EAAI1L,EAAO,EAC5BiN,EAAQvB,EAAI1L,CACd,CAGA,OADA3F,KAAKqmB,SACEiO,EAAWt0B,KAAKiV,OAASjV,IAClC,EAEA0P,EAAGzP,UAAUihB,KAAO,SAAevb,GACjC,OAAO3F,KAAKwE,QAAQ8O,MAAM3N,EAC5B,EAEA+J,EAAGzP,UAAUwhB,KAAO,SAAepS,GACjCrM,EAAsB,IAAfqM,EAAES,UACT9M,GAAQqM,EAAE+D,UAEV,IAAI2I,EAAI/b,KACJgc,EAAI3M,EAAE7K,QAGRuX,EADiB,IAAfA,EAAEjM,SACAiM,EAAEoF,KAAK9R,GAEP0M,EAAEvX,QAaR,IATA,IAAIkd,EAAI,IAAIhS,EAAG,GACXiS,EAAI,IAAIjS,EAAG,GAGXkS,EAAI,IAAIlS,EAAG,GACXmS,EAAI,IAAInS,EAAG,GAEXoS,EAAI,EAED/F,EAAEgG,UAAY/F,EAAE+F,UACrBhG,EAAE9H,OAAO,GACT+H,EAAE/H,OAAO,KACP6N,EAMJ,IAHA,IAAIE,EAAKhG,EAAExX,QACPyd,EAAKlG,EAAEvX,SAEHuX,EAAE3I,UAAU,CAClB,IAAK,IAAIlI,EAAI,EAAGgX,EAAK,EAAyB,KAArBnG,EAAEhM,MAAM,GAAKmS,IAAahX,EAAI,KAAMA,EAAGgX,IAAO,GACvE,GAAIhX,EAAI,EAEN,IADA6Q,EAAE9H,OAAO/I,GACFA,KAAM,IACPwW,EAAES,SAAWR,EAAEQ,WACjBT,EAAErL,KAAK2L,GACPL,EAAErL,KAAK2L,IAGTP,EAAEzN,OAAO,GACT0N,EAAE1N,OAAO,GAIb,IAAK,IAAI9I,EAAI,EAAGiX,EAAK,EAAyB,KAArBpG,EAAEjM,MAAM,GAAKqS,IAAajX,EAAI,KAAMA,EAAGiX,IAAO,GACvE,GAAIjX,EAAI,EAEN,IADA6Q,EAAE/H,OAAO9I,GACFA,KAAM,IACPyW,EAAEO,SAAWN,EAAEM,WACjBP,EAAEvL,KAAK2L,GACPH,EAAEvL,KAAK2L,IAGTL,EAAE3N,OAAO,GACT4N,EAAE5N,OAAO,GAIT8H,EAAEhL,IAAIiL,IAAM,GACdD,EAAEzF,KAAK0F,GACP0F,EAAEpL,KAAKsL,GACPD,EAAErL,KAAKuL,KAEP7F,EAAE1F,KAAKyF,GACP6F,EAAEtL,KAAKoL,GACPG,EAAEvL,KAAKqL,GAEX,CAEA,MAAO,CACLlP,EAAGmP,EACHlP,EAAGmP,EACHQ,IAAKrG,EAAEmD,OAAO2C,GAElB,EAKApS,EAAGzP,UAAUqiB,OAAS,SAAiBjT,GACrCrM,EAAsB,IAAfqM,EAAES,UACT9M,GAAQqM,EAAE+D,UAEV,IAAIX,EAAIzS,KACJ0S,EAAIrD,EAAE7K,QAGRiO,EADiB,IAAfA,EAAE3C,SACA2C,EAAE0O,KAAK9R,GAEPoD,EAAEjO,QAQR,IALA,IAuCIvC,EAvCAsgB,EAAK,IAAI7S,EAAG,GACZ8S,EAAK,IAAI9S,EAAG,GAEZ+S,EAAQ/P,EAAElO,QAEPiO,EAAEiQ,KAAK,GAAK,GAAKhQ,EAAEgQ,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIxX,EAAI,EAAGgX,EAAK,EAAyB,KAArBzP,EAAE1C,MAAM,GAAKmS,IAAahX,EAAI,KAAMA,EAAGgX,IAAO,GACvE,GAAIhX,EAAI,EAEN,IADAuH,EAAEwB,OAAO/I,GACFA,KAAM,GACPqX,EAAGJ,SACLI,EAAGlM,KAAKoM,GAGVF,EAAGtO,OAAO,GAId,IAAK,IAAI9I,EAAI,EAAGiX,EAAK,EAAyB,KAArB1P,EAAE3C,MAAM,GAAKqS,IAAajX,EAAI,KAAMA,EAAGiX,IAAO,GACvE,GAAIjX,EAAI,EAEN,IADAuH,EAAEuB,OAAO9I,GACFA,KAAM,GACPqX,EAAGL,SACLK,EAAGnM,KAAKoM,GAGVD,EAAGvO,OAAO,GAIVxB,EAAE1B,IAAI2B,IAAM,GACdD,EAAE6D,KAAK5D,GACP6P,EAAGjM,KAAKkM,KAER9P,EAAE4D,KAAK7D,GACP+P,EAAGlM,KAAKiM,GAEZ,CAaA,OATEtgB,EADgB,IAAdwQ,EAAEiQ,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKhH,GAGJpN,CACT,EAEAyN,EAAGzP,UAAUoiB,IAAM,SAAc1c,GAC/B,GAAI3F,KAAKoT,SAAU,OAAOzN,EAAIgP,MAC9B,GAAIhP,EAAIyN,SAAU,OAAOpT,KAAK2U,MAE9B,IAAIlC,EAAIzS,KAAKwE,QACTkO,EAAI/M,EAAInB,QACZiO,EAAE3C,SAAW,EACb4C,EAAE5C,SAAW,EAGb,IAAK,IAAI2Q,EAAQ,EAAGhO,EAAEsP,UAAYrP,EAAEqP,SAAUtB,IAC5ChO,EAAEwB,OAAO,GACTvB,EAAEuB,OAAO,GAGX,OAAG,CACD,KAAOxB,EAAEsP,UACPtP,EAAEwB,OAAO,GAEX,KAAOvB,EAAEqP,UACPrP,EAAEuB,OAAO,GAGX,IAAIzD,EAAIiC,EAAE1B,IAAI2B,GACd,GAAIlC,EAAI,EAAG,CAET,IAAI4D,EAAI3B,EACRA,EAAIC,EACJA,EAAI0B,CACN,MAAO,GAAU,IAAN5D,GAAyB,IAAdkC,EAAEgQ,KAAK,GAC3B,MAGFjQ,EAAE6D,KAAK5D,EACT,CAEA,OAAOA,EAAEyM,OAAOsB,EAClB,EAGA/Q,EAAGzP,UAAU0iB,KAAO,SAAehd,GACjC,OAAO3F,KAAKyhB,KAAK9b,GAAK8M,EAAE0O,KAAKxb,EAC/B,EAEA+J,EAAGzP,UAAU8hB,OAAS,WACpB,OAA+B,KAAP,EAAhB/hB,KAAK+P,MAAM,GACrB,EAEAL,EAAGzP,UAAUkiB,MAAQ,WACnB,OAA+B,KAAP,EAAhBniB,KAAK+P,MAAM,GACrB,EAGAL,EAAGzP,UAAU+T,MAAQ,SAAgBrO,GACnC,OAAO3F,KAAK+P,MAAM,GAAKpK,CACzB,EAGA+J,EAAGzP,UAAU2iB,MAAQ,SAAgBzM,GACnCnT,EAAsB,kBAARmT,GACd,IAAI3F,EAAI2F,EAAM,GACV6G,GAAK7G,EAAM3F,GAAK,GAChBuD,EAAI,GAAKvD,EAGb,GAAIxQ,KAAKsB,QAAU0b,EAGjB,OAFAhd,KAAKiS,QAAQ+K,EAAI,GACjBhd,KAAK+P,MAAMiN,IAAMjJ,EACV/T,KAKT,IADA,IAAI4S,EAAQmB,EACH7I,EAAI8R,EAAa,IAAVpK,GAAe1H,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACnD,IAAImG,EAAoB,EAAhBrR,KAAK+P,MAAM7E,GAEnB0H,GADAvB,GAAKuB,KACS,GACdvB,GAAK,SACLrR,KAAK+P,MAAM7E,GAAKmG,CAClB,CAKA,OAJc,IAAVuB,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,UAEAtB,IACT,EAEA0P,EAAGzP,UAAUmT,OAAS,WACpB,OAAuB,IAAhBpT,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,EACzC,EAEAL,EAAGzP,UAAUyiB,KAAO,SAAe/c,GACjC,IAOI1D,EAPA6N,EAAWnK,EAAM,EAErB,GAAsB,IAAlB3F,KAAK8P,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB9P,KAAK8P,UAAkBA,EAAU,OAAO,EAK5C,GAHA9P,KAAKqmB,SAGDrmB,KAAKsB,OAAS,EAChBW,EAAM,MACD,CACD6N,IACFnK,GAAOA,GAGT3C,EAAO2C,GAAO,SAAW,qBAEzB,IAAI0L,EAAoB,EAAhBrR,KAAK+P,MAAM,GACnB9N,EAAMoP,IAAM1L,EAAM,EAAI0L,EAAI1L,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlB3F,KAAK8P,SAA8B,GAAN7N,EAC1BA,CACT,EAMAyN,EAAGzP,UAAU8Q,IAAM,SAAcpL,GAC/B,GAAsB,IAAlB3F,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAAgB,OAAQ,EACvD,GAAsB,IAAlB9P,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAAgB,OAAO,EAEtD,IAAI7N,EAAMjC,KAAK6iB,KAAKld,GACpB,OAAsB,IAAlB3F,KAAK8P,SAA8B,GAAN7N,EAC1BA,CACT,EAGAyN,EAAGzP,UAAU4iB,KAAO,SAAeld,GAEjC,GAAI3F,KAAKsB,OAASqE,EAAIrE,OAAQ,OAAO,EACrC,GAAItB,KAAKsB,OAASqE,EAAIrE,OAAQ,OAAQ,EAGtC,IADA,IAAIW,EAAM,EACDiJ,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACzC,IAAIuH,EAAoB,EAAhBzS,KAAK+P,MAAM7E,GACfwH,EAAmB,EAAf/M,EAAIoK,MAAM7E,GAElB,GAAIuH,IAAMC,EAAV,CACID,EAAIC,EACNzQ,GAAO,EACEwQ,EAAIC,IACbzQ,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAyN,EAAGzP,UAAU6iB,IAAM,SAAcnd,GAC/B,OAA0B,IAAnB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAU8iB,GAAK,SAAapd,GAC7B,OAAyB,IAAlB3F,KAAK+Q,IAAIpL,EAClB,EAEA+J,EAAGzP,UAAU+iB,KAAO,SAAerd,GACjC,OAAO3F,KAAK0iB,KAAK/c,IAAQ,CAC3B,EAEA+J,EAAGzP,UAAUgjB,IAAM,SAActd,GAC/B,OAAO3F,KAAK+Q,IAAIpL,IAAQ,CAC1B,EAEA+J,EAAGzP,UAAUijB,IAAM,SAAcvd,GAC/B,OAA2B,IAApB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAUkjB,GAAK,SAAaxd,GAC7B,OAA0B,IAAnB3F,KAAK+Q,IAAIpL,EAClB,EAEA+J,EAAGzP,UAAUmjB,KAAO,SAAezd,GACjC,OAAO3F,KAAK0iB,KAAK/c,IAAQ,CAC3B,EAEA+J,EAAGzP,UAAUojB,IAAM,SAAc1d,GAC/B,OAAO3F,KAAK+Q,IAAIpL,IAAQ,CAC1B,EAEA+J,EAAGzP,UAAUqjB,IAAM,SAAc3d,GAC/B,OAA0B,IAAnB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAUsjB,GAAK,SAAa5d,GAC7B,OAAyB,IAAlB3F,KAAK+Q,IAAIpL,EAClB,EAMA+J,EAAGM,IAAM,SAAcrK,GACrB,OAAO,IAAI6d,EAAI7d,EACjB,EAEA+J,EAAGzP,UAAUwjB,MAAQ,SAAgBC,GAGnC,OAFA1gB,GAAQhD,KAAKgQ,IAAK,yCAClBhN,EAAyB,IAAlBhD,KAAK8P,SAAgB,iCACrB4T,EAAIC,UAAU3jB,MAAM4jB,UAAUF,EACvC,EAEAhU,EAAGzP,UAAU4jB,QAAU,WAErB,OADA7gB,EAAOhD,KAAKgQ,IAAK,wDACVhQ,KAAKgQ,IAAI8T,YAAY9jB,KAC9B,EAEA0P,EAAGzP,UAAU2jB,UAAY,SAAoBF,GAE3C,OADA1jB,KAAKgQ,IAAM0T,EACJ1jB,IACT,EAEA0P,EAAGzP,UAAU8jB,SAAW,SAAmBL,GAEzC,OADA1gB,GAAQhD,KAAKgQ,IAAK,yCACXhQ,KAAK4jB,UAAUF,EACxB,EAEAhU,EAAGzP,UAAU+jB,OAAS,SAAiBre,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIuG,IAAIvW,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUgkB,QAAU,SAAkBte,GAEvC,OADA3C,EAAOhD,KAAKgQ,IAAK,uCACVhQ,KAAKgQ,IAAIqG,KAAKrW,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUikB,OAAS,SAAiBve,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIwG,IAAIxW,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUkkB,QAAU,SAAkBxe,GAEvC,OADA3C,EAAOhD,KAAKgQ,IAAK,uCACVhQ,KAAKgQ,IAAIsG,KAAKtW,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUmkB,OAAS,SAAiBze,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIqU,IAAIrkB,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUqkB,OAAS,SAAiB3e,GAGrC,OAFA3C,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAIuU,SAASvkB,KAAM2F,GACjB3F,KAAKgQ,IAAIU,IAAI1Q,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUukB,QAAU,SAAkB7e,GAGvC,OAFA3C,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAIuU,SAASvkB,KAAM2F,GACjB3F,KAAKgQ,IAAIyK,KAAKza,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUwkB,OAAS,WAGpB,OAFAzhB,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAIgP,IAAIhf,KACtB,EAEA0P,EAAGzP,UAAU0kB,QAAU,WAGrB,OAFA3hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAIiP,KAAKjf,KACvB,EAGA0P,EAAGzP,UAAU2kB,QAAU,WAGrB,OAFA5hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI6U,KAAK7kB,KACvB,EAEA0P,EAAGzP,UAAU6kB,QAAU,WAGrB,OAFA9hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI2S,KAAK3iB,KACvB,EAGA0P,EAAGzP,UAAU8kB,OAAS,WAGpB,OAFA/hB,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAImF,IAAInV,KACtB,EAEA0P,EAAGzP,UAAU+kB,OAAS,SAAiBrf,GAGrC,OAFA3C,EAAOhD,KAAKgQ,MAAQrK,EAAIqK,IAAK,qBAC7BhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI+B,IAAI/R,KAAM2F,EAC5B,EAGA,IAAIsf,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQxlB,EAAMuP,GAErBrP,KAAKF,KAAOA,EACZE,KAAKqP,EAAI,IAAIK,EAAGL,EAAG,IACnBrP,KAAK6d,EAAI7d,KAAKqP,EAAEiF,YAChBtU,KAAK6S,EAAI,IAAInD,EAAG,GAAGyP,OAAOnf,KAAK6d,GAAGvH,KAAKtW,KAAKqP,GAE5CrP,KAAKuM,IAAMvM,KAAKulB,MAClB,CAgDA,SAASC,IACPF,EAAO/kB,KACLP,KACA,OACA,0EACJ,CA8DA,SAASylB,IACPH,EAAO/kB,KACLP,KACA,OACA,iEACJ,CAGA,SAAS0lB,IACPJ,EAAO/kB,KACLP,KACA,OACA,wDACJ,CAGA,SAAS2lB,IAEPL,EAAO/kB,KACLP,KACA,QACA,sEACJ,CA6CA,SAASwjB,EAAK1F,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI8H,EAAQlW,EAAGmW,OAAO/H,GACtB9d,KAAK8d,EAAI8H,EAAMvW,EACfrP,KAAK4lB,MAAQA,CACf,MACE5iB,EAAO8a,EAAEgF,IAAI,GAAI,kCACjB9iB,KAAK8d,EAAIA,EACT9d,KAAK4lB,MAAQ,IAEjB,CAkOA,SAASE,EAAMhI,GACb0F,EAAIjjB,KAAKP,KAAM8d,GAEf9d,KAAKygB,MAAQzgB,KAAK8d,EAAExJ,YAChBtU,KAAKygB,MAAQ,KAAO,IACtBzgB,KAAKygB,OAAS,GAAMzgB,KAAKygB,MAAQ,IAGnCzgB,KAAKwQ,EAAI,IAAId,EAAG,GAAGyP,OAAOnf,KAAKygB,OAC/BzgB,KAAKuhB,GAAKvhB,KAAK+lB,KAAK/lB,KAAKwQ,EAAEwO,OAC3Bhf,KAAKgmB,KAAOhmB,KAAKwQ,EAAE8R,OAAOtiB,KAAK8d,GAE/B9d,KAAKimB,KAAOjmB,KAAKgmB,KAAKtV,IAAI1Q,KAAKwQ,GAAG4P,MAAM,GAAGW,IAAI/gB,KAAK8d,GACpD9d,KAAKimB,KAAOjmB,KAAKimB,KAAK9E,KAAKnhB,KAAKwQ,GAChCxQ,KAAKimB,KAAOjmB,KAAKwQ,EAAEgG,IAAIxW,KAAKimB,KAC9B,CA/aAX,EAAOrlB,UAAUslB,KAAO,WACtB,IAAIhZ,EAAM,IAAImD,EAAG,MAEjB,OADAnD,EAAIwD,MAAQ,IAAIrO,MAAMiP,KAAKS,KAAKpR,KAAK6d,EAAI,KAClCtR,CACT,EAEA+Y,EAAOrlB,UAAUimB,QAAU,SAAkBvgB,GAG3C,IACIwgB,EADA3V,EAAI7K,EAGR,GACE3F,KAAKmN,MAAMqD,EAAGxQ,KAAKuM,KAGnB4Z,GADA3V,GADAA,EAAIxQ,KAAKomB,MAAM5V,IACT6F,KAAKrW,KAAKuM,MACP+H,kBACF6R,EAAOnmB,KAAK6d,GAErB,IAAI9M,EAAMoV,EAAOnmB,KAAK6d,GAAK,EAAIrN,EAAEqS,KAAK7iB,KAAKqP,GAgB3C,OAfY,IAAR0B,GACFP,EAAET,MAAM,GAAK,EACbS,EAAElP,OAAS,GACFyP,EAAM,EACfP,EAAE8F,KAAKtW,KAAKqP,QAEInH,IAAZsI,EAAEe,MAEJf,EAAEe,QAGFf,EAAE6V,SAIC7V,CACT,EAEA8U,EAAOrlB,UAAUkN,MAAQ,SAAgBrH,EAAOnD,GAC9CmD,EAAMmO,OAAOjU,KAAK6d,EAAG,EAAGlb,EAC1B,EAEA2iB,EAAOrlB,UAAUmmB,MAAQ,SAAgBzgB,GACvC,OAAOA,EAAI8U,KAAKza,KAAK6S,EACvB,EAQAjT,EAAS4lB,EAAMF,GAEfE,EAAKvlB,UAAUkN,MAAQ,SAAgBrH,EAAOwgB,GAK5C,IAHA,IAAI3G,EAAO,QAEP4G,EAAS5V,KAAK/D,IAAI9G,EAAMxE,OAAQ,GAC3B4J,EAAI,EAAGA,EAAIqb,EAAQrb,IAC1Bob,EAAOvW,MAAM7E,GAAKpF,EAAMiK,MAAM7E,GAIhC,GAFAob,EAAOhlB,OAASilB,EAEZzgB,EAAMxE,QAAU,EAGlB,OAFAwE,EAAMiK,MAAM,GAAK,OACjBjK,EAAMxE,OAAS,GAKjB,IAAIqI,EAAO7D,EAAMiK,MAAM,GAGvB,IAFAuW,EAAOvW,MAAMuW,EAAOhlB,UAAYqI,EAAOgW,EAElCzU,EAAI,GAAIA,EAAIpF,EAAMxE,OAAQ4J,IAAK,CAClC,IAAIsb,EAAwB,EAAjB1gB,EAAMiK,MAAM7E,GACvBpF,EAAMiK,MAAM7E,EAAI,KAAQsb,EAAO7G,IAAS,EAAMhW,IAAS,GACvDA,EAAO6c,CACT,CACA7c,KAAU,GACV7D,EAAMiK,MAAM7E,EAAI,IAAMvB,EACT,IAATA,GAAc7D,EAAMxE,OAAS,GAC/BwE,EAAMxE,QAAU,GAEhBwE,EAAMxE,QAAU,CAEpB,EAEAkkB,EAAKvlB,UAAUmmB,MAAQ,SAAgBzgB,GAErCA,EAAIoK,MAAMpK,EAAIrE,QAAU,EACxBqE,EAAIoK,MAAMpK,EAAIrE,OAAS,GAAK,EAC5BqE,EAAIrE,QAAU,EAId,IADA,IAAIqR,EAAK,EACAzH,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CACnC,IAAImG,EAAmB,EAAf1L,EAAIoK,MAAM7E,GAClByH,GAAU,IAAJtB,EACN1L,EAAIoK,MAAM7E,GAAU,SAALyH,EACfA,EAAS,GAAJtB,GAAasB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BhN,EAAIoK,MAAMpK,EAAIrE,OAAS,KACzBqE,EAAIrE,SAC8B,IAA9BqE,EAAIoK,MAAMpK,EAAIrE,OAAS,IACzBqE,EAAIrE,UAGDqE,CACT,EAQA/F,EAAS6lB,EAAMH,GAQf1lB,EAAS8lB,EAAMJ,GASf1lB,EAAS+lB,EAAQL,GAEjBK,EAAO1lB,UAAUmmB,MAAQ,SAAgBzgB,GAGvC,IADA,IAAIiN,EAAQ,EACH1H,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CACnC,IAAIqJ,EAA0B,IAAL,EAAf5O,EAAIoK,MAAM7E,IAAiB0H,EACjCD,EAAU,SAAL4B,EACTA,KAAQ,GAER5O,EAAIoK,MAAM7E,GAAKyH,EACfC,EAAQ2B,CACV,CAIA,OAHc,IAAV3B,IACFjN,EAAIoK,MAAMpK,EAAIrE,UAAYsR,GAErBjN,CACT,EAGA+J,EAAGmW,OAAS,SAAgB/lB,GAE1B,GAAImlB,EAAOnlB,GAAO,OAAOmlB,EAAOnlB,GAEhC,IAAI8lB,EACJ,GAAa,SAAT9lB,EACF8lB,EAAQ,IAAIJ,OACP,GAAa,SAAT1lB,EACT8lB,EAAQ,IAAIH,OACP,GAAa,SAAT3lB,EACT8lB,EAAQ,IAAIF,MACP,IAAa,WAAT5lB,EAGT,MAAM,IAAI0F,MAAM,iBAAmB1F,GAFnC8lB,EAAQ,IAAID,CAGd,CAGA,OAFAV,EAAOnlB,GAAQ8lB,EAERA,CACT,EAiBApC,EAAIvjB,UAAUykB,SAAW,SAAmBjS,GAC1CzP,EAAsB,IAAfyP,EAAE3C,SAAgB,iCACzB9M,EAAOyP,EAAEzC,IAAK,kCAChB,EAEAwT,EAAIvjB,UAAUskB,SAAW,SAAmB9R,EAAGC,GAC7C1P,EAAqC,KAA7ByP,EAAE3C,SAAW4C,EAAE5C,UAAiB,iCACxC9M,EAAOyP,EAAEzC,KAAOyC,EAAEzC,MAAQ0C,EAAE1C,IAC1B,kCACJ,EAEAwT,EAAIvjB,UAAU8lB,KAAO,SAAetT,GAClC,OAAIzS,KAAK4lB,MAAc5lB,KAAK4lB,MAAMM,QAAQzT,GAAGmR,UAAU5jB,OAEvD4zB,EAAKnhB,EAAGA,EAAE0O,KAAKnhB,KAAK8d,GAAG8F,UAAU5jB,OAC1ByS,EACT,EAEA+Q,EAAIvjB,UAAUkV,IAAM,SAAc1C,GAChC,OAAIA,EAAEW,SACGX,EAAEjO,QAGJxE,KAAK8d,EAAEtH,IAAI/D,GAAGmR,UAAU5jB,KACjC,EAEAwjB,EAAIvjB,UAAUsW,IAAM,SAAc9D,EAAGC,GACnC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE8D,IAAI7D,GAIhB,OAHIzQ,EAAI8O,IAAI/Q,KAAK8d,IAAM,GACrB7b,EAAIqU,KAAKtW,KAAK8d,GAET7b,EAAI2hB,UAAU5jB,KACvB,EAEAwjB,EAAIvjB,UAAUoW,KAAO,SAAe5D,EAAGC,GACrC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE4D,KAAK3D,GAIjB,OAHIzQ,EAAI8O,IAAI/Q,KAAK8d,IAAM,GACrB7b,EAAIqU,KAAKtW,KAAK8d,GAET7b,CACT,EAEAuhB,EAAIvjB,UAAUuW,IAAM,SAAc/D,EAAGC,GACnC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE+D,IAAI9D,GAIhB,OAHIzQ,EAAIygB,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKrW,KAAK8d,GAET7b,EAAI2hB,UAAU5jB,KACvB,EAEAwjB,EAAIvjB,UAAUqW,KAAO,SAAe7D,EAAGC,GACrC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE6D,KAAK5D,GAIjB,OAHIzQ,EAAIygB,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKrW,KAAK8d,GAET7b,CACT,EAEAuhB,EAAIvjB,UAAUokB,IAAM,SAAc5R,EAAG9M,GAEnC,OADA3F,KAAK0kB,SAASjS,GACPzS,KAAK+lB,KAAKtT,EAAEsN,MAAMpa,GAC3B,EAEA6d,EAAIvjB,UAAUwa,KAAO,SAAehI,EAAGC,GAErC,OADA1S,KAAKukB,SAAS9R,EAAGC,GACV1S,KAAK+lB,KAAKtT,EAAEgI,KAAK/H,GAC1B,EAEA8Q,EAAIvjB,UAAUyQ,IAAM,SAAc+B,EAAGC,GAEnC,OADA1S,KAAKukB,SAAS9R,EAAGC,GACV1S,KAAK+lB,KAAKtT,EAAE/B,IAAIgC,GACzB,EAEA8Q,EAAIvjB,UAAUgf,KAAO,SAAexM,GAClC,OAAOzS,KAAKya,KAAKhI,EAAGA,EAAEjO,QACxB,EAEAgf,EAAIvjB,UAAU+e,IAAM,SAAcvM,GAChC,OAAOzS,KAAK0Q,IAAI+B,EAAGA,EACrB,EAEA+Q,EAAIvjB,UAAU4kB,KAAO,SAAepS,GAClC,GAAIA,EAAEW,SAAU,OAAOX,EAAEjO,QAEzB,IAAIiiB,EAAOzmB,KAAK8d,EAAE9J,MAAM,GAIxB,GAHAhR,EAAOyjB,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI1U,EAAM/R,KAAK8d,EAAEvH,IAAI,IAAI7G,EAAG,IAAIuE,OAAO,GACvC,OAAOjU,KAAK+R,IAAIU,EAAGV,EACrB,CAOA,IAFA,IAAIgC,EAAI/T,KAAK8d,EAAEwC,KAAK,GAChBtD,EAAI,GACAjJ,EAAEX,UAA2B,IAAfW,EAAEC,MAAM,IAC5BgJ,IACAjJ,EAAEE,OAAO,GAEXjR,GAAQ+Q,EAAEX,UAEV,IAAIsT,EAAM,IAAIhX,EAAG,GAAG+T,MAAMzjB,MACtB2mB,EAAOD,EAAI3B,SAIX6B,EAAO5mB,KAAK8d,EAAEwC,KAAK,GAAGrM,OAAO,GAC7B4S,EAAI7mB,KAAK8d,EAAExJ,YAGf,IAFAuS,EAAI,IAAInX,EAAG,EAAImX,EAAIA,GAAGpD,MAAMzjB,MAEW,IAAhCA,KAAK+R,IAAI8U,EAAGD,GAAM7V,IAAI4V,IAC3BE,EAAE5C,QAAQ0C,GAOZ,IAJA,IAAItW,EAAIrQ,KAAK+R,IAAI8U,EAAG9S,GAChBvD,EAAIxQ,KAAK+R,IAAIU,EAAGsB,EAAEsM,KAAK,GAAGpM,OAAO,IACjCG,EAAIpU,KAAK+R,IAAIU,EAAGsB,GAChB+J,EAAId,EACc,IAAf5I,EAAErD,IAAI2V,IAAY,CAEvB,IADA,IAAIna,EAAM6H,EACDlJ,EAAI,EAAoB,IAAjBqB,EAAIwE,IAAI2V,GAAYxb,IAClCqB,EAAMA,EAAIkY,SAEZzhB,EAAOkI,EAAI4S,GACX,IAAIpL,EAAI1S,KAAK+R,IAAI1B,EAAG,IAAIX,EAAG,GAAGyP,OAAOrB,EAAI5S,EAAI,IAE7CsF,EAAIA,EAAE8T,OAAO5R,GACbrC,EAAIqC,EAAE+R,SACNrQ,EAAIA,EAAEkQ,OAAOjU,GACbyN,EAAI5S,CACN,CAEA,OAAOsF,CACT,EAEAgT,EAAIvjB,UAAU0iB,KAAO,SAAelQ,GAClC,IAAIqU,EAAMrU,EAAE6P,OAAOtiB,KAAK8d,GACxB,OAAqB,IAAjBgJ,EAAIhX,UACNgX,EAAIhX,SAAW,EACR9P,KAAK+lB,KAAKe,GAAK/B,UAEf/kB,KAAK+lB,KAAKe,EAErB,EAEAtD,EAAIvjB,UAAU8R,IAAM,SAAcU,EAAG9M,GACnC,GAAIA,EAAIyN,SAAU,OAAO,IAAI1D,EAAG,GAAG+T,MAAMzjB,MACzC,GAAoB,IAAhB2F,EAAI+c,KAAK,GAAU,OAAOjQ,EAAEjO,QAEhC,IACIuiB,EAAM,IAAIrlB,MAAM,IACpBqlB,EAAI,GAAK,IAAIrX,EAAG,GAAG+T,MAAMzjB,MACzB+mB,EAAI,GAAKtU,EACT,IAAK,IAAIvH,EAAI,EAAGA,EAAI6b,EAAIzlB,OAAQ4J,IAC9B6b,EAAI7b,GAAKlL,KAAK0Q,IAAIqW,EAAI7b,EAAI,GAAIuH,GAGhC,IAAIxQ,EAAM8kB,EAAI,GACVC,EAAU,EACVC,EAAa,EACbtgB,EAAQhB,EAAI2O,YAAc,GAK9B,IAJc,IAAV3N,IACFA,EAAQ,IAGLuE,EAAIvF,EAAIrE,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAI0G,EAAOjM,EAAIoK,MAAM7E,GACZC,EAAIxE,EAAQ,EAAGwE,GAAK,EAAGA,IAAK,CACnC,IAAIgL,EAAOvE,GAAQzG,EAAK,EACpBlJ,IAAQ8kB,EAAI,KACd9kB,EAAMjC,KAAKgf,IAAI/c,IAGL,IAARkU,GAAyB,IAAZ6Q,GAKjBA,IAAY,EACZA,GAAW7Q,GA9BE,MA+Bb8Q,GACwC,IAAN/b,GAAiB,IAANC,KAE7ClJ,EAAMjC,KAAK0Q,IAAIzO,EAAK8kB,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAtgB,EAAQ,EACV,CAEA,OAAO1E,CACT,EAEAuhB,EAAIvjB,UAAU0jB,UAAY,SAAoBhe,GAC5C,IAAI6K,EAAI7K,EAAIwb,KAAKnhB,KAAK8d,GAEtB,OAAOtN,IAAM7K,EAAM6K,EAAEhM,QAAUgM,CACjC,EAEAgT,EAAIvjB,UAAU6jB,YAAc,SAAsBne,GAChD,IAAI1D,EAAM0D,EAAInB,QAEd,OADAvC,EAAI+N,IAAM,KACH/N,CACT,EAMAyN,EAAGwX,KAAO,SAAevhB,GACvB,OAAO,IAAImgB,EAAKngB,EAClB,EAkBA/F,EAASkmB,EAAMtC,GAEfsC,EAAK7lB,UAAU0jB,UAAY,SAAoBhe,GAC7C,OAAO3F,KAAK+lB,KAAKpgB,EAAIoa,MAAM/f,KAAKygB,OAClC,EAEAqF,EAAK7lB,UAAU6jB,YAAc,SAAsBne,GACjD,IAAI6K,EAAIxQ,KAAK+lB,KAAKpgB,EAAI+K,IAAI1Q,KAAKgmB,OAE/B,OADAxV,EAAER,IAAM,KACDQ,CACT,EAEAsV,EAAK7lB,UAAUwa,KAAO,SAAehI,EAAGC,GACtC,GAAID,EAAEW,UAAYV,EAAEU,SAGlB,OAFAX,EAAE1C,MAAM,GAAK,EACb0C,EAAEnR,OAAS,EACJmR,EAGT,IAAI2B,EAAI3B,EAAEgI,KAAK/H,GACXrC,EAAI+D,EAAE+L,MAAMngB,KAAKygB,OAAO/P,IAAI1Q,KAAKimB,MAAM/F,OAAOlgB,KAAKygB,OAAO/P,IAAI1Q,KAAK8d,GACnEqJ,EAAI/S,EAAEkC,KAAKjG,GAAG4D,OAAOjU,KAAKygB,OAC1Bxe,EAAMklB,EAQV,OANIA,EAAEpW,IAAI/Q,KAAK8d,IAAM,EACnB7b,EAAMklB,EAAE7Q,KAAKtW,KAAK8d,GACTqJ,EAAEzE,KAAK,GAAK,IACrBzgB,EAAMklB,EAAE9Q,KAAKrW,KAAK8d,IAGb7b,EAAI2hB,UAAU5jB,KACvB,EAEA8lB,EAAK7lB,UAAUyQ,IAAM,SAAc+B,EAAGC,GACpC,GAAID,EAAEW,UAAYV,EAAEU,SAAU,OAAO,IAAI1D,EAAG,GAAGkU,UAAU5jB,MAEzD,IAAIoU,EAAI3B,EAAE/B,IAAIgC,GACVrC,EAAI+D,EAAE+L,MAAMngB,KAAKygB,OAAO/P,IAAI1Q,KAAKimB,MAAM/F,OAAOlgB,KAAKygB,OAAO/P,IAAI1Q,KAAK8d,GACnEqJ,EAAI/S,EAAEkC,KAAKjG,GAAG4D,OAAOjU,KAAKygB,OAC1Bxe,EAAMklB,EAOV,OANIA,EAAEpW,IAAI/Q,KAAK8d,IAAM,EACnB7b,EAAMklB,EAAE7Q,KAAKtW,KAAK8d,GACTqJ,EAAEzE,KAAK,GAAK,IACrBzgB,EAAMklB,EAAE9Q,KAAKrW,KAAK8d,IAGb7b,EAAI2hB,UAAU5jB,KACvB,EAEA8lB,EAAK7lB,UAAU0iB,KAAO,SAAelQ,GAGnC,OADUzS,KAAK+lB,KAAKtT,EAAE6P,OAAOtiB,KAAK8d,GAAGpN,IAAI1Q,KAAKuhB,KACnCqC,UAAU5jB,KACvB,CACD,CA19GD,YA09G4CA,oCCx9G5CsE,EAAOjF,QAAU,EAAjB,kCCAA,IAAI6B,EAAS,gBACTqzB,EAAa,EAAQ,OACrBC,EAAS,EAAQ,OACjB50B,EAAW,EAAQ,OACnBoP,EAAO,EAAQ,OACfylB,EAAS,EAAQ,OAEjBC,EAAa,EAAQ,OAMzB,SAASC,EAAKC,GACZJ,EAAOK,SAASt0B,KAAKP,MAErB,IAAIY,EAAO8zB,EAAWE,GACtB,IAAKh0B,EAAQ,MAAM,IAAI4E,MAAM,0BAE7BxF,KAAK80B,UAAYl0B,EAAKm0B,KACtB/0B,KAAKg1B,MAAQT,EAAW3zB,EAAKm0B,MAC7B/0B,KAAKi1B,KAAOr0B,EAAKsN,GACjBlO,KAAKk1B,UAAYt0B,EAAKoO,IACxB,CAsBA,SAASmmB,EAAOP,GACdJ,EAAOK,SAASt0B,KAAKP,MAErB,IAAIY,EAAO8zB,EAAWE,GACtB,IAAKh0B,EAAQ,MAAM,IAAI4E,MAAM,0BAE7BxF,KAAKg1B,MAAQT,EAAW3zB,EAAKm0B,MAC7B/0B,KAAKi1B,KAAOr0B,EAAKsN,GACjBlO,KAAKk1B,UAAYt0B,EAAKoO,IACxB,CAsBA,SAASomB,EAAWR,GAClB,OAAO,IAAID,EAAKC,EAClB,CAEA,SAASS,EAAaT,GACpB,OAAO,IAAIO,EAAOP,EACpB,CA1EAtvB,OAAOC,KAAKmvB,GAAY9xB,SAAQ,SAAUqB,GACxCywB,EAAWzwB,GAAKiK,GAAKhN,EAAO+mB,KAAKyM,EAAWzwB,GAAKiK,GAAI,OACrDwmB,EAAWzwB,EAAIkrB,eAAiBuF,EAAWzwB,EAC7C,IAaArE,EAAS+0B,EAAMH,EAAOK,UAEtBF,EAAK10B,UAAUq1B,OAAS,SAAgB10B,EAAM2d,EAAGgX,GAC/Cv1B,KAAKg1B,MAAM5I,OAAOxrB,GAClB20B,GACF,EAEAZ,EAAK10B,UAAUmsB,OAAS,SAAgBxrB,EAAMH,GAG5C,OAFAT,KAAKg1B,MAAM5I,OAAuB,kBAATxrB,EAAoBM,EAAO+mB,KAAKrnB,EAAMH,GAAOG,GAE/DZ,IACT,EAEA20B,EAAK10B,UAAU+O,KAAO,SAAoB/K,EAAKxD,GAC7CT,KAAKuN,MACL,IAAIwnB,EAAO/0B,KAAKg1B,MAAMQ,SAClBC,EAAMzmB,EAAK+lB,EAAM9wB,EAAKjE,KAAK80B,UAAW90B,KAAKk1B,UAAWl1B,KAAKi1B,MAE/D,OAAOx0B,EAAMg1B,EAAI3pB,SAASrL,GAAOg1B,CACnC,EAYA71B,EAASu1B,EAAQX,EAAOK,UAExBM,EAAOl1B,UAAUq1B,OAAS,SAAgB10B,EAAM2d,EAAGgX,GACjDv1B,KAAKg1B,MAAM5I,OAAOxrB,GAClB20B,GACF,EAEAJ,EAAOl1B,UAAUmsB,OAAS,SAAgBxrB,EAAMH,GAG9C,OAFAT,KAAKg1B,MAAM5I,OAAuB,kBAATxrB,EAAoBM,EAAO+mB,KAAKrnB,EAAMH,GAAOG,GAE/DZ,IACT,EAEAm1B,EAAOl1B,UAAUw0B,OAAS,SAAsBxwB,EAAKwxB,EAAKh1B,GACxD,IAAIi1B,EAA2B,kBAARD,EAAmBv0B,EAAO+mB,KAAKwN,EAAKh1B,GAAOg1B,EAElEz1B,KAAKuN,MACL,IAAIwnB,EAAO/0B,KAAKg1B,MAAMQ,SACtB,OAAOf,EAAOiB,EAAWX,EAAM9wB,EAAKjE,KAAKk1B,UAAWl1B,KAAKi1B,KAC3D,EAUA3wB,EAAOjF,QAAU,CACfs1B,KAAMS,EACND,OAAQE,EACRD,WAAYA,EACZC,aAAcA,iCCvFhB,IAAIn0B,EAAS,gBACTy0B,EAAa,EAAQ,OACrB7C,EAAM,EAAQ,OACd8C,EAAK,YACLlmB,EAAK,EAAQ,OACbmmB,EAAY,EAAQ,OACpBC,EAAS,EAAQ,OA8ErB,SAASC,EAAOha,EAAGhI,EAAGghB,EAAMiB,GAE1B,IADAja,EAAI7a,EAAO+mB,KAAKlM,EAAEhN,YACZzN,OAASyS,EAAEjS,aAAc,CAC7B,IAAIsQ,EAAQlR,EAAO2qB,MAAM9X,EAAEjS,aAAeia,EAAEza,QAC5Cya,EAAI7a,EAAOiC,OAAO,CAACiP,EAAO2J,GAC5B,CACA,IAAIka,EAAOlB,EAAKzzB,OACZ40B,EAkBN,SAAqB9W,EAAMrL,GACzBqL,EAAO+W,EAAS/W,EAAMrL,GACtBqL,EAAOA,EAAKzN,IAAIoC,GAChB,IAAIpR,EAAMzB,EAAO+mB,KAAK7I,EAAKrQ,WAC3B,GAAIpM,EAAIrB,OAASyS,EAAEjS,aAAc,CAC/B,IAAIsQ,EAAQlR,EAAO2qB,MAAM9X,EAAEjS,aAAea,EAAIrB,QAC9CqB,EAAMzB,EAAOiC,OAAO,CAACiP,EAAOzP,GAC9B,CACA,OAAOA,CACT,CA3BcyzB,CAAYrB,EAAMhhB,GAC1BqU,EAAIlnB,EAAO2qB,MAAMoK,GACrB7N,EAAEiO,KAAK,GACP,IAAIxjB,EAAI3R,EAAO2qB,MAAMoK,GAKrB,OAJApjB,EAAI8iB,EAAWK,EAAMnjB,GAAGuZ,OAAOhE,GAAGgE,OAAOlrB,EAAO+mB,KAAK,CAAC,KAAKmE,OAAOrQ,GAAGqQ,OAAO8J,GAAOV,SACnFpN,EAAIuN,EAAWK,EAAMnjB,GAAGuZ,OAAOhE,GAAGoN,SAG3B,CAAE3iB,EAFTA,EAAI8iB,EAAWK,EAAMnjB,GAAGuZ,OAAOhE,GAAGgE,OAAOlrB,EAAO+mB,KAAK,CAAC,KAAKmE,OAAOrQ,GAAGqQ,OAAO8J,GAAOV,SAEpEpN,EADfA,EAAIuN,EAAWK,EAAMnjB,GAAGuZ,OAAOhE,GAAGoN,SAEpC,CAEA,SAASW,EAASG,EAAOviB,GACvB,IAAIqL,EAAO,IAAI1P,EAAG4mB,GACd7V,GAAS6V,EAAMh1B,QAAU,GAAKyS,EAAEO,YAEpC,OADImM,EAAQ,GAAKrB,EAAKS,MAAMY,GACrBrB,CACT,CAaA,SAASmX,EAAQxiB,EAAGyiB,EAAIR,GACtB,IAAI5hB,EACAvB,EAEJ,EAAG,CAGD,IAFAuB,EAAIlT,EAAO2qB,MAAM,GAEC,EAAXzX,EAAE9S,OAAayS,EAAEO,aACtBkiB,EAAGpO,EAAIuN,EAAWK,EAAMQ,EAAG3jB,GAAGuZ,OAAOoK,EAAGpO,GAAGoN,SAC3CphB,EAAIlT,EAAOiC,OAAO,CAACiR,EAAGoiB,EAAGpO,IAG3BvV,EAAIsjB,EAAS/hB,EAAGL,GAChByiB,EAAG3jB,EAAI8iB,EAAWK,EAAMQ,EAAG3jB,GAAGuZ,OAAOoK,EAAGpO,GAAGgE,OAAOlrB,EAAO+mB,KAAK,CAAC,KAAKuN,SACpEgB,EAAGpO,EAAIuN,EAAWK,EAAMQ,EAAG3jB,GAAGuZ,OAAOoK,EAAGpO,GAAGoN,QAC7C,QAAuB,IAAd3iB,EAAE9B,IAAIgD,IAEf,OAAOlB,CACT,CAEA,SAAS4jB,EAAM3U,EAAGjP,EAAGxD,EAAG0E,GACtB,OAAO+N,EAAE2B,MAAM/T,EAAGwX,KAAK7X,IAAI2V,OAAOnS,GAAGgR,UAAUlS,IAAIoC,EACrD,CAEAzP,EAAOjF,QAtIP,SAAc01B,EAAM9wB,EAAKyyB,EAAUC,EAAUnzB,GAC3C,IAAIkvB,EAAOmD,EAAU5xB,GACrB,GAAIyuB,EAAKkE,MAAO,CAEd,GAAiB,UAAbD,GAAqC,cAAbA,EAA4B,MAAM,IAAInxB,MAAM,0BACxE,OAoBJ,SAAgBuvB,EAAMrC,GACpB,IAAImE,EAAUf,EAAOpD,EAAKkE,MAAMl0B,KAAK,MACrC,IAAKm0B,EAAW,MAAM,IAAIrxB,MAAM,iBAAmBktB,EAAKkE,MAAMl0B,KAAK,MAEnE,IACIuB,EADQ,IAAI2xB,EAAGiB,GACHC,eAAepE,EAAKqE,YAChCp0B,EAAMsB,EAAI+K,KAAK+lB,GAEnB,OAAO7zB,EAAO+mB,KAAKtlB,EAAIq0B,QACzB,CA7BWC,CAAOlC,EAAMrC,EACtB,CAAO,GAAkB,QAAdA,EAAK5qB,KAAgB,CAC9B,GAAiB,QAAb6uB,EAAsB,MAAM,IAAInxB,MAAM,0BAC1C,OA4BJ,SAAiBuvB,EAAMrC,EAAMsD,GAC3B,IAKInjB,EALAkJ,EAAI2W,EAAKwE,OAAOC,SAChB9nB,EAAIqjB,EAAKwE,OAAO7nB,EAChB0E,EAAI2e,EAAKwE,OAAOnjB,EAChB+N,EAAI4Q,EAAKwE,OAAOpV,EAChBtR,EAAI,IAAId,EAAG,GAEX0nB,EAAIjB,EAASpB,EAAMhhB,GAAGpC,IAAIoC,GAC1BiJ,GAAI,EACJwZ,EAAKT,EAAOha,EAAGhI,EAAGghB,EAAMiB,GAC5B,MAAa,IAANhZ,GAELxM,EAAIimB,EAAM3U,EADVjP,EAAI0jB,EAAQxiB,EAAGyiB,EAAIR,GACH3mB,EAAG0E,GAED,KADlBiJ,EAAInK,EAAE8P,KAAK5O,GAAG0G,KAAK2c,EAAE7gB,IAAIwF,EAAErL,IAAIF,KAAKmB,IAAIoC,IAClC2O,KAAK,KACT1F,GAAI,EACJxM,EAAI,IAAId,EAAG,IAGf,OAGF,SAAec,EAAGwM,GAChBxM,EAAIA,EAAEzB,UACNiO,EAAIA,EAAEjO,UAGK,IAAPyB,EAAE,KAAaA,EAAI,CAAC,GAAGrN,OAAOqN,IACvB,IAAPwM,EAAE,KAAaA,EAAI,CAAC,GAAG7Z,OAAO6Z,IAElC,IAAItL,EAAQlB,EAAElP,OAAS0b,EAAE1b,OAAS,EAC9BW,EAAM,CACR,GAAMyP,EAAO,EAAMlB,EAAElP,QAGvB,OADAW,EAAMA,EAAIkB,OAAOqN,EAAG,CAAC,EAAMwM,EAAE1b,QAAS0b,GAC/B9b,EAAO+mB,KAAKhmB,EACrB,CAjBS+0B,CAAMxmB,EAAGwM,EAClB,CAhDWqa,CAAQtC,EAAMrC,EAAMgE,EAC7B,CACA,GAAiB,QAAbC,GAAmC,cAAbA,EAA4B,MAAM,IAAInxB,MAAM,0BACtE,QAAoB0C,IAAhBjE,EAAIgP,SAbc,IAaWhP,EAAIgP,QAAiC,MAAM,IAAIzN,MAAM,uCAEtFuvB,EAAO7zB,EAAOiC,OAAO,CAACK,EAAKuxB,IAG3B,IAFA,IAAI9pB,EAAMynB,EAAKC,QAAQ7wB,aACnB6uB,EAAM,CAAC,EAAG,GACPoE,EAAKzzB,OAASqvB,EAAIrvB,OAAS,EAAI2J,GAAO0lB,EAAI9rB,KAAK,KACtD8rB,EAAI9rB,KAAK,GAET,IADA,IAAIqG,GAAK,IACAA,EAAI6pB,EAAKzzB,QAAUqvB,EAAI9rB,KAAKkwB,EAAK7pB,IAG1C,OADU4nB,EAAInC,EAAK+B,EAErB,EAgHApuB,EAAOjF,QAAQ02B,OAASA,EACxBzxB,EAAOjF,QAAQk3B,QAAUA,gCClJzB,IAAIr1B,EAAS,gBACTwO,EAAK,EAAQ,OACbkmB,EAAK,YACLC,EAAY,EAAQ,OACpBC,EAAS,EAAQ,OAyErB,SAASwB,EAAW5kB,EAAGqB,GACrB,GAAIrB,EAAEgQ,KAAK,IAAM,EAAK,MAAM,IAAIld,MAAM,eACtC,GAAIkN,EAAE3B,IAAIgD,IAAM,EAAK,MAAM,IAAIvO,MAAM,cACvC,CAEAlB,EAAOjF,QA5EP,SAAgBo2B,EAAKV,EAAM9wB,EAAK0yB,EAAUnzB,GACxC,IAAI+zB,EAAM1B,EAAU5xB,GACpB,GAAiB,OAAbszB,EAAIzvB,KAAe,CAErB,GAAiB,UAAb6uB,GAAqC,cAAbA,EAA4B,MAAM,IAAInxB,MAAM,yBACxE,OAmCJ,SAAkBiwB,EAAKV,EAAMwC,GAC3B,IAAIV,EAAUf,EAAOyB,EAAI32B,KAAKg0B,UAAUgC,MAAMl0B,KAAK,MACnD,IAAKm0B,EAAW,MAAM,IAAIrxB,MAAM,iBAAmB+xB,EAAI32B,KAAKg0B,UAAUgC,MAAMl0B,KAAK,MAEjF,IAAIk0B,EAAQ,IAAIhB,EAAGiB,GACfW,EAASD,EAAI32B,KAAK62B,kBAAkB72B,KAExC,OAAOg2B,EAAMnC,OAAOM,EAAMU,EAAK+B,EACjC,CA3CWE,CAASjC,EAAKV,EAAMwC,EAC7B,CAAO,GAAiB,QAAbA,EAAIzvB,KAAgB,CAC7B,GAAiB,QAAb6uB,EAAsB,MAAM,IAAInxB,MAAM,yBAC1C,OA0CJ,SAAmBiwB,EAAKV,EAAMwC,GAC5B,IAAIloB,EAAIkoB,EAAI32B,KAAKyO,EACb0E,EAAIwjB,EAAI32B,KAAKmT,EACb+N,EAAIyV,EAAI32B,KAAKkhB,EACb9F,EAAIub,EAAI32B,KAAK+2B,QACbC,EAAW/B,EAAUgC,UAAUl3B,OAAO80B,EAAK,OAC3CzY,EAAI4a,EAAS5a,EACbxM,EAAIonB,EAASpnB,EACjB8mB,EAAWta,EAAGjJ,GACdujB,EAAW9mB,EAAGuD,GACd,IAAI+jB,EAAQpoB,EAAGwX,KAAK7X,GAChBgC,EAAI2L,EAAE2F,KAAK5O,GACXqU,EAAItG,EAAE2B,MAAMqU,GACb9S,OAAO,IAAItV,EAAGqlB,GAAMrkB,IAAIW,GAAGM,IAAIoC,IAC/B8P,UACAnT,IAAIsL,EAAEyH,MAAMqU,GAAO9S,OAAOxU,EAAEE,IAAIW,GAAGM,IAAIoC,IAAI8P,WAC3ClS,IAAItC,GACJsC,IAAIoC,GACP,OAAoB,IAAbqU,EAAErX,IAAIP,EACf,CA7DWunB,CAAUtC,EAAKV,EAAMwC,EAC9B,CACA,GAAiB,QAAbZ,GAAmC,cAAbA,EAA4B,MAAM,IAAInxB,MAAM,yBAEtEuvB,EAAO7zB,EAAOiC,OAAO,CAACK,EAAKuxB,IAI3B,IAHA,IAAI9pB,EAAMssB,EAAI5E,QAAQ7wB,aAClB6uB,EAAM,CAAC,GACPqH,EAAS,EACNjD,EAAKzzB,OAASqvB,EAAIrvB,OAAS,EAAI2J,GACpC0lB,EAAI9rB,KAAK,KACTmzB,GAAU,EAEZrH,EAAI9rB,KAAK,GAET,IADA,IAAIqG,GAAK,IACAA,EAAI6pB,EAAKzzB,QAChBqvB,EAAI9rB,KAAKkwB,EAAK7pB,IAEhBylB,EAAMzvB,EAAO+mB,KAAK0I,GAClB,IAAI3gB,EAAMN,EAAGwX,KAAKqQ,EAAI5E,SAGtB8C,GAFAA,EAAM,IAAI/lB,EAAG+lB,GAAKhS,MAAMzT,IAEdgV,OAAO,IAAItV,EAAG6nB,EAAItE,iBAC5BwC,EAAMv0B,EAAO+mB,KAAKwN,EAAI5R,UAAU9U,WAChC,IAAIpM,EAAMq1B,EAAS,EAAI,EAAI,EAK3B,IAJA/sB,EAAM0F,KAAK/D,IAAI6oB,EAAIn0B,OAAQqvB,EAAIrvB,QAC3Bm0B,EAAIn0B,SAAWqvB,EAAIrvB,SAAUqB,EAAM,GAEvCuI,GAAK,IACIA,EAAID,GAAOtI,GAAO8yB,EAAIvqB,GAAKylB,EAAIzlB,GACxC,OAAe,IAARvI,CACT,0BC/CA,SAAW2B,EAAQjF,GACjB,aAGA,SAAS2D,EAAQ0C,EAAK6D,GACpB,IAAK7D,EAAK,MAAM,IAAIF,MAAM+D,GAAO,mBACnC,CAIA,SAAS3J,EAAU0P,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASxP,UAAYsP,EAAUtP,UAC/BqP,EAAKrP,UAAY,IAAIwP,EACrBH,EAAKrP,UAAU0E,YAAc2K,CAC/B,CAIA,SAASI,EAAIC,EAAQnQ,EAAMoQ,GACzB,GAAIF,EAAGG,KAAKF,GACV,OAAOA,EAGT3P,KAAK8P,SAAW,EAChB9P,KAAK+P,MAAQ,KACb/P,KAAKsB,OAAS,EAGdtB,KAAKgQ,IAAM,KAEI,OAAXL,IACW,OAATnQ,GAA0B,OAATA,IACnBoQ,EAASpQ,EACTA,EAAO,IAGTQ,KAAKgF,MAAM2K,GAAU,EAAGnQ,GAAQ,GAAIoQ,GAAU,MAElD,CAUA,IAAI1O,EATkB,kBAAXoD,EACTA,EAAOjF,QAAUqQ,EAEjBrQ,EAAQqQ,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGO,SAAW,GAGd,IAEI/O,EADoB,qBAAXgP,QAAmD,qBAAlBA,OAAOhP,OACxCgP,OAAOhP,OAEP,eAEb,CAAE,MAAOd,GACT,CA+HA,SAAS+P,EAAeC,EAAQ1G,GAC9B,IAAI2G,EAAID,EAAOnC,WAAWvE,GAE1B,OAAI2G,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXrN,GAAO,EAAO,wBAA0BoN,EAE5C,CAEA,SAASE,EAAcF,EAAQG,EAAY7G,GACzC,IAAI8G,EAAIL,EAAcC,EAAQ1G,GAI9B,OAHIA,EAAQ,GAAK6G,IACfC,GAAKL,EAAcC,EAAQ1G,EAAQ,IAAM,GAEpC8G,CACT,CA6CA,SAASC,EAAWtH,EAAKxC,EAAO4G,EAAKmD,GAInC,IAHA,IAAIF,EAAI,EACJkC,EAAI,EACJzH,EAAM0F,KAAK/D,IAAIzD,EAAI7H,OAAQiM,GACtBrC,EAAIvE,EAAOuE,EAAID,EAAKC,IAAK,CAChC,IAAImF,EAAIlH,EAAI8E,WAAW/C,GAAK,GAE5BsF,GAAKE,EAIHgC,EADErC,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENrN,EAAOqN,GAAK,GAAKqC,EAAIhC,EAAK,qBAC1BF,GAAKkC,CACP,CACA,OAAOlC,CACT,CA2DA,SAASojB,EAAM5hB,EAAM6hB,GACnB7hB,EAAKjC,MAAQ8jB,EAAI9jB,MACjBiC,EAAK1Q,OAASuyB,EAAIvyB,OAClB0Q,EAAKlC,SAAW+jB,EAAI/jB,SACpBkC,EAAKhC,IAAM6jB,EAAI7jB,GACjB,CAqCA,GA9TAN,EAAGG,KAAO,SAAelK,GACvB,OAAIA,aAAe+J,GAIJ,OAAR/J,GAA+B,kBAARA,GAC5BA,EAAIhB,YAAYsL,WAAaP,EAAGO,UAAYvO,MAAMC,QAAQgE,EAAIoK,MAClE,EAEAL,EAAGkB,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEApB,EAAG9C,IAAM,SAAciE,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEApB,EAAGzP,UAAU+E,MAAQ,SAAe2K,EAAQnQ,EAAMoQ,GAChD,GAAsB,kBAAXD,EACT,OAAO3P,KAAKgR,YAAYrB,EAAQnQ,EAAMoQ,GAGxC,GAAsB,kBAAXD,EACT,OAAO3P,KAAKiR,WAAWtB,EAAQnQ,EAAMoQ,GAG1B,QAATpQ,IACFA,EAAO,IAETwD,EAAOxD,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAImH,EAAQ,EACM,OAFlBgJ,EAASA,EAAO7D,WAAW2B,QAAQ,OAAQ,KAEhC,KACT9G,IACA3G,KAAK8P,SAAW,GAGdnJ,EAAQgJ,EAAOrO,SACJ,KAAT9B,EACFQ,KAAKkR,UAAUvB,EAAQhJ,EAAOiJ,IAE9B5P,KAAKmR,WAAWxB,EAAQnQ,EAAMmH,GACf,OAAXiJ,GACF5P,KAAKiR,WAAWjR,KAAK+O,UAAWvP,EAAMoQ,IAI9C,EAEAF,EAAGzP,UAAU+Q,YAAc,SAAsBrB,EAAQnQ,EAAMoQ,GACzDD,EAAS,IACX3P,KAAK8P,SAAW,EAChBH,GAAUA,GAERA,EAAS,UACX3P,KAAK+P,MAAQ,CAAU,SAATJ,GACd3P,KAAKsB,OAAS,GACLqO,EAAS,kBAClB3P,KAAK+P,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,UAEzB3P,KAAKsB,OAAS,IAEd0B,EAAO2M,EAAS,kBAChB3P,KAAK+P,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,SACvB,GAEF3P,KAAKsB,OAAS,GAGD,OAAXsO,GAGJ5P,KAAKiR,WAAWjR,KAAK+O,UAAWvP,EAAMoQ,EACxC,EAEAF,EAAGzP,UAAUgR,WAAa,SAAqBtB,EAAQnQ,EAAMoQ,GAG3D,GADA5M,EAAgC,kBAAlB2M,EAAOrO,QACjBqO,EAAOrO,QAAU,EAGnB,OAFAtB,KAAK+P,MAAQ,CAAC,GACd/P,KAAKsB,OAAS,EACPtB,KAGTA,KAAKsB,OAASqP,KAAKS,KAAKzB,EAAOrO,OAAS,GACxCtB,KAAK+P,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/BlL,KAAK+P,MAAM7E,GAAK,EAGlB,IAAIC,EAAGkG,EACHC,EAAM,EACV,GAAe,OAAX1B,EACF,IAAK1E,EAAIyE,EAAOrO,OAAS,EAAG6J,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CmG,EAAI1B,EAAOzE,GAAMyE,EAAOzE,EAAI,IAAM,EAAMyE,EAAOzE,EAAI,IAAM,GACzDlL,KAAK+P,MAAM5E,IAAOkG,GAAKC,EAAO,SAC9BtR,KAAK+P,MAAM5E,EAAI,GAAMkG,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPnG,UAGC,GAAe,OAAXyE,EACT,IAAK1E,EAAI,EAAGC,EAAI,EAAGD,EAAIyE,EAAOrO,OAAQ4J,GAAK,EACzCmG,EAAI1B,EAAOzE,GAAMyE,EAAOzE,EAAI,IAAM,EAAMyE,EAAOzE,EAAI,IAAM,GACzDlL,KAAK+P,MAAM5E,IAAOkG,GAAKC,EAAO,SAC9BtR,KAAK+P,MAAM5E,EAAI,GAAMkG,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPnG,KAIN,OAAOnL,KAAKqmB,QACd,EA0BA3W,EAAGzP,UAAUiR,UAAY,SAAoBvB,EAAQhJ,EAAOiJ,GAE1D5P,KAAKsB,OAASqP,KAAKS,MAAMzB,EAAOrO,OAASqF,GAAS,GAClD3G,KAAK+P,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/BlL,KAAK+P,MAAM7E,GAAK,EAIlB,IAGImG,EAHAC,EAAM,EACNnG,EAAI,EAGR,GAAe,OAAXyE,EACF,IAAK1E,EAAIyE,EAAOrO,OAAS,EAAG4J,GAAKvE,EAAOuE,GAAK,EAC3CmG,EAAIf,EAAaX,EAAQhJ,EAAOuE,IAAMoG,EACtCtR,KAAK+P,MAAM5E,IAAU,SAAJkG,EACbC,GAAO,IACTA,GAAO,GACPnG,GAAK,EACLnL,KAAK+P,MAAM5E,IAAMkG,IAAM,IAEvBC,GAAO,OAKX,IAAKpG,GADayE,EAAOrO,OAASqF,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOuE,EAAIyE,EAAOrO,OAAQ4J,GAAK,EAC1EmG,EAAIf,EAAaX,EAAQhJ,EAAOuE,IAAMoG,EACtCtR,KAAK+P,MAAM5E,IAAU,SAAJkG,EACbC,GAAO,IACTA,GAAO,GACPnG,GAAK,EACLnL,KAAK+P,MAAM5E,IAAMkG,IAAM,IAEvBC,GAAO,EAKbtR,KAAKqmB,QACP,EA6BA3W,EAAGzP,UAAUkR,WAAa,SAAqBxB,EAAQnQ,EAAMmH,GAE3D3G,KAAK+P,MAAQ,CAAC,GACd/P,KAAKsB,OAAS,EAGd,IAAK,IAAIkQ,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWjS,EAClEgS,IAEFA,IACAC,EAAWA,EAAUjS,EAAQ,EAO7B,IALA,IAAIkS,EAAQ/B,EAAOrO,OAASqF,EACxBgL,EAAMD,EAAQF,EACdjE,EAAMoD,KAAK/D,IAAI8E,EAAOA,EAAQC,GAAOhL,EAErCiL,EAAO,EACF1G,EAAIvE,EAAOuE,EAAIqC,EAAKrC,GAAKsG,EAChCI,EAAOnB,EAAUd,EAAQzE,EAAGA,EAAIsG,EAAShS,GAEzCQ,KAAK6R,MAAMJ,GACPzR,KAAK+P,MAAM,GAAK6B,EAAO,SACzB5R,KAAK+P,MAAM,IAAM6B,EAEjB5R,KAAK8R,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAOnB,EAAUd,EAAQzE,EAAGyE,EAAOrO,OAAQ9B,GAEtC0L,EAAI,EAAGA,EAAIyG,EAAKzG,IACnB6G,GAAOvS,EAGTQ,KAAK6R,MAAME,GACP/R,KAAK+P,MAAM,GAAK6B,EAAO,SACzB5R,KAAK+P,MAAM,IAAM6B,EAEjB5R,KAAK8R,OAAOF,EAEhB,CAEA5R,KAAKqmB,QACP,EAEA3W,EAAGzP,UAAU6C,KAAO,SAAekP,GACjCA,EAAKjC,MAAQ,IAAIrO,MAAM1B,KAAKsB,QAC5B,IAAK,IAAI4J,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC/B8G,EAAKjC,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAE7B8G,EAAK1Q,OAAStB,KAAKsB,OACnB0Q,EAAKlC,SAAW9P,KAAK8P,SACrBkC,EAAKhC,IAAMhQ,KAAKgQ,GAClB,EASAN,EAAGzP,UAAU6zB,MAAQ,SAAgB9hB,GACnC4hB,EAAK5hB,EAAMhS,KACb,EAEA0P,EAAGzP,UAAUuE,MAAQ,WACnB,IAAIgM,EAAI,IAAId,EAAG,MAEf,OADA1P,KAAK8C,KAAK0N,GACHA,CACT,EAEAd,EAAGzP,UAAUgS,QAAU,SAAkB7D,GACvC,KAAOpO,KAAKsB,OAAS8M,GACnBpO,KAAK+P,MAAM/P,KAAKsB,UAAY,EAE9B,OAAOtB,IACT,EAGA0P,EAAGzP,UAAUomB,OAAS,WACpB,KAAOrmB,KAAKsB,OAAS,GAAqC,IAAhCtB,KAAK+P,MAAM/P,KAAKsB,OAAS,IACjDtB,KAAKsB,SAEP,OAAOtB,KAAKkS,WACd,EAEAxC,EAAGzP,UAAUiS,UAAY,WAKvB,OAHoB,IAAhBlS,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,KAClC/P,KAAK8P,SAAW,GAEX9P,IACT,EAIsB,qBAAX+zB,QAAgD,oBAAfA,OAAOC,IACjD,IACEtkB,EAAGzP,UAAU8zB,OAAOC,IAAI,+BAAiC7hB,CAC3D,CAAE,MAAO/R,GACPsP,EAAGzP,UAAUkS,QAAUA,CACzB,MAEAzC,EAAGzP,UAAUkS,QAAUA,EAGzB,SAASA,IACP,OAAQnS,KAAKgQ,IAAM,UAAY,SAAWhQ,KAAK8L,SAAS,IAAM,GAChE,CAgCA,IAAIsG,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAG9D5C,EAAGzP,UAAU6L,SAAW,SAAmBtM,EAAMyT,GAI/C,IAAItQ,EACJ,GAHAsQ,EAAoB,EAAVA,GAAe,EAGZ,MAJbzT,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCmD,EAAM,GAGN,IAFA,IAAI2O,EAAM,EACNsB,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAImG,EAAIrR,KAAK+P,MAAM7E,GACf0G,GAA+B,UAArBP,GAAKC,EAAOsB,IAAmB9G,SAAS,IACtD8G,EAASvB,IAAO,GAAKC,EAAQ,UAC7BA,GAAO,IACI,KACTA,GAAO,GACPpG,KAGAvI,EADY,IAAViQ,GAAe1H,IAAMlL,KAAKsB,OAAS,EAC/B8Q,EAAM,EAAIR,EAAKtQ,QAAUsQ,EAAOjP,EAEhCiP,EAAOjP,CAEjB,CAIA,IAHc,IAAViQ,IACFjQ,EAAMiQ,EAAM9G,SAAS,IAAMnJ,GAEtBA,EAAIrB,OAAS2R,IAAY,GAC9BtQ,EAAM,IAAMA,EAKd,OAHsB,IAAlB3C,KAAK8P,WACPnN,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAInD,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI0T,EAAYb,EAAW7S,GAEvB2T,EAAYb,EAAW9S,GAC3BmD,EAAM,GACN,IAAI0N,EAAIrQ,KAAKwE,QAEb,IADA6L,EAAEP,SAAW,GACLO,EAAE+C,UAAU,CAClB,IAAI5C,EAAIH,EAAE4jB,MAAM9gB,GAAWrH,SAAStM,GAMlCmD,GALF0N,EAAIA,EAAEiD,MAAMH,IAELC,SAGC5C,EAAI7N,EAFJyP,EAAMc,EAAY1C,EAAElP,QAAUkP,EAAI7N,CAI5C,CAIA,IAHI3C,KAAKoT,WACPzQ,EAAM,IAAMA,GAEPA,EAAIrB,OAAS2R,IAAY,GAC9BtQ,EAAM,IAAMA,EAKd,OAHsB,IAAlB3C,KAAK8P,WACPnN,EAAM,IAAMA,GAEPA,CACT,CAEAK,GAAO,EAAO,kCAChB,EAEA0M,EAAGzP,UAAUsT,SAAW,WACtB,IAAIC,EAAMxT,KAAK+P,MAAM,GASrB,OARoB,IAAhB/P,KAAKsB,OACPkS,GAAuB,SAAhBxT,KAAK+P,MAAM,GACO,IAAhB/P,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,GAEzCyD,GAAO,iBAAoC,SAAhBxT,KAAK+P,MAAM,GAC7B/P,KAAKsB,OAAS,GACvB0B,GAAO,EAAO,8CAEU,IAAlBhD,KAAK8P,UAAmB0D,EAAMA,CACxC,EAEA9D,EAAGzP,UAAUwT,OAAS,WACpB,OAAOzT,KAAK8L,SAAS,GAAI,EAC3B,EAEI5K,IACFwO,EAAGzP,UAAUyT,SAAW,SAAmB9D,EAAQtO,GACjD,OAAOtB,KAAK2T,YAAYzS,EAAQ0O,EAAQtO,EAC1C,GAGFoO,EAAGzP,UAAU8O,QAAU,SAAkBa,EAAQtO,GAC/C,OAAOtB,KAAK2T,YAAYjS,MAAOkO,EAAQtO,EACzC,EA2gBA,SAASiR,EAAYC,EAAM7M,EAAKhD,GAC9BA,EAAImN,SAAWnK,EAAImK,SAAW0C,EAAK1C,SACnC,IAAI7E,EAAOuH,EAAKlR,OAASqE,EAAIrE,OAAU,EACvCqB,EAAIrB,OAAS2J,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIwH,EAAoB,EAAhBD,EAAKzC,MAAM,GACf2C,EAAmB,EAAf/M,EAAIoK,MAAM,GACdS,EAAIiC,EAAIC,EAERC,EAAS,SAAJnC,EACLoC,EAASpC,EAAI,SAAa,EAC9B7N,EAAIoN,MAAM,GAAK4C,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAI5H,EAAK4H,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAOrC,KAAK/D,IAAIiG,EAAGlN,EAAIrE,OAAS,GAC3B6J,EAAIwF,KAAKC,IAAI,EAAGiC,EAAIL,EAAKlR,OAAS,GAAI6J,GAAK6H,EAAM7H,IAAK,CAC7D,IAAID,EAAK2H,EAAI1H,EAAK,EAIlB2H,IADAtC,GAFAiC,EAAoB,EAAhBD,EAAKzC,MAAM7E,KACfwH,EAAmB,EAAf/M,EAAIoK,MAAM5E,IACF4H,GACG,SAAa,EAC5BA,EAAY,SAAJvC,CACV,CACA7N,EAAIoN,MAAM8C,GAAa,EAARE,EACfH,EAAiB,EAATE,CACV,CAOA,OANc,IAAVF,EACFjQ,EAAIoN,MAAM8C,GAAa,EAARD,EAEfjQ,EAAIrB,SAGCqB,EAAI0jB,QACb,CAziBA3W,EAAGzP,UAAU0T,YAAc,SAAsBC,EAAWhE,EAAQtO,GAClEtB,KAAKqmB,SAEL,IAAIvkB,EAAa9B,KAAK8B,aAClB+R,EAAYvS,GAAUqP,KAAKC,IAAI,EAAG9O,GACtCkB,EAAOlB,GAAc+R,EAAW,yCAChC7Q,EAAO6Q,EAAY,EAAG,+BAEtB,IAAI5R,EAfS,SAAmB2R,EAAWxF,GAC3C,OAAIwF,EAAUqX,YACLrX,EAAUqX,YAAY7c,GAExB,IAAIwF,EAAUxF,EACvB,CAUY8lB,CAAStgB,EAAWC,GAG9B,OADA7T,KAAK,gBADoB,OAAX4P,EAAkB,KAAO,OACR3N,EAAKH,GAC7BG,CACT,EAEAyN,EAAGzP,UAAUk0B,eAAiB,SAAyBlyB,EAAKH,GAI1D,IAHA,IAAIsyB,EAAW,EACXxhB,EAAQ,EAEH1H,EAAI,EAAGuV,EAAQ,EAAGvV,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAC/C,IAAI0G,EAAQ5R,KAAK+P,MAAM7E,IAAMuV,EAAS7N,EAEtC3Q,EAAImyB,KAAqB,IAAPxiB,EACdwiB,EAAWnyB,EAAIX,SACjBW,EAAImyB,KAAexiB,GAAQ,EAAK,KAE9BwiB,EAAWnyB,EAAIX,SACjBW,EAAImyB,KAAexiB,GAAQ,GAAM,KAGrB,IAAV6O,GACE2T,EAAWnyB,EAAIX,SACjBW,EAAImyB,KAAexiB,GAAQ,GAAM,KAEnCgB,EAAQ,EACR6N,EAAQ,IAER7N,EAAQhB,IAAS,GACjB6O,GAAS,EAEb,CAEA,GAAI2T,EAAWnyB,EAAIX,OAGjB,IAFAW,EAAImyB,KAAcxhB,EAEXwhB,EAAWnyB,EAAIX,QACpBW,EAAImyB,KAAc,CAGxB,EAEA1kB,EAAGzP,UAAUo0B,eAAiB,SAAyBpyB,EAAKH,GAI1D,IAHA,IAAIsyB,EAAWnyB,EAAIX,OAAS,EACxBsR,EAAQ,EAEH1H,EAAI,EAAGuV,EAAQ,EAAGvV,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAC/C,IAAI0G,EAAQ5R,KAAK+P,MAAM7E,IAAMuV,EAAS7N,EAEtC3Q,EAAImyB,KAAqB,IAAPxiB,EACdwiB,GAAY,IACdnyB,EAAImyB,KAAexiB,GAAQ,EAAK,KAE9BwiB,GAAY,IACdnyB,EAAImyB,KAAexiB,GAAQ,GAAM,KAGrB,IAAV6O,GACE2T,GAAY,IACdnyB,EAAImyB,KAAexiB,GAAQ,GAAM,KAEnCgB,EAAQ,EACR6N,EAAQ,IAER7N,EAAQhB,IAAS,GACjB6O,GAAS,EAEb,CAEA,GAAI2T,GAAY,EAGd,IAFAnyB,EAAImyB,KAAcxhB,EAEXwhB,GAAY,GACjBnyB,EAAImyB,KAAc,CAGxB,EAEIzjB,KAAKuD,MACPxE,EAAGzP,UAAUkU,WAAa,SAAqB9C,GAC7C,OAAO,GAAKV,KAAKuD,MAAM7C,EACzB,EAEA3B,EAAGzP,UAAUkU,WAAa,SAAqB9C,GAC7C,IAAI+C,EAAI/C,EACJb,EAAI,EAiBR,OAhBI4D,GAAK,OACP5D,GAAK,GACL4D,KAAO,IAELA,GAAK,KACP5D,GAAK,EACL4D,KAAO,GAELA,GAAK,IACP5D,GAAK,EACL4D,KAAO,GAELA,GAAK,IACP5D,GAAK,EACL4D,KAAO,GAEF5D,EAAI4D,CACb,EAGF1E,EAAGzP,UAAUoU,UAAY,SAAoBhD,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI+C,EAAI/C,EACJb,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ4D,KACH5D,GAAK,GACL4D,KAAO,IAEU,KAAV,IAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,GAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,EAAJA,KACH5D,GAAK,EACL4D,KAAO,GAES,KAAT,EAAJA,IACH5D,IAEKA,CACT,EAGAd,EAAGzP,UAAUqU,UAAY,WACvB,IAAIjD,EAAIrR,KAAK+P,MAAM/P,KAAKsB,OAAS,GAC7BiT,EAAKvU,KAAKmU,WAAW9C,GACzB,OAA2B,IAAnBrR,KAAKsB,OAAS,GAAUiT,CAClC,EAgBA7E,EAAGzP,UAAUuU,SAAW,WACtB,GAAIxU,KAAKoT,SAAU,OAAO,EAG1B,IADA,IAAI5C,EAAI,EACCtF,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAIwH,EAAI1S,KAAKqU,UAAUrU,KAAK+P,MAAM7E,IAElC,GADAsF,GAAKkC,EACK,KAANA,EAAU,KAChB,CACA,OAAOlC,CACT,EAEAd,EAAGzP,UAAU6B,WAAa,WACxB,OAAO6O,KAAKS,KAAKpR,KAAKsU,YAAc,EACtC,EAEA5E,EAAGzP,UAAUwU,OAAS,SAAiBC,GACrC,OAAsB,IAAlB1U,KAAK8P,SACA9P,KAAK2U,MAAMC,MAAMF,GAAOG,MAAM,GAEhC7U,KAAKwE,OACd,EAEAkL,EAAGzP,UAAU6U,SAAW,SAAmBJ,GACzC,OAAI1U,KAAK+U,MAAML,EAAQ,GACd1U,KAAKgV,KAAKN,GAAOG,MAAM,GAAGI,OAE5BjV,KAAKwE,OACd,EAEAkL,EAAGzP,UAAUiV,MAAQ,WACnB,OAAyB,IAAlBlV,KAAK8P,QACd,EAGAJ,EAAGzP,UAAUkV,IAAM,WACjB,OAAOnV,KAAKwE,QAAQyQ,MACtB,EAEAvF,EAAGzP,UAAUgV,KAAO,WAKlB,OAJKjV,KAAKoT,WACRpT,KAAK8P,UAAY,GAGZ9P,IACT,EAGA0P,EAAGzP,UAAUmV,KAAO,SAAezP,GACjC,KAAO3F,KAAKsB,OAASqE,EAAIrE,QACvBtB,KAAK+P,MAAM/P,KAAKsB,UAAY,EAG9B,IAAK,IAAI4J,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAC9BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAAKvF,EAAIoK,MAAM7E,GAG5C,OAAOlL,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUoV,IAAM,SAAc1P,GAE/B,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAKoV,KAAKzP,EACnB,EAGA+J,EAAGzP,UAAUqV,GAAK,SAAa3P,GAC7B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ6Q,IAAI1P,GAC/CA,EAAInB,QAAQ6Q,IAAIrV,KACzB,EAEA0P,EAAGzP,UAAUsV,IAAM,SAAc5P,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ4Q,KAAKzP,GAChDA,EAAInB,QAAQ4Q,KAAKpV,KAC1B,EAGA0P,EAAGzP,UAAUuV,MAAQ,SAAgB7P,GAEnC,IAAI+M,EAEFA,EADE1S,KAAKsB,OAASqE,EAAIrE,OAChBqE,EAEA3F,KAGN,IAAK,IAAIkL,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAAKvF,EAAIoK,MAAM7E,GAK5C,OAFAlL,KAAKsB,OAASoR,EAAEpR,OAETtB,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUwV,KAAO,SAAe9P,GAEjC,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAKwV,MAAM7P,EACpB,EAGA+J,EAAGzP,UAAUyV,IAAM,SAAc/P,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQiR,KAAK9P,GAChDA,EAAInB,QAAQiR,KAAKzV,KAC1B,EAEA0P,EAAGzP,UAAU0V,KAAO,SAAehQ,GACjC,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQgR,MAAM7P,GACjDA,EAAInB,QAAQgR,MAAMxV,KAC3B,EAGA0P,EAAGzP,UAAU2V,MAAQ,SAAgBjQ,GAEnC,IAAI8M,EACAC,EACA1S,KAAKsB,OAASqE,EAAIrE,QACpBmR,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAGN,IAAK,IAAIkL,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAAKwH,EAAE3C,MAAM7E,GAGvC,GAAIlL,OAASyS,EACX,KAAOvH,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAM5B,OAFAlL,KAAKsB,OAASmR,EAAEnR,OAETtB,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAU4V,KAAO,SAAelQ,GAEjC,OADA3C,EAA0C,KAAlChD,KAAK8P,SAAWnK,EAAImK,WACrB9P,KAAK4V,MAAMjQ,EACpB,EAGA+J,EAAGzP,UAAU6V,IAAM,SAAcnQ,GAC/B,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQqR,KAAKlQ,GAChDA,EAAInB,QAAQqR,KAAK7V,KAC1B,EAEA0P,EAAGzP,UAAU8V,KAAO,SAAepQ,GACjC,OAAI3F,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQoR,MAAMjQ,GACjDA,EAAInB,QAAQoR,MAAM5V,KAC3B,EAGA0P,EAAGzP,UAAU2U,MAAQ,SAAgBF,GACnC1R,EAAwB,kBAAV0R,GAAsBA,GAAS,GAE7C,IAAIsB,EAAsC,EAAxBrF,KAAKS,KAAKsD,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvB1U,KAAKiS,QAAQ+D,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAa9K,IAC/BlL,KAAK+P,MAAM7E,GAAsB,UAAhBlL,KAAK+P,MAAM7E,GAS9B,OALI+K,EAAW,IACbjW,KAAK+P,MAAM7E,IAAMlL,KAAK+P,MAAM7E,GAAM,UAAc,GAAK+K,GAIhDjW,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAU+U,KAAO,SAAeN,GACjC,OAAO1U,KAAKwE,QAAQoQ,MAAMF,EAC5B,EAGAhF,EAAGzP,UAAUiW,KAAO,SAAeC,EAAKzQ,GACtC1C,EAAsB,kBAARmT,GAAoBA,GAAO,GAEzC,IAAI7E,EAAO6E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAnW,KAAKiS,QAAQX,EAAM,GAGjBtR,KAAK+P,MAAMuB,GADT5L,EACgB1F,KAAK+P,MAAMuB,GAAQ,GAAK8E,EAExBpW,KAAK+P,MAAMuB,KAAS,GAAK8E,GAGtCpW,KAAKqmB,QACd,EAGA3W,EAAGzP,UAAUoW,KAAO,SAAe1Q,GACjC,IAAI6K,EAkBAiC,EAAGC,EAfP,GAAsB,IAAlB1S,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAI7B,OAHA9P,KAAK8P,SAAW,EAChBU,EAAIxQ,KAAKsW,KAAK3Q,GACd3F,KAAK8P,UAAY,EACV9P,KAAKkS,YAGP,GAAsB,IAAlBlS,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAIpC,OAHAnK,EAAImK,SAAW,EACfU,EAAIxQ,KAAKsW,KAAK3Q,GACdA,EAAImK,SAAW,EACRU,EAAE0B,YAKPlS,KAAKsB,OAASqE,EAAIrE,QACpBmR,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAIN,IADA,IAAI4S,EAAQ,EACH1H,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAC5BsF,GAAkB,EAAbiC,EAAE1C,MAAM7E,KAAwB,EAAbwH,EAAE3C,MAAM7E,IAAU0H,EAC1C5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAChBoC,EAAQpC,IAAM,GAEhB,KAAiB,IAAVoC,GAAe1H,EAAIuH,EAAEnR,OAAQ4J,IAClCsF,GAAkB,EAAbiC,EAAE1C,MAAM7E,IAAU0H,EACvB5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAChBoC,EAAQpC,IAAM,GAIhB,GADAxQ,KAAKsB,OAASmR,EAAEnR,OACF,IAAVsR,EACF5S,KAAK+P,MAAM/P,KAAKsB,QAAUsR,EAC1B5S,KAAKsB,cAEA,GAAImR,IAAMzS,KACf,KAAOkL,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAI5B,OAAOlL,IACT,EAGA0P,EAAGzP,UAAUsW,IAAM,SAAc5Q,GAC/B,IAAI1D,EACJ,OAAqB,IAAjB0D,EAAImK,UAAoC,IAAlB9P,KAAK8P,UAC7BnK,EAAImK,SAAW,EACf7N,EAAMjC,KAAKwW,IAAI7Q,GACfA,EAAImK,UAAY,EACT7N,GACmB,IAAjB0D,EAAImK,UAAoC,IAAlB9P,KAAK8P,UACpC9P,KAAK8P,SAAW,EAChB7N,EAAM0D,EAAI6Q,IAAIxW,MACdA,KAAK8P,SAAW,EACT7N,GAGLjC,KAAKsB,OAASqE,EAAIrE,OAAetB,KAAKwE,QAAQ6R,KAAK1Q,GAEhDA,EAAInB,QAAQ6R,KAAKrW,KAC1B,EAGA0P,EAAGzP,UAAUqW,KAAO,SAAe3Q,GAEjC,GAAqB,IAAjBA,EAAImK,SAAgB,CACtBnK,EAAImK,SAAW,EACf,IAAIU,EAAIxQ,KAAKqW,KAAK1Q,GAElB,OADAA,EAAImK,SAAW,EACRU,EAAE0B,WAGX,CAAO,GAAsB,IAAlBlS,KAAK8P,SAId,OAHA9P,KAAK8P,SAAW,EAChB9P,KAAKqW,KAAK1Q,GACV3F,KAAK8P,SAAW,EACT9P,KAAKkS,YAId,IAWIO,EAAGC,EAXH3B,EAAM/Q,KAAK+Q,IAAIpL,GAGnB,GAAY,IAARoL,EAIF,OAHA/Q,KAAK8P,SAAW,EAChB9P,KAAKsB,OAAS,EACdtB,KAAK+P,MAAM,GAAK,EACT/P,KAKL+Q,EAAM,GACR0B,EAAIzS,KACJ0S,EAAI/M,IAEJ8M,EAAI9M,EACJ+M,EAAI1S,MAIN,IADA,IAAI4S,EAAQ,EACH1H,EAAI,EAAGA,EAAIwH,EAAEpR,OAAQ4J,IAE5B0H,GADApC,GAAkB,EAAbiC,EAAE1C,MAAM7E,KAAwB,EAAbwH,EAAE3C,MAAM7E,IAAU0H,IAC7B,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAElB,KAAiB,IAAVoC,GAAe1H,EAAIuH,EAAEnR,OAAQ4J,IAElC0H,GADApC,GAAkB,EAAbiC,EAAE1C,MAAM7E,IAAU0H,IACV,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJsF,EAIlB,GAAc,IAAVoC,GAAe1H,EAAIuH,EAAEnR,QAAUmR,IAAMzS,KACvC,KAAOkL,EAAIuH,EAAEnR,OAAQ4J,IACnBlL,KAAK+P,MAAM7E,GAAKuH,EAAE1C,MAAM7E,GAU5B,OANAlL,KAAKsB,OAASqP,KAAKC,IAAI5Q,KAAKsB,OAAQ4J,GAEhCuH,IAAMzS,OACRA,KAAK8P,SAAW,GAGX9P,KAAKqmB,QACd,EAGA3W,EAAGzP,UAAUuW,IAAM,SAAc7Q,GAC/B,OAAO3F,KAAKwE,QAAQ8R,KAAK3Q,EAC3B,EA8CA,IAAI8Q,EAAc,SAAsBjE,EAAM7M,EAAKhD,GACjD,IAIIgQ,EACA+D,EACAnC,EANA9B,EAAID,EAAKzC,MACT2C,EAAI/M,EAAIoK,MACR4G,EAAIhU,EAAIoN,MACRM,EAAI,EAIJuG,EAAY,EAAPnE,EAAE,GACPoE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtE,EAAE,GACPuE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzE,EAAE,GACP0E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5E,EAAE,GACP6E,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/E,EAAE,GACPgF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlF,EAAE,GACPmF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrF,EAAE,GACPsF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxF,EAAE,GACPyF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3F,EAAE,GACP4F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9F,EAAE,GACP+F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhG,EAAE,GACPiG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnG,EAAE,GACPoG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtG,EAAE,GACPuG,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzG,EAAE,GACP0G,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5G,EAAE,GACP6G,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP/G,EAAE,GACPgH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlH,EAAE,GACPmH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPrH,EAAE,GACPsH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPxH,EAAE,GACPyH,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP3H,EAAE,GACP4H,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB1X,EAAImN,SAAW0C,EAAK1C,SAAWnK,EAAImK,SACnCnN,EAAIrB,OAAS,GAMb,IAAIkZ,IAAQnK,GAJZsC,EAAKhC,KAAK8J,KAAK5D,EAAK8B,IAIE,KAAa,MAFnCjC,GADAA,EAAM/F,KAAK8J,KAAK5D,EAAK+B,IACRjI,KAAK8J,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDtI,IAFAkE,EAAK5D,KAAK8J,KAAK3D,EAAK8B,KAEPlC,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKhC,KAAK8J,KAAKzD,EAAK2B,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKzD,EAAK4B,IACRjI,KAAK8J,KAAKxD,EAAK0B,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQrK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKkC,GAAQ,GACvBpI,KAAK8J,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDzI,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKiC,GAAQ,IAErBrC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAKhC,KAAK8J,KAAKtD,EAAKwB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKtD,EAAKyB,IACRjI,KAAK8J,KAAKrD,EAAKuB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKrD,EAAKwB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK8B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK+B,GAAQ,GACvBpI,KAAK8J,KAAKxD,EAAK6B,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQtK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKqC,GAAQ,GACvBvI,KAAK8J,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD5I,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKoC,GAAQ,IAErBxC,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAKhC,KAAK8J,KAAKnD,EAAKqB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKnD,EAAKsB,IACRjI,KAAK8J,KAAKlD,EAAKoB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKlD,EAAKqB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK2B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK4B,GAAQ,GACvBpI,KAAK8J,KAAKrD,EAAK0B,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK2B,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKiC,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKkC,GAAQ,GACvBvI,KAAK8J,KAAKxD,EAAKgC,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQvK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKwC,GAAQ,GACvB1I,KAAK8J,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrD/I,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKuC,GAAQ,IAErB3C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAKhC,KAAK8J,KAAKhD,EAAKkB,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKhD,EAAKmB,IACRjI,KAAK8J,KAAK/C,EAAKiB,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAK/C,EAAKkB,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKwB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKyB,GAAQ,GACvBpI,KAAK8J,KAAKlD,EAAKuB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKwB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK8B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK+B,GAAQ,GACvBvI,KAAK8J,KAAKrD,EAAK6B,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK8B,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKoC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKqC,GAAQ,GACvB1I,KAAK8J,KAAKxD,EAAKmC,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQxK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK2C,IAAQ,GACvB7I,KAAK8J,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDlJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAK0C,IAAQ,IAErB9C,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAKhC,KAAK8J,KAAK7C,EAAKe,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAK7C,EAAKgB,IACRjI,KAAK8J,KAAK5C,EAAKc,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAK5C,EAAKe,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKqB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKsB,GAAQ,GACvBpI,KAAK8J,KAAK/C,EAAKoB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKqB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK2B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK4B,GAAQ,GACvBvI,KAAK8J,KAAKlD,EAAK0B,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK2B,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKiC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKkC,GAAQ,GACvB1I,KAAK8J,KAAKrD,EAAKgC,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKiC,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKuC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKwC,IAAQ,GACvB7I,KAAK8J,KAAKxD,EAAKsC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQzK,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK8C,IAAQ,GACvBhJ,KAAK8J,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDrJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAK6C,IAAQ,IAErBjD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAKhC,KAAK8J,KAAK1C,EAAKY,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAK1C,EAAKa,IACRjI,KAAK8J,KAAKzC,EAAKW,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKzC,EAAKY,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKkB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKmB,GAAQ,GACvBpI,KAAK8J,KAAK5C,EAAKiB,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKkB,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKwB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKyB,GAAQ,GACvBvI,KAAK8J,KAAK/C,EAAKuB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKwB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK8B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK+B,GAAQ,GACvB1I,KAAK8J,KAAKlD,EAAK6B,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK8B,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKoC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKqC,IAAQ,GACvB7I,KAAK8J,KAAKrD,EAAKmC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKoC,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK0C,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK2C,IAAQ,GACvBhJ,KAAK8J,KAAKxD,EAAKyC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ1K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKiD,IAAQ,GACvBnJ,KAAK8J,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDxJ,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKgD,IAAQ,IAErBpD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENpI,EAAKhC,KAAK8J,KAAKvC,EAAKS,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKvC,EAAKU,IACRjI,KAAK8J,KAAKtC,EAAKQ,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKtC,EAAKS,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKe,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKgB,GAAQ,GACvBpI,KAAK8J,KAAKzC,EAAKc,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKe,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKqB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKsB,GAAQ,GACvBvI,KAAK8J,KAAK5C,EAAKoB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKqB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK2B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK4B,GAAQ,GACvB1I,KAAK8J,KAAK/C,EAAK0B,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK2B,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKiC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKkC,IAAQ,GACvB7I,KAAK8J,KAAKlD,EAAKgC,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKiC,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKuC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKwC,IAAQ,GACvBhJ,KAAK8J,KAAKrD,EAAKsC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKuC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAK6C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAK8C,IAAQ,GACvBnJ,KAAK8J,KAAKxD,EAAK4C,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ3K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKoD,IAAQ,GACvBtJ,KAAK8J,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD3J,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKmD,IAAQ,IAErBvD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENrI,EAAKhC,KAAK8J,KAAKpC,EAAKM,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKpC,EAAKO,IACRjI,KAAK8J,KAAKnC,EAAKK,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKnC,EAAKM,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKY,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKa,GAAQ,GACvBpI,KAAK8J,KAAKtC,EAAKW,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKY,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKkB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKmB,GAAQ,GACvBvI,KAAK8J,KAAKzC,EAAKiB,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKkB,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKwB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKyB,GAAQ,GACvB1I,KAAK8J,KAAK5C,EAAKuB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKwB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK8B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK+B,IAAQ,GACvB7I,KAAK8J,KAAK/C,EAAK6B,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK8B,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKoC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKqC,IAAQ,GACvBhJ,KAAK8J,KAAKlD,EAAKmC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKoC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK0C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK2C,IAAQ,GACvBnJ,KAAK8J,KAAKrD,EAAKyC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK0C,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKgD,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKiD,IAAQ,GACvBtJ,KAAK8J,KAAKxD,EAAK+C,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ5K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAKuD,IAAQ,GACvBzJ,KAAK8J,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrD9J,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKsD,IAAQ,IAErB1D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENtI,EAAKhC,KAAK8J,KAAKjC,EAAKG,GAEpBjC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKI,IACRjI,KAAK8J,KAAKhC,EAAKE,GAAQ,EACpCpE,EAAK5D,KAAK8J,KAAKhC,EAAKG,GACpBjG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKS,GAAQ,EAElCpC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKU,GAAQ,GACvBpI,KAAK8J,KAAKnC,EAAKQ,GAAQ,EACpCvE,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKS,GAAQ,EAClCpG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKe,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKgB,GAAQ,GACvBvI,KAAK8J,KAAKtC,EAAKc,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKe,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKqB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKsB,GAAQ,GACvB1I,KAAK8J,KAAKzC,EAAKoB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKqB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK2B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK4B,IAAQ,GACvB7I,KAAK8J,KAAK5C,EAAK0B,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK2B,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKiC,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKkC,IAAQ,GACvBhJ,KAAK8J,KAAK/C,EAAKgC,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKiC,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKuC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKwC,IAAQ,GACvBnJ,KAAK8J,KAAKlD,EAAKsC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKuC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAK6C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAK8C,IAAQ,GACvBtJ,KAAK8J,KAAKrD,EAAK4C,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAK6C,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKmD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKoD,IAAQ,GACvBzJ,KAAK8J,KAAKxD,EAAKkD,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQ7K,GAJZsC,EAAMA,EAAKhC,KAAK8J,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK5D,EAAK0D,IAAQ,GACvB5J,KAAK8J,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK3D,EAAKyD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMwE,KAAO,IAAO,EAChDA,IAAM,SAENvI,EAAKhC,KAAK8J,KAAKjC,EAAKM,GAEpBpC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKO,IACRpI,KAAK8J,KAAKhC,EAAKK,GAAQ,EACpCvE,EAAK5D,KAAK8J,KAAKhC,EAAKM,GACpBpG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKY,GAAQ,EAElCvC,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKa,GAAQ,GACvBvI,KAAK8J,KAAKnC,EAAKW,GAAQ,EACpC1E,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKY,GAAQ,EAClCvG,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKkB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKmB,GAAQ,GACvB1I,KAAK8J,KAAKtC,EAAKiB,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKkB,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKwB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKyB,IAAQ,GACvB7I,KAAK8J,KAAKzC,EAAKuB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKwB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK8B,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK+B,IAAQ,GACvBhJ,KAAK8J,KAAK5C,EAAK6B,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK8B,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKoC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKqC,IAAQ,GACvBnJ,KAAK8J,KAAK/C,EAAKmC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKoC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK0C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK2C,IAAQ,GACvBtJ,KAAK8J,KAAKlD,EAAKyC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK0C,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKgD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKiD,IAAQ,GACvBzJ,KAAK8J,KAAKrD,EAAK+C,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAS9K,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKzD,EAAKuD,IAAQ,GACvB5J,KAAK8J,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKxD,EAAKsD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAKhC,KAAK8J,KAAKjC,EAAKS,GAEpBvC,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKU,IACRvI,KAAK8J,KAAKhC,EAAKQ,GAAQ,EACpC1E,EAAK5D,KAAK8J,KAAKhC,EAAKS,GACpBvG,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKe,GAAQ,EAElC1C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKgB,GAAQ,GACvB1I,KAAK8J,KAAKnC,EAAKc,GAAQ,EACpC7E,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKe,GAAQ,EAClC1G,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKqB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKsB,IAAQ,GACvB7I,KAAK8J,KAAKtC,EAAKoB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKqB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAK2B,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAK4B,IAAQ,GACvBhJ,KAAK8J,KAAKzC,EAAK0B,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAK2B,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKiC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKkC,IAAQ,GACvBnJ,KAAK8J,KAAK5C,EAAKgC,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKiC,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAKuC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAKwC,IAAQ,GACvBtJ,KAAK8J,KAAK/C,EAAKsC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAKuC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAK6C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAK8C,IAAQ,GACvBzJ,KAAK8J,KAAKlD,EAAK4C,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAAS/K,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKtD,EAAKoD,IAAQ,GACvB5J,KAAK8J,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKrD,EAAKmD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAKhC,KAAK8J,KAAKjC,EAAKY,GAEpB1C,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKa,IACR1I,KAAK8J,KAAKhC,EAAKW,GAAQ,EACpC7E,EAAK5D,KAAK8J,KAAKhC,EAAKY,GACpB1G,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKkB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKmB,IAAQ,GACvB7I,KAAK8J,KAAKnC,EAAKiB,GAAQ,EACpChF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKkB,IAAQ,EAClC7G,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKwB,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKyB,IAAQ,GACvBhJ,KAAK8J,KAAKtC,EAAKuB,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKwB,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAK8B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAK+B,IAAQ,GACvBnJ,KAAK8J,KAAKzC,EAAK6B,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAK8B,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKoC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKqC,IAAQ,GACvBtJ,KAAK8J,KAAK5C,EAAKmC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKoC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK0C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK2C,IAAQ,GACvBzJ,KAAK8J,KAAK/C,EAAKyC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAShL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKnD,EAAKiD,IAAQ,GACvB5J,KAAK8J,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKlD,EAAKgD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAKhC,KAAK8J,KAAKjC,EAAKe,GAEpB7C,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKgB,KACR7I,KAAK8J,KAAKhC,EAAKc,GAAQ,EACpChF,EAAK5D,KAAK8J,KAAKhC,EAAKe,IACpB7G,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKqB,IAAQ,EAElChD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKsB,IAAQ,GACvBhJ,KAAK8J,KAAKnC,EAAKoB,IAAQ,EACpCnF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKqB,IAAQ,EAClChH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAK2B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAK4B,IAAQ,GACvBnJ,KAAK8J,KAAKtC,EAAK0B,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAK2B,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKiC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKkC,IAAQ,GACvBtJ,KAAK8J,KAAKzC,EAAKgC,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKiC,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAKuC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAKwC,IAAQ,GACvBzJ,KAAK8J,KAAK5C,EAAKsC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASjL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKhD,EAAK8C,IAAQ,GACvB5J,KAAK8J,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK/C,EAAK6C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP3I,EAAKhC,KAAK8J,KAAKjC,EAAKkB,IAEpBhD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKmB,KACRhJ,KAAK8J,KAAKhC,EAAKiB,IAAQ,EACpCnF,EAAK5D,KAAK8J,KAAKhC,EAAKkB,IACpBhH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKwB,IAAQ,EAElCnD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKyB,IAAQ,GACvBnJ,KAAK8J,KAAKnC,EAAKuB,IAAQ,EACpCtF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKwB,IAAQ,EAClCnH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAK8B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAK+B,IAAQ,GACvBtJ,KAAK8J,KAAKtC,EAAK6B,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAK8B,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKoC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKqC,IAAQ,GACvBzJ,KAAK8J,KAAKzC,EAAKmC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASlL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK7C,EAAK2C,IAAQ,GACvB5J,KAAK8J,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAK5C,EAAK0C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP5I,EAAKhC,KAAK8J,KAAKjC,EAAKqB,IAEpBnD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKsB,KACRnJ,KAAK8J,KAAKhC,EAAKoB,IAAQ,EACpCtF,EAAK5D,KAAK8J,KAAKhC,EAAKqB,IACpBnH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAK2B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAK4B,IAAQ,GACvBtJ,KAAK8J,KAAKnC,EAAK0B,IAAQ,EACpCzF,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAK2B,IAAQ,EAClCtH,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKiC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKkC,IAAQ,GACvBzJ,KAAK8J,KAAKtC,EAAKgC,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASnL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAK1C,EAAKwC,IAAQ,GACvB5J,KAAK8J,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKzC,EAAKuC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP7I,EAAKhC,KAAK8J,KAAKjC,EAAKwB,IAEpBtD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAKyB,KACRtJ,KAAK8J,KAAKhC,EAAKuB,IAAQ,EACpCzF,EAAK5D,KAAK8J,KAAKhC,EAAKwB,IACpBtH,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAK8B,IAAQ,EAElCzD,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAK+B,IAAQ,GACvBzJ,KAAK8J,KAAKnC,EAAK6B,IAAQ,EACpC5F,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASpL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKvC,EAAKqC,IAAQ,GACvB5J,KAAK8J,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKtC,EAAKoC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP9I,EAAKhC,KAAK8J,KAAKjC,EAAK2B,IAEpBzD,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAK4B,KACRzJ,KAAK8J,KAAKhC,EAAK0B,IAAQ,EACpC5F,EAAK5D,KAAK8J,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASrL,GAJbsC,EAAMA,EAAKhC,KAAK8J,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM/F,KAAK8J,KAAKpC,EAAKkC,IAAQ,GACvB5J,KAAK8J,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDjK,IAFAkE,EAAMA,EAAK5D,KAAK8J,KAAKnC,EAAKiC,IAAQ,IAErB7D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAStL,GAJbsC,EAAKhC,KAAK8J,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC5D,GADAA,EAAM/F,KAAK8J,KAAKjC,EAAK+B,KACR5J,KAAK8J,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAjK,IAFAkE,EAAK5D,KAAK8J,KAAKhC,EAAK8B,MAEP7D,IAAQ,IAAO,IAAMiF,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK6D,GACP7D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACE,IAANtL,IACFsG,EAAE,IAAMtG,EACR1N,EAAIrB,UAECqB,CACT,EAOA,SAASwZ,EAAU3J,EAAM7M,EAAKhD,GAC5BA,EAAImN,SAAWnK,EAAImK,SAAW0C,EAAK1C,SACnCnN,EAAIrB,OAASkR,EAAKlR,OAASqE,EAAIrE,OAI/B,IAFA,IAAIsR,EAAQ,EACRsJ,EAAU,EACLrJ,EAAI,EAAGA,EAAIlQ,EAAIrB,OAAS,EAAGuR,IAAK,CAGvC,IAAIC,EAASoJ,EACbA,EAAU,EAGV,IAFA,IAAInJ,EAAgB,SAARH,EACRI,EAAOrC,KAAK/D,IAAIiG,EAAGlN,EAAIrE,OAAS,GAC3B6J,EAAIwF,KAAKC,IAAI,EAAGiC,EAAIL,EAAKlR,OAAS,GAAI6J,GAAK6H,EAAM7H,IAAK,CAC7D,IAAID,EAAI2H,EAAI1H,EAGRqF,GAFoB,EAAhBgC,EAAKzC,MAAM7E,KACI,EAAfvF,EAAIoK,MAAM5E,IAGdwH,EAAS,SAAJnC,EAGTuC,EAAa,UADbJ,EAAMA,EAAKI,EAAS,GAIpBmJ,IAFApJ,GAHAA,EAAUA,GAAWtC,EAAI,SAAa,GAAM,IAGxBmC,IAAO,IAAO,KAEZ,GACtBG,GAAU,QACZ,CACAnQ,EAAIoN,MAAM8C,GAAKE,EACfH,EAAQE,EACRA,EAASoJ,CACX,CAOA,OANc,IAAVtJ,EACFjQ,EAAIoN,MAAM8C,GAAKD,EAEfjQ,EAAIrB,SAGCqB,EAAI0jB,QACb,CAEA,SAASzK,EAAYpJ,EAAM7M,EAAKhD,GAI9B,OAAOwZ,EAAS3J,EAAM7M,EAAKhD,EAC7B,CAqBA,SAASkZ,EAAME,EAAGC,GAChBhc,KAAK+b,EAAIA,EACT/b,KAAKgc,EAAIA,CACX,CA1EKrL,KAAK8J,OACRhE,EAAclE,GAmDhB7C,EAAGzP,UAAUgc,MAAQ,SAAgBtW,EAAKhD,GACxC,IACIsI,EAAMjL,KAAKsB,OAASqE,EAAIrE,OAW5B,OAVoB,KAAhBtB,KAAKsB,QAAgC,KAAfqE,EAAIrE,OACtBmV,EAAYzW,KAAM2F,EAAKhD,GACpBsI,EAAM,GACTsH,EAAWvS,KAAM2F,EAAKhD,GACnBsI,EAAM,KACTkR,EAASnc,KAAM2F,EAAKhD,GAEpBiZ,EAAW5b,KAAM2F,EAAKhD,EAIhC,EAUAkZ,EAAK5b,UAAUmc,QAAU,SAAkBC,GAGzC,IAFA,IAAIjI,EAAI,IAAI1S,MAAM2a,GACdC,EAAI5M,EAAGzP,UAAUkU,WAAWkI,GAAK,EAC5BnR,EAAI,EAAGA,EAAImR,EAAGnR,IACrBkJ,EAAElJ,GAAKlL,KAAKuc,OAAOrR,EAAGoR,EAAGD,GAG3B,OAAOjI,CACT,EAGAyH,EAAK5b,UAAUsc,OAAS,SAAiBR,EAAGO,EAAGD,GAC7C,GAAU,IAANN,GAAWA,IAAMM,EAAI,EAAG,OAAON,EAGnC,IADA,IAAIS,EAAK,EACAtR,EAAI,EAAGA,EAAIoR,EAAGpR,IACrBsR,IAAW,EAAJT,IAAWO,EAAIpR,EAAI,EAC1B6Q,IAAM,EAGR,OAAOS,CACT,EAIAX,EAAK5b,UAAUwc,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAInR,EAAI,EAAGA,EAAImR,EAAGnR,IACrB2R,EAAK3R,GAAKyR,EAAID,EAAIxR,IAClB4R,EAAK5R,GAAK0R,EAAIF,EAAIxR,GAEtB,EAEA2Q,EAAK5b,UAAU8c,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtE1c,KAAKyc,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQtM,KAAKuM,IAAI,EAAIvM,KAAKwM,GAAKb,GAC/Bc,EAAQzM,KAAK0M,IAAI,EAAI1M,KAAKwM,GAAKb,GAE1BjN,EAAI,EAAGA,EAAIgN,EAAGhN,GAAKiN,EAI1B,IAHA,IAAIgB,EAASL,EACTM,EAASH,EAEJjS,EAAI,EAAGA,EAAI6R,EAAG7R,IAAK,CAC1B,IAAImC,EAAKuP,EAAKxN,EAAIlE,GACdqS,EAAKV,EAAKzN,EAAIlE,GAEdsS,EAAKZ,EAAKxN,EAAIlE,EAAI6R,GAClBU,EAAKZ,EAAKzN,EAAIlE,EAAI6R,GAElBW,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELd,EAAKxN,EAAIlE,GAAKmC,EAAKmQ,EACnBX,EAAKzN,EAAIlE,GAAKqS,EAAKE,EAEnBb,EAAKxN,EAAIlE,EAAI6R,GAAK1P,EAAKmQ,EACvBX,EAAKzN,EAAIlE,EAAI6R,GAAKQ,EAAKE,EAGnBvS,IAAMmR,IACRqB,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,EAEb,CAGN,EAEA9B,EAAK5b,UAAU2d,YAAc,SAAsBC,EAAGC,GACpD,IAAIzB,EAAqB,EAAjB1L,KAAKC,IAAIkN,EAAGD,GAChBE,EAAU,EAAJ1B,EACNnR,EAAI,EACR,IAAKmR,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BnR,IAGF,OAAO,GAAKA,EAAI,EAAI6S,CACtB,EAEAlC,EAAK5b,UAAU+d,UAAY,SAAoBrB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAInR,EAAI,EAAGA,EAAImR,EAAI,EAAGnR,IAAK,CAC9B,IAAIkJ,EAAIuI,EAAIzR,GAEZyR,EAAIzR,GAAKyR,EAAIN,EAAInR,EAAI,GACrByR,EAAIN,EAAInR,EAAI,GAAKkJ,EAEjBA,EAAIwI,EAAI1R,GAER0R,EAAI1R,IAAM0R,EAAIP,EAAInR,EAAI,GACtB0R,EAAIP,EAAInR,EAAI,IAAMkJ,CACpB,CACF,EAEAyH,EAAK5b,UAAUge,aAAe,SAAuBC,EAAI7B,GAEvD,IADA,IAAIzJ,EAAQ,EACH1H,EAAI,EAAGA,EAAImR,EAAI,EAAGnR,IAAK,CAC9B,IAAImG,EAAoC,KAAhCV,KAAKwN,MAAMD,EAAG,EAAIhT,EAAI,GAAKmR,GACjC1L,KAAKwN,MAAMD,EAAG,EAAIhT,GAAKmR,GACvBzJ,EAEFsL,EAAGhT,GAAS,SAAJmG,EAGNuB,EADEvB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAO6M,CACT,EAEArC,EAAK5b,UAAUme,WAAa,SAAqBF,EAAIjT,EAAK0R,EAAKN,GAE7D,IADA,IAAIzJ,EAAQ,EACH1H,EAAI,EAAGA,EAAID,EAAKC,IACvB0H,GAAyB,EAARsL,EAAGhT,GAEpByR,EAAI,EAAIzR,GAAa,KAAR0H,EAAgBA,KAAkB,GAC/C+J,EAAI,EAAIzR,EAAI,GAAa,KAAR0H,EAAgBA,KAAkB,GAIrD,IAAK1H,EAAI,EAAID,EAAKC,EAAImR,IAAKnR,EACzByR,EAAIzR,GAAK,EAGXlI,EAAiB,IAAV4P,GACP5P,EAA6B,MAAb,KAAR4P,GACV,EAEAiJ,EAAK5b,UAAUoe,KAAO,SAAehC,GAEnC,IADA,IAAIiC,EAAK,IAAI5c,MAAM2a,GACVnR,EAAI,EAAGA,EAAImR,EAAGnR,IACrBoT,EAAGpT,GAAK,EAGV,OAAOoT,CACT,EAEAzC,EAAK5b,UAAU6b,KAAO,SAAeC,EAAGC,EAAGrZ,GACzC,IAAI0Z,EAAI,EAAIrc,KAAK4d,YAAY7B,EAAEza,OAAQ0a,EAAE1a,QAErCob,EAAM1c,KAAKoc,QAAQC,GAEnBkC,EAAIve,KAAKqe,KAAKhC,GAEdM,EAAM,IAAIjb,MAAM2a,GAChBmC,EAAO,IAAI9c,MAAM2a,GACjBoC,EAAO,IAAI/c,MAAM2a,GAEjBqC,EAAO,IAAIhd,MAAM2a,GACjBsC,EAAQ,IAAIjd,MAAM2a,GAClBuC,EAAQ,IAAIld,MAAM2a,GAElBwC,EAAOlc,EAAIoN,MACf8O,EAAKvd,OAAS+a,EAEdrc,KAAKoe,WAAWrC,EAAEhM,MAAOgM,EAAEza,OAAQqb,EAAKN,GACxCrc,KAAKoe,WAAWpC,EAAEjM,MAAOiM,EAAE1a,OAAQod,EAAMrC,GAEzCrc,KAAK+c,UAAUJ,EAAK4B,EAAGC,EAAMC,EAAMpC,EAAGK,GACtC1c,KAAK+c,UAAU2B,EAAMH,EAAGI,EAAOC,EAAOvC,EAAGK,GAEzC,IAAK,IAAIxR,EAAI,EAAGA,EAAImR,EAAGnR,IAAK,CAC1B,IAAIyS,EAAKa,EAAKtT,GAAKyT,EAAMzT,GAAKuT,EAAKvT,GAAK0T,EAAM1T,GAC9CuT,EAAKvT,GAAKsT,EAAKtT,GAAK0T,EAAM1T,GAAKuT,EAAKvT,GAAKyT,EAAMzT,GAC/CsT,EAAKtT,GAAKyS,CACZ,CASA,OAPA3d,KAAKge,UAAUQ,EAAMC,EAAMpC,GAC3Brc,KAAK+c,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGlC,EAAGK,GACvC1c,KAAKge,UAAUa,EAAMN,EAAGlC,GACxBrc,KAAKie,aAAaY,EAAMxC,GAExB1Z,EAAImN,SAAWiM,EAAEjM,SAAWkM,EAAElM,SAC9BnN,EAAIrB,OAASya,EAAEza,OAAS0a,EAAE1a,OACnBqB,EAAI0jB,QACb,EAGA3W,EAAGzP,UAAUyQ,IAAM,SAAc/K,GAC/B,IAAIhD,EAAM,IAAI+M,EAAG,MAEjB,OADA/M,EAAIoN,MAAQ,IAAIrO,MAAM1B,KAAKsB,OAASqE,EAAIrE,QACjCtB,KAAKic,MAAMtW,EAAKhD,EACzB,EAGA+M,EAAGzP,UAAU6e,KAAO,SAAenZ,GACjC,IAAIhD,EAAM,IAAI+M,EAAG,MAEjB,OADA/M,EAAIoN,MAAQ,IAAIrO,MAAM1B,KAAKsB,OAASqE,EAAIrE,QACjCsa,EAAW5b,KAAM2F,EAAKhD,EAC/B,EAGA+M,EAAGzP,UAAUwa,KAAO,SAAe9U,GACjC,OAAO3F,KAAKwE,QAAQyX,MAAMtW,EAAK3F,KACjC,EAEA0P,EAAGzP,UAAU4R,MAAQ,SAAgBlM,GACnC,IAAI2uB,EAAW3uB,EAAM,EACjB2uB,IAAU3uB,GAAOA,GAErB3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UAIb,IADA,IAAIiN,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACpC,IAAImG,GAAqB,EAAhBrR,KAAK+P,MAAM7E,IAAUvF,EAC1BgN,GAAU,SAAJtB,IAA0B,SAARuB,GAC5BA,IAAU,GACVA,GAAUvB,EAAI,SAAa,EAE3BuB,GAASD,IAAO,GAChB3S,KAAK+P,MAAM7E,GAAU,SAALyH,CAClB,CAOA,OALc,IAAVC,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,UAGAgzB,EAAWt0B,KAAKiV,OAASjV,IAClC,EAEA0P,EAAGzP,UAAU8e,KAAO,SAAepZ,GACjC,OAAO3F,KAAKwE,QAAQqN,MAAMlM,EAC5B,EAGA+J,EAAGzP,UAAU+e,IAAM,WACjB,OAAOhf,KAAK0Q,IAAI1Q,KAClB,EAGA0P,EAAGzP,UAAUgf,KAAO,WAClB,OAAOjf,KAAKya,KAAKza,KAAKwE,QACxB,EAGAkL,EAAGzP,UAAU8R,IAAM,SAAcpM,GAC/B,IAAI0L,EA7xCN,SAAqB1L,GAGnB,IAFA,IAAI0L,EAAI,IAAI3P,MAAMiE,EAAI2O,aAEb6B,EAAM,EAAGA,EAAM9E,EAAE/P,OAAQ6U,IAAO,CACvC,IAAI7E,EAAO6E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB9E,EAAE8E,GAAQxQ,EAAIoK,MAAMuB,KAAS8E,EAAQ,CACvC,CAEA,OAAO/E,CACT,CAkxCU6N,CAAWvZ,GACnB,GAAiB,IAAb0L,EAAE/P,OAAc,OAAO,IAAIoO,EAAG,GAIlC,IADA,IAAIzN,EAAMjC,KACDkL,EAAI,EAAGA,EAAImG,EAAE/P,QACP,IAAT+P,EAAEnG,GADsBA,IAAKjJ,EAAMA,EAAI+c,OAI7C,KAAM9T,EAAImG,EAAE/P,OACV,IAAK,IAAIyS,EAAI9R,EAAI+c,MAAO9T,EAAImG,EAAE/P,OAAQ4J,IAAK6I,EAAIA,EAAEiL,MAClC,IAAT3N,EAAEnG,KAENjJ,EAAMA,EAAIyO,IAAIqD,IAIlB,OAAO9R,CACT,EAGAyN,EAAGzP,UAAUkf,OAAS,SAAiBC,GACrCpc,EAAuB,kBAAToc,GAAqBA,GAAQ,GAC3C,IAGIlU,EAHAsF,EAAI4O,EAAO,GACXpC,GAAKoC,EAAO5O,GAAK,GACjB6O,EAAa,WAAe,GAAK7O,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIoC,EAAQ,EAEZ,IAAK1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAAK,CAChC,IAAIoU,EAAWtf,KAAK+P,MAAM7E,GAAKmU,EAC3BhP,GAAsB,EAAhBrQ,KAAK+P,MAAM7E,IAAUoU,GAAa9O,EAC5CxQ,KAAK+P,MAAM7E,GAAKmF,EAAIuC,EACpBA,EAAQ0M,IAAc,GAAK9O,CAC7B,CAEIoC,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,SAET,CAEA,GAAU,IAAN0b,EAAS,CACX,IAAK9R,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAChClL,KAAK+P,MAAM7E,EAAI8R,GAAKhd,KAAK+P,MAAM7E,GAGjC,IAAKA,EAAI,EAAGA,EAAI8R,EAAG9R,IACjBlL,KAAK+P,MAAM7E,GAAK,EAGlBlL,KAAKsB,QAAU0b,CACjB,CAEA,OAAOhd,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUsf,MAAQ,SAAgBH,GAGnC,OADApc,EAAyB,IAAlBhD,KAAK8P,UACL9P,KAAKmf,OAAOC,EACrB,EAKA1P,EAAGzP,UAAUgU,OAAS,SAAiBmL,EAAMI,EAAMC,GAEjD,IAAIC,EADJ1c,EAAuB,kBAAToc,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIhP,EAAI4O,EAAO,GACXpC,EAAIrM,KAAK/D,KAAKwS,EAAO5O,GAAK,GAAIxQ,KAAKsB,QACnCqe,EAAO,SAAc,WAAcnP,GAAMA,EACzCoP,EAAcH,EAMlB,GAJAC,GAAK1C,EACL0C,EAAI/O,KAAKC,IAAI,EAAG8O,GAGZE,EAAa,CACf,IAAK,IAAI1U,EAAI,EAAGA,EAAI8R,EAAG9R,IACrB0U,EAAY7P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,GAEpC0U,EAAYte,OAAS0b,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIhd,KAAKsB,OAAS0b,EAEvB,IADAhd,KAAKsB,QAAU0b,EACV9R,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAC3BlL,KAAK+P,MAAM7E,GAAKlL,KAAK+P,MAAM7E,EAAI8R,QAGjChd,KAAK+P,MAAM,GAAK,EAChB/P,KAAKsB,OAAS,EAGhB,IAAIsR,EAAQ,EACZ,IAAK1H,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,IAAgB,IAAV0H,GAAe1H,GAAKwU,GAAIxU,IAAK,CAChE,IAAI0G,EAAuB,EAAhB5R,KAAK+P,MAAM7E,GACtBlL,KAAK+P,MAAM7E,GAAM0H,GAAU,GAAKpC,EAAOoB,IAASpB,EAChDoC,EAAQhB,EAAO+N,CACjB,CAYA,OATIC,GAAyB,IAAVhN,IACjBgN,EAAY7P,MAAM6P,EAAYte,UAAYsR,GAGxB,IAAhB5S,KAAKsB,SACPtB,KAAK+P,MAAM,GAAK,EAChB/P,KAAKsB,OAAS,GAGTtB,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAU4f,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAzc,EAAyB,IAAlBhD,KAAK8P,UACL9P,KAAKiU,OAAOmL,EAAMI,EAAMC,EACjC,EAGA/P,EAAGzP,UAAU6f,KAAO,SAAeV,GACjC,OAAOpf,KAAKwE,QAAQ+a,MAAMH,EAC5B,EAEA1P,EAAGzP,UAAU8f,MAAQ,SAAgBX,GACnC,OAAOpf,KAAKwE,QAAQ2a,OAAOC,EAC7B,EAGA1P,EAAGzP,UAAU+f,KAAO,SAAeZ,GACjC,OAAOpf,KAAKwE,QAAQqb,MAAMT,EAC5B,EAEA1P,EAAGzP,UAAUggB,MAAQ,SAAgBb,GACnC,OAAOpf,KAAKwE,QAAQyP,OAAOmL,EAC7B,EAGA1P,EAAGzP,UAAU8U,MAAQ,SAAgBoB,GACnCnT,EAAsB,kBAARmT,GAAoBA,GAAO,GACzC,IAAI3F,EAAI2F,EAAM,GACV6G,GAAK7G,EAAM3F,GAAK,GAChBuD,EAAI,GAAKvD,EAGb,QAAIxQ,KAAKsB,QAAU0b,OAGXhd,KAAK+P,MAAMiN,GAELjJ,EAChB,EAGArE,EAAGzP,UAAUigB,OAAS,SAAiBd,GACrCpc,EAAuB,kBAAToc,GAAqBA,GAAQ,GAC3C,IAAI5O,EAAI4O,EAAO,GACXpC,GAAKoC,EAAO5O,GAAK,GAIrB,GAFAxN,EAAyB,IAAlBhD,KAAK8P,SAAgB,2CAExB9P,KAAKsB,QAAU0b,EACjB,OAAOhd,KAQT,GALU,IAANwQ,GACFwM,IAEFhd,KAAKsB,OAASqP,KAAK/D,IAAIoQ,EAAGhd,KAAKsB,QAErB,IAANkP,EAAS,CACX,IAAImP,EAAO,SAAc,WAAcnP,GAAMA,EAC7CxQ,KAAK+P,MAAM/P,KAAKsB,OAAS,IAAMqe,CACjC,CAEA,OAAO3f,KAAKqmB,QACd,EAGA3W,EAAGzP,UAAUkgB,MAAQ,SAAgBf,GACnC,OAAOpf,KAAKwE,QAAQ0b,OAAOd,EAC7B,EAGA1P,EAAGzP,UAAU4U,MAAQ,SAAgBlP,GAGnC,OAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAU3F,KAAKogB,OAAOza,GAGV,IAAlB3F,KAAK8P,SACa,IAAhB9P,KAAKsB,SAAiC,EAAhBtB,KAAK+P,MAAM,KAAWpK,GAC9C3F,KAAK+P,MAAM,GAAKpK,GAAuB,EAAhB3F,KAAK+P,MAAM,IAClC/P,KAAK8P,SAAW,EACT9P,OAGTA,KAAK8P,SAAW,EAChB9P,KAAKogB,MAAMza,GACX3F,KAAK8P,SAAW,EACT9P,MAIFA,KAAK8R,OAAOnM,EACrB,EAEA+J,EAAGzP,UAAU6R,OAAS,SAAiBnM,GACrC3F,KAAK+P,MAAM,IAAMpK,EAGjB,IAAK,IAAIuF,EAAI,EAAGA,EAAIlL,KAAKsB,QAAUtB,KAAK+P,MAAM7E,IAAM,SAAWA,IAC7DlL,KAAK+P,MAAM7E,IAAM,SACbA,IAAMlL,KAAKsB,OAAS,EACtBtB,KAAK+P,MAAM7E,EAAI,GAAK,EAEpBlL,KAAK+P,MAAM7E,EAAI,KAKnB,OAFAlL,KAAKsB,OAASqP,KAAKC,IAAI5Q,KAAKsB,OAAQ4J,EAAI,GAEjClL,IACT,EAGA0P,EAAGzP,UAAUmgB,MAAQ,SAAgBza,GAGnC,GAFA3C,EAAsB,kBAAR2C,GACd3C,EAAO2C,EAAM,UACTA,EAAM,EAAG,OAAO3F,KAAK6U,OAAOlP,GAEhC,GAAsB,IAAlB3F,KAAK8P,SAIP,OAHA9P,KAAK8P,SAAW,EAChB9P,KAAK6U,MAAMlP,GACX3F,KAAK8P,SAAW,EACT9P,KAKT,GAFAA,KAAK+P,MAAM,IAAMpK,EAEG,IAAhB3F,KAAKsB,QAAgBtB,KAAK+P,MAAM,GAAK,EACvC/P,KAAK+P,MAAM,IAAM/P,KAAK+P,MAAM,GAC5B/P,KAAK8P,SAAW,OAGhB,IAAK,IAAI5E,EAAI,EAAGA,EAAIlL,KAAKsB,QAAUtB,KAAK+P,MAAM7E,GAAK,EAAGA,IACpDlL,KAAK+P,MAAM7E,IAAM,SACjBlL,KAAK+P,MAAM7E,EAAI,IAAM,EAIzB,OAAOlL,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUogB,KAAO,SAAe1a,GACjC,OAAO3F,KAAKwE,QAAQqQ,MAAMlP,EAC5B,EAEA+J,EAAGzP,UAAUqgB,KAAO,SAAe3a,GACjC,OAAO3F,KAAKwE,QAAQ4b,MAAMza,EAC5B,EAEA+J,EAAGzP,UAAUsgB,KAAO,WAGlB,OAFAvgB,KAAK8P,SAAW,EAET9P,IACT,EAEA0P,EAAGzP,UAAU0U,IAAM,WACjB,OAAO3U,KAAKwE,QAAQ+b,MACtB,EAEA7Q,EAAGzP,UAAUugB,aAAe,SAAuB7a,EAAK+K,EAAK+P,GAC3D,IACIvV,EAIAmG,EALApG,EAAMtF,EAAIrE,OAASmf,EAGvBzgB,KAAKiS,QAAQhH,GAGb,IAAI2H,EAAQ,EACZ,IAAK1H,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CAC/BmG,GAA6B,EAAxBrR,KAAK+P,MAAM7E,EAAIuV,IAAc7N,EAClC,IAAI9B,GAAwB,EAAfnL,EAAIoK,MAAM7E,IAAUwF,EAEjCkC,IADAvB,GAAa,SAARP,IACS,KAAQA,EAAQ,SAAa,GAC3C9Q,KAAK+P,MAAM7E,EAAIuV,GAAa,SAAJpP,CAC1B,CACA,KAAOnG,EAAIlL,KAAKsB,OAASmf,EAAOvV,IAE9B0H,GADAvB,GAA6B,EAAxBrR,KAAK+P,MAAM7E,EAAIuV,IAAc7N,IACrB,GACb5S,KAAK+P,MAAM7E,EAAIuV,GAAa,SAAJpP,EAG1B,GAAc,IAAVuB,EAAa,OAAO5S,KAAKqmB,SAK7B,IAFArjB,GAAkB,IAAX4P,GACPA,EAAQ,EACH1H,EAAI,EAAGA,EAAIlL,KAAKsB,OAAQ4J,IAE3B0H,GADAvB,IAAsB,EAAhBrR,KAAK+P,MAAM7E,IAAU0H,IACd,GACb5S,KAAK+P,MAAM7E,GAAS,SAAJmG,EAIlB,OAFArR,KAAK8P,SAAW,EAET9P,KAAKqmB,QACd,EAEA3W,EAAGzP,UAAUygB,SAAW,SAAmB/a,EAAKgb,GAC9C,IAAIF,GAAQzgB,KAAKsB,OAASqE,EAAIrE,QAE1BmR,EAAIzS,KAAKwE,QACTkO,EAAI/M,EAGJib,EAA8B,EAAxBlO,EAAE3C,MAAM2C,EAAEpR,OAAS,GAGf,KADdmf,EAAQ,GADMzgB,KAAKmU,WAAWyM,MAG5BlO,EAAIA,EAAEqN,MAAMU,GACZhO,EAAE0M,OAAOsB,GACTG,EAA8B,EAAxBlO,EAAE3C,MAAM2C,EAAEpR,OAAS,IAI3B,IACIyS,EADA+J,EAAIrL,EAAEnR,OAASoR,EAAEpR,OAGrB,GAAa,QAATqf,EAAgB,EAClB5M,EAAI,IAAIrE,EAAG,OACTpO,OAASwc,EAAI,EACf/J,EAAEhE,MAAQ,IAAIrO,MAAMqS,EAAEzS,QACtB,IAAK,IAAI4J,EAAI,EAAGA,EAAI6I,EAAEzS,OAAQ4J,IAC5B6I,EAAEhE,MAAM7E,GAAK,CAEjB,CAEA,IAAI2V,EAAOpO,EAAEjO,QAAQgc,aAAa9N,EAAG,EAAGoL,GAClB,IAAlB+C,EAAK/Q,WACP2C,EAAIoO,EACA9M,IACFA,EAAEhE,MAAM+N,GAAK,IAIjB,IAAK,IAAI3S,EAAI2S,EAAI,EAAG3S,GAAK,EAAGA,IAAK,CAC/B,IAAI2V,EAAmC,UAAL,EAAxBrO,EAAE1C,MAAM2C,EAAEpR,OAAS6J,KACE,EAA5BsH,EAAE1C,MAAM2C,EAAEpR,OAAS6J,EAAI,IAO1B,IAHA2V,EAAKnQ,KAAK/D,IAAKkU,EAAKF,EAAO,EAAG,UAE9BnO,EAAE+N,aAAa9N,EAAGoO,EAAI3V,GACA,IAAfsH,EAAE3C,UACPgR,IACArO,EAAE3C,SAAW,EACb2C,EAAE+N,aAAa9N,EAAG,EAAGvH,GAChBsH,EAAEW,WACLX,EAAE3C,UAAY,GAGdiE,IACFA,EAAEhE,MAAM5E,GAAK2V,EAEjB,CAWA,OAVI/M,GACFA,EAAEsS,SAEJ5T,EAAE4T,SAGW,QAAT1F,GAA4B,IAAVF,GACpBhO,EAAEwB,OAAOwM,GAGJ,CACLM,IAAKhN,GAAK,KACVpC,IAAKc,EAET,EAMA/C,EAAGzP,UAAU+gB,OAAS,SAAiBrb,EAAKgb,EAAMM,GAGhD,OAFAje,GAAQ2C,EAAIyN,UAERpT,KAAKoT,SACA,CACL2N,IAAK,IAAIrR,EAAG,GACZiC,IAAK,IAAIjC,EAAG,IAKM,IAAlB1P,KAAK8P,UAAmC,IAAjBnK,EAAImK,UAC7B7N,EAAMjC,KAAKmV,MAAM6L,OAAOrb,EAAKgb,GAEhB,QAATA,IACFI,EAAM9e,EAAI8e,IAAI5L,OAGH,QAATwL,IACFhP,EAAM1P,EAAI0P,IAAIwD,MACV8L,GAA6B,IAAjBtP,EAAI7B,UAClB6B,EAAI0E,KAAK1Q,IAIN,CACLob,IAAKA,EACLpP,IAAKA,IAIa,IAAlB3R,KAAK8P,UAAmC,IAAjBnK,EAAImK,UAC7B7N,EAAMjC,KAAKghB,OAAOrb,EAAIwP,MAAOwL,GAEhB,QAATA,IACFI,EAAM9e,EAAI8e,IAAI5L,OAGT,CACL4L,IAAKA,EACLpP,IAAK1P,EAAI0P,MAI0B,KAAlC3R,KAAK8P,SAAWnK,EAAImK,WACvB7N,EAAMjC,KAAKmV,MAAM6L,OAAOrb,EAAIwP,MAAOwL,GAEtB,QAATA,IACFhP,EAAM1P,EAAI0P,IAAIwD,MACV8L,GAA6B,IAAjBtP,EAAI7B,UAClB6B,EAAI2E,KAAK3Q,IAIN,CACLob,IAAK9e,EAAI8e,IACTpP,IAAKA,IAOLhM,EAAIrE,OAAStB,KAAKsB,QAAUtB,KAAK+Q,IAAIpL,GAAO,EACvC,CACLob,IAAK,IAAIrR,EAAG,GACZiC,IAAK3R,MAKU,IAAf2F,EAAIrE,OACO,QAATqf,EACK,CACLI,IAAK/gB,KAAKkhB,KAAKvb,EAAIoK,MAAM,IACzB4B,IAAK,MAII,QAATgP,EACK,CACLI,IAAK,KACLpP,IAAK,IAAIjC,EAAG1P,KAAKi0B,MAAMtuB,EAAIoK,MAAM,MAI9B,CACLgR,IAAK/gB,KAAKkhB,KAAKvb,EAAIoK,MAAM,IACzB4B,IAAK,IAAIjC,EAAG1P,KAAKi0B,MAAMtuB,EAAIoK,MAAM,MAI9B/P,KAAK0gB,SAAS/a,EAAKgb,GAlF1B,IAAII,EAAKpP,EAAK1P,CAmFhB,EAGAyN,EAAGzP,UAAU8gB,IAAM,SAAcpb,GAC/B,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAOob,GACxC,EAGArR,EAAGzP,UAAU0R,IAAM,SAAchM,GAC/B,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAOgM,GACxC,EAEAjC,EAAGzP,UAAUkhB,KAAO,SAAexb,GACjC,OAAO3F,KAAKghB,OAAOrb,EAAK,OAAO,GAAMgM,GACvC,EAGAjC,EAAGzP,UAAUmhB,SAAW,SAAmBzb,GACzC,IAAI0b,EAAKrhB,KAAKghB,OAAOrb,GAGrB,GAAI0b,EAAG1P,IAAIyB,SAAU,OAAOiO,EAAGN,IAE/B,IAAIpP,EAA0B,IAApB0P,EAAGN,IAAIjR,SAAiBuR,EAAG1P,IAAI2E,KAAK3Q,GAAO0b,EAAG1P,IAEpD2P,EAAO3b,EAAIsa,MAAM,GACjBsB,EAAK5b,EAAIqO,MAAM,GACfjD,EAAMY,EAAIZ,IAAIuQ,GAGlB,OAAIvQ,EAAM,GAAa,IAAPwQ,GAAoB,IAARxQ,EAAmBsQ,EAAGN,IAGvB,IAApBM,EAAGN,IAAIjR,SAAiBuR,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIlM,MAAM,EAChE,EAEAnF,EAAGzP,UAAUg0B,MAAQ,SAAgBtuB,GACnC,IAAI2uB,EAAW3uB,EAAM,EACjB2uB,IAAU3uB,GAAOA,GAErB3C,EAAO2C,GAAO,UAId,IAHA,IAAI0J,GAAK,GAAK,IAAM1J,EAEhB6b,EAAM,EACDtW,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IACpCsW,GAAOnS,EAAImS,GAAuB,EAAhBxhB,KAAK+P,MAAM7E,KAAWvF,EAG1C,OAAO2uB,GAAY9S,EAAMA,CAC3B,EAGA9R,EAAGzP,UAAUoT,KAAO,SAAe1N,GACjC,OAAO3F,KAAKi0B,MAAMtuB,EACpB,EAGA+J,EAAGzP,UAAUqT,MAAQ,SAAgB3N,GACnC,IAAI2uB,EAAW3uB,EAAM,EACjB2uB,IAAU3uB,GAAOA,GAErB3C,EAAO2C,GAAO,UAGd,IADA,IAAIiN,EAAQ,EACH1H,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACzC,IAAImG,GAAqB,EAAhBrR,KAAK+P,MAAM7E,IAAkB,SAAR0H,EAC9B5S,KAAK+P,MAAM7E,GAAMmG,EAAI1L,EAAO,EAC5BiN,EAAQvB,EAAI1L,CACd,CAGA,OADA3F,KAAKqmB,SACEiO,EAAWt0B,KAAKiV,OAASjV,IAClC,EAEA0P,EAAGzP,UAAUihB,KAAO,SAAevb,GACjC,OAAO3F,KAAKwE,QAAQ8O,MAAM3N,EAC5B,EAEA+J,EAAGzP,UAAUwhB,KAAO,SAAepS,GACjCrM,EAAsB,IAAfqM,EAAES,UACT9M,GAAQqM,EAAE+D,UAEV,IAAI2I,EAAI/b,KACJgc,EAAI3M,EAAE7K,QAGRuX,EADiB,IAAfA,EAAEjM,SACAiM,EAAEoF,KAAK9R,GAEP0M,EAAEvX,QAaR,IATA,IAAIkd,EAAI,IAAIhS,EAAG,GACXiS,EAAI,IAAIjS,EAAG,GAGXkS,EAAI,IAAIlS,EAAG,GACXmS,EAAI,IAAInS,EAAG,GAEXoS,EAAI,EAED/F,EAAEgG,UAAY/F,EAAE+F,UACrBhG,EAAE9H,OAAO,GACT+H,EAAE/H,OAAO,KACP6N,EAMJ,IAHA,IAAIE,EAAKhG,EAAExX,QACPyd,EAAKlG,EAAEvX,SAEHuX,EAAE3I,UAAU,CAClB,IAAK,IAAIlI,EAAI,EAAGgX,EAAK,EAAyB,KAArBnG,EAAEhM,MAAM,GAAKmS,IAAahX,EAAI,KAAMA,EAAGgX,IAAO,GACvE,GAAIhX,EAAI,EAEN,IADA6Q,EAAE9H,OAAO/I,GACFA,KAAM,IACPwW,EAAES,SAAWR,EAAEQ,WACjBT,EAAErL,KAAK2L,GACPL,EAAErL,KAAK2L,IAGTP,EAAEzN,OAAO,GACT0N,EAAE1N,OAAO,GAIb,IAAK,IAAI9I,EAAI,EAAGiX,EAAK,EAAyB,KAArBpG,EAAEjM,MAAM,GAAKqS,IAAajX,EAAI,KAAMA,EAAGiX,IAAO,GACvE,GAAIjX,EAAI,EAEN,IADA6Q,EAAE/H,OAAO9I,GACFA,KAAM,IACPyW,EAAEO,SAAWN,EAAEM,WACjBP,EAAEvL,KAAK2L,GACPH,EAAEvL,KAAK2L,IAGTL,EAAE3N,OAAO,GACT4N,EAAE5N,OAAO,GAIT8H,EAAEhL,IAAIiL,IAAM,GACdD,EAAEzF,KAAK0F,GACP0F,EAAEpL,KAAKsL,GACPD,EAAErL,KAAKuL,KAEP7F,EAAE1F,KAAKyF,GACP6F,EAAEtL,KAAKoL,GACPG,EAAEvL,KAAKqL,GAEX,CAEA,MAAO,CACLlP,EAAGmP,EACHlP,EAAGmP,EACHQ,IAAKrG,EAAEmD,OAAO2C,GAElB,EAKApS,EAAGzP,UAAUqiB,OAAS,SAAiBjT,GACrCrM,EAAsB,IAAfqM,EAAES,UACT9M,GAAQqM,EAAE+D,UAEV,IAAIX,EAAIzS,KACJ0S,EAAIrD,EAAE7K,QAGRiO,EADiB,IAAfA,EAAE3C,SACA2C,EAAE0O,KAAK9R,GAEPoD,EAAEjO,QAQR,IALA,IAuCIvC,EAvCAsgB,EAAK,IAAI7S,EAAG,GACZ8S,EAAK,IAAI9S,EAAG,GAEZ+S,EAAQ/P,EAAElO,QAEPiO,EAAEiQ,KAAK,GAAK,GAAKhQ,EAAEgQ,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIxX,EAAI,EAAGgX,EAAK,EAAyB,KAArBzP,EAAE1C,MAAM,GAAKmS,IAAahX,EAAI,KAAMA,EAAGgX,IAAO,GACvE,GAAIhX,EAAI,EAEN,IADAuH,EAAEwB,OAAO/I,GACFA,KAAM,GACPqX,EAAGJ,SACLI,EAAGlM,KAAKoM,GAGVF,EAAGtO,OAAO,GAId,IAAK,IAAI9I,EAAI,EAAGiX,EAAK,EAAyB,KAArB1P,EAAE3C,MAAM,GAAKqS,IAAajX,EAAI,KAAMA,EAAGiX,IAAO,GACvE,GAAIjX,EAAI,EAEN,IADAuH,EAAEuB,OAAO9I,GACFA,KAAM,GACPqX,EAAGL,SACLK,EAAGnM,KAAKoM,GAGVD,EAAGvO,OAAO,GAIVxB,EAAE1B,IAAI2B,IAAM,GACdD,EAAE6D,KAAK5D,GACP6P,EAAGjM,KAAKkM,KAER9P,EAAE4D,KAAK7D,GACP+P,EAAGlM,KAAKiM,GAEZ,CAaA,OATEtgB,EADgB,IAAdwQ,EAAEiQ,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKhH,GAGJpN,CACT,EAEAyN,EAAGzP,UAAUoiB,IAAM,SAAc1c,GAC/B,GAAI3F,KAAKoT,SAAU,OAAOzN,EAAIgP,MAC9B,GAAIhP,EAAIyN,SAAU,OAAOpT,KAAK2U,MAE9B,IAAIlC,EAAIzS,KAAKwE,QACTkO,EAAI/M,EAAInB,QACZiO,EAAE3C,SAAW,EACb4C,EAAE5C,SAAW,EAGb,IAAK,IAAI2Q,EAAQ,EAAGhO,EAAEsP,UAAYrP,EAAEqP,SAAUtB,IAC5ChO,EAAEwB,OAAO,GACTvB,EAAEuB,OAAO,GAGX,OAAG,CACD,KAAOxB,EAAEsP,UACPtP,EAAEwB,OAAO,GAEX,KAAOvB,EAAEqP,UACPrP,EAAEuB,OAAO,GAGX,IAAIzD,EAAIiC,EAAE1B,IAAI2B,GACd,GAAIlC,EAAI,EAAG,CAET,IAAI4D,EAAI3B,EACRA,EAAIC,EACJA,EAAI0B,CACN,MAAO,GAAU,IAAN5D,GAAyB,IAAdkC,EAAEgQ,KAAK,GAC3B,MAGFjQ,EAAE6D,KAAK5D,EACT,CAEA,OAAOA,EAAEyM,OAAOsB,EAClB,EAGA/Q,EAAGzP,UAAU0iB,KAAO,SAAehd,GACjC,OAAO3F,KAAKyhB,KAAK9b,GAAK8M,EAAE0O,KAAKxb,EAC/B,EAEA+J,EAAGzP,UAAU8hB,OAAS,WACpB,OAA+B,KAAP,EAAhB/hB,KAAK+P,MAAM,GACrB,EAEAL,EAAGzP,UAAUkiB,MAAQ,WACnB,OAA+B,KAAP,EAAhBniB,KAAK+P,MAAM,GACrB,EAGAL,EAAGzP,UAAU+T,MAAQ,SAAgBrO,GACnC,OAAO3F,KAAK+P,MAAM,GAAKpK,CACzB,EAGA+J,EAAGzP,UAAU2iB,MAAQ,SAAgBzM,GACnCnT,EAAsB,kBAARmT,GACd,IAAI3F,EAAI2F,EAAM,GACV6G,GAAK7G,EAAM3F,GAAK,GAChBuD,EAAI,GAAKvD,EAGb,GAAIxQ,KAAKsB,QAAU0b,EAGjB,OAFAhd,KAAKiS,QAAQ+K,EAAI,GACjBhd,KAAK+P,MAAMiN,IAAMjJ,EACV/T,KAKT,IADA,IAAI4S,EAAQmB,EACH7I,EAAI8R,EAAa,IAAVpK,GAAe1H,EAAIlL,KAAKsB,OAAQ4J,IAAK,CACnD,IAAImG,EAAoB,EAAhBrR,KAAK+P,MAAM7E,GAEnB0H,GADAvB,GAAKuB,KACS,GACdvB,GAAK,SACLrR,KAAK+P,MAAM7E,GAAKmG,CAClB,CAKA,OAJc,IAAVuB,IACF5S,KAAK+P,MAAM7E,GAAK0H,EAChB5S,KAAKsB,UAEAtB,IACT,EAEA0P,EAAGzP,UAAUmT,OAAS,WACpB,OAAuB,IAAhBpT,KAAKsB,QAAkC,IAAlBtB,KAAK+P,MAAM,EACzC,EAEAL,EAAGzP,UAAUyiB,KAAO,SAAe/c,GACjC,IAOI1D,EAPA6N,EAAWnK,EAAM,EAErB,GAAsB,IAAlB3F,KAAK8P,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB9P,KAAK8P,UAAkBA,EAAU,OAAO,EAK5C,GAHA9P,KAAKqmB,SAGDrmB,KAAKsB,OAAS,EAChBW,EAAM,MACD,CACD6N,IACFnK,GAAOA,GAGT3C,EAAO2C,GAAO,SAAW,qBAEzB,IAAI0L,EAAoB,EAAhBrR,KAAK+P,MAAM,GACnB9N,EAAMoP,IAAM1L,EAAM,EAAI0L,EAAI1L,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlB3F,KAAK8P,SAA8B,GAAN7N,EAC1BA,CACT,EAMAyN,EAAGzP,UAAU8Q,IAAM,SAAcpL,GAC/B,GAAsB,IAAlB3F,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAAgB,OAAQ,EACvD,GAAsB,IAAlB9P,KAAK8P,UAAmC,IAAjBnK,EAAImK,SAAgB,OAAO,EAEtD,IAAI7N,EAAMjC,KAAK6iB,KAAKld,GACpB,OAAsB,IAAlB3F,KAAK8P,SAA8B,GAAN7N,EAC1BA,CACT,EAGAyN,EAAGzP,UAAU4iB,KAAO,SAAeld,GAEjC,GAAI3F,KAAKsB,OAASqE,EAAIrE,OAAQ,OAAO,EACrC,GAAItB,KAAKsB,OAASqE,EAAIrE,OAAQ,OAAQ,EAGtC,IADA,IAAIW,EAAM,EACDiJ,EAAIlL,KAAKsB,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CACzC,IAAIuH,EAAoB,EAAhBzS,KAAK+P,MAAM7E,GACfwH,EAAmB,EAAf/M,EAAIoK,MAAM7E,GAElB,GAAIuH,IAAMC,EAAV,CACID,EAAIC,EACNzQ,GAAO,EACEwQ,EAAIC,IACbzQ,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAyN,EAAGzP,UAAU6iB,IAAM,SAAcnd,GAC/B,OAA0B,IAAnB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAU8iB,GAAK,SAAapd,GAC7B,OAAyB,IAAlB3F,KAAK+Q,IAAIpL,EAClB,EAEA+J,EAAGzP,UAAU+iB,KAAO,SAAerd,GACjC,OAAO3F,KAAK0iB,KAAK/c,IAAQ,CAC3B,EAEA+J,EAAGzP,UAAUgjB,IAAM,SAActd,GAC/B,OAAO3F,KAAK+Q,IAAIpL,IAAQ,CAC1B,EAEA+J,EAAGzP,UAAUijB,IAAM,SAAcvd,GAC/B,OAA2B,IAApB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAUkjB,GAAK,SAAaxd,GAC7B,OAA0B,IAAnB3F,KAAK+Q,IAAIpL,EAClB,EAEA+J,EAAGzP,UAAUmjB,KAAO,SAAezd,GACjC,OAAO3F,KAAK0iB,KAAK/c,IAAQ,CAC3B,EAEA+J,EAAGzP,UAAUojB,IAAM,SAAc1d,GAC/B,OAAO3F,KAAK+Q,IAAIpL,IAAQ,CAC1B,EAEA+J,EAAGzP,UAAUqjB,IAAM,SAAc3d,GAC/B,OAA0B,IAAnB3F,KAAK0iB,KAAK/c,EACnB,EAEA+J,EAAGzP,UAAUsjB,GAAK,SAAa5d,GAC7B,OAAyB,IAAlB3F,KAAK+Q,IAAIpL,EAClB,EAMA+J,EAAGM,IAAM,SAAcrK,GACrB,OAAO,IAAI6d,EAAI7d,EACjB,EAEA+J,EAAGzP,UAAUwjB,MAAQ,SAAgBC,GAGnC,OAFA1gB,GAAQhD,KAAKgQ,IAAK,yCAClBhN,EAAyB,IAAlBhD,KAAK8P,SAAgB,iCACrB4T,EAAIC,UAAU3jB,MAAM4jB,UAAUF,EACvC,EAEAhU,EAAGzP,UAAU4jB,QAAU,WAErB,OADA7gB,EAAOhD,KAAKgQ,IAAK,wDACVhQ,KAAKgQ,IAAI8T,YAAY9jB,KAC9B,EAEA0P,EAAGzP,UAAU2jB,UAAY,SAAoBF,GAE3C,OADA1jB,KAAKgQ,IAAM0T,EACJ1jB,IACT,EAEA0P,EAAGzP,UAAU8jB,SAAW,SAAmBL,GAEzC,OADA1gB,GAAQhD,KAAKgQ,IAAK,yCACXhQ,KAAK4jB,UAAUF,EACxB,EAEAhU,EAAGzP,UAAU+jB,OAAS,SAAiBre,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIuG,IAAIvW,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUgkB,QAAU,SAAkBte,GAEvC,OADA3C,EAAOhD,KAAKgQ,IAAK,uCACVhQ,KAAKgQ,IAAIqG,KAAKrW,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUikB,OAAS,SAAiBve,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIwG,IAAIxW,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUkkB,QAAU,SAAkBxe,GAEvC,OADA3C,EAAOhD,KAAKgQ,IAAK,uCACVhQ,KAAKgQ,IAAIsG,KAAKtW,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUmkB,OAAS,SAAiBze,GAErC,OADA3C,EAAOhD,KAAKgQ,IAAK,sCACVhQ,KAAKgQ,IAAIqU,IAAIrkB,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUqkB,OAAS,SAAiB3e,GAGrC,OAFA3C,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAIuU,SAASvkB,KAAM2F,GACjB3F,KAAKgQ,IAAIU,IAAI1Q,KAAM2F,EAC5B,EAEA+J,EAAGzP,UAAUukB,QAAU,SAAkB7e,GAGvC,OAFA3C,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAIuU,SAASvkB,KAAM2F,GACjB3F,KAAKgQ,IAAIyK,KAAKza,KAAM2F,EAC7B,EAEA+J,EAAGzP,UAAUwkB,OAAS,WAGpB,OAFAzhB,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAIgP,IAAIhf,KACtB,EAEA0P,EAAGzP,UAAU0kB,QAAU,WAGrB,OAFA3hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAIiP,KAAKjf,KACvB,EAGA0P,EAAGzP,UAAU2kB,QAAU,WAGrB,OAFA5hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI6U,KAAK7kB,KACvB,EAEA0P,EAAGzP,UAAU6kB,QAAU,WAGrB,OAFA9hB,EAAOhD,KAAKgQ,IAAK,uCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI2S,KAAK3iB,KACvB,EAGA0P,EAAGzP,UAAU8kB,OAAS,WAGpB,OAFA/hB,EAAOhD,KAAKgQ,IAAK,sCACjBhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAImF,IAAInV,KACtB,EAEA0P,EAAGzP,UAAU+kB,OAAS,SAAiBrf,GAGrC,OAFA3C,EAAOhD,KAAKgQ,MAAQrK,EAAIqK,IAAK,qBAC7BhQ,KAAKgQ,IAAI0U,SAAS1kB,MACXA,KAAKgQ,IAAI+B,IAAI/R,KAAM2F,EAC5B,EAGA,IAAIsf,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQxlB,EAAMuP,GAErBrP,KAAKF,KAAOA,EACZE,KAAKqP,EAAI,IAAIK,EAAGL,EAAG,IACnBrP,KAAK6d,EAAI7d,KAAKqP,EAAEiF,YAChBtU,KAAK6S,EAAI,IAAInD,EAAG,GAAGyP,OAAOnf,KAAK6d,GAAGvH,KAAKtW,KAAKqP,GAE5CrP,KAAKuM,IAAMvM,KAAKulB,MAClB,CAgDA,SAASC,IACPF,EAAO/kB,KACLP,KACA,OACA,0EACJ,CA8DA,SAASylB,IACPH,EAAO/kB,KACLP,KACA,OACA,iEACJ,CAGA,SAAS0lB,IACPJ,EAAO/kB,KACLP,KACA,OACA,wDACJ,CAGA,SAAS2lB,IAEPL,EAAO/kB,KACLP,KACA,QACA,sEACJ,CA6CA,SAASwjB,EAAK1F,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI8H,EAAQlW,EAAGmW,OAAO/H,GACtB9d,KAAK8d,EAAI8H,EAAMvW,EACfrP,KAAK4lB,MAAQA,CACf,MACE5iB,EAAO8a,EAAEgF,IAAI,GAAI,kCACjB9iB,KAAK8d,EAAIA,EACT9d,KAAK4lB,MAAQ,IAEjB,CAkOA,SAASE,EAAMhI,GACb0F,EAAIjjB,KAAKP,KAAM8d,GAEf9d,KAAKygB,MAAQzgB,KAAK8d,EAAExJ,YAChBtU,KAAKygB,MAAQ,KAAO,IACtBzgB,KAAKygB,OAAS,GAAMzgB,KAAKygB,MAAQ,IAGnCzgB,KAAKwQ,EAAI,IAAId,EAAG,GAAGyP,OAAOnf,KAAKygB,OAC/BzgB,KAAKuhB,GAAKvhB,KAAK+lB,KAAK/lB,KAAKwQ,EAAEwO,OAC3Bhf,KAAKgmB,KAAOhmB,KAAKwQ,EAAE8R,OAAOtiB,KAAK8d,GAE/B9d,KAAKimB,KAAOjmB,KAAKgmB,KAAKtV,IAAI1Q,KAAKwQ,GAAG4P,MAAM,GAAGW,IAAI/gB,KAAK8d,GACpD9d,KAAKimB,KAAOjmB,KAAKimB,KAAK9E,KAAKnhB,KAAKwQ,GAChCxQ,KAAKimB,KAAOjmB,KAAKwQ,EAAEgG,IAAIxW,KAAKimB,KAC9B,CA/aAX,EAAOrlB,UAAUslB,KAAO,WACtB,IAAIhZ,EAAM,IAAImD,EAAG,MAEjB,OADAnD,EAAIwD,MAAQ,IAAIrO,MAAMiP,KAAKS,KAAKpR,KAAK6d,EAAI,KAClCtR,CACT,EAEA+Y,EAAOrlB,UAAUimB,QAAU,SAAkBvgB,GAG3C,IACIwgB,EADA3V,EAAI7K,EAGR,GACE3F,KAAKmN,MAAMqD,EAAGxQ,KAAKuM,KAGnB4Z,GADA3V,GADAA,EAAIxQ,KAAKomB,MAAM5V,IACT6F,KAAKrW,KAAKuM,MACP+H,kBACF6R,EAAOnmB,KAAK6d,GAErB,IAAI9M,EAAMoV,EAAOnmB,KAAK6d,GAAK,EAAIrN,EAAEqS,KAAK7iB,KAAKqP,GAgB3C,OAfY,IAAR0B,GACFP,EAAET,MAAM,GAAK,EACbS,EAAElP,OAAS,GACFyP,EAAM,EACfP,EAAE8F,KAAKtW,KAAKqP,QAEInH,IAAZsI,EAAEe,MAEJf,EAAEe,QAGFf,EAAE6V,SAIC7V,CACT,EAEA8U,EAAOrlB,UAAUkN,MAAQ,SAAgBrH,EAAOnD,GAC9CmD,EAAMmO,OAAOjU,KAAK6d,EAAG,EAAGlb,EAC1B,EAEA2iB,EAAOrlB,UAAUmmB,MAAQ,SAAgBzgB,GACvC,OAAOA,EAAI8U,KAAKza,KAAK6S,EACvB,EAQAjT,EAAS4lB,EAAMF,GAEfE,EAAKvlB,UAAUkN,MAAQ,SAAgBrH,EAAOwgB,GAK5C,IAHA,IAAI3G,EAAO,QAEP4G,EAAS5V,KAAK/D,IAAI9G,EAAMxE,OAAQ,GAC3B4J,EAAI,EAAGA,EAAIqb,EAAQrb,IAC1Bob,EAAOvW,MAAM7E,GAAKpF,EAAMiK,MAAM7E,GAIhC,GAFAob,EAAOhlB,OAASilB,EAEZzgB,EAAMxE,QAAU,EAGlB,OAFAwE,EAAMiK,MAAM,GAAK,OACjBjK,EAAMxE,OAAS,GAKjB,IAAIqI,EAAO7D,EAAMiK,MAAM,GAGvB,IAFAuW,EAAOvW,MAAMuW,EAAOhlB,UAAYqI,EAAOgW,EAElCzU,EAAI,GAAIA,EAAIpF,EAAMxE,OAAQ4J,IAAK,CAClC,IAAIsb,EAAwB,EAAjB1gB,EAAMiK,MAAM7E,GACvBpF,EAAMiK,MAAM7E,EAAI,KAAQsb,EAAO7G,IAAS,EAAMhW,IAAS,GACvDA,EAAO6c,CACT,CACA7c,KAAU,GACV7D,EAAMiK,MAAM7E,EAAI,IAAMvB,EACT,IAATA,GAAc7D,EAAMxE,OAAS,GAC/BwE,EAAMxE,QAAU,GAEhBwE,EAAMxE,QAAU,CAEpB,EAEAkkB,EAAKvlB,UAAUmmB,MAAQ,SAAgBzgB,GAErCA,EAAIoK,MAAMpK,EAAIrE,QAAU,EACxBqE,EAAIoK,MAAMpK,EAAIrE,OAAS,GAAK,EAC5BqE,EAAIrE,QAAU,EAId,IADA,IAAIqR,EAAK,EACAzH,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CACnC,IAAImG,EAAmB,EAAf1L,EAAIoK,MAAM7E,GAClByH,GAAU,IAAJtB,EACN1L,EAAIoK,MAAM7E,GAAU,SAALyH,EACfA,EAAS,GAAJtB,GAAasB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BhN,EAAIoK,MAAMpK,EAAIrE,OAAS,KACzBqE,EAAIrE,SAC8B,IAA9BqE,EAAIoK,MAAMpK,EAAIrE,OAAS,IACzBqE,EAAIrE,UAGDqE,CACT,EAQA/F,EAAS6lB,EAAMH,GAQf1lB,EAAS8lB,EAAMJ,GASf1lB,EAAS+lB,EAAQL,GAEjBK,EAAO1lB,UAAUmmB,MAAQ,SAAgBzgB,GAGvC,IADA,IAAIiN,EAAQ,EACH1H,EAAI,EAAGA,EAAIvF,EAAIrE,OAAQ4J,IAAK,CACnC,IAAIqJ,EAA0B,IAAL,EAAf5O,EAAIoK,MAAM7E,IAAiB0H,EACjCD,EAAU,SAAL4B,EACTA,KAAQ,GAER5O,EAAIoK,MAAM7E,GAAKyH,EACfC,EAAQ2B,CACV,CAIA,OAHc,IAAV3B,IACFjN,EAAIoK,MAAMpK,EAAIrE,UAAYsR,GAErBjN,CACT,EAGA+J,EAAGmW,OAAS,SAAgB/lB,GAE1B,GAAImlB,EAAOnlB,GAAO,OAAOmlB,EAAOnlB,GAEhC,IAAI8lB,EACJ,GAAa,SAAT9lB,EACF8lB,EAAQ,IAAIJ,OACP,GAAa,SAAT1lB,EACT8lB,EAAQ,IAAIH,OACP,GAAa,SAAT3lB,EACT8lB,EAAQ,IAAIF,MACP,IAAa,WAAT5lB,EAGT,MAAM,IAAI0F,MAAM,iBAAmB1F,GAFnC8lB,EAAQ,IAAID,CAGd,CAGA,OAFAV,EAAOnlB,GAAQ8lB,EAERA,CACT,EAiBApC,EAAIvjB,UAAUykB,SAAW,SAAmBjS,GAC1CzP,EAAsB,IAAfyP,EAAE3C,SAAgB,iCACzB9M,EAAOyP,EAAEzC,IAAK,kCAChB,EAEAwT,EAAIvjB,UAAUskB,SAAW,SAAmB9R,EAAGC,GAC7C1P,EAAqC,KAA7ByP,EAAE3C,SAAW4C,EAAE5C,UAAiB,iCACxC9M,EAAOyP,EAAEzC,KAAOyC,EAAEzC,MAAQ0C,EAAE1C,IAC1B,kCACJ,EAEAwT,EAAIvjB,UAAU8lB,KAAO,SAAetT,GAClC,OAAIzS,KAAK4lB,MAAc5lB,KAAK4lB,MAAMM,QAAQzT,GAAGmR,UAAU5jB,OAEvD4zB,EAAKnhB,EAAGA,EAAE0O,KAAKnhB,KAAK8d,GAAG8F,UAAU5jB,OAC1ByS,EACT,EAEA+Q,EAAIvjB,UAAUkV,IAAM,SAAc1C,GAChC,OAAIA,EAAEW,SACGX,EAAEjO,QAGJxE,KAAK8d,EAAEtH,IAAI/D,GAAGmR,UAAU5jB,KACjC,EAEAwjB,EAAIvjB,UAAUsW,IAAM,SAAc9D,EAAGC,GACnC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE8D,IAAI7D,GAIhB,OAHIzQ,EAAI8O,IAAI/Q,KAAK8d,IAAM,GACrB7b,EAAIqU,KAAKtW,KAAK8d,GAET7b,EAAI2hB,UAAU5jB,KACvB,EAEAwjB,EAAIvjB,UAAUoW,KAAO,SAAe5D,EAAGC,GACrC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE4D,KAAK3D,GAIjB,OAHIzQ,EAAI8O,IAAI/Q,KAAK8d,IAAM,GACrB7b,EAAIqU,KAAKtW,KAAK8d,GAET7b,CACT,EAEAuhB,EAAIvjB,UAAUuW,IAAM,SAAc/D,EAAGC,GACnC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE+D,IAAI9D,GAIhB,OAHIzQ,EAAIygB,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKrW,KAAK8d,GAET7b,EAAI2hB,UAAU5jB,KACvB,EAEAwjB,EAAIvjB,UAAUqW,KAAO,SAAe7D,EAAGC,GACrC1S,KAAKukB,SAAS9R,EAAGC,GAEjB,IAAIzQ,EAAMwQ,EAAE6D,KAAK5D,GAIjB,OAHIzQ,EAAIygB,KAAK,GAAK,GAChBzgB,EAAIoU,KAAKrW,KAAK8d,GAET7b,CACT,EAEAuhB,EAAIvjB,UAAUokB,IAAM,SAAc5R,EAAG9M,GAEnC,OADA3F,KAAK0kB,SAASjS,GACPzS,KAAK+lB,KAAKtT,EAAEsN,MAAMpa,GAC3B,EAEA6d,EAAIvjB,UAAUwa,KAAO,SAAehI,EAAGC,GAErC,OADA1S,KAAKukB,SAAS9R,EAAGC,GACV1S,KAAK+lB,KAAKtT,EAAEgI,KAAK/H,GAC1B,EAEA8Q,EAAIvjB,UAAUyQ,IAAM,SAAc+B,EAAGC,GAEnC,OADA1S,KAAKukB,SAAS9R,EAAGC,GACV1S,KAAK+lB,KAAKtT,EAAE/B,IAAIgC,GACzB,EAEA8Q,EAAIvjB,UAAUgf,KAAO,SAAexM,GAClC,OAAOzS,KAAKya,KAAKhI,EAAGA,EAAEjO,QACxB,EAEAgf,EAAIvjB,UAAU+e,IAAM,SAAcvM,GAChC,OAAOzS,KAAK0Q,IAAI+B,EAAGA,EACrB,EAEA+Q,EAAIvjB,UAAU4kB,KAAO,SAAepS,GAClC,GAAIA,EAAEW,SAAU,OAAOX,EAAEjO,QAEzB,IAAIiiB,EAAOzmB,KAAK8d,EAAE9J,MAAM,GAIxB,GAHAhR,EAAOyjB,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI1U,EAAM/R,KAAK8d,EAAEvH,IAAI,IAAI7G,EAAG,IAAIuE,OAAO,GACvC,OAAOjU,KAAK+R,IAAIU,EAAGV,EACrB,CAOA,IAFA,IAAIgC,EAAI/T,KAAK8d,EAAEwC,KAAK,GAChBtD,EAAI,GACAjJ,EAAEX,UAA2B,IAAfW,EAAEC,MAAM,IAC5BgJ,IACAjJ,EAAEE,OAAO,GAEXjR,GAAQ+Q,EAAEX,UAEV,IAAIsT,EAAM,IAAIhX,EAAG,GAAG+T,MAAMzjB,MACtB2mB,EAAOD,EAAI3B,SAIX6B,EAAO5mB,KAAK8d,EAAEwC,KAAK,GAAGrM,OAAO,GAC7B4S,EAAI7mB,KAAK8d,EAAExJ,YAGf,IAFAuS,EAAI,IAAInX,EAAG,EAAImX,EAAIA,GAAGpD,MAAMzjB,MAEW,IAAhCA,KAAK+R,IAAI8U,EAAGD,GAAM7V,IAAI4V,IAC3BE,EAAE5C,QAAQ0C,GAOZ,IAJA,IAAItW,EAAIrQ,KAAK+R,IAAI8U,EAAG9S,GAChBvD,EAAIxQ,KAAK+R,IAAIU,EAAGsB,EAAEsM,KAAK,GAAGpM,OAAO,IACjCG,EAAIpU,KAAK+R,IAAIU,EAAGsB,GAChB+J,EAAId,EACc,IAAf5I,EAAErD,IAAI2V,IAAY,CAEvB,IADA,IAAIna,EAAM6H,EACDlJ,EAAI,EAAoB,IAAjBqB,EAAIwE,IAAI2V,GAAYxb,IAClCqB,EAAMA,EAAIkY,SAEZzhB,EAAOkI,EAAI4S,GACX,IAAIpL,EAAI1S,KAAK+R,IAAI1B,EAAG,IAAIX,EAAG,GAAGyP,OAAOrB,EAAI5S,EAAI,IAE7CsF,EAAIA,EAAE8T,OAAO5R,GACbrC,EAAIqC,EAAE+R,SACNrQ,EAAIA,EAAEkQ,OAAOjU,GACbyN,EAAI5S,CACN,CAEA,OAAOsF,CACT,EAEAgT,EAAIvjB,UAAU0iB,KAAO,SAAelQ,GAClC,IAAIqU,EAAMrU,EAAE6P,OAAOtiB,KAAK8d,GACxB,OAAqB,IAAjBgJ,EAAIhX,UACNgX,EAAIhX,SAAW,EACR9P,KAAK+lB,KAAKe,GAAK/B,UAEf/kB,KAAK+lB,KAAKe,EAErB,EAEAtD,EAAIvjB,UAAU8R,IAAM,SAAcU,EAAG9M,GACnC,GAAIA,EAAIyN,SAAU,OAAO,IAAI1D,EAAG,GAAG+T,MAAMzjB,MACzC,GAAoB,IAAhB2F,EAAI+c,KAAK,GAAU,OAAOjQ,EAAEjO,QAEhC,IACIuiB,EAAM,IAAIrlB,MAAM,IACpBqlB,EAAI,GAAK,IAAIrX,EAAG,GAAG+T,MAAMzjB,MACzB+mB,EAAI,GAAKtU,EACT,IAAK,IAAIvH,EAAI,EAAGA,EAAI6b,EAAIzlB,OAAQ4J,IAC9B6b,EAAI7b,GAAKlL,KAAK0Q,IAAIqW,EAAI7b,EAAI,GAAIuH,GAGhC,IAAIxQ,EAAM8kB,EAAI,GACVC,EAAU,EACVC,EAAa,EACbtgB,EAAQhB,EAAI2O,YAAc,GAK9B,IAJc,IAAV3N,IACFA,EAAQ,IAGLuE,EAAIvF,EAAIrE,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAI0G,EAAOjM,EAAIoK,MAAM7E,GACZC,EAAIxE,EAAQ,EAAGwE,GAAK,EAAGA,IAAK,CACnC,IAAIgL,EAAOvE,GAAQzG,EAAK,EACpBlJ,IAAQ8kB,EAAI,KACd9kB,EAAMjC,KAAKgf,IAAI/c,IAGL,IAARkU,GAAyB,IAAZ6Q,GAKjBA,IAAY,EACZA,GAAW7Q,GA9BE,MA+Bb8Q,GACwC,IAAN/b,GAAiB,IAANC,KAE7ClJ,EAAMjC,KAAK0Q,IAAIzO,EAAK8kB,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAtgB,EAAQ,EACV,CAEA,OAAO1E,CACT,EAEAuhB,EAAIvjB,UAAU0jB,UAAY,SAAoBhe,GAC5C,IAAI6K,EAAI7K,EAAIwb,KAAKnhB,KAAK8d,GAEtB,OAAOtN,IAAM7K,EAAM6K,EAAEhM,QAAUgM,CACjC,EAEAgT,EAAIvjB,UAAU6jB,YAAc,SAAsBne,GAChD,IAAI1D,EAAM0D,EAAInB,QAEd,OADAvC,EAAI+N,IAAM,KACH/N,CACT,EAMAyN,EAAGwX,KAAO,SAAevhB,GACvB,OAAO,IAAImgB,EAAKngB,EAClB,EAkBA/F,EAASkmB,EAAMtC,GAEfsC,EAAK7lB,UAAU0jB,UAAY,SAAoBhe,GAC7C,OAAO3F,KAAK+lB,KAAKpgB,EAAIoa,MAAM/f,KAAKygB,OAClC,EAEAqF,EAAK7lB,UAAU6jB,YAAc,SAAsBne,GACjD,IAAI6K,EAAIxQ,KAAK+lB,KAAKpgB,EAAI+K,IAAI1Q,KAAKgmB,OAE/B,OADAxV,EAAER,IAAM,KACDQ,CACT,EAEAsV,EAAK7lB,UAAUwa,KAAO,SAAehI,EAAGC,GACtC,GAAID,EAAEW,UAAYV,EAAEU,SAGlB,OAFAX,EAAE1C,MAAM,GAAK,EACb0C,EAAEnR,OAAS,EACJmR,EAGT,IAAI2B,EAAI3B,EAAEgI,KAAK/H,GACXrC,EAAI+D,EAAE+L,MAAMngB,KAAKygB,OAAO/P,IAAI1Q,KAAKimB,MAAM/F,OAAOlgB,KAAKygB,OAAO/P,IAAI1Q,KAAK8d,GACnEqJ,EAAI/S,EAAEkC,KAAKjG,GAAG4D,OAAOjU,KAAKygB,OAC1Bxe,EAAMklB,EAQV,OANIA,EAAEpW,IAAI/Q,KAAK8d,IAAM,EACnB7b,EAAMklB,EAAE7Q,KAAKtW,KAAK8d,GACTqJ,EAAEzE,KAAK,GAAK,IACrBzgB,EAAMklB,EAAE9Q,KAAKrW,KAAK8d,IAGb7b,EAAI2hB,UAAU5jB,KACvB,EAEA8lB,EAAK7lB,UAAUyQ,IAAM,SAAc+B,EAAGC,GACpC,GAAID,EAAEW,UAAYV,EAAEU,SAAU,OAAO,IAAI1D,EAAG,GAAGkU,UAAU5jB,MAEzD,IAAIoU,EAAI3B,EAAE/B,IAAIgC,GACVrC,EAAI+D,EAAE+L,MAAMngB,KAAKygB,OAAO/P,IAAI1Q,KAAKimB,MAAM/F,OAAOlgB,KAAKygB,OAAO/P,IAAI1Q,KAAK8d,GACnEqJ,EAAI/S,EAAEkC,KAAKjG,GAAG4D,OAAOjU,KAAKygB,OAC1Bxe,EAAMklB,EAOV,OANIA,EAAEpW,IAAI/Q,KAAK8d,IAAM,EACnB7b,EAAMklB,EAAE7Q,KAAKtW,KAAK8d,GACTqJ,EAAEzE,KAAK,GAAK,IACrBzgB,EAAMklB,EAAE9Q,KAAKrW,KAAK8d,IAGb7b,EAAI2hB,UAAU5jB,KACvB,EAEA8lB,EAAK7lB,UAAU0iB,KAAO,SAAelQ,GAGnC,OADUzS,KAAK+lB,KAAKtT,EAAE6P,OAAOtiB,KAAK8d,GAAGpN,IAAI1Q,KAAKuhB,KACnCqC,UAAU5jB,KACvB,CACD,CA19GD,YA09G4CA,oCCx9G5C,IAAIkB,EAAS,gBACT+2B,EAAa,oBAIjB,SAASC,EAASzlB,EAAGC,GAGnB,IAAKxR,EAAOE,SAASqR,KAAOvR,EAAOE,SAASsR,GAC1C,OAAO,EAMT,GAAID,EAAEnR,SAAWoR,EAAEpR,OACjB,OAAO,EAIT,IADA,IAAI+O,EAAI,EACCnF,EAAI,EAAGA,EAAIuH,EAAEnR,OAAQ4J,IAE5BmF,GAAKoC,EAAEvH,GAAKwH,EAAExH,GAEhB,OAAa,IAANmF,CACT,CAtBA/L,EAAOjF,QAAU64B,EAwBjBA,EAASC,QAAU,WACjBj3B,EAAOjB,UAAUkF,MAAQ8yB,EAAWh4B,UAAUkF,MAAQ,SAAeizB,GACnE,OAAOF,EAASl4B,KAAMo4B,EACxB,CACF,EAEA,IAAIC,EAAen3B,EAAOjB,UAAUkF,MAChCmzB,EAAmBL,EAAWh4B,UAAUkF,MAC5C+yB,EAASl2B,QAAU,WACjBd,EAAOjB,UAAUkF,MAAQkzB,EACzBJ,EAAWh4B,UAAUkF,MAAQmzB,CAC/B,yCCxCAh0B,EAAOjF,QAAU,SAAcoT,EAAGC,GAIhC,IAHA,IAAIpR,EAASqP,KAAK/D,IAAI6F,EAAEnR,OAAQoR,EAAEpR,QAC9B8J,EAAS,IAAIlK,EAAOI,GAEf4J,EAAI,EAAGA,EAAI5J,IAAU4J,EAC5BE,EAAOF,GAAKuH,EAAEvH,GAAKwH,EAAExH,GAGvB,OAAOE,CACT,gCCPA,IAAImtB,EAAO,EAAQ,OAEfC,EAAS,EAAQ,OACjBC,EAAQ,EAAQ,OAChBC,EAAgB,EAAQ,OAG5Bp0B,EAAOjF,QAAUq5B,GAAiBH,EAAKh4B,KAAKk4B,EAAOD,iCCPnD,IAAID,EAAO,EAAQ,OACfC,EAAS,EAAQ,OACjBG,EAAc,EAAQ,OAG1Br0B,EAAOjF,QAAU,WAChB,OAAOs5B,EAAYJ,EAAMC,EAAQzzB,UAClC,0BCNAT,EAAOjF,QAAUu5B,SAAS34B,UAAU6E,8BCApCR,EAAOjF,QAAUu5B,SAAS34B,UAAUM,mCCDpC,IAAIg4B,EAAO,EAAQ,OACfM,EAAa,EAAQ,OAErBJ,EAAQ,EAAQ,OAChBK,EAAe,EAAQ,OAG3Bx0B,EAAOjF,QAAU,SAAuBoE,GACvC,GAAIA,EAAKnC,OAAS,GAAwB,oBAAZmC,EAAK,GAClC,MAAM,IAAIo1B,EAAW,0BAEtB,OAAOC,EAAaP,EAAME,EAAOh1B,EAClC,0BCXAa,EAAOjF,QAA6B,qBAAZ05B,SAA2BA,SAAWA,QAAQj0B,oCCDtE,IAAIk0B,EAAoB,EAAQ,OAE5BC,EAAkB,EAAQ,OAE1BC,EAAgB,EAAQ,OACxBC,EAAY,EAAQ,OAExB70B,EAAOjF,QAAU,SAAkB+5B,GAClC,IAAIC,EAAOH,EAAcn0B,WACrBu0B,EAAiBF,EAAiB93B,QAAUyD,UAAUzD,OAAS,GACnE,OAAO03B,EACNK,EACA,GAAKC,EAAiB,EAAIA,EAAiB,IAC3C,EAEF,EAEIL,EACHA,EAAgB30B,EAAOjF,QAAS,QAAS,CAAEoC,MAAO03B,IAElD70B,EAAOjF,QAAQyF,MAAQq0B,gCCpBxB,IAAII,EAAe,EAAQ,OAEvBL,EAAgB,EAAQ,OAGxBM,EAAWN,EAAc,CAACK,EAAa,gCAG3Cj1B,EAAOjF,QAAU,SAA4BS,EAAM25B,GAElD,IAAIC,EAAmEH,EAAaz5B,IAAQ25B,GAC5F,MAAyB,oBAAdC,GAA4BF,EAAS15B,EAAM,gBAAkB,EAChEo5B,EAAc,CAACQ,IAEhBA,CACR,gCCfA,IAAIx4B,EAAS,gBACTqqB,EAAY,mBACZoO,EAAgB,WAGpB,SAAS3H,EAAW4H,GACnBrO,EAAUhrB,KAAKP,MACfA,KAAK45B,SAA+B,kBAAbA,EACnB55B,KAAK45B,SACR55B,KAAK45B,GAAY55B,KAAK65B,eAEtB75B,KAAY,MAAIA,KAAK65B,eAElB75B,KAAKstB,SACRttB,KAAK85B,QAAU95B,KAAKstB,OACpBttB,KAAKstB,OAAS,MAEfttB,KAAK+5B,SAAW,KAChB/5B,KAAKg6B,UAAY,IAClB,CAhBe,EAAQ,MAiBvBp6B,CAASoyB,EAAYzG,GAErB,IAAI0O,EAAsC,qBAAfxS,WACvByS,EAAwC,qBAAhBC,aACF,qBAAf1S,YACP0S,YAAYC,SACXl5B,EAAOjB,qBAAqBwnB,YAAcvmB,EAAOm5B,qBA6DtDrI,EAAW/xB,UAAUmsB,OAAS,SAAUxrB,EAAM05B,EAAUC,GACvD,IAAIC,EA5DL,SAAkB55B,EAAM65B,GAKvB,GAAI75B,aAAgBM,EACnB,OAAON,EAIR,GAAoB,kBAATA,EACV,OAAOM,EAAO+mB,KAAKrnB,EAAM65B,GAO1B,GAAIP,GAAkBC,YAAYC,OAAOx5B,GAAO,CAE/C,GAAwB,IAApBA,EAAKkB,WACR,OAAOZ,EAAO2qB,MAAM,GAGrB,IAAI5pB,EAAMf,EAAO+mB,KAAKrnB,EAAKwK,OAAQxK,EAAK85B,WAAY95B,EAAKkB,YAKzD,GAAIG,EAAIH,aAAelB,EAAKkB,WAC3B,OAAOG,CAET,CAMA,GAAIg4B,GAAiBr5B,aAAgB6mB,WACpC,OAAOvmB,EAAO+mB,KAAKrnB,GAQpB,GACCM,EAAOE,SAASR,IACZA,EAAK+D,aACgC,oBAA9B/D,EAAK+D,YAAYvD,UACxBR,EAAK+D,YAAYvD,SAASR,GAE9B,OAAOM,EAAO+mB,KAAKrnB,GAGpB,MAAM,IAAIwuB,UAAU,gGACrB,CAGkB1b,CAAS9S,EAAM05B,GAC5BK,EAAU36B,KAAKktB,QAAQsN,GAC3B,OAAIx6B,KAAK45B,SACD55B,MAGJu6B,IACHI,EAAU36B,KAAK46B,UAAUD,EAASJ,IAG5BI,EACR,EAEA3I,EAAW/xB,UAAU0vB,eAAiB,WAAa,EACnDqC,EAAW/xB,UAAUwtB,WAAa,WACjC,MAAM,IAAIjoB,MAAM,8CACjB,EAEAwsB,EAAW/xB,UAAUytB,WAAa,WACjC,MAAM,IAAIloB,MAAM,8CACjB,EAEAwsB,EAAW/xB,UAAU0tB,OAAS,WAC7B,MAAM,IAAInoB,MAAM,yCACjB,EAEAwsB,EAAW/xB,UAAU46B,WAAa,SAAUj6B,EAAM2d,EAAGiI,GACpD,IAAI3c,EACJ,IACK7J,KAAK45B,SACR55B,KAAKktB,QAAQtsB,GAEbZ,KAAK6E,KAAK7E,KAAKktB,QAAQtsB,GAEzB,CAAE,MAAOR,GACRyJ,EAAMzJ,CACP,CAAE,QACDomB,EAAK3c,EACN,CACD,EACAmoB,EAAW/xB,UAAU66B,OAAS,SAAUvF,GACvC,IAAI1rB,EACJ,IACC7J,KAAK6E,KAAK7E,KAAK85B,UAChB,CAAE,MAAO15B,GACRyJ,EAAMzJ,CACP,CAEAm1B,EAAK1rB,EACN,EACAmoB,EAAW/xB,UAAU45B,eAAiB,SAAUU,GAC/C,IAAII,EAAU36B,KAAK85B,WAAa54B,EAAO2qB,MAAM,GAI7C,OAHI0O,IACHI,EAAU36B,KAAK46B,UAAUD,EAASJ,GAAW,IAEvCI,CACR,EAEA3I,EAAW/xB,UAAU26B,UAAY,SAAUn5B,EAAOhB,EAAKs6B,GAMtD,GALK/6B,KAAK+5B,WACT/5B,KAAK+5B,SAAW,IAAIJ,EAAcl5B,GAClCT,KAAKg6B,UAAYv5B,GAGdT,KAAKg6B,YAAcv5B,EACtB,MAAM,IAAI+E,MAAM,+BAGjB,IAAI7C,EAAM3C,KAAK+5B,SAASl3B,MAAMpB,GAK9B,OAJIs5B,IACHp4B,GAAO3C,KAAK+5B,SAASxsB,OAGf5K,CACR,EAEA2B,EAAOjF,QAAU2yB,mBC9DjB,SAASgJ,EAAerkB,GACtB,OAAOrR,OAAOrF,UAAU6L,SAASvL,KAAKoW,EACxC,CA5EAtX,EAAQsC,QANR,SAAiB0D,GACf,OAAI3D,MAAMC,QACDD,MAAMC,QAAQ0D,GAEQ,mBAAxB21B,EAAe31B,EACxB,EAMAhG,EAAQ47B,UAHR,SAAmB51B,GACjB,MAAsB,mBAARA,CAChB,EAMAhG,EAAQ67B,OAHR,SAAgB71B,GACd,OAAe,OAARA,CACT,EAMAhG,EAAQ87B,kBAHR,SAA2B91B,GACzB,OAAc,MAAPA,CACT,EAMAhG,EAAQ+7B,SAHR,SAAkB/1B,GAChB,MAAsB,kBAARA,CAChB,EAMAhG,EAAQg8B,SAHR,SAAkBh2B,GAChB,MAAsB,kBAARA,CAChB,EAMAhG,EAAQi8B,SAHR,SAAkBj2B,GAChB,MAAsB,kBAARA,CAChB,EAMAhG,EAAQk8B,YAHR,SAAqBl2B,GACnB,YAAe,IAARA,CACT,EAMAhG,EAAQm8B,SAHR,SAAkBluB,GAChB,MAA8B,oBAAvB0tB,EAAe1tB,EACxB,EAMAjO,EAAQo8B,SAHR,SAAkBp2B,GAChB,MAAsB,kBAARA,GAA4B,OAARA,CACpC,EAMAhG,EAAQq8B,OAHR,SAAgBhS,GACd,MAA6B,kBAAtBsR,EAAetR,EACxB,EAMArqB,EAAQiH,QAHR,SAAiBlG,GACf,MAA8B,mBAAtB46B,EAAe56B,IAA2BA,aAAaoF,KACjE,EAMAnG,EAAQs8B,WAHR,SAAoBt2B,GAClB,MAAsB,oBAARA,CAChB,EAWAhG,EAAQu8B,YARR,SAAqBv2B,GACnB,OAAe,OAARA,GACe,mBAARA,GACQ,kBAARA,GACQ,kBAARA,GACQ,kBAARA,GACQ,qBAARA,CAChB,EAGAhG,EAAQ+B,SAAW,EAAnB,8DCtGIy6B,EAAW,EAAQ,OACnBnsB,EAAK,EAAQ,OAEjBpL,EAAOjF,QAAU,SAAqBu3B,GACpC,OAAO,IAAIkF,EAAKlF,EAClB,EAEA,IAAImF,EAAU,CACZC,UAAW,CACTl8B,KAAM,YACNgC,WAAY,IAEdm6B,UAAW,CACTn8B,KAAM,OACNgC,WAAY,IAEdo6B,WAAY,CACVp8B,KAAM,OACNgC,WAAY,IAEdq6B,WAAY,CACVr8B,KAAM,OACNgC,WAAY,IAEds6B,QAAS,CACPt8B,KAAM,UACNgC,WAAY,IAEdu6B,UAAW,CACTv8B,KAAM,OACNgC,WAAY,IAEdw6B,UAAW,CACTx8B,KAAM,OACNgC,WAAY,KAUhB,SAASg6B,EAAMlF,GACb52B,KAAKu8B,UAAYR,EAAQnF,GACpB52B,KAAKu8B,YACRv8B,KAAKu8B,UAAY,CACfz8B,KAAM82B,IAGV52B,KAAK42B,MAAQ,IAAIiF,EAASW,GAAGx8B,KAAKu8B,UAAUz8B,MAC5CE,KAAKuF,UAAO,CACd,CAuDA,SAASk3B,EAAmBC,EAAIj8B,EAAKwK,GAC9BvJ,MAAMC,QAAQ+6B,KACjBA,EAAKA,EAAG3tB,WAEV,IAAIlE,EAAM,IAAI3J,EAAOw7B,GACrB,GAAIzxB,GAAOJ,EAAIvJ,OAAS2J,EAAK,CAC3B,IAAImH,EAAQ,IAAIlR,EAAO+J,EAAMJ,EAAIvJ,QACjC8Q,EAAMikB,KAAK,GACXxrB,EAAM3J,EAAOiC,OAAO,CAACiP,EAAOvH,GAC9B,CACA,OAAKpK,EAGIoK,EAAIiB,SAASrL,GAFboK,CAIX,CArFAkxB,EAAQ5W,KAAO4W,EAAQE,UACvBF,EAAQY,KAAOZ,EAAQa,UAAYb,EAAQG,WAC3CH,EAAQ3W,KAAO2W,EAAQc,UAAYd,EAAQI,WAC3CJ,EAAQe,KAAOf,EAAQM,UACvBN,EAAQgB,KAAOhB,EAAQO,UAavBR,EAAK77B,UAAU+8B,aAAe,SAAUv8B,EAAKw8B,GAE3C,OADAj9B,KAAKuF,KAAOvF,KAAK42B,MAAMsG,aAChBl9B,KAAKm9B,aAAa18B,EAAKw8B,EAChC,EAEAnB,EAAK77B,UAAUm9B,cAAgB,SAAUC,EAAOC,EAAO78B,GAOrD,OANA68B,EAAQA,GAAS,OACZp8B,EAAOE,SAASi8B,KACnBA,EAAQ,IAAIn8B,EAAOm8B,EAAOC,IAIrBb,EAFQz8B,KAAK42B,MAAM2G,cAAcF,GAAOG,YAC5B9sB,IAAI1Q,KAAKuF,KAAKk4B,cAAcC,OACjBj9B,EAAKT,KAAKu8B,UAAUz6B,WACpD,EAEAg6B,EAAK77B,UAAUk9B,aAAe,SAAU18B,EAAKw8B,GAC3C,IAAIh5B,EAAMjE,KAAKuF,KAAKi4B,UAAqB,eAAXP,GAAyB,GAQvD,MAPe,WAAXA,IACEh5B,EAAIA,EAAI3C,OAAS,GAAK,EACxB2C,EAAI,GAAK,EAETA,EAAI,GAAK,GAGNw4B,EAAkBx4B,EAAKxD,EAChC,EAEAq7B,EAAK77B,UAAU09B,cAAgB,SAAUl9B,GACvC,OAAOg8B,EAAkBz8B,KAAKuF,KAAKk4B,aAAch9B,EACnD,EAEAq7B,EAAK77B,UAAU29B,aAAe,SAAUrG,EAAK92B,GAM3C,OALAA,EAAMA,GAAO,OACRS,EAAOE,SAASm2B,KACnBA,EAAM,IAAIr2B,EAAOq2B,EAAK92B,IAExBT,KAAKuF,KAAKs4B,cAActG,GACjBv3B,IACT,EAEA87B,EAAK77B,UAAU69B,cAAgB,SAAUpL,EAAMjyB,GAC7CA,EAAMA,GAAO,OACRS,EAAOE,SAASsxB,KACnBA,EAAO,IAAIxxB,EAAOwxB,EAAMjyB,IAG1B,IAAIs9B,EAAQ,IAAIruB,EAAGgjB,GAInB,OAHAqL,EAAQA,EAAMjyB,SAAS,IACvB9L,KAAKuF,KAAOvF,KAAK42B,MAAMsG,aACvBl9B,KAAKuF,KAAKy4B,eAAeD,GAClB/9B,IACT,gCCzGA,IAAIJ,EAAW,EAAQ,OACnBq+B,EAAM,EAAQ,OACdC,EAAY,EAAQ,OACpBC,EAAM,EAAQ,OACdC,EAAO,EAAQ,OAEnB,SAASC,EAAMtJ,GACbqJ,EAAK79B,KAAKP,KAAM,UAEhBA,KAAKg1B,MAAQD,CACf,CAEAn1B,EAASy+B,EAAMD,GAEfC,EAAKp+B,UAAUitB,QAAU,SAAUtsB,GACjCZ,KAAKg1B,MAAM5I,OAAOxrB,EACpB,EAEAy9B,EAAKp+B,UAAUqtB,OAAS,WACtB,OAAOttB,KAAKg1B,MAAMQ,QACpB,EAEAlxB,EAAOjF,QAAU,SAAqBi/B,GAEpC,MAAY,SADZA,EAAMA,EAAInP,eACgB,IAAI8O,EAClB,WAARK,GAA4B,cAARA,EAA4B,IAAIJ,EAEjD,IAAIG,EAAKF,EAAIG,GACtB,mBC7BA,IAAIL,EAAM,EAAQ,OAElB35B,EAAOjF,QAAU,SAAU+L,GACzB,OAAO,IAAI6yB,GAAM7R,OAAOhhB,GAAQoqB,QAClC,gCCHA,IAAI51B,EAAW,EAAQ,OACnB2+B,EAAS,EAAQ,OACjBH,EAAO,EAAQ,OACfl9B,EAAS,gBACTs9B,EAAM,EAAQ,OACdN,EAAY,EAAQ,OAEpBC,EAAM,EAAQ,OAEdM,EAAQv9B,EAAO2qB,MAAM,KAEzB,SAAS6S,EAAMJ,EAAKr6B,GAClBm6B,EAAK79B,KAAKP,KAAM,UACG,kBAARiE,IACTA,EAAM/C,EAAO+mB,KAAKhkB,IAGpB,IAAI06B,EAAqB,WAARL,GAA4B,WAARA,EAAoB,IAAM,IAE/Dt+B,KAAK4+B,KAAON,EACZt+B,KAAKkqB,KAAOjmB,EACRA,EAAI3C,OAASq9B,GAEf16B,GADmB,WAARq6B,EAAmB,IAAIJ,EAAcC,EAAIG,IACzClS,OAAOnoB,GAAKuxB,SACdvxB,EAAI3C,OAASq9B,IACtB16B,EAAM/C,EAAOiC,OAAO,CAACc,EAAKw6B,GAAQE,IAMpC,IAHA,IAAIE,EAAO7+B,KAAK8+B,MAAQ59B,EAAO+pB,YAAY0T,GACvCI,EAAO/+B,KAAKg/B,MAAQ99B,EAAO+pB,YAAY0T,GAElCzzB,EAAI,EAAGA,EAAIyzB,EAAWzzB,IAC7B2zB,EAAK3zB,GAAc,GAATjH,EAAIiH,GACd6zB,EAAK7zB,GAAc,GAATjH,EAAIiH,GAEhBlL,KAAKg1B,MAAgB,WAARsJ,EAAmB,IAAIJ,EAAcC,EAAIG,GACtDt+B,KAAKg1B,MAAM5I,OAAOyS,EACpB,CAEAj/B,EAAS8+B,EAAMN,GAEfM,EAAKz+B,UAAUitB,QAAU,SAAUtsB,GACjCZ,KAAKg1B,MAAM5I,OAAOxrB,EACpB,EAEA89B,EAAKz+B,UAAUqtB,OAAS,WACtB,IAAI5N,EAAI1f,KAAKg1B,MAAMQ,SAEnB,OADyB,WAAdx1B,KAAK4+B,KAAoB,IAAIV,EAAcC,EAAIn+B,KAAK4+B,OACnDxS,OAAOpsB,KAAKg/B,OAAO5S,OAAO1M,GAAG8V,QAC3C,EAEAlxB,EAAOjF,QAAU,SAAqBi/B,EAAKr6B,GAEzC,MAAY,YADZq6B,EAAMA,EAAInP,gBACsB,cAARmP,EACf,IAAII,EAAK,SAAUz6B,GAEhB,QAARq6B,EACK,IAAIC,EAAOC,EAAKv6B,GAElB,IAAIy6B,EAAKJ,EAAKr6B,EACvB,gCC5DA,IAAIrE,EAAW,EAAQ,OACnBsB,EAAS,gBAETk9B,EAAO,EAAQ,OAEfK,EAAQv9B,EAAO2qB,MAAM,KACrB8S,EAAY,GAEhB,SAASD,EAAMJ,EAAKr6B,GAClBm6B,EAAK79B,KAAKP,KAAM,UACG,kBAARiE,IACTA,EAAM/C,EAAO+mB,KAAKhkB,IAGpBjE,KAAK4+B,KAAON,EACZt+B,KAAKkqB,KAAOjmB,EAERA,EAAI3C,OAASq9B,EACf16B,EAAMq6B,EAAIr6B,GACDA,EAAI3C,OAASq9B,IACtB16B,EAAM/C,EAAOiC,OAAO,CAACc,EAAKw6B,GAAQE,IAMpC,IAHA,IAAIE,EAAO7+B,KAAK8+B,MAAQ59B,EAAO+pB,YAAY0T,GACvCI,EAAO/+B,KAAKg/B,MAAQ99B,EAAO+pB,YAAY0T,GAElCzzB,EAAI,EAAGA,EAAIyzB,EAAWzzB,IAC7B2zB,EAAK3zB,GAAc,GAATjH,EAAIiH,GACd6zB,EAAK7zB,GAAc,GAATjH,EAAIiH,GAGhBlL,KAAKg1B,MAAQ,CAAC6J,EAChB,CAEAj/B,EAAS8+B,EAAMN,GAEfM,EAAKz+B,UAAUitB,QAAU,SAAUtsB,GACjCZ,KAAKg1B,MAAMnwB,KAAKjE,EAClB,EAEA89B,EAAKz+B,UAAUqtB,OAAS,WACtB,IAAI5N,EAAI1f,KAAK4+B,KAAK19B,EAAOiC,OAAOnD,KAAKg1B,QACrC,OAAOh1B,KAAK4+B,KAAK19B,EAAOiC,OAAO,CAACnD,KAAKg/B,MAAOtf,IAC9C,EACApb,EAAOjF,QAAUq/B,gCC1CjBr/B,EAAQ0oB,YAAc1oB,EAAQ4/B,IAAM5/B,EAAQ6/B,kBAAoB7/B,EAAQ8/B,KAAO,EAAf,OAGhE9/B,EAAQk1B,WAAal1B,EAAQg/B,KAAO,EAAf,OAGrBh/B,EAAQs2B,WAAat2B,EAAQq/B,KAAO,EAAf,OAErB,IAAIU,EAAQ,EAAQ,OAChBC,EAAW/5B,OAAOC,KAAK65B,GACvBE,EAAS,CACZ,OACA,SACA,SACA,SACA,SACA,MACA,UACCn8B,OAAOk8B,GAEThgC,EAAQkgC,UAAY,WACnB,OAAOD,CACR,EAEA,IAAIjwB,EAAI,EAAQ,OAChBhQ,EAAQmgC,OAASnwB,EAAEmwB,OACnBngC,EAAQogC,WAAapwB,EAAEowB,WAEvB,IAAInU,EAAM,EAAQ,OAElBjsB,EAAQ2uB,OAAS1C,EAAI0C,OACrB3uB,EAAQ0uB,aAAezC,EAAIyC,aAC3B1uB,EAAQ6uB,SAAW5C,EAAI4C,SACvB7uB,EAAQ4uB,eAAiB3C,EAAI2C,eAC7B5uB,EAAQ+uB,SAAW9C,EAAI8C,SACvB/uB,EAAQ8uB,eAAiB7C,EAAI6C,eAC7B9uB,EAAQivB,WAAahD,EAAIgD,WACzBjvB,EAAQgvB,iBAAmB/C,EAAI+C,iBAC/BhvB,EAAQmvB,WAAalD,EAAIkD,WACzBnvB,EAAQkvB,YAAcjD,EAAIiD,YAE1B,IAAImR,EAAK,EAAQ,OAEjBrgC,EAAQsgC,mBAAqBD,EAAGC,mBAChCtgC,EAAQugC,yBAA2BF,EAAGE,yBACtCvgC,EAAQwgC,iBAAmBH,EAAGG,iBAC9BxgC,EAAQygC,oBAAsBJ,EAAGI,oBACjCzgC,EAAQ0gC,cAAgBL,EAAGK,cAE3B,IAAI/wB,EAAO,EAAQ,IAEnB3P,EAAQ+1B,WAAapmB,EAAKomB,WAC1B/1B,EAAQs1B,KAAO3lB,EAAK2lB,KACpBt1B,EAAQg2B,aAAermB,EAAKqmB,aAC5Bh2B,EAAQ81B,OAASnmB,EAAKmmB,OAEtB91B,EAAQ2gC,WAAa,EAArB,OAEA,IAAIC,EAAgB,EAAQ,OAE5B5gC,EAAQ4gC,cAAgBA,EAAcA,cACtC5gC,EAAQ6gC,eAAiBD,EAAcC,eACvC7gC,EAAQ8gC,cAAgBF,EAAcE,cACtC9gC,EAAQ+gC,eAAiBH,EAAcG,eAWvC,IAAIC,EAAK,EAAQ,OAEjBhhC,EAAQihC,WAAaD,EAAGC,WACxBjhC,EAAQkhC,eAAiBF,EAAGE,eAE5BlhC,EAAQmhC,kBAAoB,WAC3B,MAAM,IAAIh7B,MAAM,4HACjB,EAEAnG,EAAQI,UAAY,CACnBghC,0BAA2B,EAC3BC,qBAAsB,EACtBC,6BAA8B,EAC9BC,0BAA2B,EAC3BC,YAAa,EACbC,aAAc,EACdC,kBAAmB,EACnBC,mBAAoB,EACpBC,eAAgB,EAChBC,uBAAwB,EACxBC,iBAAkB,EAClBC,sBAAuB,EACvBC,4BAA6B,EAC7BC,8BAA+B,EAC/BC,wBAAyB,iCCnG1B,IAAItI,EAAkB,EAAQ,OAE1BuI,EAAe,EAAQ,OACvB3I,EAAa,EAAQ,OAErB4I,EAAO,EAAQ,OAGnBn9B,EAAOjF,QAAU,SAChByE,EACA49B,EACAjgC,GAEA,IAAKqC,GAAuB,kBAARA,GAAmC,oBAARA,EAC9C,MAAM,IAAI+0B,EAAW,0CAEtB,GAAwB,kBAAb6I,GAA6C,kBAAbA,EAC1C,MAAM,IAAI7I,EAAW,4CAEtB,GAAI9zB,UAAUzD,OAAS,GAA6B,mBAAjByD,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI8zB,EAAW,2DAEtB,GAAI9zB,UAAUzD,OAAS,GAA6B,mBAAjByD,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI8zB,EAAW,yDAEtB,GAAI9zB,UAAUzD,OAAS,GAA6B,mBAAjByD,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI8zB,EAAW,6DAEtB,GAAI9zB,UAAUzD,OAAS,GAA6B,mBAAjByD,UAAU,GAC5C,MAAM,IAAI8zB,EAAW,2CAGtB,IAAI8I,EAAgB58B,UAAUzD,OAAS,EAAIyD,UAAU,GAAK,KACtD68B,EAAc78B,UAAUzD,OAAS,EAAIyD,UAAU,GAAK,KACpD88B,EAAkB98B,UAAUzD,OAAS,EAAIyD,UAAU,GAAK,KACxD+8B,EAAQ/8B,UAAUzD,OAAS,GAAIyD,UAAU,GAGzCg9B,IAASN,GAAQA,EAAK39B,EAAK49B,GAE/B,GAAIzI,EACHA,EAAgBn1B,EAAK49B,EAAU,CAC9BM,aAAkC,OAApBH,GAA4BE,EAAOA,EAAKC,cAAgBH,EACtEI,WAA8B,OAAlBN,GAA0BI,EAAOA,EAAKE,YAAcN,EAChElgC,MAAOA,EACPygC,SAA0B,OAAhBN,GAAwBG,EAAOA,EAAKG,UAAYN,QAErD,KAAIE,IAAWH,GAAkBC,GAAgBC,GAIvD,MAAM,IAAIL,EAAa,+GAFvB19B,EAAI49B,GAAYjgC,CAGjB,CACD,gCCrDApC,EAAQ8iC,MAAQ,EAAhB,OACA9iC,EAAQ2uB,OAAS,EAAjB,OACA3uB,EAAQsyB,IAAM,EAAd,OACAtyB,EAAQ+xB,IAAM,EAAd,MACA/xB,EAAQ8yB,IAAM,EAAd,oCCJA,IAAInvB,EAAS,EAAQ,OACjBpD,EAAW,EAAQ,OAEnBwiC,EAAQ,CAAC,EAEb,SAASC,EAAS1W,GAChB3oB,EAAOmC,MAAMwmB,EAAGrqB,OAAQ,EAAG,qBAE3BtB,KAAK2rB,GAAK,IAAIjqB,MAAM,GACpB,IAAK,IAAIwJ,EAAI,EAAGA,EAAIlL,KAAK2rB,GAAGrqB,OAAQ4J,IAClClL,KAAK2rB,GAAGzgB,GAAKygB,EAAGzgB,EACpB,CAsBA7L,EAAQ6yB,YApBR,SAAqBkM,GACnB,SAAShN,EAAIvwB,GACXu9B,EAAK79B,KAAKP,KAAMa,GAChBb,KAAKsiC,UACP,CACA1iC,EAASwxB,EAAKgN,GAGd,IADA,IAAI74B,EAAOD,OAAOC,KAAK68B,GACdl3B,EAAI,EAAGA,EAAI3F,EAAKjE,OAAQ4J,IAAK,CACpC,IAAIjH,EAAMsB,EAAK2F,GACfkmB,EAAInxB,UAAUgE,GAAOm+B,EAAMn+B,EAC7B,CAMA,OAJAmtB,EAAImB,OAAS,SAAgB1xB,GAC3B,OAAO,IAAIuwB,EAAIvwB,EACjB,EAEOuwB,CACT,EAIAgR,EAAME,SAAW,WACf,IAAIj/B,EAAQ,IAAIg/B,EAASriC,KAAKa,QAAQ8qB,IACtC3rB,KAAKuiC,UAAYl/B,CACnB,EAEA++B,EAAMlV,QAAU,SAAiBsV,EAAKC,EAAO9/B,EAAK+/B,GAChD,IAAIr/B,EAAQrD,KAAKuiC,UACbI,EAAa3iC,KAAK2E,YAAY6K,OAAOvP,UAErC0rB,EAAKtoB,EAAMsoB,GACf,GAAkB,YAAd3rB,KAAK8H,KAAoB,CAC3B,IAAK,IAAIoD,EAAI,EAAGA,EAAIlL,KAAKoqB,UAAWlf,IAClCygB,EAAGzgB,IAAMs3B,EAAIC,EAAQv3B,GAEvBy3B,EAAWzV,QAAQ3sB,KAAKP,KAAM2rB,EAAI,EAAGhpB,EAAK+/B,GAE1C,IAASx3B,EAAI,EAAGA,EAAIlL,KAAKoqB,UAAWlf,IAClCygB,EAAGzgB,GAAKvI,EAAI+/B,EAASx3B,EACzB,KAAO,CACLy3B,EAAWzV,QAAQ3sB,KAAKP,KAAMwiC,EAAKC,EAAO9/B,EAAK+/B,GAE/C,IAASx3B,EAAI,EAAGA,EAAIlL,KAAKoqB,UAAWlf,IAClCvI,EAAI+/B,EAASx3B,IAAMygB,EAAGzgB,GAExB,IAASA,EAAI,EAAGA,EAAIlL,KAAKoqB,UAAWlf,IAClCygB,EAAGzgB,GAAKs3B,EAAIC,EAAQv3B,EACxB,CACF,gCC9DA,IAAIlI,EAAS,EAAQ,OAErB,SAASgrB,EAAOntB,GACdb,KAAKa,QAAUA,EAEfb,KAAK8H,KAAO9H,KAAKa,QAAQiH,KACzB9H,KAAKoqB,UAAY,EACjBpqB,KAAKgF,QAELhF,KAAKoL,OAAS,IAAI1J,MAAM1B,KAAKoqB,WAC7BpqB,KAAK4iC,UAAY,EACjB5iC,KAAKiT,SAA8B,IAApBpS,EAAQoS,OACzB,CACA3O,EAAOjF,QAAU2uB,EAEjBA,EAAO/tB,UAAU+E,MAAQ,WAEzB,EAEAgpB,EAAO/tB,UAAUmsB,OAAS,SAAgBxrB,GACxC,OAAoB,IAAhBA,EAAKU,OACA,GAES,YAAdtB,KAAK8H,KACA9H,KAAK6iC,eAAejiC,GAEpBZ,KAAK8iC,eAAeliC,EAC/B,EAEAotB,EAAO/tB,UAAU8iC,QAAU,SAAiBniC,EAAM0Q,GAGhD,IADA,IAAI1E,EAAM+D,KAAK/D,IAAI5M,KAAKoL,OAAO9J,OAAStB,KAAK4iC,UAAWhiC,EAAKU,OAASgQ,GAC7DpG,EAAI,EAAGA,EAAI0B,EAAK1B,IACvBlL,KAAKoL,OAAOpL,KAAK4iC,UAAY13B,GAAKtK,EAAK0Q,EAAMpG,GAI/C,OAHAlL,KAAK4iC,WAAah2B,EAGXA,CACT,EAEAohB,EAAO/tB,UAAU+iC,aAAe,SAAsBrgC,EAAK2O,GAGzD,OAFAtR,KAAKktB,QAAQltB,KAAKoL,OAAQ,EAAGzI,EAAK2O,GAClCtR,KAAK4iC,UAAY,EACV5iC,KAAKoqB,SACd,EAEA4D,EAAO/tB,UAAU6iC,eAAiB,SAAwBliC,GACxD,IAAIqiC,EAAW,EACXC,EAAY,EAEZC,GAAUnjC,KAAK4iC,UAAYhiC,EAAKU,QAAUtB,KAAKoqB,UAAa,EAC5DznB,EAAM,IAAIjB,MAAMyhC,EAAQnjC,KAAKoqB,WAEV,IAAnBpqB,KAAK4iC,YACPK,GAAYjjC,KAAK+iC,QAAQniC,EAAMqiC,GAE3BjjC,KAAK4iC,YAAc5iC,KAAKoL,OAAO9J,SACjC4hC,GAAaljC,KAAKgjC,aAAargC,EAAKugC,KAKxC,IADA,IAAItyB,EAAMhQ,EAAKU,QAAWV,EAAKU,OAAS2hC,GAAYjjC,KAAKoqB,UAClD6Y,EAAWryB,EAAKqyB,GAAYjjC,KAAKoqB,UACtCpqB,KAAKktB,QAAQtsB,EAAMqiC,EAAUtgC,EAAKugC,GAClCA,GAAaljC,KAAKoqB,UAIpB,KAAO6Y,EAAWriC,EAAKU,OAAQ2hC,IAAYjjC,KAAK4iC,YAC9C5iC,KAAKoL,OAAOpL,KAAK4iC,WAAahiC,EAAKqiC,GAErC,OAAOtgC,CACT,EAEAqrB,EAAO/tB,UAAU4iC,eAAiB,SAAwBjiC,GAQxD,IAPA,IAAIqiC,EAAW,EACXC,EAAY,EAEZC,EAAQxyB,KAAKS,MAAMpR,KAAK4iC,UAAYhiC,EAAKU,QAAUtB,KAAKoqB,WAAa,EACrEznB,EAAM,IAAIjB,MAAMyhC,EAAQnjC,KAAKoqB,WAG1B+Y,EAAQ,EAAGA,IAChBF,GAAYjjC,KAAK+iC,QAAQniC,EAAMqiC,GAC/BC,GAAaljC,KAAKgjC,aAAargC,EAAKugC,GAMtC,OAFAD,GAAYjjC,KAAK+iC,QAAQniC,EAAMqiC,GAExBtgC,CACT,EAEAqrB,EAAO/tB,UAAUstB,MAAQ,SAAeniB,GACtC,IAAIiB,EAIAmjB,EAMJ,OATIpkB,IACFiB,EAAQrM,KAAKosB,OAAOhhB,IAIpBokB,EADgB,YAAdxvB,KAAK8H,KACA9H,KAAKojC,gBAELpjC,KAAKqjC,gBAEVh3B,EACKA,EAAMlJ,OAAOqsB,GAEbA,CACX,EAEAxB,EAAO/tB,UAAUqjC,KAAO,SAAcl4B,EAAQkG,GAC5C,GAAY,IAARA,EACF,OAAO,EAET,KAAOA,EAAMlG,EAAO9J,QAClB8J,EAAOkG,KAAS,EAElB,OAAO,CACT,EAEA0c,EAAO/tB,UAAUmjC,cAAgB,WAC/B,IAAKpjC,KAAKsjC,KAAKtjC,KAAKoL,OAAQpL,KAAK4iC,WAC/B,MAAO,GAET,IAAIjgC,EAAM,IAAIjB,MAAM1B,KAAKoqB,WAEzB,OADApqB,KAAKktB,QAAQltB,KAAKoL,OAAQ,EAAGzI,EAAK,GAC3BA,CACT,EAEAqrB,EAAO/tB,UAAUsjC,OAAS,SAAgBn4B,GACxC,OAAOA,CACT,EAEA4iB,EAAO/tB,UAAUojC,cAAgB,WAC/BrgC,EAAOmC,MAAMnF,KAAK4iC,UAAW5iC,KAAKoqB,UAAW,8BAC7C,IAAIznB,EAAM,IAAIjB,MAAM1B,KAAKoqB,WAGzB,OAFApqB,KAAKgjC,aAAargC,EAAK,GAEhB3C,KAAKujC,OAAO5gC,EACrB,gCC3IA,IAAIK,EAAS,EAAQ,OACjBpD,EAAW,EAAQ,OAEnBuiC,EAAQ,EAAQ,OAChBnU,EAAS,EAAQ,OAErB,SAASwV,IACPxjC,KAAKuM,IAAM,IAAI7K,MAAM,GACrB1B,KAAKuF,KAAO,IACd,CAEA,SAASosB,EAAI9wB,GACXmtB,EAAOztB,KAAKP,KAAMa,GAElB,IAAIwC,EAAQ,IAAImgC,EAChBxjC,KAAKyjC,UAAYpgC,EAEjBrD,KAAK0jC,WAAWrgC,EAAOxC,EAAQoD,IACjC,CACArE,EAAS+xB,EAAK3D,GACd1pB,EAAOjF,QAAUsyB,EAEjBA,EAAIY,OAAS,SAAgB1xB,GAC3B,OAAO,IAAI8wB,EAAI9wB,EACjB,EAEA,IAAI8iC,EAAa,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGvBhS,EAAI1xB,UAAUyjC,WAAa,SAAoBrgC,EAAOY,GACpDZ,EAAMkC,KAAO,IAAI7D,MAAM,IAEvBsB,EAAOmC,MAAMlB,EAAI3C,OAAQtB,KAAKoqB,UAAW,sBAEzC,IAAIwZ,EAAKzB,EAAMja,aAAajkB,EAAK,GAC7B4/B,EAAK1B,EAAMja,aAAajkB,EAAK,GAEjCk+B,EAAM2B,IAAIF,EAAIC,EAAIxgC,EAAMkJ,IAAK,GAC7Bq3B,EAAKvgC,EAAMkJ,IAAI,GACfs3B,EAAKxgC,EAAMkJ,IAAI,GACf,IAAK,IAAIrB,EAAI,EAAGA,EAAI7H,EAAMkC,KAAKjE,OAAQ4J,GAAK,EAAG,CAC7C,IAAIuV,EAAQkjB,EAAWz4B,IAAM,GAC7B04B,EAAKzB,EAAM4B,OAAOH,EAAInjB,GACtBojB,EAAK1B,EAAM4B,OAAOF,EAAIpjB,GACtB0hB,EAAM6B,IAAIJ,EAAIC,EAAIxgC,EAAMkC,KAAM2F,EAChC,CACF,EAEAymB,EAAI1xB,UAAUitB,QAAU,SAAiBsV,EAAKC,EAAO9/B,EAAK+/B,GACxD,IAAIr/B,EAAQrD,KAAKyjC,UAEbnnB,EAAI6lB,EAAMja,aAAasa,EAAKC,GAC5BjyB,EAAI2xB,EAAMja,aAAasa,EAAKC,EAAQ,GAGxCN,EAAM8B,GAAG3nB,EAAG9L,EAAGnN,EAAMkJ,IAAK,GAC1B+P,EAAIjZ,EAAMkJ,IAAI,GACdiE,EAAInN,EAAMkJ,IAAI,GAEI,YAAdvM,KAAK8H,KACP9H,KAAKkkC,SAAS7gC,EAAOiZ,EAAG9L,EAAGnN,EAAMkJ,IAAK,GAEtCvM,KAAK4sB,SAASvpB,EAAOiZ,EAAG9L,EAAGnN,EAAMkJ,IAAK,GAExC+P,EAAIjZ,EAAMkJ,IAAI,GACdiE,EAAInN,EAAMkJ,IAAI,GAEd41B,EAAMjX,cAAcvoB,EAAK2Z,EAAGomB,GAC5BP,EAAMjX,cAAcvoB,EAAK6N,EAAGkyB,EAAS,EACvC,EAEA/Q,EAAI1xB,UAAUqjC,KAAO,SAAcl4B,EAAQkG,GACzC,IAAqB,IAAjBtR,KAAKiT,QACP,OAAO,EAIT,IADA,IAAIxR,EAAQ2J,EAAO9J,OAASgQ,EACnBpG,EAAIoG,EAAKpG,EAAIE,EAAO9J,OAAQ4J,IACnCE,EAAOF,GAAKzJ,EAEd,OAAO,CACT,EAEAkwB,EAAI1xB,UAAUsjC,OAAS,SAAgBn4B,GACrC,IAAqB,IAAjBpL,KAAKiT,QACP,OAAO7H,EAIT,IADA,IAAIulB,EAAMvlB,EAAOA,EAAO9J,OAAS,GACxB4J,EAAIE,EAAO9J,OAASqvB,EAAKzlB,EAAIE,EAAO9J,OAAQ4J,IACnDlI,EAAOmC,MAAMiG,EAAOF,GAAIylB,GAE1B,OAAOvlB,EAAO3I,MAAM,EAAG2I,EAAO9J,OAASqvB,EACzC,EAEAgB,EAAI1xB,UAAUikC,SAAW,SAAkB7gC,EAAO8gC,EAAQC,EAAQzhC,EAAK2O,GAKrE,IAJA,IAAIgL,EAAI6nB,EACJ3zB,EAAI4zB,EAGCl5B,EAAI,EAAGA,EAAI7H,EAAMkC,KAAKjE,OAAQ4J,GAAK,EAAG,CAC7C,IAAIm5B,EAAOhhC,EAAMkC,KAAK2F,GAClBo5B,EAAOjhC,EAAMkC,KAAK2F,EAAI,GAG1Bi3B,EAAMoC,OAAO/zB,EAAGnN,EAAMkJ,IAAK,GAE3B83B,GAAQhhC,EAAMkJ,IAAI,GAClB+3B,GAAQjhC,EAAMkJ,IAAI,GAClB,IAAIyQ,EAAImlB,EAAMqC,WAAWH,EAAMC,GAG3BlwB,EAAI5D,EACRA,GAAK8L,EAHG6lB,EAAM1lB,QAAQO,MAGN,EAChBV,EAAIlI,CACN,CAGA+tB,EAAMsC,IAAIj0B,EAAG8L,EAAG3Z,EAAK2O,EACvB,EAEAqgB,EAAI1xB,UAAU2sB,SAAW,SAAkBvpB,EAAO8gC,EAAQC,EAAQzhC,EAAK2O,GAKrE,IAJA,IAAIgL,EAAI8nB,EACJ5zB,EAAI2zB,EAGCj5B,EAAI7H,EAAMkC,KAAKjE,OAAS,EAAG4J,GAAK,EAAGA,GAAK,EAAG,CAClD,IAAIm5B,EAAOhhC,EAAMkC,KAAK2F,GAClBo5B,EAAOjhC,EAAMkC,KAAK2F,EAAI,GAG1Bi3B,EAAMoC,OAAOjoB,EAAGjZ,EAAMkJ,IAAK,GAE3B83B,GAAQhhC,EAAMkJ,IAAI,GAClB+3B,GAAQjhC,EAAMkJ,IAAI,GAClB,IAAIyQ,EAAImlB,EAAMqC,WAAWH,EAAMC,GAG3BlwB,EAAIkI,EACRA,GAAK9L,EAHG2xB,EAAM1lB,QAAQO,MAGN,EAChBxM,EAAI4D,CACN,CAGA+tB,EAAMsC,IAAInoB,EAAG9L,EAAG7N,EAAK2O,EACvB,gCCnJA,IAAItO,EAAS,EAAQ,OACjBpD,EAAW,EAAQ,OAEnBouB,EAAS,EAAQ,OACjB2D,EAAM,EAAQ,OAElB,SAAS+S,EAAS58B,EAAM7D,GACtBjB,EAAOmC,MAAMlB,EAAI3C,OAAQ,GAAI,sBAE7B,IAAIqjC,EAAK1gC,EAAIxB,MAAM,EAAG,GAClBmiC,EAAK3gC,EAAIxB,MAAM,EAAG,IAClBoiC,EAAK5gC,EAAIxB,MAAM,GAAI,IAGrBzC,KAAK4tB,QADM,YAAT9lB,EACa,CACb6pB,EAAIY,OAAO,CAAEzqB,KAAM,UAAW7D,IAAK0gC,IACnChT,EAAIY,OAAO,CAAEzqB,KAAM,UAAW7D,IAAK2gC,IACnCjT,EAAIY,OAAO,CAAEzqB,KAAM,UAAW7D,IAAK4gC,KAGtB,CACblT,EAAIY,OAAO,CAAEzqB,KAAM,UAAW7D,IAAK4gC,IACnClT,EAAIY,OAAO,CAAEzqB,KAAM,UAAW7D,IAAK2gC,IACnCjT,EAAIY,OAAO,CAAEzqB,KAAM,UAAW7D,IAAK0gC,IAGzC,CAEA,SAASxS,EAAItxB,GACXmtB,EAAOztB,KAAKP,KAAMa,GAElB,IAAIwC,EAAQ,IAAIqhC,EAAS1kC,KAAK8H,KAAM9H,KAAKa,QAAQoD,KACjDjE,KAAK8kC,UAAYzhC,CACnB,CACAzD,EAASuyB,EAAKnE,GAEd1pB,EAAOjF,QAAU8yB,EAEjBA,EAAII,OAAS,SAAgB1xB,GAC3B,OAAO,IAAIsxB,EAAItxB,EACjB,EAEAsxB,EAAIlyB,UAAUitB,QAAU,SAAiBsV,EAAKC,EAAO9/B,EAAK+/B,GACxD,IAAIr/B,EAAQrD,KAAK8kC,UAEjBzhC,EAAMuqB,QAAQ,GAAGV,QAAQsV,EAAKC,EAAO9/B,EAAK+/B,GAC1Cr/B,EAAMuqB,QAAQ,GAAGV,QAAQvqB,EAAK+/B,EAAQ//B,EAAK+/B,GAC3Cr/B,EAAMuqB,QAAQ,GAAGV,QAAQvqB,EAAK+/B,EAAQ//B,EAAK+/B,EAC7C,EAEAvQ,EAAIlyB,UAAUqjC,KAAO3R,EAAI1xB,UAAUqjC,KACnCnR,EAAIlyB,UAAUsjC,OAAS5R,EAAI1xB,UAAUsjC,mCCnDrClkC,EAAQ6oB,aAAe,SAAsB5lB,EAAOgP,GAKlD,OAJYhP,EAAM,EAAIgP,IAAQ,GAClBhP,EAAM,EAAIgP,IAAQ,GAClBhP,EAAM,EAAIgP,IAAQ,EACnBhP,EAAM,EAAIgP,MACN,CACjB,EAEAjS,EAAQ6rB,cAAgB,SAAuB5oB,EAAOb,EAAO6P,GAC3DhP,EAAM,EAAIgP,GAAO7P,IAAU,GAC3Ba,EAAM,EAAIgP,GAAQ7P,IAAU,GAAM,IAClCa,EAAM,EAAIgP,GAAQ7P,IAAU,EAAK,IACjCa,EAAM,EAAIgP,GAAe,IAAR7P,CACnB,EAEApC,EAAQ4kC,GAAK,SAAYc,EAAKC,EAAKriC,EAAK2O,GAItC,IAHA,IAAI2zB,EAAO,EACPC,EAAO,EAEFh6B,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAC9B,IAAK,IAAIC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B85B,IAAS,EACTA,GAASD,IAAS75B,EAAID,EAAM,EAE9B,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B85B,IAAS,EACTA,GAASF,IAAS55B,EAAID,EAAM,CAEhC,CAEA,IAASA,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAAG,CAC9B,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B+5B,IAAS,EACTA,GAASF,IAAS75B,EAAID,EAAM,EAE9B,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B+5B,IAAS,EACTA,GAASH,IAAS55B,EAAID,EAAM,CAEhC,CAEAvI,EAAI2O,EAAM,GAAK2zB,IAAS,EACxBtiC,EAAI2O,EAAM,GAAK4zB,IAAS,CAC1B,EAEA7lC,EAAQolC,IAAM,SAAaM,EAAKC,EAAKriC,EAAK2O,GAIxC,IAHA,IAAI2zB,EAAO,EACPC,EAAO,EAEFh6B,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK,IAAIC,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5B85B,IAAS,EACTA,GAASD,IAAS75B,EAAID,EAAM,EAC5B+5B,IAAS,EACTA,GAASF,IAAS55B,EAAID,EAAM,EAGhC,IAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAASC,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5B+5B,IAAS,EACTA,GAASF,IAAS75B,EAAID,EAAM,EAC5Bg6B,IAAS,EACTA,GAASH,IAAS55B,EAAID,EAAM,EAIhCvI,EAAI2O,EAAM,GAAK2zB,IAAS,EACxBtiC,EAAI2O,EAAM,GAAK4zB,IAAS,CAC1B,EAEA7lC,EAAQykC,IAAM,SAAaiB,EAAKC,EAAKriC,EAAK2O,GAQxC,IAPA,IAAI2zB,EAAO,EACPC,EAAO,EAMFh6B,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAK,IAAIC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B85B,IAAS,EACTA,GAASD,GAAQ75B,EAAID,EAAM,EAE7B,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B85B,IAAS,EACTA,GAASF,GAAQ55B,EAAID,EAAM,CAE/B,CACA,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B85B,IAAS,EACTA,GAASD,GAAQ75B,EAAID,EAAM,EAO7B,IAASA,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B+5B,IAAS,EACTA,GAASF,GAAQ75B,EAAID,EAAM,EAE7B,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B+5B,IAAS,EACTA,GAASH,GAAQ55B,EAAID,EAAM,CAE/B,CACA,IAASC,EAAI,EAAGA,GAAK,GAAIA,GAAK,EAC5B+5B,IAAS,EACTA,GAASH,GAAQ55B,EAAID,EAAM,EAG7BvI,EAAI2O,EAAM,GAAK2zB,IAAS,EACxBtiC,EAAI2O,EAAM,GAAK4zB,IAAS,CAC1B,EAEA7lC,EAAQ0kC,OAAS,SAAgBp+B,EAAK8a,GACpC,OAAS9a,GAAO8a,EAAS,UAAc9a,IAAS,GAAK8a,CACvD,EAEA,IAAI0kB,EAAW,CAEb,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAC3B,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GACzB,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAGzB,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GACzB,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EACzB,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAG5B9lC,EAAQ2kC,IAAM,SAAae,EAAKC,EAAKriC,EAAK2O,GAKxC,IAJA,IAAI2zB,EAAO,EACPC,EAAO,EAEPj6B,EAAMk6B,EAAS7jC,SAAW,EACrB4J,EAAI,EAAGA,EAAID,EAAKC,IACvB+5B,IAAS,EACTA,GAASF,IAAQI,EAASj6B,GAAM,EAElC,IAASA,EAAID,EAAKC,EAAIi6B,EAAS7jC,OAAQ4J,IACrCg6B,IAAS,EACTA,GAASF,IAAQG,EAASj6B,GAAM,EAGlCvI,EAAI2O,EAAM,GAAK2zB,IAAS,EACxBtiC,EAAI2O,EAAM,GAAK4zB,IAAS,CAC1B,EAEA7lC,EAAQklC,OAAS,SAAgB/zB,EAAG7N,EAAK2O,GACvC,IAAI2zB,EAAO,EACPC,EAAO,EAEXD,GAAa,EAAJz0B,IAAU,EAAMA,IAAM,GAC/B,IAAK,IAAItF,EAAI,GAAIA,GAAK,GAAIA,GAAK,EAC7B+5B,IAAS,EACTA,GAASz0B,IAAMtF,EAAK,GAEtB,IAASA,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC5Bg6B,GAAS10B,IAAMtF,EAAK,GACpBg6B,IAAS,EAEXA,IAAc,GAAJ10B,IAAa,EAAMA,IAAM,GAEnC7N,EAAI2O,EAAM,GAAK2zB,IAAS,EACxBtiC,EAAI2O,EAAM,GAAK4zB,IAAS,CAC1B,EAEA,IAAIE,EAAS,CACX,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EACpD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClD,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAClD,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAEnD,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACpD,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAElD,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GACjD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EACpD,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EACjD,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAEpD,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EACnD,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EACpD,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAEjD,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EACpD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GACnD,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAElD,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EACnD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAElD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GACnD,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAClD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACpD,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAEjD,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EACnD,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAClD,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGpD/lC,EAAQmlC,WAAa,SAAoBO,EAAKC,GAE5C,IADA,IAAIriC,EAAM,EACDuI,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAI1BvI,IAAQ,EACRA,GAHSyiC,EAAW,GAAJl6B,GADP65B,IAAS,GAAS,EAAJ75B,EAAU,IAKnC,CACA,IAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAI1BvI,IAAQ,EACRA,GAHSyiC,EAAO,IAAe,GAAJl6B,GADlB85B,IAAS,GAAS,EAAJ95B,EAAU,IAKnC,CACA,OAAOvI,IAAQ,CACjB,EAEA,IAAI0iC,EAAe,CACjB,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GACvD,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAG1DhmC,EAAQod,QAAU,SAAiB9W,GAEjC,IADA,IAAIhD,EAAM,EACDuI,EAAI,EAAGA,EAAIm6B,EAAa/jC,OAAQ4J,IACvCvI,IAAQ,EACRA,GAAQgD,IAAQ0/B,EAAan6B,GAAM,EAErC,OAAOvI,IAAQ,CACjB,EAEAtD,EAAQimC,SAAW,SAAkB3/B,EAAKyI,EAAMm3B,GAE9C,IADA,IAAIp8B,EAAMxD,EAAImG,SAAS,GAChB3C,EAAI7H,OAAS8M,GAClBjF,EAAM,IAAMA,EAGd,IADA,IAAIxG,EAAM,GACDuI,EAAI,EAAGA,EAAIkD,EAAMlD,GAAKq6B,EAC7B5iC,EAAIkC,KAAKsE,EAAI1G,MAAMyI,EAAGA,EAAIq6B,IAC5B,OAAO5iC,EAAID,KAAK,IAClB,yCC/PI8iC,EAAgB,EAAQ,MACxBvgB,EAAS,EAAQ,OAEjBwgB,EAAK,EAAQ,OASjB,IAAIC,EAAY,CACd,QAAU,EAAM,KAAO,EAAM,QAAU,GA2BzCrmC,EAAQsgC,mBAAqBtgC,EAAQugC,yBAA2BvgC,EAAQwgC,iBAnCxE,SAA2BluB,GACzB,IAAIiU,EAAQ,IAAI1kB,EAAO+jB,EAAOtT,GAAKiU,MAAO,OACtC+f,EAAM,IAAIzkC,EAAO+jB,EAAOtT,GAAKg0B,IAAK,OAEtC,OAAO,IAAIF,EAAG7f,EAAO+f,EACvB,EA+BAtmC,EAAQygC,oBAAsBzgC,EAAQ0gC,cAzBtC,SAASD,EAAqBla,EAAOnlB,EAAKmlC,EAAWC,GACnD,OAAI3kC,EAAOE,SAASX,SAA2ByH,IAAnBw9B,EAAUjlC,GAC7Bq/B,EAAoBla,EAAO,SAAUnlB,EAAKmlC,IAGnDnlC,EAAMA,GAAO,SACbolC,EAAOA,GAAQ,SACfD,EAAYA,GAAa,IAAI1kC,EAAO,CAAC,IAEhCA,EAAOE,SAASwkC,KACnBA,EAAY,IAAI1kC,EAAO0kC,EAAWC,IAGf,kBAAVjgB,EACF,IAAI6f,EAAGD,EAAc5f,EAAOggB,GAAYA,GAAW,IAGvD1kC,EAAOE,SAASwkB,KACnBA,EAAQ,IAAI1kB,EAAO0kB,EAAOnlB,IAGrB,IAAIglC,EAAG7f,EAAOggB,GAAW,IAClC,yCCtCIl2B,EAAK,EAAQ,OAEbo2B,EAAc,IADA,EAAQ,QAEtBC,EAAa,IAAIr2B,EAAG,IACpBs2B,EAAS,IAAIt2B,EAAG,IAChBu2B,EAAM,IAAIv2B,EAAG,IACbw2B,EAAQ,IAAIx2B,EAAG,GACfy2B,EAAQ,IAAIz2B,EAAG,GACfuV,EAAS,EAAQ,MACjB8C,EAAc,EAAQ,OAG1B,SAAS6V,EAAarG,EAAK92B,GAMzB,OALAA,EAAMA,GAAO,OACRS,EAAOE,SAASm2B,KACnBA,EAAM,IAAIr2B,EAAOq2B,EAAK92B,IAExBT,KAAKomC,KAAO,IAAI12B,EAAG6nB,GACZv3B,IACT,CAEA,SAAS89B,EAAcpL,EAAMjyB,GAM3B,OALAA,EAAMA,GAAO,OACRS,EAAOE,SAASsxB,KACnBA,EAAO,IAAIxxB,EAAOwxB,EAAMjyB,IAE1BT,KAAK+9B,MAAQ,IAAIruB,EAAGgjB,GACb1yB,IACT,CAlBAsE,EAAOjF,QAAUomC,EAoBjB,IAAIY,EAAa,CAAC,EAsDlB,SAASZ,EAAG7f,EAAOggB,EAAWU,GAC5BtmC,KAAKumC,aAAaX,GAClB5lC,KAAKwmC,QAAU,IAAI92B,EAAGkW,GACtB5lB,KAAK6lB,OAASnW,EAAGwX,KAAKlnB,KAAKwmC,SAC3BxmC,KAAKymC,UAAY7gB,EAAMtkB,OACvBtB,KAAKomC,UAAOl+B,EACZlI,KAAK+9B,WAAQ71B,EACblI,KAAK0mC,gBAAax+B,EACdo+B,GACFtmC,KAAK49B,aAAeA,EACpB59B,KAAK89B,cAAgBA,GAErB99B,KAAK0mC,WAAa,CAEtB,CA0DA,SAASjK,EAAkBC,EAAIj8B,GAC7B,IAAIoK,EAAM,IAAI3J,EAAOw7B,EAAG3tB,WACxB,OAAKtO,EAGIoK,EAAIiB,SAASrL,GAFboK,CAIX,CAhEAvF,OAAOqhC,eAAelB,EAAGxlC,UAAW,cAAe,CACjDgiC,YAAY,EACZ3S,IAAK,WAIH,MAH+B,kBAApBtvB,KAAK0mC,aACd1mC,KAAK0mC,WAxEX,SAAoB9gB,EAAOggB,GACzB,IAAID,EAAMC,EAAU95B,SAAS,OACzB86B,EAAM,CAACjB,EAAK/f,EAAM9Z,SAAS,KAAKpJ,KAAK,KACzC,GAAIkkC,KAAOP,EACT,OAAOA,EAAWO,GAEpB,IAyBIC,EAzBAtlC,EAAQ,EAEZ,GAAIqkB,EAAM7D,WACPkD,EAAO6hB,cACP7hB,EAAO8hB,WAAWnhB,KAClBkgB,EAAY3+B,KAAKye,GAclB,OAZArkB,GAAS,EAKPA,GAHU,OAARokC,GAAwB,OAARA,EAGT,EAIA,EAEXU,EAAWO,GAAOrlC,EACXA,EAOT,OALKukC,EAAY3+B,KAAKye,EAAM5F,KAAK,MAE/Bze,GAAS,GAGHokC,GACN,IAAK,KACC/f,EAAMjU,IAAIo0B,GAAYh1B,IAAIi1B,KAE5BzkC,GAAS,GAEX,MACF,IAAK,MACHslC,EAAMjhB,EAAMjU,IAAIs0B,IACRl1B,IAAIm1B,IAAUW,EAAI91B,IAAIo1B,KAE5B5kC,GAAS,GAEX,MACF,QACEA,GAAS,EAGb,OADA8kC,EAAWO,GAAOrlC,EACXA,CACT,CAqBwBylC,CAAWhnC,KAAKwmC,QAASxmC,KAAKinC,QAE3CjnC,KAAK0mC,UACd,IAEFjB,EAAGxlC,UAAU+8B,aAAe,WAK1B,OAJKh9B,KAAK+9B,QACR/9B,KAAK+9B,MAAQ,IAAIruB,EAAGqY,EAAY/nB,KAAKymC,aAEvCzmC,KAAKomC,KAAOpmC,KAAKknC,KAAKzjB,MAAMzjB,KAAK6lB,QAAQb,OAAOhlB,KAAK+9B,OAAOla,UACrD7jB,KAAKm9B,cACd,EAEAsI,EAAGxlC,UAAUm9B,cAAgB,SAAUC,GAGrC,IAAI8J,GADJ9J,GADAA,EAAQ,IAAI3tB,EAAG2tB,IACD5Z,MAAMzjB,KAAK6lB,SACNb,OAAOhlB,KAAK+9B,OAAOla,UAClClhB,EAAM,IAAIzB,EAAOimC,EAAOp4B,WACxB6W,EAAQ5lB,KAAKonC,WACjB,GAAIzkC,EAAIrB,OAASskB,EAAMtkB,OAAQ,CAC7B,IAAI+lC,EAAQ,IAAInmC,EAAO0kB,EAAMtkB,OAASqB,EAAIrB,QAC1C+lC,EAAMhR,KAAK,GACX1zB,EAAMzB,EAAOiC,OAAO,CAACkkC,EAAO1kC,GAC9B,CACA,OAAOA,CACT,EAEA8iC,EAAGxlC,UAAUk9B,aAAe,SAAsB18B,GAChD,OAAOg8B,EAAkBz8B,KAAKomC,KAAM3lC,EACtC,EAEAglC,EAAGxlC,UAAU09B,cAAgB,SAAuBl9B,GAClD,OAAOg8B,EAAkBz8B,KAAK+9B,MAAOt9B,EACvC,EAEAglC,EAAGxlC,UAAUmnC,SAAW,SAAU3mC,GAChC,OAAOg8B,EAAkBz8B,KAAKwmC,QAAS/lC,EACzC,EAEAglC,EAAGxlC,UAAUqnC,aAAe,SAAU7mC,GACpC,OAAOg8B,EAAkBz8B,KAAKknC,KAAMzmC,EACtC,EAEAglC,EAAGxlC,UAAUsmC,aAAe,SAAUZ,EAAKllC,GAOzC,OANAA,EAAMA,GAAO,OACRS,EAAOE,SAASukC,KACnBA,EAAM,IAAIzkC,EAAOykC,EAAKllC,IAExBT,KAAKinC,MAAQtB,EACb3lC,KAAKknC,KAAO,IAAIx3B,EAAGi2B,GACZ3lC,IACT,kBC1JA,IAAI+nB,EAAc,EAAQ,OAC1BzjB,EAAOjF,QAAUkoC,EACjBA,EAAUT,YAAcA,EACxBS,EAAUR,WAAaA,EACvB,IAAIr3B,EAAK,EAAQ,OACbq2B,EAAa,IAAIr2B,EAAG,IAEpBo2B,EAAc,IADA,EAAQ,QAEtB0B,EAAM,IAAI93B,EAAG,GACb+3B,EAAM,IAAI/3B,EAAG,GACbg4B,EAAO,IAAIh4B,EAAG,GAGdu2B,GAFU,IAAIv2B,EAAG,IACT,IAAIA,EAAG,GACT,IAAIA,EAAG,KACbw2B,EAAQ,IAAIx2B,EAAG,GAEfs2B,GADQ,IAAIt2B,EAAG,GACN,IAAIA,EAAG,KAChBi4B,EAAO,IAAIj4B,EAAG,GAEduV,GADS,IAAIvV,EAAG,IACP,MAEb,SAASk4B,IACP,GAAe,OAAX3iB,EACF,OAAOA,EAET,IACIhjB,EAAM,GACVA,EAAI,GAAK,EACT,IAAK,IAAIiJ,EAAI,EAAG2H,EAAI,EAAGA,EAHX,QAGsBA,GAAK,EAAG,CAExC,IADA,IAAIgS,EAAOlU,KAAKS,KAAKT,KAAKkU,KAAKhS,IACtB1H,EAAI,EAAGA,EAAID,GAAKjJ,EAAIkJ,IAAM0Z,GAC7BhS,EAAI5Q,EAAIkJ,KAAO,EADoBA,KAIrCD,IAAMC,GAAKlJ,EAAIkJ,IAAM0Z,IAGzB5iB,EAAIiJ,KAAO2H,EACb,CAEA,OADAoS,EAAShjB,EACFA,CACT,CAEA,SAAS6kC,EAAYz3B,GAGnB,IAFA,IAAI4V,EAAS2iB,IAEJ18B,EAAI,EAAGA,EAAI+Z,EAAO3jB,OAAQ4J,IACjC,GAA0B,IAAtBmE,EAAEgE,KAAK4R,EAAO/Z,IAChB,OAA0B,IAAtBmE,EAAEqT,KAAKuC,EAAO/Z,IAOtB,OAAO,CACT,CAEA,SAAS67B,EAAW13B,GAClB,IAAIW,EAAMN,EAAGwX,KAAK7X,GAClB,OAA8D,IAAvDo4B,EAAIhkB,MAAMzT,GAAKgV,OAAO3V,EAAEiR,KAAK,IAAIuD,UAAUnB,KAAK,EACzD,CAEA,SAAS6kB,EAAUnoB,EAAMumB,GACvB,GAAIvmB,EAAO,GAET,OACS,IAAI1P,EADD,IAARi2B,GAAqB,IAARA,EACD,CAAC,IAAM,KAEP,CAAC,IAAM,KAKzB,IAAIhgC,EAAKkiC,EAET,IAJAlC,EAAM,IAAIj2B,EAAGi2B,KAIA,CAEX,IADAhgC,EAAM,IAAI+J,EAAGqY,EAAYpX,KAAKS,KAAKgO,EAAO,KACnCzZ,EAAI2O,YAAc8K,GACvBzZ,EAAIka,MAAM,GAQZ,GANIla,EAAIoc,UACNpc,EAAI0Q,KAAKmxB,GAEN7hC,EAAIoP,MAAM,IACbpP,EAAI0Q,KAAKoxB,GAEN9B,EAAI50B,IAAI02B,IAIN,IAAK9B,EAAI50B,IAAI22B,GAClB,KAAO/hC,EAAIgM,IAAIs0B,GAAKl1B,IAAIm1B,IACtBvgC,EAAI0Q,KAAKsxB,QALX,KAAOhiC,EAAIgM,IAAIo0B,GAAYh1B,IAAIi1B,IAC7BrgC,EAAI0Q,KAAKsxB,GAQb,GAAIb,EADJe,EAAKliC,EAAIqa,KAAK,KACS8mB,EAAYnhC,IACjCohC,EAAWc,IAAOd,EAAWphC,IAC7BmgC,EAAY3+B,KAAK0gC,IAAO/B,EAAY3+B,KAAKxB,GACzC,OAAOA,CAEX,CAEF,+BCtGA,IAGImiC,EAHAC,EAAW,EAAQ,OACnBC,EAAO,EAAQ,OAGnB,IAECF,EAAyE,GAAKG,YAAcvmC,MAAMzB,SACnG,CAAE,MAAOG,GACR,IAAKA,GAAkB,kBAANA,KAAoB,SAAUA,IAAiB,qBAAXA,EAAE8nC,KACtD,MAAM9nC,CAER,CAGA,IAAI2hC,IAAS+F,GAAoBE,GAAQA,EAAK1iC,OAAOrF,UAAwD,aAEzGkoC,EAAU7iC,OACV8iC,EAAkBD,EAAQE,eAG9B/jC,EAAOjF,QAAU0iC,GAA4B,oBAAbA,EAAKzS,IAClCyY,EAAS,CAAChG,EAAKzS,MACY,oBAApB8Y,GACyB,SAAmB3mC,GAEnD,OAAO2mC,EAAyB,MAAT3mC,EAAgBA,EAAQ0mC,EAAQ1mC,GACxD,gCC1BF,IAAIP,EAAS,gBAETonC,EAAsB,EAAQ,MAE9BC,EAAY,IAehB,SAASC,EAAkB3Q,GAC1B,GAAI32B,EAAOE,SAASy2B,GACnB,OAAOA,EACD,GAAI,kBAAoBA,EAC9B,OAAO32B,EAAO+mB,KAAK4P,EAAW,UAG/B,MAAM,IAAIzI,UAAU,sDACrB,CAuFA,SAASqZ,EAAa59B,EAAKlE,EAAO+hC,GAEjC,IADA,IAAIz1B,EAAU,EACPtM,EAAQsM,EAAUy1B,GAAiC,IAAzB79B,EAAIlE,EAAQsM,MAC1CA,EAQH,OALgBpI,EAAIlE,EAAQsM,IAAYs1B,KAErCt1B,EAGIA,CACR,CAuDA3O,EAAOjF,QAAU,CAChBspC,UAzJD,SAAmB9Q,EAAWyG,GAC7BzG,EAAY2Q,EAAkB3Q,GAC9B,IAAI+Q,EAAaN,EAAoBhK,GAIjCuK,EAAwBD,EAAa,EAErCE,EAAcjR,EAAUv2B,OAExBD,EAAS,EACb,GA/BkB,KA+Bdw2B,EAAUx2B,KACb,MAAM,IAAImE,MAAM,iCAGjB,IAAIujC,EAAYlR,EAAUx2B,KAK1B,GAJkB,MAAd0nC,IACHA,EAAYlR,EAAUx2B,MAGnBynC,EAAcznC,EAAS0nC,EAC1B,MAAM,IAAIvjC,MAAM,8BAAgCujC,EAAY,aAAeD,EAAcznC,GAAU,eAGpG,GA7CU,IA6CNw2B,EAAUx2B,KACb,MAAM,IAAImE,MAAM,yCAGjB,IAAIwjC,EAAUnR,EAAUx2B,KAExB,GAAIynC,EAAcznC,EAAS,EAAI2nC,EAC9B,MAAM,IAAIxjC,MAAM,4BAA8BwjC,EAAU,aAAeF,EAAcznC,EAAS,GAAK,eAGpG,GAAIwnC,EAAwBG,EAC3B,MAAM,IAAIxjC,MAAM,4BAA8BwjC,EAAU,cAAgBH,EAAwB,mBAGjG,IAAII,EAAU5nC,EAGd,GAFAA,GAAU2nC,EA5DA,IA8DNnR,EAAUx2B,KACb,MAAM,IAAImE,MAAM,yCAGjB,IAAI0jC,EAAUrR,EAAUx2B,KAExB,GAAIynC,EAAcznC,IAAW6nC,EAC5B,MAAM,IAAI1jC,MAAM,4BAA8B0jC,EAAU,iBAAmBJ,EAAcznC,GAAU,KAGpG,GAAIwnC,EAAwBK,EAC3B,MAAM,IAAI1jC,MAAM,4BAA8B0jC,EAAU,cAAgBL,EAAwB,mBAGjG,IAAIM,EAAU9nC,EAGd,IAFAA,GAAU6nC,KAEKJ,EACd,MAAM,IAAItjC,MAAM,4CAA8CsjC,EAAcznC,GAAU,kBAGvF,IAAI+nC,EAAWR,EAAaI,EAC3BK,EAAWT,EAAaM,EAErBI,EAAMpoC,EAAO+pB,YAAYme,EAAWJ,EAAUK,EAAWH,GAE7D,IAAK7nC,EAAS,EAAGA,EAAS+nC,IAAY/nC,EACrCioC,EAAIjoC,GAAU,EAEfw2B,EAAU/0B,KAAKwmC,EAAKjoC,EAAQ4nC,EAAUt4B,KAAKC,KAAKw4B,EAAU,GAAIH,EAAUD,GAIxE,IAAK,IAAIryB,EAFTtV,EAASunC,EAEYvnC,EAASsV,EAAI0yB,IAAYhoC,EAC7CioC,EAAIjoC,GAAU,EAOf,OALAw2B,EAAU/0B,KAAKwmC,EAAKjoC,EAAQ8nC,EAAUx4B,KAAKC,KAAKy4B,EAAU,GAAIF,EAAUD,GAGxEI,GADAA,EAAMA,EAAIx9B,SAAS,WA9FjB2B,QAAQ,KAAM,IACdA,QAAQ,MAAO,KACfA,QAAQ,MAAO,IAgGlB,EAuEC87B,UAvDD,SAAmB1R,EAAWyG,GAC7BzG,EAAY2Q,EAAkB3Q,GAC9B,IAAI+Q,EAAaN,EAAoBhK,GAEjCkL,EAAiB3R,EAAUv2B,OAC/B,GAAIkoC,IAAgC,EAAbZ,EACtB,MAAM,IAAIxZ,UAAU,IAAMkP,EAAM,yBAAwC,EAAbsK,EAAiB,iBAAmBY,EAAiB,KAGjH,IAAIJ,EAAWX,EAAa5Q,EAAW,EAAG+Q,GACtCS,EAAWZ,EAAa5Q,EAAW+Q,EAAY/Q,EAAUv2B,QACzD0nC,EAAUJ,EAAaQ,EACvBF,EAAUN,EAAaS,EAEvBI,EAAU,EAAQT,EAAU,EAAI,EAAIE,EAEpCQ,EAAcD,EAAUlB,EAExBe,EAAMpoC,EAAO+pB,aAAaye,EAAc,EAAI,GAAKD,GAEjDpoC,EAAS,EA8Bb,OA7BAioC,EAAIjoC,KA5Ic,GA6IdqoC,EAGHJ,EAAIjoC,KAAYooC,GAIhBH,EAAIjoC,KAAYknC,IAEhBe,EAAIjoC,KAAsB,IAAVooC,GAEjBH,EAAIjoC,KAzJM,EA0JVioC,EAAIjoC,KAAY2nC,EACZI,EAAW,GACdE,EAAIjoC,KAAY,EAChBA,GAAUw2B,EAAU/0B,KAAKwmC,EAAKjoC,EAAQ,EAAGunC,IAEzCvnC,GAAUw2B,EAAU/0B,KAAKwmC,EAAKjoC,EAAQ+nC,EAAUR,GAEjDU,EAAIjoC,KAjKM,EAkKVioC,EAAIjoC,KAAY6nC,EACZG,EAAW,GACdC,EAAIjoC,KAAY,EAChBw2B,EAAU/0B,KAAKwmC,EAAKjoC,EAAQunC,IAE5B/Q,EAAU/0B,KAAKwmC,EAAKjoC,EAAQunC,EAAaS,GAGnCC,CACR,0BCnLA,SAASK,EAAatf,GAErB,OADeA,EAAU,EAAK,IAAMA,EAAU,IAAM,EAAI,EAAI,EAE7D,CAEA,IAAIuf,EAAmB,CACtBC,MAAOF,EAAa,KACpBG,MAAOH,EAAa,KACpBI,MAAOJ,EAAa,MAYrBrlC,EAAOjF,QATP,SAA6Bi/B,GAC5B,IAAIsK,EAAagB,EAAiBtL,GAClC,GAAIsK,EACH,OAAOA,EAGR,MAAM,IAAIpjC,MAAM,sBAAwB84B,EAAM,IAC/C,gCClBA,IAAIzC,EAAWx8B,EAEfw8B,EAASmO,QAAU,WACnBnO,EAASsG,MAAQ,EAAQ,OACzBtG,EAASxU,KAAO,EAAQ,OACxBwU,EAASjF,MAAQ,EAAQ,KACzBiF,EAAS/F,OAAS,EAAQ,OAG1B+F,EAASW,GAAK,EAAQ,OACtBX,EAASoO,MAAQ,EAAQ,oCCVzB,IAAIv6B,EAAK,EAAQ,OACbyyB,EAAQ,EAAQ,OAChB+H,EAAS/H,EAAM+H,OACfC,EAAShI,EAAMgI,OACfnnC,EAASm/B,EAAMn/B,OAEnB,SAASonC,EAAUtiC,EAAMuiC,GACvBrqC,KAAK8H,KAAOA,EACZ9H,KAAKqP,EAAI,IAAIK,EAAG26B,EAAKh7B,EAAG,IAGxBrP,KAAKgQ,IAAMq6B,EAAKzkB,MAAQlW,EAAGM,IAAIq6B,EAAKzkB,OAASlW,EAAGwX,KAAKlnB,KAAKqP,GAG1DrP,KAAKsqC,KAAO,IAAI56B,EAAG,GAAG+T,MAAMzjB,KAAKgQ,KACjChQ,KAAK0mB,IAAM,IAAIhX,EAAG,GAAG+T,MAAMzjB,KAAKgQ,KAChChQ,KAAK2N,IAAM,IAAI+B,EAAG,GAAG+T,MAAMzjB,KAAKgQ,KAGhChQ,KAAK6d,EAAIwsB,EAAKxsB,GAAK,IAAInO,EAAG26B,EAAKxsB,EAAG,IAClC7d,KAAK8hB,EAAIuoB,EAAKvoB,GAAK9hB,KAAKuqC,cAAcF,EAAKvoB,EAAGuoB,EAAKG,MAGnDxqC,KAAKyqC,QAAU,IAAI/oC,MAAM,GACzB1B,KAAK0qC,QAAU,IAAIhpC,MAAM,GACzB1B,KAAK2qC,QAAU,IAAIjpC,MAAM,GACzB1B,KAAK4qC,QAAU,IAAIlpC,MAAM,GAEzB1B,KAAK6qC,WAAa7qC,KAAK6d,EAAI7d,KAAK6d,EAAEvJ,YAAc,EAGhD,IAAIw2B,EAAc9qC,KAAK6d,GAAK7d,KAAKqP,EAAE0R,IAAI/gB,KAAK6d,IACvCitB,GAAeA,EAAYpoB,KAAK,KAAO,EAC1C1iB,KAAK+qC,KAAO,MAEZ/qC,KAAKgrC,eAAgB,EACrBhrC,KAAK+qC,KAAO/qC,KAAK6d,EAAE4F,MAAMzjB,KAAKgQ,KAElC,CAsNA,SAASi7B,EAAUrU,EAAO9uB,GACxB9H,KAAK42B,MAAQA,EACb52B,KAAK8H,KAAOA,EACZ9H,KAAKkrC,YAAc,IACrB,CAzNA5mC,EAAOjF,QAAU+qC,EAEjBA,EAAUnqC,UAAUkrC,MAAQ,WAC1B,MAAM,IAAI3lC,MAAM,kBAClB,EAEA4kC,EAAUnqC,UAAUmrC,SAAW,WAC7B,MAAM,IAAI5lC,MAAM,kBAClB,EAEA4kC,EAAUnqC,UAAUorC,aAAe,SAAsBh8B,EAAGwD,GAC1D7P,EAAOqM,EAAE67B,aACT,IAAII,EAAUj8B,EAAEk8B,cAEZC,EAAMtB,EAAOr3B,EAAG,EAAG7S,KAAK6qC,YACxBY,GAAK,GAAMH,EAAQI,KAAO,IAAOJ,EAAQI,KAAO,IAAM,EAAI,EAAI,GAClED,GAAK,EAGL,IACItgC,EACAwgC,EAFAC,EAAO,GAGX,IAAKzgC,EAAI,EAAGA,EAAIqgC,EAAIlqC,OAAQ6J,GAAKmgC,EAAQI,KAAM,CAC7CC,EAAO,EACP,IAAK,IAAIrvB,EAAInR,EAAImgC,EAAQI,KAAO,EAAGpvB,GAAKnR,EAAGmR,IACzCqvB,GAAQA,GAAQ,GAAKH,EAAIlvB,GAC3BsvB,EAAK/mC,KAAK8mC,EACZ,CAIA,IAFA,IAAIl5B,EAAIzS,KAAK6rC,OAAO,KAAM,KAAM,MAC5Bn5B,EAAI1S,KAAK6rC,OAAO,KAAM,KAAM,MACvB3gC,EAAIugC,EAAGvgC,EAAI,EAAGA,IAAK,CAC1B,IAAKC,EAAI,EAAGA,EAAIygC,EAAKtqC,OAAQ6J,KAC3BwgC,EAAOC,EAAKzgC,MACCD,EACXwH,EAAIA,EAAEo5B,SAASR,EAAQS,OAAO5gC,IACvBwgC,KAAUzgC,IACjBwH,EAAIA,EAAEo5B,SAASR,EAAQS,OAAO5gC,GAAGgK,QAErC1C,EAAIA,EAAE8D,IAAI7D,EACZ,CACA,OAAOD,EAAEu5B,KACX,EAEA5B,EAAUnqC,UAAUgsC,SAAW,SAAkB58B,EAAGwD,GAClD,IAAIxB,EAAI,EAGJ66B,EAAY78B,EAAE88B,cAAc96B,GAChCA,EAAI66B,EAAUnlB,IAQd,IAPA,IAAIA,EAAMmlB,EAAUH,OAGhBP,EAAMtB,EAAOr3B,EAAGxB,EAAGrR,KAAK6qC,YAGxBrpB,EAAMxhB,KAAK6rC,OAAO,KAAM,KAAM,MACzB3gC,EAAIsgC,EAAIlqC,OAAS,EAAG4J,GAAK,EAAGA,IAAK,CAExC,IAAK,IAAIoR,EAAI,EAAGpR,GAAK,GAAgB,IAAXsgC,EAAItgC,GAAUA,IACtCoR,IAKF,GAJIpR,GAAK,GACPoR,IACFkF,EAAMA,EAAI4qB,KAAK9vB,GAEXpR,EAAI,EACN,MACF,IAAI2b,EAAI2kB,EAAItgC,GACZlI,EAAa,IAAN6jB,GAIHrF,EAHW,WAAXnS,EAAEvH,KAEA+e,EAAI,EACArF,EAAIsqB,SAAS/kB,EAAKF,EAAI,GAAM,IAE5BrF,EAAIsqB,SAAS/kB,GAAMF,EAAI,GAAM,GAAG1R,OAGpC0R,EAAI,EACArF,EAAIjL,IAAIwQ,EAAKF,EAAI,GAAM,IAEvBrF,EAAIjL,IAAIwQ,GAAMF,EAAI,GAAM,GAAG1R,MAEvC,CACA,MAAkB,WAAX9F,EAAEvH,KAAoB0Z,EAAIwqB,MAAQxqB,CAC3C,EAEA4oB,EAAUnqC,UAAUosC,YAAc,SAAqBC,EACrDP,EACAQ,EACAthC,EACAuhC,GACA,IAMIthC,EACAC,EACAkE,EARAo9B,EAAWzsC,KAAKyqC,QAChB1jB,EAAM/mB,KAAK0qC,QACXc,EAAMxrC,KAAK2qC,QAGX/5B,EAAM,EAIV,IAAK1F,EAAI,EAAGA,EAAID,EAAKC,IAAK,CAExB,IAAIghC,GADJ78B,EAAI08B,EAAO7gC,IACOihC,cAAcG,GAChCG,EAASvhC,GAAKghC,EAAUnlB,IACxBA,EAAI7b,GAAKghC,EAAUH,MACrB,CAGA,IAAK7gC,EAAID,EAAM,EAAGC,GAAK,EAAGA,GAAK,EAAG,CAChC,IAAIuH,EAAIvH,EAAI,EACRwH,EAAIxH,EACR,GAAoB,IAAhBuhC,EAASh6B,IAA4B,IAAhBg6B,EAAS/5B,GAAlC,CAQA,IAAIg6B,EAAO,CACTX,EAAOt5B,GACP,KACA,KACAs5B,EAAOr5B,IAI4B,IAAjCq5B,EAAOt5B,GAAGuJ,EAAEjL,IAAIg7B,EAAOr5B,GAAGsJ,IAC5B0wB,EAAK,GAAKX,EAAOt5B,GAAG8D,IAAIw1B,EAAOr5B,IAC/Bg6B,EAAK,GAAKX,EAAOt5B,GAAGk6B,MAAMb,SAASC,EAAOr5B,GAAGyC,QACM,IAA1C42B,EAAOt5B,GAAGuJ,EAAEjL,IAAIg7B,EAAOr5B,GAAGsJ,EAAE+I,WACrC2nB,EAAK,GAAKX,EAAOt5B,GAAGk6B,MAAMb,SAASC,EAAOr5B,IAC1Cg6B,EAAK,GAAKX,EAAOt5B,GAAG8D,IAAIw1B,EAAOr5B,GAAGyC,SAElCu3B,EAAK,GAAKX,EAAOt5B,GAAGk6B,MAAMb,SAASC,EAAOr5B,IAC1Cg6B,EAAK,GAAKX,EAAOt5B,GAAGk6B,MAAMb,SAASC,EAAOr5B,GAAGyC,QAG/C,IAAIzL,EAAQ,EACT,GACA,GACA,GACA,EACD,EACA,EACA,EACA,EACA,GAGEkjC,EAAMzC,EAAOoC,EAAO95B,GAAI85B,EAAO75B,IAInC,IAHA9B,EAAMD,KAAKC,IAAIg8B,EAAI,GAAGtrC,OAAQsP,GAC9B46B,EAAI/4B,GAAK,IAAI/Q,MAAMkP,GACnB46B,EAAI94B,GAAK,IAAIhR,MAAMkP,GACdzF,EAAI,EAAGA,EAAIyF,EAAKzF,IAAK,CACxB,IAAI0hC,EAAiB,EAAZD,EAAI,GAAGzhC,GACZ2hC,EAAiB,EAAZF,EAAI,GAAGzhC,GAEhBqgC,EAAI/4B,GAAGtH,GAAKzB,EAAiB,GAAVmjC,EAAK,IAAUC,EAAK,IACvCtB,EAAI94B,GAAGvH,GAAK,EACZ4b,EAAItU,GAAKi6B,CACX,CA5CA,MALElB,EAAI/4B,GAAKy3B,EAAOqC,EAAO95B,GAAIg6B,EAASh6B,GAAIzS,KAAK6qC,YAC7CW,EAAI94B,GAAKw3B,EAAOqC,EAAO75B,GAAI+5B,EAAS/5B,GAAI1S,KAAK6qC,YAC7Cj6B,EAAMD,KAAKC,IAAI46B,EAAI/4B,GAAGnR,OAAQsP,GAC9BA,EAAMD,KAAKC,IAAI46B,EAAI94B,GAAGpR,OAAQsP,EA+ClC,CAEA,IAAI4Q,EAAMxhB,KAAK6rC,OAAO,KAAM,KAAM,MAC9Bt/B,EAAMvM,KAAK4qC,QACf,IAAK1/B,EAAI0F,EAAK1F,GAAK,EAAGA,IAAK,CAGzB,IAFA,IAAI2H,EAAI,EAED3H,GAAK,GAAG,CACb,IAAIo/B,GAAO,EACX,IAAKn/B,EAAI,EAAGA,EAAIF,EAAKE,IACnBoB,EAAIpB,GAAiB,EAAZqgC,EAAIrgC,GAAGD,GACD,IAAXqB,EAAIpB,KACNm/B,GAAO,GAEX,IAAKA,EACH,MACFz3B,IACA3H,GACF,CAIA,GAHIA,GAAK,GACP2H,IACF2O,EAAMA,EAAI4qB,KAAKv5B,GACX3H,EAAI,EACN,MAEF,IAAKC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CACxB,IAAI0b,EAAIta,EAAIpB,GAEF,IAAN0b,IAEKA,EAAI,EACXxX,EAAI0X,EAAI5b,GAAI0b,EAAI,GAAM,GACfA,EAAI,IACXxX,EAAI0X,EAAI5b,IAAK0b,EAAI,GAAM,GAAG1R,OAG1BqM,EADa,WAAXnS,EAAEvH,KACE0Z,EAAIsqB,SAASz8B,GAEbmS,EAAIjL,IAAIlH,GAClB,CACF,CAEA,IAAKnE,EAAI,EAAGA,EAAID,EAAKC,IACnB6b,EAAI7b,GAAK,KAEX,OAAIshC,EACKhrB,EAEAA,EAAIwqB,KACf,EAOA5B,EAAUa,UAAYA,EAEtBA,EAAUhrC,UAAUsjB,GAAK,WACvB,MAAM,IAAI/d,MAAM,kBAClB,EAEAylC,EAAUhrC,UAAUmrC,SAAW,WAC7B,OAAOprC,KAAK42B,MAAMwU,SAASprC,KAC7B,EAEAoqC,EAAUnqC,UAAU8sC,YAAc,SAAqBzqC,EAAO7B,GAC5D6B,EAAQ6/B,EAAMpzB,QAAQzM,EAAO7B,GAE7B,IAAIwK,EAAMjL,KAAKqP,EAAEvN,aAGjB,IAAkB,IAAbQ,EAAM,IAA4B,IAAbA,EAAM,IAA4B,IAAbA,EAAM,KACjDA,EAAMhB,OAAS,IAAM,EAAI2J,EAS3B,OARiB,IAAb3I,EAAM,GACRU,EAAOV,EAAMA,EAAMhB,OAAS,GAAK,IAAM,GACnB,IAAbgB,EAAM,IACbU,EAAOV,EAAMA,EAAMhB,OAAS,GAAK,IAAM,GAE9BtB,KAAKmrC,MAAM7oC,EAAMG,MAAM,EAAG,EAAIwI,GACvC3I,EAAMG,MAAM,EAAIwI,EAAK,EAAI,EAAIA,IAG1B,IAAkB,IAAb3I,EAAM,IAA4B,IAAbA,EAAM,KAC3BA,EAAMhB,OAAS,IAAM2J,EAC/B,OAAOjL,KAAKgtC,WAAW1qC,EAAMG,MAAM,EAAG,EAAIwI,GAAmB,IAAb3I,EAAM,IAExD,MAAM,IAAIkD,MAAM,uBAClB,EAEAylC,EAAUhrC,UAAUgtC,iBAAmB,SAA0BxsC,GAC/D,OAAOT,KAAKe,OAAON,GAAK,EAC1B,EAEAwqC,EAAUhrC,UAAU+H,QAAU,SAAiBklC,GAC7C,IAAIjiC,EAAMjL,KAAK42B,MAAMvnB,EAAEvN,aACnBia,EAAI/b,KAAK09B,OAAO3uB,QAAQ,KAAM9D,GAElC,OAAIiiC,EACK,CAAEltC,KAAKmtC,OAAOprB,SAAW,EAAO,GAAO5e,OAAO4Y,GAEhD,CAAE,GAAO5Y,OAAO4Y,EAAG/b,KAAKmtC,OAAOp+B,QAAQ,KAAM9D,GACtD,EAEAggC,EAAUhrC,UAAUc,OAAS,SAAgBN,EAAKysC,GAChD,OAAO/K,EAAMphC,OAAOf,KAAKgI,QAAQklC,GAAUzsC,EAC7C,EAEAwqC,EAAUhrC,UAAUmtC,WAAa,SAAoBC,GACnD,GAAIrtC,KAAKkrC,YACP,OAAOlrC,KAET,IAAIkrC,EAAc,CAChBI,QAAS,KACTE,IAAK,KACL8B,KAAM,MAOR,OALApC,EAAYM,IAAMxrC,KAAKmsC,cAAc,GACrCjB,EAAYI,QAAUtrC,KAAKurC,YAAY,EAAG8B,GAC1CnC,EAAYoC,KAAOttC,KAAKutC,WACxBvtC,KAAKkrC,YAAcA,EAEZlrC,IACT,EAEAirC,EAAUhrC,UAAUutC,YAAc,SAAqB36B,GACrD,IAAK7S,KAAKkrC,YACR,OAAO,EAET,IAAII,EAAUtrC,KAAKkrC,YAAYI,QAC/B,QAAKA,GAGEA,EAAQS,OAAOzqC,QAAUqP,KAAKS,MAAMyB,EAAEyB,YAAc,GAAKg3B,EAAQI,KAC1E,EAEAT,EAAUhrC,UAAUsrC,YAAc,SAAqBG,EAAM2B,GAC3D,GAAIrtC,KAAKkrC,aAAelrC,KAAKkrC,YAAYI,QACvC,OAAOtrC,KAAKkrC,YAAYI,QAI1B,IAFA,IAAIA,EAAU,CAAEtrC,MACZwhB,EAAMxhB,KACDkL,EAAI,EAAGA,EAAImiC,EAAOniC,GAAKwgC,EAAM,CACpC,IAAK,IAAIvgC,EAAI,EAAGA,EAAIugC,EAAMvgC,IACxBqW,EAAMA,EAAIisB,MACZnC,EAAQzmC,KAAK2c,EACf,CACA,MAAO,CACLkqB,KAAMA,EACNK,OAAQT,EAEZ,EAEAL,EAAUhrC,UAAUksC,cAAgB,SAAuBplB,GACzD,GAAI/mB,KAAKkrC,aAAelrC,KAAKkrC,YAAYM,IACvC,OAAOxrC,KAAKkrC,YAAYM,IAK1B,IAHA,IAAIvpC,EAAM,CAAEjC,MACR4Q,GAAO,GAAKmW,GAAO,EACnB0mB,EAAc,IAAR78B,EAAY,KAAO5Q,KAAKytC,MACzBviC,EAAI,EAAGA,EAAI0F,EAAK1F,IACvBjJ,EAAIiJ,GAAKjJ,EAAIiJ,EAAI,GAAGqL,IAAIk3B,GAC1B,MAAO,CACL1mB,IAAKA,EACLglB,OAAQ9pC,EAEZ,EAEAgpC,EAAUhrC,UAAUstC,SAAW,WAC7B,OAAO,IACT,EAEAtC,EAAUhrC,UAAUmsC,KAAO,SAAcv5B,GAEvC,IADA,IAAIrC,EAAIxQ,KACCkL,EAAI,EAAGA,EAAI2H,EAAG3H,IACrBsF,EAAIA,EAAEi9B,MACR,OAAOj9B,CACT,gCC1XA,IAAI2xB,EAAQ,EAAQ,OAChBzyB,EAAK,EAAQ,OACb9P,EAAW,EAAQ,OACnBw+B,EAAO,EAAQ,OAEfp7B,EAASm/B,EAAMn/B,OAEnB,SAAS0qC,EAAarD,GAEpBrqC,KAAK2tC,QAA2B,KAAP,EAATtD,EAAK53B,GACrBzS,KAAK4tC,MAAQ5tC,KAAK2tC,UAA6B,KAAR,EAATtD,EAAK53B,GACnCzS,KAAKyf,SAAWzf,KAAK4tC,MAErBxP,EAAK79B,KAAKP,KAAM,UAAWqqC,GAE3BrqC,KAAKyS,EAAI,IAAI/C,EAAG26B,EAAK53B,EAAG,IAAI0O,KAAKnhB,KAAKgQ,IAAI8N,GAC1C9d,KAAKyS,EAAIzS,KAAKyS,EAAEgR,MAAMzjB,KAAKgQ,KAC3BhQ,KAAKqQ,EAAI,IAAIX,EAAG26B,EAAKh6B,EAAG,IAAIoT,MAAMzjB,KAAKgQ,KACvChQ,KAAKszB,GAAKtzB,KAAKqQ,EAAEoU,SACjBzkB,KAAK0pB,EAAI,IAAIha,EAAG26B,EAAK3gB,EAAG,IAAIjG,MAAMzjB,KAAKgQ,KACvChQ,KAAK6tC,GAAK7tC,KAAK0pB,EAAE1F,OAAOhkB,KAAK0pB,GAE7B1mB,GAAQhD,KAAK2tC,SAAwC,IAA7B3tC,KAAKqQ,EAAEwT,UAAUnB,KAAK,IAC9C1iB,KAAK8tC,KAAwB,KAAP,EAATzD,EAAKh6B,EACpB,CAuFA,SAAS09B,EAAMnX,EAAO7a,EAAGC,EAAG6K,EAAGzS,GAC7BgqB,EAAK6M,UAAU1qC,KAAKP,KAAM42B,EAAO,cACvB,OAAN7a,GAAoB,OAANC,GAAoB,OAAN6K,GAC9B7mB,KAAK+b,EAAI/b,KAAK42B,MAAM0T,KACpBtqC,KAAKgc,EAAIhc,KAAK42B,MAAMlQ,IACpB1mB,KAAK6mB,EAAI7mB,KAAK42B,MAAMlQ,IACpB1mB,KAAKoU,EAAIpU,KAAK42B,MAAM0T,KACpBtqC,KAAKguC,MAAO,IAEZhuC,KAAK+b,EAAI,IAAIrM,EAAGqM,EAAG,IACnB/b,KAAKgc,EAAI,IAAItM,EAAGsM,EAAG,IACnBhc,KAAK6mB,EAAIA,EAAI,IAAInX,EAAGmX,EAAG,IAAM7mB,KAAK42B,MAAMlQ,IACxC1mB,KAAKoU,EAAIA,GAAK,IAAI1E,EAAG0E,EAAG,IACnBpU,KAAK+b,EAAE/L,MACVhQ,KAAK+b,EAAI/b,KAAK+b,EAAE0H,MAAMzjB,KAAK42B,MAAM5mB,MAC9BhQ,KAAKgc,EAAEhM,MACVhQ,KAAKgc,EAAIhc,KAAKgc,EAAEyH,MAAMzjB,KAAK42B,MAAM5mB,MAC9BhQ,KAAK6mB,EAAE7W,MACVhQ,KAAK6mB,EAAI7mB,KAAK6mB,EAAEpD,MAAMzjB,KAAK42B,MAAM5mB,MAC/BhQ,KAAKoU,IAAMpU,KAAKoU,EAAEpE,MACpBhQ,KAAKoU,EAAIpU,KAAKoU,EAAEqP,MAAMzjB,KAAK42B,MAAM5mB,MACnChQ,KAAKguC,KAAOhuC,KAAK6mB,IAAM7mB,KAAK42B,MAAMlQ,IAG9B1mB,KAAK42B,MAAMnX,WAAazf,KAAKoU,IAC/BpU,KAAKoU,EAAIpU,KAAK+b,EAAEuI,OAAOtkB,KAAKgc,GACvBhc,KAAKguC,OACRhuC,KAAKoU,EAAIpU,KAAKoU,EAAEkQ,OAAOtkB,KAAK6mB,EAAE/B,aAGtC,CApHAllB,EAAS8tC,EAActP,GACvB95B,EAAOjF,QAAUquC,EAEjBA,EAAaztC,UAAUguC,MAAQ,SAAetoC,GAC5C,OAAI3F,KAAK4tC,MACAjoC,EAAIof,SAEJ/kB,KAAKyS,EAAE6R,OAAO3e,EACzB,EAEA+nC,EAAaztC,UAAUiuC,MAAQ,SAAevoC,GAC5C,OAAI3F,KAAK8tC,KACAnoC,EAEA3F,KAAKqQ,EAAEiU,OAAO3e,EACzB,EAGA+nC,EAAaztC,UAAU4rC,OAAS,SAAgB9vB,EAAGC,EAAG6K,EAAGzS,GACvD,OAAOpU,KAAKmrC,MAAMpvB,EAAGC,EAAG6K,EAAGzS,EAC7B,EAEAs5B,EAAaztC,UAAU+sC,WAAa,SAAoBjxB,EAAGgC,IACzDhC,EAAI,IAAIrM,EAAGqM,EAAG,KACP/L,MACL+L,EAAIA,EAAE0H,MAAMzjB,KAAKgQ,MAEnB,IAAIwS,EAAKzG,EAAE0I,SACP0pB,EAAMnuC,KAAKszB,GAAGpP,OAAOlkB,KAAKyS,EAAE6R,OAAO9B,IACnC4rB,EAAMpuC,KAAK0mB,IAAIxC,OAAOlkB,KAAKszB,GAAGhP,OAAOtkB,KAAK0pB,GAAGpF,OAAO9B,IAEpD6rB,EAAKF,EAAI7pB,OAAO8pB,EAAItpB,WACpB9I,EAAIqyB,EAAGzpB,UACX,GAA6C,IAAzC5I,EAAEyI,SAASP,OAAOmqB,GAAIt9B,IAAI/Q,KAAKsqC,MACjC,MAAM,IAAI9kC,MAAM,iBAElB,IAAI2c,EAAQnG,EAAE6H,UAAU1B,QAIxB,OAHIpE,IAAQoE,IAAUpE,GAAOoE,KAC3BnG,EAAIA,EAAE+I,UAED/kB,KAAKmrC,MAAMpvB,EAAGC,EACvB,EAEA0xB,EAAaztC,UAAUquC,WAAa,SAAoBtyB,EAAG+B,IACzD/B,EAAI,IAAItM,EAAGsM,EAAG,KACPhM,MACLgM,EAAIA,EAAEyH,MAAMzjB,KAAKgQ,MAGnB,IAAIq+B,EAAKryB,EAAEyI,SACP2pB,EAAMC,EAAGnqB,OAAOlkB,KAAKszB,IACrB6a,EAAME,EAAG/pB,OAAOtkB,KAAK0pB,GAAGpF,OAAOtkB,KAAKszB,IAAIpP,OAAOlkB,KAAKyS,GACpD+P,EAAK4rB,EAAI9pB,OAAO6pB,EAAIrpB,WAExB,GAA0B,IAAtBtC,EAAGzR,IAAI/Q,KAAKsqC,MAAa,CAC3B,GAAIvsB,EACF,MAAM,IAAIvY,MAAM,iBAEhB,OAAOxF,KAAKmrC,MAAMnrC,KAAKsqC,KAAMtuB,EACjC,CAEA,IAAID,EAAIyG,EAAGoC,UACX,GAA6C,IAAzC7I,EAAE0I,SAASP,OAAO1B,GAAIzR,IAAI/Q,KAAKsqC,MACjC,MAAM,IAAI9kC,MAAM,iBAKlB,OAHIuW,EAAE8H,UAAU1B,UAAYpE,IAC1BhC,EAAIA,EAAEgJ,UAED/kB,KAAKmrC,MAAMpvB,EAAGC,EACvB,EAEA0xB,EAAaztC,UAAUmrC,SAAW,SAAkBD,GAClD,GAAIA,EAAMoD,aACR,OAAO,EAGTpD,EAAMqD,YAEN,IAAIhsB,EAAK2oB,EAAMpvB,EAAE0I,SACb4pB,EAAKlD,EAAMnvB,EAAEyI,SACb2pB,EAAM5rB,EAAG8B,OAAOtkB,KAAKyS,GAAGuR,OAAOqqB,GAC/BF,EAAMnuC,KAAKszB,GAAGhP,OAAOtkB,KAAK0mB,IAAI1C,OAAOhkB,KAAK0pB,EAAEpF,OAAO9B,GAAI8B,OAAO+pB,KAElE,OAAwB,IAAjBD,EAAIr9B,IAAIo9B,EACjB,EAiCAvuC,EAASmuC,EAAO3P,EAAK6M,WAErByC,EAAaztC,UAAUsqC,cAAgB,SAAuBzmC,GAC5D,OAAOiqC,EAAMU,SAASzuC,KAAM8D,EAC9B,EAEA4pC,EAAaztC,UAAUkrC,MAAQ,SAAepvB,EAAGC,EAAG6K,EAAGzS,GACrD,OAAO,IAAI25B,EAAM/tC,KAAM+b,EAAGC,EAAG6K,EAAGzS,EAClC,EAEA25B,EAAMU,SAAW,SAAkB7X,EAAO9yB,GACxC,OAAO,IAAIiqC,EAAMnX,EAAO9yB,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAC9C,EAEAiqC,EAAM9tC,UAAUkS,QAAU,WACxB,OAAInS,KAAKuuC,aACA,sBACF,gBAAkBvuC,KAAK+b,EAAE8H,UAAU/X,SAAS,GAAI,GACnD,OAAS9L,KAAKgc,EAAE6H,UAAU/X,SAAS,GAAI,GACvC,OAAS9L,KAAK6mB,EAAEhD,UAAU/X,SAAS,GAAI,GAAK,GAClD,EAEAiiC,EAAM9tC,UAAUsuC,WAAa,WAE3B,OAA0B,IAAnBvuC,KAAK+b,EAAE2G,KAAK,KACO,IAAvB1iB,KAAKgc,EAAEjL,IAAI/Q,KAAK6mB,IAChB7mB,KAAKguC,MAAqC,IAA7BhuC,KAAKgc,EAAEjL,IAAI/Q,KAAK42B,MAAMvmB,GACxC,EAEA09B,EAAM9tC,UAAUyuC,QAAU,WAMxB,IAAIj8B,EAAIzS,KAAK+b,EAAE0I,SAEX/R,EAAI1S,KAAKgc,EAAEyI,SAEXpU,EAAIrQ,KAAK6mB,EAAEpC,SACfpU,EAAIA,EAAE4T,QAAQ5T,GAEd,IAAIqZ,EAAI1pB,KAAK42B,MAAMqX,MAAMx7B,GAErBrS,EAAIJ,KAAK+b,EAAEiI,OAAOhkB,KAAKgc,GAAGyI,SAASN,QAAQ1R,GAAG0R,QAAQzR,GAEtDoP,EAAI4H,EAAE1F,OAAOtR,GAEbi8B,EAAI7sB,EAAEoC,OAAO7T,GAEbqP,EAAIgK,EAAExF,OAAOxR,GAEbk8B,EAAKxuC,EAAEkkB,OAAOqqB,GAEdE,EAAK/sB,EAAEwC,OAAO5E,GAEdovB,EAAK1uC,EAAEkkB,OAAO5E,GAEdqvB,EAAKJ,EAAErqB,OAAOxC,GAClB,OAAO9hB,KAAK42B,MAAMuU,MAAMyD,EAAIC,EAAIE,EAAID,EACtC,EAEAf,EAAM9tC,UAAU+uC,SAAW,WAQzB,IAMIJ,EACAC,EACAE,EACA3uC,EACAsf,EACAvU,EAXAuH,EAAI1S,KAAK+b,EAAEiI,OAAOhkB,KAAKgc,GAAGyI,SAE1BpU,EAAIrQ,KAAK+b,EAAE0I,SAEXiF,EAAI1pB,KAAKgc,EAAEyI,SAQf,GAAIzkB,KAAK42B,MAAM+W,QAAS,CAItB,IAAIgB,GAFJvuC,EAAIJ,KAAK42B,MAAMqX,MAAM59B,IAEX2T,OAAO0F,GACb1pB,KAAKguC,MAEPY,EAAKl8B,EAAEwR,OAAO7T,GAAG6T,OAAOwF,GAAGpF,OAAOqqB,EAAEzqB,OAAOlkB,KAAK42B,MAAMjpB,MAEtDkhC,EAAKF,EAAErqB,OAAOlkB,EAAE8jB,OAAOwF,IAEvBqlB,EAAKJ,EAAElqB,SAASP,OAAOyqB,GAAGzqB,OAAOyqB,KAGjCjvB,EAAI1f,KAAK6mB,EAAEpC,SAEXtZ,EAAIwjC,EAAEzqB,OAAOxE,GAAGyE,QAAQzE,GAExBkvB,EAAKl8B,EAAEwR,OAAO7T,GAAG8T,QAAQuF,GAAGpF,OAAOnZ,GAEnC0jC,EAAKF,EAAErqB,OAAOlkB,EAAE8jB,OAAOwF,IAEvBqlB,EAAKJ,EAAErqB,OAAOnZ,GAElB,MAEE/K,EAAIiQ,EAAE2T,OAAO0F,GAEbhK,EAAI1f,KAAK42B,MAAMsX,MAAMluC,KAAK6mB,GAAGpC,SAE7BtZ,EAAI/K,EAAE8jB,OAAOxE,GAAGwE,OAAOxE,GAEvBkvB,EAAK5uC,KAAK42B,MAAMsX,MAAMx7B,EAAEyR,QAAQ/jB,IAAIkkB,OAAOnZ,GAE3C0jC,EAAK7uC,KAAK42B,MAAMsX,MAAM9tC,GAAGkkB,OAAOjU,EAAE8T,QAAQuF,IAE1CqlB,EAAK3uC,EAAEkkB,OAAOnZ,GAEhB,OAAOnL,KAAK42B,MAAMuU,MAAMyD,EAAIC,EAAIE,EAClC,EAEAhB,EAAM9tC,UAAUwtC,IAAM,WACpB,OAAIztC,KAAKuuC,aACAvuC,KAGLA,KAAK42B,MAAMnX,SACNzf,KAAK0uC,UAEL1uC,KAAKgvC,UAChB,EAEAjB,EAAM9tC,UAAUgvC,QAAU,SAAiB5/B,GAMzC,IAAIoD,EAAIzS,KAAKgc,EAAEkI,OAAOlkB,KAAK+b,GAAGuI,OAAOjV,EAAE2M,EAAEkI,OAAO7U,EAAE0M,IAE9CrJ,EAAI1S,KAAKgc,EAAEgI,OAAOhkB,KAAK+b,GAAGuI,OAAOjV,EAAE2M,EAAEgI,OAAO3U,EAAE0M,IAE9C1L,EAAIrQ,KAAKoU,EAAEkQ,OAAOtkB,KAAK42B,MAAMiX,IAAIvpB,OAAOjV,EAAE+E,GAE1CsV,EAAI1pB,KAAK6mB,EAAEvC,OAAOjV,EAAEwX,EAAE7C,OAAO3U,EAAEwX,IAE/BzmB,EAAIsS,EAAEwR,OAAOzR,GAEbk8B,EAAIjlB,EAAExF,OAAO7T,GAEbyR,EAAI4H,EAAE1F,OAAO3T,GAEbqP,EAAIhN,EAAEsR,OAAOvR,GAEbm8B,EAAKxuC,EAAEkkB,OAAOqqB,GAEdE,EAAK/sB,EAAEwC,OAAO5E,GAEdovB,EAAK1uC,EAAEkkB,OAAO5E,GAEdqvB,EAAKJ,EAAErqB,OAAOxC,GAClB,OAAO9hB,KAAK42B,MAAMuU,MAAMyD,EAAIC,EAAIE,EAAID,EACtC,EAEAf,EAAM9tC,UAAUivC,SAAW,SAAkB7/B,GAO3C,IAgBIw/B,EACAE,EAjBAt8B,EAAIzS,KAAK6mB,EAAEvC,OAAOjV,EAAEwX,GAEpBnU,EAAID,EAAEgS,SAENpU,EAAIrQ,KAAK+b,EAAEuI,OAAOjV,EAAE0M,GAEpB2N,EAAI1pB,KAAKgc,EAAEsI,OAAOjV,EAAE2M,GAEpB5b,EAAIJ,KAAK42B,MAAMlN,EAAEpF,OAAOjU,GAAGiU,OAAOoF,GAElCilB,EAAIj8B,EAAEwR,OAAO9jB,GAEb0hB,EAAIpP,EAAEsR,OAAO5jB,GAEbmM,EAAMvM,KAAK+b,EAAEiI,OAAOhkB,KAAKgc,GAAGsI,OAAOjV,EAAE0M,EAAEiI,OAAO3U,EAAE2M,IAAImI,QAAQ9T,GAAG8T,QAAQuF,GACvEklB,EAAKn8B,EAAE6R,OAAOqqB,GAAGrqB,OAAO/X,GAc5B,OAXIvM,KAAK42B,MAAM+W,SAEbkB,EAAKp8B,EAAE6R,OAAOxC,GAAGwC,OAAOoF,EAAExF,OAAOlkB,KAAK42B,MAAMqX,MAAM59B,KAElD0+B,EAAKJ,EAAErqB,OAAOxC,KAGd+sB,EAAKp8B,EAAE6R,OAAOxC,GAAGwC,OAAOoF,EAAExF,OAAO7T,IAEjC0+B,EAAK/uC,KAAK42B,MAAMsX,MAAMS,GAAGrqB,OAAOxC,IAE3B9hB,KAAK42B,MAAMuU,MAAMyD,EAAIC,EAAIE,EAClC,EAEAhB,EAAM9tC,UAAUsW,IAAM,SAAalH,GACjC,OAAIrP,KAAKuuC,aACAl/B,EACLA,EAAEk/B,aACGvuC,KAELA,KAAK42B,MAAMnX,SACNzf,KAAKivC,QAAQ5/B,GAEbrP,KAAKkvC,SAAS7/B,EACzB,EAEA0+B,EAAM9tC,UAAUyQ,IAAM,SAAamC,GACjC,OAAI7S,KAAKwtC,YAAY36B,GACZ7S,KAAK42B,MAAMyU,aAAarrC,KAAM6S,GAE9B7S,KAAK42B,MAAMqV,SAASjsC,KAAM6S,EACrC,EAEAk7B,EAAM9tC,UAAUkvC,OAAS,SAAgBxK,EAAIt1B,EAAGu1B,GAC9C,OAAO5kC,KAAK42B,MAAMyV,YAAY,EAAG,CAAErsC,KAAMqP,GAAK,CAAEs1B,EAAIC,GAAM,GAAG,EAC/D,EAEAmJ,EAAM9tC,UAAUmvC,QAAU,SAAiBzK,EAAIt1B,EAAGu1B,GAChD,OAAO5kC,KAAK42B,MAAMyV,YAAY,EAAG,CAAErsC,KAAMqP,GAAK,CAAEs1B,EAAIC,GAAM,GAAG,EAC/D,EAEAmJ,EAAM9tC,UAAUuuC,UAAY,WAC1B,GAAIxuC,KAAKguC,KACP,OAAOhuC,KAGT,IAAIqvC,EAAKrvC,KAAK6mB,EAAE/B,UAOhB,OANA9kB,KAAK+b,EAAI/b,KAAK+b,EAAEuI,OAAO+qB,GACvBrvC,KAAKgc,EAAIhc,KAAKgc,EAAEsI,OAAO+qB,GACnBrvC,KAAKoU,IACPpU,KAAKoU,EAAIpU,KAAKoU,EAAEkQ,OAAO+qB,IACzBrvC,KAAK6mB,EAAI7mB,KAAK42B,MAAMlQ,IACpB1mB,KAAKguC,MAAO,EACLhuC,IACT,EAEA+tC,EAAM9tC,UAAUkV,IAAM,WACpB,OAAOnV,KAAK42B,MAAMuU,MAAMnrC,KAAK+b,EAAEgJ,SAC7B/kB,KAAKgc,EACLhc,KAAK6mB,EACL7mB,KAAKoU,GAAKpU,KAAKoU,EAAE2Q,SACrB,EAEAgpB,EAAM9tC,UAAUy9B,KAAO,WAErB,OADA19B,KAAKwuC,YACExuC,KAAK+b,EAAE8H,SAChB,EAEAkqB,EAAM9tC,UAAUktC,KAAO,WAErB,OADAntC,KAAKwuC,YACExuC,KAAKgc,EAAE6H,SAChB,EAEAkqB,EAAM9tC,UAAUsjB,GAAK,SAAY8Z,GAC/B,OAAOr9B,OAASq9B,GACyB,IAAlCr9B,KAAK09B,OAAO3sB,IAAIssB,EAAMK,SACY,IAAlC19B,KAAKmtC,OAAOp8B,IAAIssB,EAAM8P,OAC/B,EAEAY,EAAM9tC,UAAUqvC,OAAS,SAAgBvzB,GACvC,IAAI4B,EAAK5B,EAAE0H,MAAMzjB,KAAK42B,MAAM5mB,KAAKsU,OAAOtkB,KAAK6mB,GAC7C,GAAuB,IAAnB7mB,KAAK+b,EAAEhL,IAAI4M,GACb,OAAO,EAIT,IAFA,IAAI4xB,EAAKxzB,EAAEvX,QACP4P,EAAIpU,KAAK42B,MAAMmU,KAAKzmB,OAAOtkB,KAAK6mB,KAC3B,CAEP,GADA0oB,EAAGl5B,KAAKrW,KAAK42B,MAAM/Y,GACf0xB,EAAGx+B,IAAI/Q,KAAK42B,MAAMvnB,IAAM,EAC1B,OAAO,EAGT,GADAsO,EAAGsG,QAAQ7P,GACY,IAAnBpU,KAAK+b,EAAEhL,IAAI4M,GACb,OAAO,CACX,CACF,EAGAowB,EAAM9tC,UAAU+rC,IAAM+B,EAAM9tC,UAAUuuC,UACtCT,EAAM9tC,UAAU6rC,SAAWiC,EAAM9tC,UAAUsW,gCChb3C,IAAIqgB,EAAQv3B,EAEZu3B,EAAMp3B,KAAO,EAAQ,OACrBo3B,EAAM4Y,MAAQ,EAAQ,OACtB5Y,EAAM1P,KAAO,EAAQ,OACrB0P,EAAM6Y,QAAU,EAAQ,qCCLxB,IAAI//B,EAAK,EAAQ,OACb9P,EAAW,EAAQ,OACnBw+B,EAAO,EAAQ,OAEf+D,EAAQ,EAAQ,OAEpB,SAASuN,EAAUrF,GACjBjM,EAAK79B,KAAKP,KAAM,OAAQqqC,GAExBrqC,KAAKyS,EAAI,IAAI/C,EAAG26B,EAAK53B,EAAG,IAAIgR,MAAMzjB,KAAKgQ,KACvChQ,KAAK0S,EAAI,IAAIhD,EAAG26B,EAAK33B,EAAG,IAAI+Q,MAAMzjB,KAAKgQ,KACvChQ,KAAK2vC,GAAK,IAAIjgC,EAAG,GAAG+T,MAAMzjB,KAAKgQ,KAAK8U,UACpC9kB,KAAK2N,IAAM,IAAI+B,EAAG,GAAG+T,MAAMzjB,KAAKgQ,KAChChQ,KAAK4vC,IAAM5vC,KAAK2vC,GAAGrrB,OAAOtkB,KAAKyS,EAAEuR,OAAOhkB,KAAK2N,KAC/C,CAaA,SAASogC,EAAMnX,EAAO7a,EAAG8K,GACvBuX,EAAK6M,UAAU1qC,KAAKP,KAAM42B,EAAO,cACvB,OAAN7a,GAAoB,OAAN8K,GAChB7mB,KAAK+b,EAAI/b,KAAK42B,MAAMlQ,IACpB1mB,KAAK6mB,EAAI7mB,KAAK42B,MAAM0T,OAEpBtqC,KAAK+b,EAAI,IAAIrM,EAAGqM,EAAG,IACnB/b,KAAK6mB,EAAI,IAAInX,EAAGmX,EAAG,IACd7mB,KAAK+b,EAAE/L,MACVhQ,KAAK+b,EAAI/b,KAAK+b,EAAE0H,MAAMzjB,KAAK42B,MAAM5mB,MAC9BhQ,KAAK6mB,EAAE7W,MACVhQ,KAAK6mB,EAAI7mB,KAAK6mB,EAAEpD,MAAMzjB,KAAK42B,MAAM5mB,MAEvC,CAzBApQ,EAAS8vC,EAAWtR,GACpB95B,EAAOjF,QAAUqwC,EAEjBA,EAAUzvC,UAAUmrC,SAAW,SAAkBD,GAC/C,IAAIpvB,EAAIovB,EAAMqD,YAAYzyB,EACtByG,EAAKzG,EAAE0I,SACP0pB,EAAM3rB,EAAG8B,OAAOvI,GAAGiI,OAAOxB,EAAG8B,OAAOtkB,KAAKyS,IAAIuR,OAAOjI,GAGxD,OAA+B,IAFvBoyB,EAAIvpB,UAEHH,SAAS1T,IAAIo9B,EACxB,EAgBAvuC,EAASmuC,EAAO3P,EAAK6M,WAErByE,EAAUzvC,UAAU8sC,YAAc,SAAqBzqC,EAAO7B,GAC5D,OAAOT,KAAKmrC,MAAMhJ,EAAMpzB,QAAQzM,EAAO7B,GAAM,EAC/C,EAEAivC,EAAUzvC,UAAUkrC,MAAQ,SAAepvB,EAAG8K,GAC5C,OAAO,IAAIknB,EAAM/tC,KAAM+b,EAAG8K,EAC5B,EAEA6oB,EAAUzvC,UAAUsqC,cAAgB,SAAuBzmC,GACzD,OAAOiqC,EAAMU,SAASzuC,KAAM8D,EAC9B,EAEAiqC,EAAM9tC,UAAUmtC,WAAa,WAE7B,EAEAW,EAAM9tC,UAAU+H,QAAU,WACxB,OAAOhI,KAAK09B,OAAO3uB,QAAQ,KAAM/O,KAAK42B,MAAMvnB,EAAEvN,aAChD,EAEAisC,EAAMU,SAAW,SAAkB7X,EAAO9yB,GACxC,OAAO,IAAIiqC,EAAMnX,EAAO9yB,EAAI,GAAIA,EAAI,IAAM8yB,EAAMlQ,IAClD,EAEAqnB,EAAM9tC,UAAUkS,QAAU,WACxB,OAAInS,KAAKuuC,aACA,sBACF,gBAAkBvuC,KAAK+b,EAAE8H,UAAU/X,SAAS,GAAI,GACnD,OAAS9L,KAAK6mB,EAAEhD,UAAU/X,SAAS,GAAI,GAAK,GAClD,EAEAiiC,EAAM9tC,UAAUsuC,WAAa,WAE3B,OAA0B,IAAnBvuC,KAAK6mB,EAAEnE,KAAK,EACrB,EAEAqrB,EAAM9tC,UAAUwtC,IAAM,WAKpB,IAEIoC,EAFI7vC,KAAK+b,EAAEiI,OAAOhkB,KAAK6mB,GAEhBpC,SAIPqrB,EAFI9vC,KAAK+b,EAAEmI,OAAOlkB,KAAK6mB,GAEhBpC,SAEPpU,EAAIw/B,EAAG3rB,OAAO4rB,GAEdlB,EAAKiB,EAAGvrB,OAAOwrB,GAEff,EAAK1+B,EAAEiU,OAAOwrB,EAAG9rB,OAAOhkB,KAAK42B,MAAMgZ,IAAItrB,OAAOjU,KAClD,OAAOrQ,KAAK42B,MAAMuU,MAAMyD,EAAIG,EAC9B,EAEAhB,EAAM9tC,UAAUsW,IAAM,WACpB,MAAM,IAAI/Q,MAAM,oCAClB,EAEAuoC,EAAM9tC,UAAU8vC,QAAU,SAAiB1gC,EAAGwR,GAK5C,IAAIpO,EAAIzS,KAAK+b,EAAEiI,OAAOhkB,KAAK6mB,GAEvBnU,EAAI1S,KAAK+b,EAAEmI,OAAOlkB,KAAK6mB,GAEvBxW,EAAIhB,EAAE0M,EAAEiI,OAAO3U,EAAEwX,GAIjBmpB,EAFI3gC,EAAE0M,EAAEmI,OAAO7U,EAAEwX,GAEVvC,OAAO7R,GAEdw9B,EAAK5/B,EAAEiU,OAAO5R,GAEdk8B,EAAK/tB,EAAKgG,EAAEvC,OAAO0rB,EAAGhsB,OAAOisB,GAAIxrB,UAEjCsqB,EAAKluB,EAAK9E,EAAEuI,OAAO0rB,EAAG7rB,QAAQ8rB,GAAIxrB,UACtC,OAAOzkB,KAAK42B,MAAMuU,MAAMyD,EAAIG,EAC9B,EAEAhB,EAAM9tC,UAAUyQ,IAAM,SAAamC,GAMjC,IALA,IAAIuB,EAAIvB,EAAErO,QACNiO,EAAIzS,KACJ0S,EAAI1S,KAAK42B,MAAMuU,MAAM,KAAM,MAGtB/rB,EAAO,GAAkB,IAAdhL,EAAEsO,KAAK,GAAUtO,EAAEH,OAAO,GAC5CmL,EAAKva,KAAKuP,EAAEJ,MAAM,IAEpB,IAAK,IAAI9I,EAAIkU,EAAK9d,OAAS,EAAG4J,GAAK,EAAGA,IACpB,IAAZkU,EAAKlU,IAEPuH,EAAIA,EAAEs9B,QAAQr9B,EARV1S,MAUJ0S,EAAIA,EAAE+6B,QAGN/6B,EAAID,EAAEs9B,QAAQr9B,EAbV1S,MAeJyS,EAAIA,EAAEg7B,OAGV,OAAO/6B,CACT,EAEAq7B,EAAM9tC,UAAUkvC,OAAS,WACvB,MAAM,IAAI3pC,MAAM,oCAClB,EAEAuoC,EAAM9tC,UAAUiwC,QAAU,WACxB,MAAM,IAAI1qC,MAAM,oCAClB,EAEAuoC,EAAM9tC,UAAUsjB,GAAK,SAAY8Z,GAC/B,OAAyC,IAAlCr9B,KAAK09B,OAAO3sB,IAAIssB,EAAMK,OAC/B,EAEAqQ,EAAM9tC,UAAUuuC,UAAY,WAG1B,OAFAxuC,KAAK+b,EAAI/b,KAAK+b,EAAEuI,OAAOtkB,KAAK6mB,EAAE/B,WAC9B9kB,KAAK6mB,EAAI7mB,KAAK42B,MAAMlQ,IACb1mB,IACT,EAEA+tC,EAAM9tC,UAAUy9B,KAAO,WAIrB,OAFA19B,KAAKwuC,YAEExuC,KAAK+b,EAAE8H,SAChB,gCC/KA,IAAIse,EAAQ,EAAQ,OAChBzyB,EAAK,EAAQ,OACb9P,EAAW,EAAQ,OACnBw+B,EAAO,EAAQ,OAEfp7B,EAASm/B,EAAMn/B,OAEnB,SAASmtC,EAAW9F,GAClBjM,EAAK79B,KAAKP,KAAM,QAASqqC,GAEzBrqC,KAAKyS,EAAI,IAAI/C,EAAG26B,EAAK53B,EAAG,IAAIgR,MAAMzjB,KAAKgQ,KACvChQ,KAAK0S,EAAI,IAAIhD,EAAG26B,EAAK33B,EAAG,IAAI+Q,MAAMzjB,KAAKgQ,KACvChQ,KAAKowC,KAAOpwC,KAAK2N,IAAImX,UAErB9kB,KAAKqwC,MAAqC,IAA7BrwC,KAAKyS,EAAEoR,UAAUnB,KAAK,GACnC1iB,KAAKswC,OAAmD,IAA1CtwC,KAAKyS,EAAEoR,UAAUrN,IAAIxW,KAAKqP,GAAGqT,MAAM,GAGjD1iB,KAAKuwC,KAAOvwC,KAAKwwC,iBAAiBnG,GAClCrqC,KAAKywC,YAAc,IAAI/uC,MAAM,GAC7B1B,KAAK0wC,YAAc,IAAIhvC,MAAM,EAC/B,CAmOA,SAASqsC,EAAMnX,EAAO7a,EAAGC,EAAG20B,GAC1BvS,EAAK6M,UAAU1qC,KAAKP,KAAM42B,EAAO,UACvB,OAAN7a,GAAoB,OAANC,GAChBhc,KAAK+b,EAAI,KACT/b,KAAKgc,EAAI,KACThc,KAAK4wC,KAAM,IAEX5wC,KAAK+b,EAAI,IAAIrM,EAAGqM,EAAG,IACnB/b,KAAKgc,EAAI,IAAItM,EAAGsM,EAAG,IAEf20B,IACF3wC,KAAK+b,EAAEgI,SAAS/jB,KAAK42B,MAAM5mB,KAC3BhQ,KAAKgc,EAAE+H,SAAS/jB,KAAK42B,MAAM5mB,MAExBhQ,KAAK+b,EAAE/L,MACVhQ,KAAK+b,EAAI/b,KAAK+b,EAAE0H,MAAMzjB,KAAK42B,MAAM5mB,MAC9BhQ,KAAKgc,EAAEhM,MACVhQ,KAAKgc,EAAIhc,KAAKgc,EAAEyH,MAAMzjB,KAAK42B,MAAM5mB,MACnChQ,KAAK4wC,KAAM,EAEf,CA2NA,SAASC,EAAOja,EAAO7a,EAAGC,EAAG6K,GAC3BuX,EAAK6M,UAAU1qC,KAAKP,KAAM42B,EAAO,YACvB,OAAN7a,GAAoB,OAANC,GAAoB,OAAN6K,GAC9B7mB,KAAK+b,EAAI/b,KAAK42B,MAAMlQ,IACpB1mB,KAAKgc,EAAIhc,KAAK42B,MAAMlQ,IACpB1mB,KAAK6mB,EAAI,IAAInX,EAAG,KAEhB1P,KAAK+b,EAAI,IAAIrM,EAAGqM,EAAG,IACnB/b,KAAKgc,EAAI,IAAItM,EAAGsM,EAAG,IACnBhc,KAAK6mB,EAAI,IAAInX,EAAGmX,EAAG,KAEhB7mB,KAAK+b,EAAE/L,MACVhQ,KAAK+b,EAAI/b,KAAK+b,EAAE0H,MAAMzjB,KAAK42B,MAAM5mB,MAC9BhQ,KAAKgc,EAAEhM,MACVhQ,KAAKgc,EAAIhc,KAAKgc,EAAEyH,MAAMzjB,KAAK42B,MAAM5mB,MAC9BhQ,KAAK6mB,EAAE7W,MACVhQ,KAAK6mB,EAAI7mB,KAAK6mB,EAAEpD,MAAMzjB,KAAK42B,MAAM5mB,MAEnChQ,KAAKguC,KAAOhuC,KAAK6mB,IAAM7mB,KAAK42B,MAAMlQ,GACpC,CApeA9mB,EAASuwC,EAAY/R,GACrB95B,EAAOjF,QAAU8wC,EAEjBA,EAAWlwC,UAAUuwC,iBAAmB,SAA0BnG,GAEhE,GAAKrqC,KAAKqwC,OAAUrwC,KAAK8hB,GAAM9hB,KAAK6d,GAAwB,IAAnB7d,KAAKqP,EAAEgE,KAAK,GAArD,CAIA,IAAIi6B,EACAwD,EACJ,GAAIzG,EAAKiD,KACPA,EAAO,IAAI59B,EAAG26B,EAAKiD,KAAM,IAAI7pB,MAAMzjB,KAAKgQ,SACnC,CACL,IAAI+gC,EAAQ/wC,KAAKgxC,cAAchxC,KAAKqP,GAGpCi+B,GADAA,EAAOyD,EAAM,GAAGhgC,IAAIggC,EAAM,IAAM,EAAIA,EAAM,GAAKA,EAAM,IACzCttB,MAAMzjB,KAAKgQ,IACzB,CACA,GAAIq6B,EAAKyG,OACPA,EAAS,IAAIphC,EAAG26B,EAAKyG,OAAQ,QACxB,CAEL,IAAIG,EAAUjxC,KAAKgxC,cAAchxC,KAAK6d,GACsB,IAAxD7d,KAAK8hB,EAAEpR,IAAIugC,EAAQ,IAAIl1B,EAAEhL,IAAI/Q,KAAK8hB,EAAE/F,EAAEuI,OAAOgpB,IAC/CwD,EAASG,EAAQ,IAEjBH,EAASG,EAAQ,GACjBjuC,EAA2D,IAApDhD,KAAK8hB,EAAEpR,IAAIogC,GAAQ/0B,EAAEhL,IAAI/Q,KAAK8hB,EAAE/F,EAAEuI,OAAOgpB,KAEpD,CAeA,MAAO,CACLA,KAAMA,EACNwD,OAAQA,EACRI,MAdE7G,EAAK6G,MACC7G,EAAK6G,MAAMtvC,KAAI,SAASuvC,GAC9B,MAAO,CACL1+B,EAAG,IAAI/C,EAAGyhC,EAAI1+B,EAAG,IACjBC,EAAG,IAAIhD,EAAGyhC,EAAIz+B,EAAG,IAErB,IAEQ1S,KAAKoxC,cAAcN,GApCrB,CA4CV,EAEAX,EAAWlwC,UAAU+wC,cAAgB,SAAuBrrC,GAI1D,IAAIqK,EAAMrK,IAAQ3F,KAAKqP,EAAIrP,KAAKgQ,IAAMN,EAAGwX,KAAKvhB,GAC1CyqC,EAAO,IAAI1gC,EAAG,GAAG+T,MAAMzT,GAAK8U,UAC5BusB,EAAQjB,EAAKrrB,SAEb/H,EAAI,IAAItN,EAAG,GAAG+T,MAAMzT,GAAK+U,SAASH,UAAUN,OAAO8rB,GAIvD,MAAO,CAFEiB,EAAMrtB,OAAOhH,GAAG6G,UAChBwtB,EAAMntB,OAAOlH,GAAG6G,UAE3B,EAEAssB,EAAWlwC,UAAUmxC,cAAgB,SAAuBN,GA2B1D,IAzBA,IAYIl6B,EACA8B,EAEA3B,EACA8B,EAEA3B,EACA8B,EAEAs4B,EAEA9gC,EACAuL,EAxBAw1B,EAAWvxC,KAAK6d,EAAEoC,MAAMtP,KAAK6gC,MAAMxxC,KAAK6d,EAAEvJ,YAAc,IAIxD6S,EAAI2pB,EACJ1oB,EAAIpoB,KAAK6d,EAAErZ,QACX+d,EAAK,IAAI7S,EAAG,GACZ+hC,EAAK,IAAI/hC,EAAG,GACZ8S,EAAK,IAAI9S,EAAG,GACZ2+B,EAAK,IAAI3+B,EAAG,GAaZxE,EAAI,EAGa,IAAdic,EAAEzE,KAAK,IAAU,CACtB,IAAI3O,EAAIqU,EAAErH,IAAIoG,GACd3W,EAAI4X,EAAE5R,IAAIzC,EAAErD,IAAIyW,IAChBpL,EAAIyG,EAAGhM,IAAIzC,EAAErD,IAAI6R,IACjB,IAAIvG,EAAIqyB,EAAG73B,IAAIzC,EAAErD,IAAI+gC,IAErB,IAAK16B,GAAMvG,EAAEO,IAAIwgC,GAAY,EAC3B36B,EAAK06B,EAAMn8B,MACXuD,EAAK6J,EACLxL,EAAKvG,EAAE2E,MACP0D,EAAKkD,OACA,GAAIhF,GAAc,MAAN7L,EACjB,MAEFomC,EAAQ9gC,EAER4X,EAAIjB,EACJA,EAAI3W,EACJgS,EAAKD,EACLA,EAAKxG,EACLsyB,EAAKoD,EACLA,EAAKz1B,CACP,CACA9E,EAAK1G,EAAE2E,MACP6D,EAAK+C,EAEL,IAAI21B,EAAO36B,EAAGiI,MAAMzI,IAAIsC,EAAGmG,OAiB3B,OAhBW9H,EAAG8H,MAAMzI,IAAIyC,EAAGgG,OAClBjO,IAAI2gC,IAAS,IACpBx6B,EAAKN,EACLoC,EAAKN,GAIH3B,EAAGjH,WACLiH,EAAKA,EAAG5B,MACR0D,EAAKA,EAAG1D,OAEN+B,EAAGpH,WACLoH,EAAKA,EAAG/B,MACR6D,EAAKA,EAAG7D,OAGH,CACL,CAAE1C,EAAGsE,EAAIrE,EAAGmG,GACZ,CAAEpG,EAAGyE,EAAIxE,EAAGsG,GAEhB,EAEAm3B,EAAWlwC,UAAU0xC,WAAa,SAAoB9+B,GACpD,IAAIq+B,EAAQlxC,KAAKuwC,KAAKW,MAClBU,EAAKV,EAAM,GACXW,EAAKX,EAAM,GAEX7d,EAAKwe,EAAGn/B,EAAEhC,IAAImC,GAAGuO,SAASphB,KAAK6d,GAC/ByV,EAAKse,EAAGl/B,EAAEyC,MAAMzE,IAAImC,GAAGuO,SAASphB,KAAK6d,GAErCi0B,EAAKze,EAAG3iB,IAAIkhC,EAAGn/B,GACfs/B,EAAKze,EAAG5iB,IAAImhC,EAAGp/B,GACfu/B,EAAK3e,EAAG3iB,IAAIkhC,EAAGl/B,GACfu/B,EAAK3e,EAAG5iB,IAAImhC,EAAGn/B,GAKnB,MAAO,CAAEiyB,GAFA9xB,EAAE2D,IAAIs7B,GAAIt7B,IAAIu7B,GAENnN,GADRoN,EAAGz7B,IAAI07B,GAAI98B,MAEtB,EAEAg7B,EAAWlwC,UAAU+sC,WAAa,SAAoBjxB,EAAGgC,IACvDhC,EAAI,IAAIrM,EAAGqM,EAAG,KACP/L,MACL+L,EAAIA,EAAE0H,MAAMzjB,KAAKgQ,MAEnB,IAAIq+B,EAAKtyB,EAAE0I,SAASH,OAAOvI,GAAGkI,QAAQlI,EAAEuI,OAAOtkB,KAAKyS,IAAIwR,QAAQjkB,KAAK0S,GACjEsJ,EAAIqyB,EAAGzpB,UACX,GAA6C,IAAzC5I,EAAEyI,SAASP,OAAOmqB,GAAIt9B,IAAI/Q,KAAKsqC,MACjC,MAAM,IAAI9kC,MAAM,iBAIlB,IAAI2c,EAAQnG,EAAE6H,UAAU1B,QAIxB,OAHIpE,IAAQoE,IAAUpE,GAAOoE,KAC3BnG,EAAIA,EAAE+I,UAED/kB,KAAKmrC,MAAMpvB,EAAGC,EACvB,EAEAm0B,EAAWlwC,UAAUmrC,SAAW,SAAkBD,GAChD,GAAIA,EAAMyF,IACR,OAAO,EAET,IAAI70B,EAAIovB,EAAMpvB,EACVC,EAAImvB,EAAMnvB,EAEVk2B,EAAKlyC,KAAKyS,EAAE6R,OAAOvI,GACnBoyB,EAAMpyB,EAAE0I,SAASH,OAAOvI,GAAGkI,QAAQiuB,GAAIjuB,QAAQjkB,KAAK0S,GACxD,OAA2C,IAApCsJ,EAAEyI,SAASN,QAAQgqB,GAAKzrB,KAAK,EACtC,EAEAytB,EAAWlwC,UAAUkyC,gBACjB,SAAyBpG,EAAQQ,EAAQC,GAGvC,IAFA,IAAI4F,EAAUpyC,KAAKywC,YACf4B,EAAUryC,KAAK0wC,YACVxlC,EAAI,EAAGA,EAAI6gC,EAAOzqC,OAAQ4J,IAAK,CACtC,IAAIiC,EAAQnN,KAAK2xC,WAAWpF,EAAOrhC,IAC/BmE,EAAI08B,EAAO7gC,GACXoiC,EAAOj+B,EAAEk+B,WAETpgC,EAAMw3B,GAAG70B,WACX3C,EAAMw3B,GAAG1vB,OACT5F,EAAIA,EAAE8F,KAAI,IAERhI,EAAMy3B,GAAG90B,WACX3C,EAAMy3B,GAAG3vB,OACTq4B,EAAOA,EAAKn4B,KAAI,IAGlBi9B,EAAY,EAAJlnC,GAASmE,EACjB+iC,EAAY,EAAJlnC,EAAQ,GAAKoiC,EACrB+E,EAAY,EAAJnnC,GAASiC,EAAMw3B,GACvB0N,EAAY,EAAJnnC,EAAQ,GAAKiC,EAAMy3B,EAC7B,CAIA,IAHA,IAAI3iC,EAAMjC,KAAKqsC,YAAY,EAAG+F,EAASC,EAAa,EAAJnnC,EAAOshC,GAG9CrhC,EAAI,EAAGA,EAAQ,EAAJD,EAAOC,IACzBinC,EAAQjnC,GAAK,KACbknC,EAAQlnC,GAAK,KAEf,OAAOlJ,CACT,EAuBJrC,EAASmuC,EAAO3P,EAAK6M,WAErBkF,EAAWlwC,UAAUkrC,MAAQ,SAAepvB,EAAGC,EAAG20B,GAChD,OAAO,IAAI5C,EAAM/tC,KAAM+b,EAAGC,EAAG20B,EAC/B,EAEAR,EAAWlwC,UAAUsqC,cAAgB,SAAuBzmC,EAAKkM,GAC/D,OAAO+9B,EAAMU,SAASzuC,KAAM8D,EAAKkM,EACnC,EAEA+9B,EAAM9tC,UAAUstC,SAAW,WACzB,GAAKvtC,KAAK42B,MAAM2Z,KAAhB,CAGA,IAAI+B,EAAMtyC,KAAKkrC,YACf,GAAIoH,GAAOA,EAAIhF,KACb,OAAOgF,EAAIhF,KAEb,IAAIA,EAAOttC,KAAK42B,MAAMuU,MAAMnrC,KAAK+b,EAAEuI,OAAOtkB,KAAK42B,MAAM2Z,KAAKjD,MAAOttC,KAAKgc,GACtE,GAAIs2B,EAAK,CACP,IAAI1b,EAAQ52B,KAAK42B,MACb2b,EAAU,SAASljC,GACrB,OAAOunB,EAAMuU,MAAM97B,EAAE0M,EAAEuI,OAAOsS,EAAM2Z,KAAKjD,MAAOj+B,EAAE2M,EACpD,EACAs2B,EAAIhF,KAAOA,EACXA,EAAKpC,YAAc,CACjBoC,KAAM,KACN9B,IAAK8G,EAAI9G,KAAO,CACdzkB,IAAKurB,EAAI9G,IAAIzkB,IACbglB,OAAQuG,EAAI9G,IAAIO,OAAOnqC,IAAI2wC,IAE7BjH,QAASgH,EAAIhH,SAAW,CACtBI,KAAM4G,EAAIhH,QAAQI,KAClBK,OAAQuG,EAAIhH,QAAQS,OAAOnqC,IAAI2wC,IAGrC,CACA,OAAOjF,CAzBC,CA0BV,EAEAS,EAAM9tC,UAAUwT,OAAS,WACvB,OAAKzT,KAAKkrC,YAGH,CAAElrC,KAAK+b,EAAG/b,KAAKgc,EAAGhc,KAAKkrC,aAAe,CAC3CI,QAAStrC,KAAKkrC,YAAYI,SAAW,CACnCI,KAAM1rC,KAAKkrC,YAAYI,QAAQI,KAC/BK,OAAQ/rC,KAAKkrC,YAAYI,QAAQS,OAAOtpC,MAAM,IAEhD+oC,IAAKxrC,KAAKkrC,YAAYM,KAAO,CAC3BzkB,IAAK/mB,KAAKkrC,YAAYM,IAAIzkB,IAC1BglB,OAAQ/rC,KAAKkrC,YAAYM,IAAIO,OAAOtpC,MAAM,MATrC,CAAEzC,KAAK+b,EAAG/b,KAAKgc,EAY1B,EAEA+xB,EAAMU,SAAW,SAAkB7X,EAAO9yB,EAAKkM,GAC1B,kBAARlM,IACTA,EAAM4E,KAAK8pC,MAAM1uC,IACnB,IAAI7B,EAAM20B,EAAMuU,MAAMrnC,EAAI,GAAIA,EAAI,GAAIkM,GACtC,IAAKlM,EAAI,GACP,OAAO7B,EAET,SAASwwC,EAAU3uC,GACjB,OAAO8yB,EAAMuU,MAAMrnC,EAAI,GAAIA,EAAI,GAAIkM,EACrC,CAEA,IAAIsiC,EAAMxuC,EAAI,GAYd,OAXA7B,EAAIipC,YAAc,CAChBoC,KAAM,KACNhC,QAASgH,EAAIhH,SAAW,CACtBI,KAAM4G,EAAIhH,QAAQI,KAClBK,OAAQ,CAAE9pC,GAAMkB,OAAOmvC,EAAIhH,QAAQS,OAAOnqC,IAAI6wC,KAEhDjH,IAAK8G,EAAI9G,KAAO,CACdzkB,IAAKurB,EAAI9G,IAAIzkB,IACbglB,OAAQ,CAAE9pC,GAAMkB,OAAOmvC,EAAI9G,IAAIO,OAAOnqC,IAAI6wC,MAGvCxwC,CACT,EAEA8rC,EAAM9tC,UAAUkS,QAAU,WACxB,OAAInS,KAAKuuC,aACA,sBACF,gBAAkBvuC,KAAK+b,EAAE8H,UAAU/X,SAAS,GAAI,GACnD,OAAS9L,KAAKgc,EAAE6H,UAAU/X,SAAS,GAAI,GAAK,GAClD,EAEAiiC,EAAM9tC,UAAUsuC,WAAa,WAC3B,OAAOvuC,KAAK4wC,GACd,EAEA7C,EAAM9tC,UAAUsW,IAAM,SAAalH,GAEjC,GAAIrP,KAAK4wC,IACP,OAAOvhC,EAGT,GAAIA,EAAEuhC,IACJ,OAAO5wC,KAGT,GAAIA,KAAKujB,GAAGlU,GACV,OAAOrP,KAAKytC,MAGd,GAAIztC,KAAKmV,MAAMoO,GAAGlU,GAChB,OAAOrP,KAAK42B,MAAMuU,MAAM,KAAM,MAGhC,GAAwB,IAApBnrC,KAAK+b,EAAEhL,IAAI1B,EAAE0M,GACf,OAAO/b,KAAK42B,MAAMuU,MAAM,KAAM,MAEhC,IAAI96B,EAAIrQ,KAAKgc,EAAEkI,OAAO7U,EAAE2M,GACN,IAAd3L,EAAEqS,KAAK,KACTrS,EAAIA,EAAEiU,OAAOtkB,KAAK+b,EAAEmI,OAAO7U,EAAE0M,GAAG+I,YAClC,IAAI8pB,EAAKv+B,EAAEoU,SAASN,QAAQnkB,KAAK+b,GAAGoI,QAAQ9U,EAAE0M,GAC1C8yB,EAAKx+B,EAAEiU,OAAOtkB,KAAK+b,EAAEmI,OAAO0qB,IAAKzqB,QAAQnkB,KAAKgc,GAClD,OAAOhc,KAAK42B,MAAMuU,MAAMyD,EAAIC,EAC9B,EAEAd,EAAM9tC,UAAUwtC,IAAM,WACpB,GAAIztC,KAAK4wC,IACP,OAAO5wC,KAGT,IAAI0yC,EAAM1yC,KAAKgc,EAAEgI,OAAOhkB,KAAKgc,GAC7B,GAAoB,IAAhB02B,EAAIhwB,KAAK,GACX,OAAO1iB,KAAK42B,MAAMuU,MAAM,KAAM,MAEhC,IAAI14B,EAAIzS,KAAK42B,MAAMnkB,EAEf+P,EAAKxiB,KAAK+b,EAAE0I,SACZkuB,EAAQD,EAAI5tB,UACZzU,EAAImS,EAAGwB,OAAOxB,GAAIyB,QAAQzB,GAAIyB,QAAQxR,GAAG6R,OAAOquB,GAEhD/D,EAAKv+B,EAAEoU,SAASN,QAAQnkB,KAAK+b,EAAEiI,OAAOhkB,KAAK+b,IAC3C8yB,EAAKx+B,EAAEiU,OAAOtkB,KAAK+b,EAAEmI,OAAO0qB,IAAKzqB,QAAQnkB,KAAKgc,GAClD,OAAOhc,KAAK42B,MAAMuU,MAAMyD,EAAIC,EAC9B,EAEAd,EAAM9tC,UAAUy9B,KAAO,WACrB,OAAO19B,KAAK+b,EAAE8H,SAChB,EAEAkqB,EAAM9tC,UAAUktC,KAAO,WACrB,OAAOntC,KAAKgc,EAAE6H,SAChB,EAEAkqB,EAAM9tC,UAAUyQ,IAAM,SAAamC,GAEjC,OADAA,EAAI,IAAInD,EAAGmD,EAAG,IACV7S,KAAKuuC,aACAvuC,KACAA,KAAKwtC,YAAY36B,GACjB7S,KAAK42B,MAAMyU,aAAarrC,KAAM6S,GAC9B7S,KAAK42B,MAAM2Z,KACXvwC,KAAK42B,MAAMub,gBAAgB,CAAEnyC,MAAQ,CAAE6S,IAEvC7S,KAAK42B,MAAMqV,SAASjsC,KAAM6S,EACrC,EAEAk7B,EAAM9tC,UAAUkvC,OAAS,SAAgBxK,EAAIoN,EAAInN,GAC/C,IAAImH,EAAS,CAAE/rC,KAAM+xC,GACjBxF,EAAS,CAAE5H,EAAIC,GACnB,OAAI5kC,KAAK42B,MAAM2Z,KACNvwC,KAAK42B,MAAMub,gBAAgBpG,EAAQQ,GAEnCvsC,KAAK42B,MAAMyV,YAAY,EAAGN,EAAQQ,EAAQ,EACrD,EAEAwB,EAAM9tC,UAAUmvC,QAAU,SAAiBzK,EAAIoN,EAAInN,GACjD,IAAImH,EAAS,CAAE/rC,KAAM+xC,GACjBxF,EAAS,CAAE5H,EAAIC,GACnB,OAAI5kC,KAAK42B,MAAM2Z,KACNvwC,KAAK42B,MAAMub,gBAAgBpG,EAAQQ,GAAQ,GAE3CvsC,KAAK42B,MAAMyV,YAAY,EAAGN,EAAQQ,EAAQ,GAAG,EACxD,EAEAwB,EAAM9tC,UAAUsjB,GAAK,SAAYlU,GAC/B,OAAOrP,OAASqP,GACTrP,KAAK4wC,MAAQvhC,EAAEuhC,MACV5wC,KAAK4wC,KAA2B,IAApB5wC,KAAK+b,EAAEhL,IAAI1B,EAAE0M,IAAgC,IAApB/b,KAAKgc,EAAEjL,IAAI1B,EAAE2M,GAChE,EAEA+xB,EAAM9tC,UAAUkV,IAAM,SAAay9B,GACjC,GAAI5yC,KAAK4wC,IACP,OAAO5wC,KAET,IAAIiC,EAAMjC,KAAK42B,MAAMuU,MAAMnrC,KAAK+b,EAAG/b,KAAKgc,EAAE+I,UAC1C,GAAI6tB,GAAe5yC,KAAKkrC,YAAa,CACnC,IAAIoH,EAAMtyC,KAAKkrC,YACX2H,EAAS,SAASxjC,GACpB,OAAOA,EAAE8F,KACX,EACAlT,EAAIipC,YAAc,CAChBM,IAAK8G,EAAI9G,KAAO,CACdzkB,IAAKurB,EAAI9G,IAAIzkB,IACbglB,OAAQuG,EAAI9G,IAAIO,OAAOnqC,IAAIixC,IAE7BvH,QAASgH,EAAIhH,SAAW,CACtBI,KAAM4G,EAAIhH,QAAQI,KAClBK,OAAQuG,EAAIhH,QAAQS,OAAOnqC,IAAIixC,IAGrC,CACA,OAAO5wC,CACT,EAEA8rC,EAAM9tC,UAAU0sC,IAAM,WACpB,OAAI3sC,KAAK4wC,IACA5wC,KAAK42B,MAAMiV,OAAO,KAAM,KAAM,MAE7B7rC,KAAK42B,MAAMiV,OAAO7rC,KAAK+b,EAAG/b,KAAKgc,EAAGhc,KAAK42B,MAAMlQ,IAEzD,EAsBA9mB,EAASixC,EAAQzS,EAAK6M,WAEtBkF,EAAWlwC,UAAU4rC,OAAS,SAAgB9vB,EAAGC,EAAG6K,GAClD,OAAO,IAAIgqB,EAAO7wC,KAAM+b,EAAGC,EAAG6K,EAChC,EAEAgqB,EAAO5wC,UAAU+rC,IAAM,WACrB,GAAIhsC,KAAKuuC,aACP,OAAOvuC,KAAK42B,MAAMuU,MAAM,KAAM,MAEhC,IAAI2H,EAAO9yC,KAAK6mB,EAAE/B,UACdiuB,EAAQD,EAAKruB,SACbytB,EAAKlyC,KAAK+b,EAAEuI,OAAOyuB,GACnBC,EAAKhzC,KAAKgc,EAAEsI,OAAOyuB,GAAOzuB,OAAOwuB,GAErC,OAAO9yC,KAAK42B,MAAMuU,MAAM+G,EAAIc,EAC9B,EAEAnC,EAAO5wC,UAAUkV,IAAM,WACrB,OAAOnV,KAAK42B,MAAMiV,OAAO7rC,KAAK+b,EAAG/b,KAAKgc,EAAE+I,SAAU/kB,KAAK6mB,EACzD,EAEAgqB,EAAO5wC,UAAUsW,IAAM,SAAalH,GAElC,GAAIrP,KAAKuuC,aACP,OAAOl/B,EAGT,GAAIA,EAAEk/B,aACJ,OAAOvuC,KAGT,IAAIizC,EAAM5jC,EAAEwX,EAAEpC,SACVyuB,EAAKlzC,KAAK6mB,EAAEpC,SACZ0uB,EAAKnzC,KAAK+b,EAAEuI,OAAO2uB,GACnBG,EAAK/jC,EAAE0M,EAAEuI,OAAO4uB,GAChB9pB,EAAKppB,KAAKgc,EAAEsI,OAAO2uB,EAAI3uB,OAAOjV,EAAEwX,IAChCwC,EAAKha,EAAE2M,EAAEsI,OAAO4uB,EAAG5uB,OAAOtkB,KAAK6mB,IAE/BnH,EAAIyzB,EAAGjvB,OAAOkvB,GACd5iC,EAAI4Y,EAAGlF,OAAOmF,GAClB,GAAkB,IAAd3J,EAAEgD,KAAK,GACT,OAAkB,IAAdlS,EAAEkS,KAAK,GACF1iB,KAAK42B,MAAMiV,OAAO,KAAM,KAAM,MAE9B7rC,KAAKytC,MAGhB,IAAI4F,EAAK3zB,EAAE+E,SACP6uB,EAAKD,EAAG/uB,OAAO5E,GACf0I,EAAI+qB,EAAG7uB,OAAO+uB,GAEdzE,EAAKp+B,EAAEiU,SAASR,QAAQqvB,GAAInvB,QAAQiE,GAAGjE,QAAQiE,GAC/CymB,EAAKr+B,EAAE8T,OAAO8D,EAAEjE,QAAQyqB,IAAKzqB,QAAQiF,EAAG9E,OAAOgvB,IAC/CvE,EAAK/uC,KAAK6mB,EAAEvC,OAAOjV,EAAEwX,GAAGvC,OAAO5E,GAEnC,OAAO1f,KAAK42B,MAAMiV,OAAO+C,EAAIC,EAAIE,EACnC,EAEA8B,EAAO5wC,UAAU6rC,SAAW,SAAkBz8B,GAE5C,GAAIrP,KAAKuuC,aACP,OAAOl/B,EAAEs9B,MAGX,GAAIt9B,EAAEk/B,aACJ,OAAOvuC,KAGT,IAAIkzC,EAAKlzC,KAAK6mB,EAAEpC,SACZ0uB,EAAKnzC,KAAK+b,EACVq3B,EAAK/jC,EAAE0M,EAAEuI,OAAO4uB,GAChB9pB,EAAKppB,KAAKgc,EACVqN,EAAKha,EAAE2M,EAAEsI,OAAO4uB,GAAI5uB,OAAOtkB,KAAK6mB,GAEhCnH,EAAIyzB,EAAGjvB,OAAOkvB,GACd5iC,EAAI4Y,EAAGlF,OAAOmF,GAClB,GAAkB,IAAd3J,EAAEgD,KAAK,GACT,OAAkB,IAAdlS,EAAEkS,KAAK,GACF1iB,KAAK42B,MAAMiV,OAAO,KAAM,KAAM,MAE9B7rC,KAAKytC,MAGhB,IAAI4F,EAAK3zB,EAAE+E,SACP6uB,EAAKD,EAAG/uB,OAAO5E,GACf0I,EAAI+qB,EAAG7uB,OAAO+uB,GAEdzE,EAAKp+B,EAAEiU,SAASR,QAAQqvB,GAAInvB,QAAQiE,GAAGjE,QAAQiE,GAC/CymB,EAAKr+B,EAAE8T,OAAO8D,EAAEjE,QAAQyqB,IAAKzqB,QAAQiF,EAAG9E,OAAOgvB,IAC/CvE,EAAK/uC,KAAK6mB,EAAEvC,OAAO5E,GAEvB,OAAO1f,KAAK42B,MAAMiV,OAAO+C,EAAIC,EAAIE,EACnC,EAEA8B,EAAO5wC,UAAUmsC,KAAO,SAAcr6B,GACpC,GAAY,IAARA,EACF,OAAO/R,KACT,GAAIA,KAAKuuC,aACP,OAAOvuC,KACT,IAAK+R,EACH,OAAO/R,KAAKytC,MAEd,IAAIviC,EACJ,GAAIlL,KAAK42B,MAAMyZ,OAASrwC,KAAK42B,MAAM0Z,OAAQ,CACzC,IAAI9/B,EAAIxQ,KACR,IAAKkL,EAAI,EAAGA,EAAI6G,EAAK7G,IACnBsF,EAAIA,EAAEi9B,MACR,OAAOj9B,CACT,CAIA,IAAIiC,EAAIzS,KAAK42B,MAAMnkB,EACf29B,EAAOpwC,KAAK42B,MAAMwZ,KAElBmD,EAAKvzC,KAAK+b,EACVy3B,EAAKxzC,KAAKgc,EACVy3B,EAAKzzC,KAAK6mB,EACV6sB,EAAMD,EAAGhvB,SAASA,SAGlBkvB,EAAMH,EAAGxvB,OAAOwvB,GACpB,IAAKtoC,EAAI,EAAGA,EAAI6G,EAAK7G,IAAK,CACxB,IAAI0oC,EAAML,EAAG9uB,SACTovB,EAAOF,EAAIlvB,SACXqvB,EAAOD,EAAKpvB,SACZpU,EAAIujC,EAAI5vB,OAAO4vB,GAAK3vB,QAAQ2vB,GAAK3vB,QAAQxR,EAAE6R,OAAOovB,IAElD9qB,EAAK2qB,EAAGjvB,OAAOuvB,GACfjF,EAAKv+B,EAAEoU,SAASN,QAAQyE,EAAG5E,OAAO4E,IAClCC,EAAKD,EAAGzE,QAAQyqB,GAChBmF,EAAM1jC,EAAEiU,OAAOuE,GACnBkrB,EAAMA,EAAI9vB,QAAQ8vB,GAAK5vB,QAAQ2vB,GAC/B,IAAI/E,EAAK4E,EAAIrvB,OAAOmvB,GAChBvoC,EAAI,EAAI6G,IACV2hC,EAAMA,EAAIpvB,OAAOwvB,IAEnBP,EAAK3E,EACL6E,EAAK1E,EACL4E,EAAMI,CACR,CAEA,OAAO/zC,KAAK42B,MAAMiV,OAAO0H,EAAII,EAAIrvB,OAAO8rB,GAAOqD,EACjD,EAEA5C,EAAO5wC,UAAUwtC,IAAM,WACrB,OAAIztC,KAAKuuC,aACAvuC,KAELA,KAAK42B,MAAMyZ,MACNrwC,KAAKg0C,WACLh0C,KAAK42B,MAAM0Z,OACXtwC,KAAKi0C,YAELj0C,KAAKk0C,MAChB,EAEArD,EAAO5wC,UAAU+zC,SAAW,WAC1B,IAAIpF,EACAC,EACAE,EAEJ,GAAI/uC,KAAKguC,KAAM,CAMb,IAAImG,EAAKn0C,KAAK+b,EAAE0I,SAEZ2vB,EAAKp0C,KAAKgc,EAAEyI,SAEZ4vB,EAAOD,EAAG3vB,SAEVzH,EAAIhd,KAAK+b,EAAEiI,OAAOowB,GAAI3vB,SAASN,QAAQgwB,GAAIhwB,QAAQkwB,GACvDr3B,EAAIA,EAAEiH,QAAQjH,GAEd,IAAIc,EAAIq2B,EAAGnwB,OAAOmwB,GAAIlwB,QAAQkwB,GAE1B//B,EAAI0J,EAAE2G,SAASN,QAAQnH,GAAGmH,QAAQnH,GAGlCs3B,EAAQD,EAAKpwB,QAAQowB,GAEzBC,GADAA,EAAQA,EAAMrwB,QAAQqwB,IACRrwB,QAAQqwB,GAGtB1F,EAAKx6B,EAELy6B,EAAK/wB,EAAEwG,OAAOtH,EAAEmH,QAAQ/P,IAAI+P,QAAQmwB,GAEpCvF,EAAK/uC,KAAKgc,EAAEgI,OAAOhkB,KAAKgc,EAC1B,KAAO,CAML,IAAIvJ,EAAIzS,KAAK+b,EAAE0I,SAEX/R,EAAI1S,KAAKgc,EAAEyI,SAEXpU,EAAIqC,EAAE+R,SAENiF,EAAI1pB,KAAK+b,EAAEiI,OAAOtR,GAAG+R,SAASN,QAAQ1R,GAAG0R,QAAQ9T,GACrDqZ,EAAIA,EAAEzF,QAAQyF,GAEd,IAAItpB,EAAIqS,EAAEuR,OAAOvR,GAAGwR,QAAQxR,GAExBk8B,EAAIvuC,EAAEqkB,SAGN8vB,EAAKlkC,EAAE4T,QAAQ5T,GAEnBkkC,GADAA,EAAKA,EAAGtwB,QAAQswB,IACRtwB,QAAQswB,GAGhB3F,EAAKD,EAAExqB,QAAQuF,GAAGvF,QAAQuF,GAE1BmlB,EAAKzuC,EAAEkkB,OAAOoF,EAAEvF,QAAQyqB,IAAKzqB,QAAQowB,GAGrCxF,GADAA,EAAK/uC,KAAKgc,EAAEsI,OAAOtkB,KAAK6mB,IAChB5C,QAAQ8qB,EAClB,CAEA,OAAO/uC,KAAK42B,MAAMiV,OAAO+C,EAAIC,EAAIE,EACnC,EAEA8B,EAAO5wC,UAAUg0C,UAAY,WAC3B,IAAIrF,EACAC,EACAE,EAEJ,GAAI/uC,KAAKguC,KAAM,CAMb,IAAImG,EAAKn0C,KAAK+b,EAAE0I,SAEZ2vB,EAAKp0C,KAAKgc,EAAEyI,SAEZ4vB,EAAOD,EAAG3vB,SAEVzH,EAAIhd,KAAK+b,EAAEiI,OAAOowB,GAAI3vB,SAASN,QAAQgwB,GAAIhwB,QAAQkwB,GACvDr3B,EAAIA,EAAEiH,QAAQjH,GAEd,IAAIc,EAAIq2B,EAAGnwB,OAAOmwB,GAAIlwB,QAAQkwB,GAAIlwB,QAAQjkB,KAAK42B,MAAMnkB,GAEjD2B,EAAI0J,EAAE2G,SAASN,QAAQnH,GAAGmH,QAAQnH,GAEtC4xB,EAAKx6B,EAEL,IAAIkgC,EAAQD,EAAKpwB,QAAQowB,GAEzBC,GADAA,EAAQA,EAAMrwB,QAAQqwB,IACRrwB,QAAQqwB,GACtBzF,EAAK/wB,EAAEwG,OAAOtH,EAAEmH,QAAQ/P,IAAI+P,QAAQmwB,GAEpCvF,EAAK/uC,KAAKgc,EAAEgI,OAAOhkB,KAAKgc,EAC1B,KAAO,CAKL,IAAIyG,EAAQziB,KAAK6mB,EAAEpC,SAEf+vB,EAAQx0C,KAAKgc,EAAEyI,SAEf6oB,EAAOttC,KAAK+b,EAAEuI,OAAOkwB,GAErBC,EAAQz0C,KAAK+b,EAAEmI,OAAOzB,GAAO6B,OAAOtkB,KAAK+b,EAAEiI,OAAOvB,IACtDgyB,EAAQA,EAAMzwB,OAAOywB,GAAOxwB,QAAQwwB,GAEpC,IAAIC,EAAQpH,EAAKrpB,QAAQqpB,GAErBqH,GADJD,EAAQA,EAAMzwB,QAAQywB,IACJ1wB,OAAO0wB,GACzB9F,EAAK6F,EAAMhwB,SAASN,QAAQwwB,GAE5B5F,EAAK/uC,KAAKgc,EAAEgI,OAAOhkB,KAAK6mB,GAAGpC,SAASN,QAAQqwB,GAAOrwB,QAAQ1B,GAE3D,IAAImyB,EAAUJ,EAAM/vB,SAGpBmwB,GADAA,GADAA,EAAUA,EAAQ3wB,QAAQ2wB,IACR3wB,QAAQ2wB,IACR3wB,QAAQ2wB,GAC1B/F,EAAK4F,EAAMnwB,OAAOowB,EAAMvwB,QAAQyqB,IAAKzqB,QAAQywB,EAC/C,CAEA,OAAO50C,KAAK42B,MAAMiV,OAAO+C,EAAIC,EAAIE,EACnC,EAEA8B,EAAO5wC,UAAUi0C,KAAO,WACtB,IAAIzhC,EAAIzS,KAAK42B,MAAMnkB,EAGf8gC,EAAKvzC,KAAK+b,EACVy3B,EAAKxzC,KAAKgc,EACVy3B,EAAKzzC,KAAK6mB,EACV6sB,EAAMD,EAAGhvB,SAASA,SAElBmvB,EAAML,EAAG9uB,SACTowB,EAAMrB,EAAG/uB,SAETpU,EAAIujC,EAAI5vB,OAAO4vB,GAAK3vB,QAAQ2vB,GAAK3vB,QAAQxR,EAAE6R,OAAOovB,IAElDoB,EAAOvB,EAAGvvB,OAAOuvB,GAEjB3qB,GADJksB,EAAOA,EAAK7wB,QAAQ6wB,IACNxwB,OAAOuwB,GACjBjG,EAAKv+B,EAAEoU,SAASN,QAAQyE,EAAG5E,OAAO4E,IAClCC,EAAKD,EAAGzE,QAAQyqB,GAEhBmG,EAAOF,EAAIpwB,SAGfswB,GADAA,GADAA,EAAOA,EAAK9wB,QAAQ8wB,IACR9wB,QAAQ8wB,IACR9wB,QAAQ8wB,GACpB,IAAIlG,EAAKx+B,EAAEiU,OAAOuE,GAAI1E,QAAQ4wB,GAC1BhG,EAAKyE,EAAGxvB,OAAOwvB,GAAIlvB,OAAOmvB,GAE9B,OAAOzzC,KAAK42B,MAAMiV,OAAO+C,EAAIC,EAAIE,EACnC,EAEA8B,EAAO5wC,UAAU+0C,KAAO,WACtB,IAAKh1C,KAAK42B,MAAMyZ,MACd,OAAOrwC,KAAKytC,MAAMl3B,IAAIvW,MAMxB,IAAIm0C,EAAKn0C,KAAK+b,EAAE0I,SAEZ2vB,EAAKp0C,KAAKgc,EAAEyI,SAEZwwB,EAAKj1C,KAAK6mB,EAAEpC,SAEZ4vB,EAAOD,EAAG3vB,SAEV3G,EAAIq2B,EAAGnwB,OAAOmwB,GAAIlwB,QAAQkwB,GAE1Be,EAAKp3B,EAAE2G,SAEPrkB,EAAIJ,KAAK+b,EAAEiI,OAAOowB,GAAI3vB,SAASN,QAAQgwB,GAAIhwB,QAAQkwB,GAKnDc,GAFJ/0C,GADAA,GADAA,EAAIA,EAAE6jB,QAAQ7jB,IACR4jB,OAAO5jB,GAAG6jB,QAAQ7jB,IAClB+jB,QAAQ+wB,IAEHzwB,SAEPrQ,EAAIigC,EAAKpwB,QAAQowB,GAGrBjgC,GADAA,GADAA,EAAIA,EAAE6P,QAAQ7P,IACR6P,QAAQ7P,IACR6P,QAAQ7P,GAEd,IAAI+S,EAAIrJ,EAAEmG,QAAQ7jB,GAAGqkB,SAASN,QAAQ+wB,GAAI/wB,QAAQgxB,GAAIhxB,QAAQ/P,GAE1DghC,EAAOhB,EAAG9vB,OAAO6C,GAErBiuB,GADAA,EAAOA,EAAKnxB,QAAQmxB,IACRnxB,QAAQmxB,GACpB,IAAIxG,EAAK5uC,KAAK+b,EAAEuI,OAAO6wB,GAAIhxB,QAAQixB,GAEnCxG,GADAA,EAAKA,EAAG3qB,QAAQ2qB,IACR3qB,QAAQ2qB,GAEhB,IAAIC,EAAK7uC,KAAKgc,EAAEsI,OAAO6C,EAAE7C,OAAOlQ,EAAE+P,QAAQgD,IAAIhD,QAAQ/jB,EAAEkkB,OAAO6wB,KAG/DtG,GADAA,GADAA,EAAKA,EAAG5qB,QAAQ4qB,IACR5qB,QAAQ4qB,IACR5qB,QAAQ4qB,GAEhB,IAAIE,EAAK/uC,KAAK6mB,EAAE7C,OAAO5jB,GAAGqkB,SAASN,QAAQ8wB,GAAI9wB,QAAQgxB,GAEvD,OAAOn1C,KAAK42B,MAAMiV,OAAO+C,EAAIC,EAAIE,EACnC,EAEA8B,EAAO5wC,UAAUyQ,IAAM,SAAamC,EAAGwiC,GAGrC,OAFAxiC,EAAI,IAAInD,EAAGmD,EAAGwiC,GAEPr1C,KAAK42B,MAAMqV,SAASjsC,KAAM6S,EACnC,EAEAg+B,EAAO5wC,UAAUsjB,GAAK,SAAYlU,GAChC,GAAe,WAAXA,EAAEvH,KACJ,OAAO9H,KAAKujB,GAAGlU,EAAEs9B,OAEnB,GAAI3sC,OAASqP,EACX,OAAO,EAGT,IAAI6jC,EAAKlzC,KAAK6mB,EAAEpC,SACZwuB,EAAM5jC,EAAEwX,EAAEpC,SACd,GAA2D,IAAvDzkB,KAAK+b,EAAEuI,OAAO2uB,GAAK9uB,QAAQ9U,EAAE0M,EAAEuI,OAAO4uB,IAAKxwB,KAAK,GAClD,OAAO,EAGT,IAAI4yB,EAAKpC,EAAG5uB,OAAOtkB,KAAK6mB,GACpB0uB,EAAMtC,EAAI3uB,OAAOjV,EAAEwX,GACvB,OAA8D,IAAvD7mB,KAAKgc,EAAEsI,OAAOixB,GAAKpxB,QAAQ9U,EAAE2M,EAAEsI,OAAOgxB,IAAK5yB,KAAK,EACzD,EAEAmuB,EAAO5wC,UAAUqvC,OAAS,SAAgBvzB,GACxC,IAAIy5B,EAAKx1C,KAAK6mB,EAAEpC,SACZ9G,EAAK5B,EAAE0H,MAAMzjB,KAAK42B,MAAM5mB,KAAKsU,OAAOkxB,GACxC,GAAuB,IAAnBx1C,KAAK+b,EAAEhL,IAAI4M,GACb,OAAO,EAIT,IAFA,IAAI4xB,EAAKxzB,EAAEvX,QACP4P,EAAIpU,KAAK42B,MAAMmU,KAAKzmB,OAAOkxB,KACtB,CAEP,GADAjG,EAAGl5B,KAAKrW,KAAK42B,MAAM/Y,GACf0xB,EAAGx+B,IAAI/Q,KAAK42B,MAAMvnB,IAAM,EAC1B,OAAO,EAGT,GADAsO,EAAGsG,QAAQ7P,GACY,IAAnBpU,KAAK+b,EAAEhL,IAAI4M,GACb,OAAO,CACX,CACF,EAEAkzB,EAAO5wC,UAAUkS,QAAU,WACzB,OAAInS,KAAKuuC,aACA,uBACF,iBAAmBvuC,KAAK+b,EAAEjQ,SAAS,GAAI,GAC1C,OAAS9L,KAAKgc,EAAElQ,SAAS,GAAI,GAC7B,OAAS9L,KAAK6mB,EAAE/a,SAAS,GAAI,GAAK,GACxC,EAEA+kC,EAAO5wC,UAAUsuC,WAAa,WAE5B,OAA0B,IAAnBvuC,KAAK6mB,EAAEnE,KAAK,EACrB,gCCv6BA,IAsKI4vB,EAtKAxc,EAASz2B,EAET01B,EAAO,EAAQ,OACf6B,EAAQ,EAAQ,KAGhB5zB,EAFQ,EAAQ,OAEDA,OAEnB,SAASyyC,EAAY50C,GACE,UAAjBA,EAAQiH,KACV9H,KAAK42B,MAAQ,IAAIA,EAAM4Y,MAAM3uC,GACL,YAAjBA,EAAQiH,KACf9H,KAAK42B,MAAQ,IAAIA,EAAM6Y,QAAQ5uC,GAE/Bb,KAAK42B,MAAQ,IAAIA,EAAM1P,KAAKrmB,GAC9Bb,KAAK8hB,EAAI9hB,KAAK42B,MAAM9U,EACpB9hB,KAAK6d,EAAI7d,KAAK42B,MAAM/Y,EACpB7d,KAAK+0B,KAAOl0B,EAAQk0B,KAEpB/xB,EAAOhD,KAAK8hB,EAAEspB,WAAY,iBAC1BpoC,EAAOhD,KAAK8hB,EAAEpR,IAAI1Q,KAAK6d,GAAG0wB,aAAc,0BAC1C,CAGA,SAASmH,EAAY51C,EAAMe,GACzByE,OAAOqhC,eAAe7Q,EAAQh2B,EAAM,CAClCkiC,cAAc,EACdC,YAAY,EACZ3S,IAAK,WACH,IAAIsH,EAAQ,IAAI6e,EAAY50C,GAM5B,OALAyE,OAAOqhC,eAAe7Q,EAAQh2B,EAAM,CAClCkiC,cAAc,EACdC,YAAY,EACZxgC,MAAOm1B,IAEFA,CACT,GAEJ,CAhBAd,EAAO2f,YAAcA,EAkBrBC,EAAY,OAAQ,CAClB5tC,KAAM,QACN8d,MAAO,OACPvW,EAAG,wDACHoD,EAAG,wDACHC,EAAG,wDACHmL,EAAG,wDACHkX,KAAMA,EAAK4gB,OACXnL,MAAM,EACN1oB,EAAG,CACD,wDACA,2DAIJ4zB,EAAY,OAAQ,CAClB5tC,KAAM,QACN8d,MAAO,OACPvW,EAAG,iEACHoD,EAAG,iEACHC,EAAG,iEACHmL,EAAG,iEACHkX,KAAMA,EAAK4gB,OACXnL,MAAM,EACN1oB,EAAG,CACD,iEACA,oEAIJ4zB,EAAY,OAAQ,CAClB5tC,KAAM,QACN8d,MAAO,KACPvW,EAAG,0EACHoD,EAAG,0EACHC,EAAG,0EACHmL,EAAG,0EACHkX,KAAMA,EAAK4gB,OACXnL,MAAM,EACN1oB,EAAG,CACD,0EACA,6EAIJ4zB,EAAY,OAAQ,CAClB5tC,KAAM,QACN8d,MAAO,KACPvW,EAAG,8GAEHoD,EAAG,8GAEHC,EAAG,8GAEHmL,EAAG,8GAEHkX,KAAMA,EAAK6gB,OACXpL,MAAM,EACN1oB,EAAG,CACD,8GAEA,iHAKJ4zB,EAAY,OAAQ,CAClB5tC,KAAM,QACN8d,MAAO,KACPvW,EAAG,2JAGHoD,EAAG,2JAGHC,EAAG,2JAGHmL,EAAG,2JAGHkX,KAAMA,EAAK8gB,OACXrL,MAAM,EACN1oB,EAAG,CACD,2JAGA,8JAMJ4zB,EAAY,aAAc,CACxB5tC,KAAM,OACN8d,MAAO,SACPvW,EAAG,sEACHoD,EAAG,QACHC,EAAG,IACHmL,EAAG,sEACHkX,KAAMA,EAAK4gB,OACXnL,MAAM,EACN1oB,EAAG,CACD,OAIJ4zB,EAAY,UAAW,CACrB5tC,KAAM,UACN8d,MAAO,SACPvW,EAAG,sEACHoD,EAAG,KACHpC,EAAG,IAEHqZ,EAAG,sEACH7L,EAAG,sEACHkX,KAAMA,EAAK4gB,OACXnL,MAAM,EACN1oB,EAAG,CACD,mEAGA,sEAKJ,IACEwwB,EAAM,EAAQ,MAChB,CAAE,MAAOlyC,GACPkyC,OAAMpqC,CACR,CAEAwtC,EAAY,YAAa,CACvB5tC,KAAM,QACN8d,MAAO,OACPvW,EAAG,0EACHoD,EAAG,IACHC,EAAG,IACHmL,EAAG,0EACH6B,EAAG,IACHqV,KAAMA,EAAK4gB,OAGXrI,KAAM,mEACNwD,OAAQ,mEACRI,MAAO,CACL,CACEz+B,EAAG,mCACHC,EAAG,qCAEL,CACED,EAAG,oCACHC,EAAG,qCAIP83B,MAAM,EACN1oB,EAAG,CACD,mEACA,mEACAwwB,mCCzMJ,IAAI5iC,EAAK,EAAQ,OACbomC,EAAW,EAAQ,OACnB3T,EAAQ,EAAQ,OAChBrM,EAAS,EAAQ,OACjBzO,EAAO,EAAQ,OACfrkB,EAASm/B,EAAMn/B,OAEf+yC,EAAU,EAAQ,OAClBC,EAAY,EAAQ,OAExB,SAASpgB,EAAG/0B,GACV,KAAMb,gBAAgB41B,GACpB,OAAO,IAAIA,EAAG/0B,GAGO,kBAAZA,IACTmC,EAAOsC,OAAOrF,UAAUS,eAAeH,KAAKu1B,EAAQj1B,GAClD,iBAAmBA,GAErBA,EAAUi1B,EAAOj1B,IAIfA,aAAmBi1B,EAAO2f,cAC5B50C,EAAU,CAAE+1B,MAAO/1B,IAErBb,KAAK42B,MAAQ/1B,EAAQ+1B,MAAMA,MAC3B52B,KAAK6d,EAAI7d,KAAK42B,MAAM/Y,EACpB7d,KAAKi2C,GAAKj2C,KAAK6d,EAAEoC,MAAM,GACvBjgB,KAAK8hB,EAAI9hB,KAAK42B,MAAM9U,EAGpB9hB,KAAK8hB,EAAIjhB,EAAQ+1B,MAAM9U,EACvB9hB,KAAK8hB,EAAEsrB,WAAWvsC,EAAQ+1B,MAAM/Y,EAAEvJ,YAAc,GAGhDtU,KAAK+0B,KAAOl0B,EAAQk0B,MAAQl0B,EAAQ+1B,MAAM7B,IAC5C,CACAzwB,EAAOjF,QAAUu2B,EAEjBA,EAAG31B,UAAUi2C,QAAU,SAAiBr1C,GACtC,OAAO,IAAIk1C,EAAQ/1C,KAAMa,EAC3B,EAEA+0B,EAAG31B,UAAU62B,eAAiB,SAAwBpE,EAAMjyB,GAC1D,OAAOs1C,EAAQI,YAAYn2C,KAAM0yB,EAAMjyB,EACzC,EAEAm1B,EAAG31B,UAAUs9B,cAAgB,SAAuBhG,EAAK92B,GACvD,OAAOs1C,EAAQK,WAAWp2C,KAAMu3B,EAAK92B,EACvC,EAEAm1B,EAAG31B,UAAUi9B,WAAa,SAAoBr8B,GACvCA,IACHA,EAAU,CAAC,GAcb,IAXA,IAAIw1C,EAAO,IAAIP,EAAS,CACtB/gB,KAAM/0B,KAAK+0B,KACXuhB,KAAMz1C,EAAQy1C,KACdC,QAAS11C,EAAQ01C,SAAW,OAC5BC,QAAS31C,EAAQ21C,SAAWnvB,EAAKrnB,KAAK+0B,KAAK0hB,cAC3CC,WAAY71C,EAAQ21C,SAAW31C,EAAQ61C,YAAc,OACrDC,MAAO32C,KAAK6d,EAAE9O,YAGZzM,EAAQtC,KAAK6d,EAAE/b,aACf80C,EAAM52C,KAAK6d,EAAErH,IAAI,IAAI9G,EAAG,MACnB,CACP,IAAIgjB,EAAO,IAAIhjB,EAAG2mC,EAAK/uB,SAAShlB,IAChC,KAAIowB,EAAK3hB,IAAI6lC,GAAO,GAIpB,OADAlkB,EAAK7d,MAAM,GACJ7U,KAAK82B,eAAepE,EAC7B,CACF,EAEAkD,EAAG31B,UAAU42C,aAAe,SAAsBttC,EAAKutC,EAAWxiC,GAChE,IAAIxS,EACJ,GAAI4N,EAAGG,KAAKtG,IAAuB,kBAARA,EAEzBzH,GADAyH,EAAM,IAAImG,EAAGnG,EAAK,KACDzH,kBACZ,GAAmB,kBAARyH,EAEhBzH,EAAayH,EAAIjI,OACjBiI,EAAM,IAAImG,EAAGnG,EAAK,QACb,CAEL,IAAIJ,EAAMI,EAAIuC,WAEdhK,EAAcqH,EAAI7H,OAAS,IAAO,EAClCiI,EAAM,IAAImG,EAAGvG,EAAK,GACpB,CAEyB,kBAAdmL,IACTA,EAAyB,EAAbxS,GAEd,IAAI2gB,EAAQnO,EAAYtU,KAAK6d,EAAEvJ,YAG/B,OAFImO,EAAQ,IACVlZ,EAAMA,EAAI0W,MAAMwC,KACbq0B,GAAavtC,EAAIwH,IAAI/Q,KAAK6d,IAAM,EAC5BtU,EAAIiN,IAAIxW,KAAK6d,GAEbtU,CACX,EAEAqsB,EAAG31B,UAAU+O,KAAO,SAAczF,EAAKtF,EAAKxD,EAAKI,GAQ/C,GAPmB,kBAARJ,IACTI,EAAUJ,EACVA,EAAM,MAEHI,IACHA,EAAU,CAAC,GAEM,kBAAR0I,GAAmC,kBAARA,IAAqBmG,EAAGG,KAAKtG,GAAM,CACvEvG,EAAsB,kBAARuG,GAAoBA,GAA6B,kBAAfA,EAAIjI,OAClD,wEACF0B,EAAQuG,EAAIjI,SAAW,IAAOiI,EAAIjI,QAClC,IAAK,IAAI4J,EAAI,EAAGA,EAAI3B,EAAIjI,OAAQ4J,IAAKlI,GAAiB,IAATuG,EAAI2B,MAAc3B,EAAI2B,GACrE,CAEAjH,EAAMjE,KAAK82B,eAAe7yB,EAAKxD,GAC/B8I,EAAMvJ,KAAK62C,aAAattC,GAAK,EAAO1I,EAAQk2C,cAG5C/zC,GAAQuG,EAAI2L,QAAS,mCAGrB,IAAI5S,EAAQtC,KAAK6d,EAAE/b,aACfk1C,EAAO/yC,EAAIw5B,aAAa1uB,QAAQ,KAAMzM,GAGtCq0C,EAAQptC,EAAIwF,QAAQ,KAAMzM,GAG9BU,EAAO,IAAK0M,EAAGinC,GAAQpzB,GAAGha,GAAM,wBAchC,IAXA,IAAI8sC,EAAO,IAAIP,EAAS,CACtB/gB,KAAM/0B,KAAK+0B,KACXyhB,QAASQ,EACTL,MAAOA,EACPL,KAAMz1C,EAAQy1C,KACdC,QAAS11C,EAAQ01C,SAAW,SAI1BU,EAAMj3C,KAAK6d,EAAErH,IAAI,IAAI9G,EAAG,IAEnBwnC,EAAO,GAAKA,IAAQ,CAC3B,IAAIrkC,EAAIhS,EAAQgS,EACdhS,EAAQgS,EAAEqkC,GACV,IAAIxnC,EAAG2mC,EAAK/uB,SAAStnB,KAAK6d,EAAE/b,eAE9B,MADA+Q,EAAI7S,KAAK62C,aAAahkC,GAAG,IACnB6P,KAAK,IAAM,GAAK7P,EAAE9B,IAAIkmC,IAAQ,GAApC,CAGA,IAAIE,EAAKn3C,KAAK8hB,EAAEpR,IAAImC,GACpB,IAAIskC,EAAG5I,aAAP,CAGA,IAAI6I,EAAMD,EAAGzZ,OACTltB,EAAI4mC,EAAIj2B,KAAKnhB,KAAK6d,GACtB,GAAkB,IAAdrN,EAAEkS,KAAK,GAAX,CAGA,IAAI1F,EAAInK,EAAE8P,KAAK3iB,KAAK6d,GAAGnN,IAAIF,EAAEE,IAAIzM,EAAIw5B,cAAcpnB,KAAK9M,IAExD,GAAkB,KADlByT,EAAIA,EAAEmE,KAAKnhB,KAAK6d,IACV6E,KAAK,GAAX,CAGA,IAAI20B,GAAiBF,EAAGhK,OAAOhrB,QAAU,EAAI,IACT,IAAfi1B,EAAIrmC,IAAIP,GAAW,EAAI,GAQ5C,OALI3P,EAAQy2C,WAAat6B,EAAEjM,IAAI/Q,KAAKi2C,IAAM,IACxCj5B,EAAIhd,KAAK6d,EAAErH,IAAIwG,GACfq6B,GAAiB,GAGZ,IAAIrB,EAAU,CAAExlC,EAAGA,EAAGwM,EAAGA,EAAGq6B,cAAeA,GAXxC,CALA,CALA,CAJA,CA0BZ,CACF,EAEAzhB,EAAG31B,UAAUw0B,OAAS,SAAgBlrB,EAAKsuB,EAAW5zB,EAAKxD,EAAKI,GACzDA,IACHA,EAAU,CAAC,GAEb0I,EAAMvJ,KAAK62C,aAAattC,GAAK,EAAO1I,EAAQk2C,cAC5C9yC,EAAMjE,KAAKu9B,cAAct5B,EAAKxD,GAI9B,IAAI+P,GAHJqnB,EAAY,IAAIme,EAAUne,EAAW,QAGnBrnB,EACdwM,EAAI6a,EAAU7a,EAClB,GAAIxM,EAAEkS,KAAK,GAAK,GAAKlS,EAAEO,IAAI/Q,KAAK6d,IAAM,EACpC,OAAO,EACT,GAAIb,EAAE0F,KAAK,GAAK,GAAK1F,EAAEjM,IAAI/Q,KAAK6d,IAAM,EACpC,OAAO,EAGT,IAGIxO,EAHAkoC,EAAOv6B,EAAE2F,KAAK3iB,KAAK6d,GACnBs1B,EAAKoE,EAAK7mC,IAAInH,GAAK4X,KAAKnhB,KAAK6d,GAC7Bu1B,EAAKmE,EAAK7mC,IAAIF,GAAG2Q,KAAKnhB,KAAK6d,GAG/B,OAAK7d,KAAK42B,MAAMoU,gBAWhB37B,EAAIrP,KAAK8hB,EAAEstB,QAAQ+D,EAAIlvC,EAAIu5B,YAAa4V,IAClC7E,cAMCl/B,EAAEigC,OAAO9+B,KAjBdnB,EAAIrP,KAAK8hB,EAAEqtB,OAAOgE,EAAIlvC,EAAIu5B,YAAa4V,IACjC7E,cAGkC,IAAjCl/B,EAAEquB,OAAOvc,KAAKnhB,KAAK6d,GAAG9M,IAAIP,EAcrC,EAEAolB,EAAG31B,UAAUu3C,cAAgB,SAASjuC,EAAKsuB,EAAW1sB,EAAG1K,GACvDuC,GAAQ,EAAImI,KAAOA,EAAG,4CACtB0sB,EAAY,IAAIme,EAAUne,EAAWp3B,GAErC,IAAIod,EAAI7d,KAAK6d,EACTzd,EAAI,IAAIsP,EAAGnG,GACXiH,EAAIqnB,EAAUrnB,EACdwM,EAAI6a,EAAU7a,EAGdy6B,EAAa,EAAJtsC,EACTusC,EAAcvsC,GAAK,EACvB,GAAIqF,EAAEO,IAAI/Q,KAAK42B,MAAMvnB,EAAE8R,KAAKnhB,KAAK42B,MAAM/Y,KAAO,GAAK65B,EACjD,MAAM,IAAIlyC,MAAM,wCAIhBgL,EADEknC,EACE13C,KAAK42B,MAAMoW,WAAWx8B,EAAE+F,IAAIvW,KAAK42B,MAAM/Y,GAAI45B,GAE3Cz3C,KAAK42B,MAAMoW,WAAWx8B,EAAGinC,GAE/B,IAAIE,EAAO9f,EAAUrnB,EAAEmS,KAAK9E,GACxBuL,EAAKvL,EAAErH,IAAIpW,GAAGsQ,IAAIinC,GAAMx2B,KAAKtD,GAC7BwL,EAAKrM,EAAEtM,IAAIinC,GAAMx2B,KAAKtD,GAI1B,OAAO7d,KAAK8hB,EAAEqtB,OAAO/lB,EAAI5Y,EAAG6Y,EAC9B,EAEAuM,EAAG31B,UAAU23C,oBAAsB,SAASx3C,EAAGy3B,EAAWggB,EAAGp3C,GAE3D,GAAgC,QADhCo3B,EAAY,IAAIme,EAAUne,EAAWp3B,IACvB42C,cACZ,OAAOxf,EAAUwf,cAEnB,IAAK,IAAInsC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI4sC,EACJ,IACEA,EAAS93C,KAAKw3C,cAAcp3C,EAAGy3B,EAAW3sB,EAC5C,CAAE,MAAO9K,GACP,QACF,CAEA,GAAI03C,EAAOv0B,GAAGs0B,GACZ,OAAO3sC,CACX,CACA,MAAM,IAAI1F,MAAM,uCAClB,gCCnRA,IAAIkK,EAAK,EAAQ,OAEb1M,EADQ,EAAQ,OACDA,OAEnB,SAAS+yC,EAAQvZ,EAAI37B,GACnBb,KAAKw8B,GAAKA,EACVx8B,KAAK0yB,KAAO,KACZ1yB,KAAKu3B,IAAM,KAGP12B,EAAQ6xB,MACV1yB,KAAKg+B,eAAen9B,EAAQ6xB,KAAM7xB,EAAQk3C,SACxCl3C,EAAQ02B,KACVv3B,KAAK69B,cAAch9B,EAAQ02B,IAAK12B,EAAQm3C,OAC5C,CACA1zC,EAAOjF,QAAU02C,EAEjBA,EAAQK,WAAa,SAAoB5Z,EAAIjF,EAAK92B,GAChD,OAAI82B,aAAewe,EACVxe,EAEF,IAAIwe,EAAQvZ,EAAI,CACrBjF,IAAKA,EACLygB,OAAQv3C,GAEZ,EAEAs1C,EAAQI,YAAc,SAAqB3Z,EAAI9J,EAAMjyB,GACnD,OAAIiyB,aAAgBqjB,EACXrjB,EAEF,IAAIqjB,EAAQvZ,EAAI,CACrB9J,KAAMA,EACNqlB,QAASt3C,GAEb,EAEAs1C,EAAQ91C,UAAUmrC,SAAW,WAC3B,IAAI7T,EAAMv3B,KAAKw9B,YAEf,OAAIjG,EAAIgX,aACC,CAAEtoC,QAAQ,EAAOgyC,OAAQ,sBAC7B1gB,EAAI6T,WAEJ7T,EAAI7mB,IAAI1Q,KAAKw8B,GAAG5F,MAAM/Y,GAAG0wB,aAGvB,CAAEtoC,QAAQ,EAAMgyC,OAAQ,MAFtB,CAAEhyC,QAAQ,EAAOgyC,OAAQ,uBAFzB,CAAEhyC,QAAQ,EAAOgyC,OAAQ,4BAKpC,EAEAlC,EAAQ91C,UAAUu9B,UAAY,SAAmB0P,EAASzsC,GAUxD,MARuB,kBAAZysC,IACTzsC,EAAMysC,EACNA,EAAU,MAGPltC,KAAKu3B,MACRv3B,KAAKu3B,IAAMv3B,KAAKw8B,GAAG1a,EAAEpR,IAAI1Q,KAAK0yB,OAE3BjyB,EAGET,KAAKu3B,IAAIx2B,OAAON,EAAKysC,GAFnBltC,KAAKu3B,GAGhB,EAEAwe,EAAQ91C,UAAUw9B,WAAa,SAAoBh9B,GACjD,MAAY,QAARA,EACKT,KAAK0yB,KAAK5mB,SAAS,GAAI,GAEvB9L,KAAK0yB,IAChB,EAEAqjB,EAAQ91C,UAAU+9B,eAAiB,SAAwB/5B,EAAKxD,GAC9DT,KAAK0yB,KAAO,IAAIhjB,EAAGzL,EAAKxD,GAAO,IAI/BT,KAAK0yB,KAAO1yB,KAAK0yB,KAAKvR,KAAKnhB,KAAKw8B,GAAG5F,MAAM/Y,EAC3C,EAEAk4B,EAAQ91C,UAAU49B,cAAgB,SAAuB55B,EAAKxD,GAC5D,GAAIwD,EAAI8X,GAAK9X,EAAI+X,EAWf,MAP2B,SAAvBhc,KAAKw8B,GAAG5F,MAAM9uB,KAChB9E,EAAOiB,EAAI8X,EAAG,qBACkB,UAAvB/b,KAAKw8B,GAAG5F,MAAM9uB,MACS,YAAvB9H,KAAKw8B,GAAG5F,MAAM9uB,MACvB9E,EAAOiB,EAAI8X,GAAK9X,EAAI+X,EAAG,qCAEzBhc,KAAKu3B,IAAMv3B,KAAKw8B,GAAG5F,MAAMuU,MAAMlnC,EAAI8X,EAAG9X,EAAI+X,IAG5Chc,KAAKu3B,IAAMv3B,KAAKw8B,GAAG5F,MAAMmW,YAAY9oC,EAAKxD,EAC5C,EAGAs1C,EAAQ91C,UAAUi4C,OAAS,SAAgB3gB,GAIzC,OAHIA,EAAI6T,YACNpoC,EAAOu0B,EAAI6T,WAAY,8BAElB7T,EAAI7mB,IAAI1Q,KAAK0yB,MAAMgL,MAC5B,EAGAqY,EAAQ91C,UAAU+O,KAAO,SAAczF,EAAK9I,EAAKI,GAC/C,OAAOb,KAAKw8B,GAAGxtB,KAAKzF,EAAKvJ,KAAMS,EAAKI,EACtC,EAEAk1C,EAAQ91C,UAAUw0B,OAAS,SAAgBlrB,EAAKsuB,EAAWh3B,GACzD,OAAOb,KAAKw8B,GAAG/H,OAAOlrB,EAAKsuB,EAAW73B,UAAMkI,EAAWrH,EACzD,EAEAk1C,EAAQ91C,UAAUkS,QAAU,WAC1B,MAAO,eAAiBnS,KAAK0yB,MAAQ1yB,KAAK0yB,KAAK5mB,SAAS,GAAI,IACrD,UAAY9L,KAAKu3B,KAAOv3B,KAAKu3B,IAAIplB,WAAa,IACvD,gCCtHA,IAAIzC,EAAK,EAAQ,OAEbyyB,EAAQ,EAAQ,OAChBn/B,EAASm/B,EAAMn/B,OAEnB,SAASgzC,EAAUn1C,EAASJ,GAC1B,GAAII,aAAmBm1C,EACrB,OAAOn1C,EAELb,KAAKm4C,WAAWt3C,EAASJ,KAG7BuC,EAAOnC,EAAQ2P,GAAK3P,EAAQmc,EAAG,4BAC/Bhd,KAAKwQ,EAAI,IAAId,EAAG7O,EAAQ2P,EAAG,IAC3BxQ,KAAKgd,EAAI,IAAItN,EAAG7O,EAAQmc,EAAG,SACG9U,IAA1BrH,EAAQw2C,cACVr3C,KAAKq3C,cAAgB,KAErBr3C,KAAKq3C,cAAgBx2C,EAAQw2C,cACjC,CAGA,SAASe,IACPp4C,KAAKq4C,MAAQ,CACf,CAEA,SAASC,EAAUztC,EAAKwE,GACtB,IAAIkpC,EAAU1tC,EAAIwE,EAAEgpC,SACpB,KAAgB,IAAVE,GACJ,OAAOA,EAET,IAAIC,EAAqB,GAAVD,EAGf,GAAiB,IAAbC,GAAkBA,EAAW,EAC/B,OAAO,EAGT,GAAoB,IAAjB3tC,EAAIwE,EAAEgpC,OACP,OAAO,EAIT,IADA,IAAI3yC,EAAM,EACDwF,EAAI,EAAGoG,EAAMjC,EAAEgpC,MAAOntC,EAAIstC,EAAUttC,IAAKoG,IAChD5L,IAAQ,EACRA,GAAOmF,EAAIyG,GACX5L,KAAS,EAIX,QAAIA,GAAO,OAIX2J,EAAEgpC,MAAQ/mC,EACH5L,EACT,CAEA,SAAS+yC,EAAU5tC,GAGjB,IAFA,IAAIK,EAAI,EACJD,EAAMJ,EAAIvJ,OAAS,GACfuJ,EAAIK,MAAqB,IAAbL,EAAIK,EAAI,KAAcA,EAAID,GAC5CC,IAEF,OAAU,IAANA,EACKL,EAEFA,EAAIpI,MAAMyI,EACnB,CAiEA,SAASwtC,EAAgB7wB,EAAK5c,GAC5B,GAAIA,EAAM,IACR4c,EAAIhjB,KAAKoG,OADX,CAIA,IAAI0tC,EAAS,GAAKhoC,KAAKioC,IAAI3tC,GAAO0F,KAAKkoC,MAAQ,GAE/C,IADAhxB,EAAIhjB,KAAc,IAAT8zC,KACAA,GACP9wB,EAAIhjB,KAAMoG,KAAS0tC,GAAU,GAAM,KAErC9wB,EAAIhjB,KAAKoG,EANT,CAOF,CA5HA3G,EAAOjF,QAAU22C,EAkDjBA,EAAU/1C,UAAUk4C,WAAa,SAAoBv3C,EAAMH,GACzDG,EAAOuhC,EAAMpzB,QAAQnO,EAAMH,GAC3B,IAAI4O,EAAI,IAAI+oC,EACZ,GAAwB,KAApBx3C,EAAKyO,EAAEgpC,SACT,OAAO,EAET,IAAIptC,EAAMqtC,EAAU13C,EAAMyO,GAC1B,IAAY,IAARpE,EACF,OAAO,EAET,GAAKA,EAAMoE,EAAEgpC,QAAWz3C,EAAKU,OAC3B,OAAO,EAET,GAAwB,IAApBV,EAAKyO,EAAEgpC,SACT,OAAO,EAET,IAAIlyB,EAAOmyB,EAAU13C,EAAMyO,GAC3B,IAAa,IAAT8W,EACF,OAAO,EAET,GAA8B,KAAT,IAAhBvlB,EAAKyO,EAAEgpC,QACV,OAAO,EAET,IAAI7nC,EAAI5P,EAAK6B,MAAM4M,EAAEgpC,MAAOlyB,EAAO9W,EAAEgpC,OAErC,GADAhpC,EAAEgpC,OAASlyB,EACa,IAApBvlB,EAAKyO,EAAEgpC,SACT,OAAO,EAET,IAAIS,EAAOR,EAAU13C,EAAMyO,GAC3B,IAAa,IAATypC,EACF,OAAO,EAET,GAAIl4C,EAAKU,SAAWw3C,EAAOzpC,EAAEgpC,MAC3B,OAAO,EAET,GAA8B,KAAT,IAAhBz3C,EAAKyO,EAAEgpC,QACV,OAAO,EAET,IAAIr7B,EAAIpc,EAAK6B,MAAM4M,EAAEgpC,MAAOS,EAAOzpC,EAAEgpC,OACrC,GAAa,IAAT7nC,EAAE,GAAU,CACd,KAAW,IAAPA,EAAE,IAIJ,OAAO,EAHPA,EAAIA,EAAE/N,MAAM,EAKhB,CACA,GAAa,IAATua,EAAE,GAAU,CACd,KAAW,IAAPA,EAAE,IAIJ,OAAO,EAHPA,EAAIA,EAAEva,MAAM,EAKhB,CAMA,OAJAzC,KAAKwQ,EAAI,IAAId,EAAGc,GAChBxQ,KAAKgd,EAAI,IAAItN,EAAGsN,GAChBhd,KAAKq3C,cAAgB,MAEd,CACT,EAeArB,EAAU/1C,UAAU+2B,MAAQ,SAAev2B,GACzC,IAAI+P,EAAIxQ,KAAKwQ,EAAEzB,UACXiO,EAAIhd,KAAKgd,EAAEjO,UAYf,IATW,IAAPyB,EAAE,KACJA,EAAI,CAAE,GAAIrN,OAAOqN,IAER,IAAPwM,EAAE,KACJA,EAAI,CAAE,GAAI7Z,OAAO6Z,IAEnBxM,EAAIioC,EAAUjoC,GACdwM,EAAIy7B,EAAUz7B,IAENA,EAAE,MAAe,IAAPA,EAAE,KAClBA,EAAIA,EAAEva,MAAM,GAEd,IAAIolB,EAAM,CAAE,GACZ6wB,EAAgB7wB,EAAKrX,EAAElP,SACvBumB,EAAMA,EAAI1kB,OAAOqN,IACb3L,KAAK,GACT6zC,EAAgB7wB,EAAK7K,EAAE1b,QACvB,IAAIy3C,EAAWlxB,EAAI1kB,OAAO6Z,GACtB/a,EAAM,CAAE,IAGZ,OAFAy2C,EAAgBz2C,EAAK82C,EAASz3C,QAC9BW,EAAMA,EAAIkB,OAAO41C,GACV5W,EAAMphC,OAAOkB,EAAKxB,EAC3B,+BC7KA,IAAIs0B,EAAO,EAAQ,OACfe,EAAS,EAAQ,OACjBqM,EAAQ,EAAQ,OAChBn/B,EAASm/B,EAAMn/B,OACfg2C,EAAa7W,EAAM6W,WACnBjD,EAAU,EAAQ,OAClBC,EAAY,EAAQ,OAExB,SAASiD,EAAMriB,GAGb,GAFA5zB,EAAiB,YAAV4zB,EAAqB,qCAEtB52B,gBAAgBi5C,GACpB,OAAO,IAAIA,EAAMriB,GAEnBA,EAAQd,EAAOc,GAAOA,MACtB52B,KAAK42B,MAAQA,EACb52B,KAAK8hB,EAAI8U,EAAM9U,EACf9hB,KAAK8hB,EAAEsrB,WAAWxW,EAAM/Y,EAAEvJ,YAAc,GAExCtU,KAAKk5C,WAAatiB,EAAMuU,QAAQxmC,YAChC3E,KAAKm5C,eAAiBxoC,KAAKS,KAAKwlB,EAAM/Y,EAAEvJ,YAAc,GACtDtU,KAAK+0B,KAAOA,EAAK8gB,MACnB,CAEAvxC,EAAOjF,QAAU45C,EAOjBA,EAAMh5C,UAAU+O,KAAO,SAAchF,EAASm9B,GAC5Cn9B,EAAUgvC,EAAWhvC,GACrB,IAAI/F,EAAMjE,KAAKo5C,cAAcjS,GACzB32B,EAAIxQ,KAAKq5C,QAAQp1C,EAAIq1C,gBAAiBtvC,GACtCuvC,EAAIv5C,KAAK8hB,EAAEpR,IAAIF,GACfgpC,EAAWx5C,KAAKy5C,YAAYF,GAC5BG,EAAK15C,KAAKq5C,QAAQG,EAAUv1C,EAAI01C,WAAY3vC,GAC7C0G,IAAIzM,EAAIyuB,QACPknB,EAAIppC,EAAE+F,IAAImjC,GAAIv4B,KAAKnhB,KAAK42B,MAAM/Y,GAClC,OAAO7d,KAAK65C,cAAc,CAAEN,EAAGA,EAAGK,EAAGA,EAAGJ,SAAUA,GACpD,EAQAP,EAAMh5C,UAAUw0B,OAAS,SAAgBzqB,EAASyrB,EAAK8B,GAGrD,GAFAvtB,EAAUgvC,EAAWhvC,IACrByrB,EAAMz1B,KAAK65C,cAAcpkB,IACjBmkB,IAAI32B,IAAIwS,EAAIwU,MAAMrT,MAAM/Y,IAAM4X,EAAImkB,IAAI1kC,QAC5C,OAAO,EAET,IAAIjR,EAAMjE,KAAKu9B,cAAchG,GACzB7X,EAAI1f,KAAKq5C,QAAQ5jB,EAAI+jB,WAAYv1C,EAAI01C,WAAY3vC,GACjD8vC,EAAK95C,KAAK8hB,EAAEpR,IAAI+kB,EAAImkB,KAExB,OADcnkB,EAAI8jB,IAAIhjC,IAAItS,EAAIszB,MAAM7mB,IAAIgP,IACzB6D,GAAGu2B,EACpB,EAEAb,EAAMh5C,UAAUo5C,QAAU,WAExB,IADA,IAAItkB,EAAO/0B,KAAK+0B,OACP7pB,EAAI,EAAGA,EAAInG,UAAUzD,OAAQ4J,IACpC6pB,EAAK3I,OAAOrnB,UAAUmG,IACxB,OAAOi3B,EAAM4X,UAAUhlB,EAAKS,UAAUrU,KAAKnhB,KAAK42B,MAAM/Y,EACxD,EAEAo7B,EAAMh5C,UAAUs9B,cAAgB,SAAuBhG,GACrD,OAAOwe,EAAQK,WAAWp2C,KAAMu3B,EAClC,EAEA0hB,EAAMh5C,UAAUm5C,cAAgB,SAAuBjS,GACrD,OAAO4O,EAAQiE,WAAWh6C,KAAMmnC,EAClC,EAEA8R,EAAMh5C,UAAU45C,cAAgB,SAAuBpkB,GACrD,OAAIA,aAAeugB,EACVvgB,EACF,IAAIugB,EAAUh2C,KAAMy1B,EAC7B,EAUAwjB,EAAMh5C,UAAUw5C,YAAc,SAAqBtO,GACjD,IAAI1qC,EAAM0qC,EAAMgC,OAAOp+B,QAAQ,KAAM/O,KAAKm5C,gBAE1C,OADA14C,EAAIT,KAAKm5C,eAAiB,IAAMhO,EAAMzN,OAAOvb,QAAU,IAAO,EACvD1hB,CACT,EAEAw4C,EAAMh5C,UAAU8sC,YAAc,SAAqBzqC,GAGjD,IAAI23C,GAFJ33C,EAAQ6/B,EAAM6W,WAAW12C,IAENhB,OAAS,EACxB44C,EAAS53C,EAAMG,MAAM,EAAGw3C,GAAQ92C,QAAuB,IAAhBb,EAAM23C,IAC7CE,EAAoC,KAAV,IAAhB73C,EAAM23C,IAEhBj+B,EAAImmB,EAAM4X,UAAUG,GACxB,OAAOl6C,KAAK42B,MAAM0X,WAAWtyB,EAAGm+B,EAClC,EAEAlB,EAAMh5C,UAAUm6C,UAAY,SAAmBz0C,GAC7C,OAAOA,EAAIoJ,QAAQ,KAAM/O,KAAKm5C,eAChC,EAEAF,EAAMh5C,UAAUo6C,UAAY,SAAmB/3C,GAC7C,OAAO6/B,EAAM4X,UAAUz3C,EACzB,EAEA22C,EAAMh5C,UAAUq6C,QAAU,SAAiB50C,GACzC,OAAOA,aAAe1F,KAAKk5C,UAC7B,gCCtHA,IAAI/W,EAAQ,EAAQ,OAChBn/B,EAASm/B,EAAMn/B,OACfg2C,EAAa7W,EAAM6W,WACnBuB,EAAiBpY,EAAMoY,eAW3B,SAASxE,EAAQ9L,EAAO/S,GACtBl3B,KAAKiqC,MAAQA,EACbjqC,KAAKw6C,QAAUxB,EAAW9hB,EAAOiQ,QAC7B8C,EAAMqQ,QAAQpjB,EAAOK,KACvBv3B,KAAKomC,KAAOlP,EAAOK,IAEnBv3B,KAAKy6C,UAAYzB,EAAW9hB,EAAOK,IACvC,CAEAwe,EAAQK,WAAa,SAAoBnM,EAAO1S,GAC9C,OAAIA,aAAewe,EACVxe,EACF,IAAIwe,EAAQ9L,EAAO,CAAE1S,IAAKA,GACnC,EAEAwe,EAAQiE,WAAa,SAAoB/P,EAAO9C,GAC9C,OAAIA,aAAkB4O,EACb5O,EACF,IAAI4O,EAAQ9L,EAAO,CAAE9C,OAAQA,GACtC,EAEA4O,EAAQ91C,UAAUknC,OAAS,WACzB,OAAOnnC,KAAKw6C,OACd,EAEAD,EAAexE,EAAS,YAAY,WAClC,OAAO/1C,KAAKiqC,MAAMwP,YAAYz5C,KAAKu3B,MACrC,IAEAgjB,EAAexE,EAAS,OAAO,WAC7B,OAAI/1C,KAAKy6C,UACAz6C,KAAKiqC,MAAM8C,YAAY/sC,KAAKy6C,WAC9Bz6C,KAAKiqC,MAAMnoB,EAAEpR,IAAI1Q,KAAK0yB,OAC/B,IAEA6nB,EAAexE,EAAS,aAAa,WACnC,IAAI9L,EAAQjqC,KAAKiqC,MACblV,EAAO/0B,KAAK+0B,OACZklB,EAAShQ,EAAMkP,eAAiB,EAEhC1mC,EAAIsiB,EAAKtyB,MAAM,EAAGwnC,EAAMkP,gBAK5B,OAJA1mC,EAAE,IAAM,IACRA,EAAEwnC,IAAW,IACbxnC,EAAEwnC,IAAW,GAENxnC,CACT,IAEA8nC,EAAexE,EAAS,QAAQ,WAC9B,OAAO/1C,KAAKiqC,MAAMoQ,UAAUr6C,KAAK06C,YACnC,IAEAH,EAAexE,EAAS,QAAQ,WAC9B,OAAO/1C,KAAKiqC,MAAMlV,OAAO3I,OAAOpsB,KAAKmnC,UAAU3R,QACjD,IAEA+kB,EAAexE,EAAS,iBAAiB,WACvC,OAAO/1C,KAAK+0B,OAAOtyB,MAAMzC,KAAKiqC,MAAMkP,eACtC,IAEApD,EAAQ91C,UAAU+O,KAAO,SAAchF,GAErC,OADAhH,EAAOhD,KAAKw6C,QAAS,2BACdx6C,KAAKiqC,MAAMj7B,KAAKhF,EAAShK,KAClC,EAEA+1C,EAAQ91C,UAAUw0B,OAAS,SAAgBzqB,EAASyrB,GAClD,OAAOz1B,KAAKiqC,MAAMxV,OAAOzqB,EAASyrB,EAAKz1B,KACzC,EAEA+1C,EAAQ91C,UAAU06C,UAAY,SAAmBl6C,GAE/C,OADAuC,EAAOhD,KAAKw6C,QAAS,0BACdrY,EAAMphC,OAAOf,KAAKmnC,SAAU1mC,EACrC,EAEAs1C,EAAQ91C,UAAUu9B,UAAY,SAAmB/8B,GAC/C,OAAO0hC,EAAMphC,OAAOf,KAAK25C,WAAYl5C,EACvC,EAEA6D,EAAOjF,QAAU02C,gCC5FjB,IAAIrmC,EAAK,EAAQ,OACbyyB,EAAQ,EAAQ,OAChBn/B,EAASm/B,EAAMn/B,OACfu3C,EAAiBpY,EAAMoY,eACvBvB,EAAa7W,EAAM6W,WAUvB,SAAShD,EAAU/L,EAAOxU,GACxBz1B,KAAKiqC,MAAQA,EAEM,kBAARxU,IACTA,EAAMujB,EAAWvjB,IAEf/zB,MAAMC,QAAQ8zB,KAChBzyB,EAAOyyB,EAAIn0B,SAAkC,EAAvB2oC,EAAMkP,eAAoB,8BAChD1jB,EAAM,CACJ8jB,EAAG9jB,EAAIhzB,MAAM,EAAGwnC,EAAMkP,gBACtBS,EAAGnkB,EAAIhzB,MAAMwnC,EAAMkP,kBAIvBn2C,EAAOyyB,EAAI8jB,GAAK9jB,EAAImkB,EAAG,4BAEnB3P,EAAMqQ,QAAQ7kB,EAAI8jB,KACpBv5C,KAAK46C,GAAKnlB,EAAI8jB,GACZ9jB,EAAImkB,aAAalqC,IACnB1P,KAAK66C,GAAKplB,EAAImkB,GAEhB55C,KAAK86C,UAAYp5C,MAAMC,QAAQ8zB,EAAI8jB,GAAK9jB,EAAI8jB,EAAI9jB,EAAI+jB,SACpDx5C,KAAK+6C,UAAYr5C,MAAMC,QAAQ8zB,EAAImkB,GAAKnkB,EAAImkB,EAAInkB,EAAIulB,QACtD,CAEAT,EAAevE,EAAW,KAAK,WAC7B,OAAOh2C,KAAKiqC,MAAMoQ,UAAUr6C,KAAKg7C,WACnC,IAEAT,EAAevE,EAAW,KAAK,WAC7B,OAAOh2C,KAAKiqC,MAAM8C,YAAY/sC,KAAKw5C,WACrC,IAEAe,EAAevE,EAAW,YAAY,WACpC,OAAOh2C,KAAKiqC,MAAMwP,YAAYz5C,KAAKu5C,IACrC,IAEAgB,EAAevE,EAAW,YAAY,WACpC,OAAOh2C,KAAKiqC,MAAMmQ,UAAUp6C,KAAK45C,IACnC,IAEA5D,EAAU/1C,UAAUg7C,QAAU,WAC5B,OAAOj7C,KAAKw5C,WAAWr2C,OAAOnD,KAAKg7C,WACrC,EAEAhF,EAAU/1C,UAAUi7C,MAAQ,WAC1B,OAAO/Y,EAAMphC,OAAOf,KAAKi7C,UAAW,OAAO5tC,aAC7C,EAEA/I,EAAOjF,QAAU22C,aCjEjB1xC,EAAOjF,QAAU,CACfisC,QAAS,CACPI,KAAM,EACNK,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINP,IAAK,CACHzkB,IAAK,EACLglB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,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","sources":["webpack://sniffspot/./node_modules/asn1.js/lib/asn1.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/api.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://sniffspot/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://sniffspot/./node_modules/bn.js/lib/bn.js","webpack://sniffspot/./node_modules/brorand/index.js","webpack://sniffspot/./node_modules/browserify-aes/aes.js","webpack://sniffspot/./node_modules/browserify-aes/authCipher.js","webpack://sniffspot/./node_modules/browserify-aes/browser.js","webpack://sniffspot/./node_modules/browserify-aes/decrypter.js","webpack://sniffspot/./node_modules/browserify-aes/encrypter.js","webpack://sniffspot/./node_modules/browserify-aes/ghash.js","webpack://sniffspot/./node_modules/browserify-aes/incr32.js","webpack://sniffspot/./node_modules/browserify-aes/modes/cbc.js","webpack://sniffspot/./node_modules/browserify-aes/modes/cfb.js","webpack://sniffspot/./node_modules/browserify-aes/modes/cfb1.js","webpack://sniffspot/./node_modules/browserify-aes/modes/cfb8.js","webpack://sniffspot/./node_modules/browserify-aes/modes/ctr.js","webpack://sniffspot/./node_modules/browserify-aes/modes/ecb.js","webpack://sniffspot/./node_modules/browserify-aes/modes/index.js","webpack://sniffspot/./node_modules/browserify-aes/modes/ofb.js","webpack://sniffspot/./node_modules/browserify-aes/streamCipher.js","webpack://sniffspot/./node_modules/browserify-cipher/browser.js","webpack://sniffspot/./node_modules/browserify-des/index.js","webpack://sniffspot/./node_modules/browserify-des/modes.js","webpack://sniffspot/./node_modules/browserify-rsa/index.js","webpack://sniffspot/./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","webpack://sniffspot/./node_modules/browserify-sign/algos.js","webpack://sniffspot/./node_modules/browserify-sign/browser/index.js","webpack://sniffspot/./node_modules/browserify-sign/browser/sign.js","webpack://sniffspot/./node_modules/browserify-sign/browser/verify.js","webpack://sniffspot/./node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","webpack://sniffspot/./node_modules/buffer-equal-constant-time/index.js","webpack://sniffspot/./node_modules/buffer-xor/index.js","webpack://sniffspot/./node_modules/call-bind-apply-helpers/actualApply.js","webpack://sniffspot/./node_modules/call-bind-apply-helpers/applyBind.js","webpack://sniffspot/./node_modules/call-bind-apply-helpers/functionApply.js","webpack://sniffspot/./node_modules/call-bind-apply-helpers/functionCall.js","webpack://sniffspot/./node_modules/call-bind-apply-helpers/index.js","webpack://sniffspot/./node_modules/call-bind-apply-helpers/reflectApply.js","webpack://sniffspot/./node_modules/call-bind/index.js","webpack://sniffspot/./node_modules/call-bound/index.js","webpack://sniffspot/./node_modules/cipher-base/index.js","webpack://sniffspot/./node_modules/core-util-is/lib/util.js","webpack://sniffspot/./node_modules/create-ecdh/browser.js","webpack://sniffspot/./node_modules/create-hash/browser.js","webpack://sniffspot/./node_modules/create-hash/md5.js","webpack://sniffspot/./node_modules/create-hmac/browser.js","webpack://sniffspot/./node_modules/create-hmac/legacy.js","webpack://sniffspot/./node_modules/crypto-browserify/index.js","webpack://sniffspot/./node_modules/define-data-property/index.js","webpack://sniffspot/./node_modules/des.js/lib/des.js","webpack://sniffspot/./node_modules/des.js/lib/des/cbc.js","webpack://sniffspot/./node_modules/des.js/lib/des/cipher.js","webpack://sniffspot/./node_modules/des.js/lib/des/des.js","webpack://sniffspot/./node_modules/des.js/lib/des/ede.js","webpack://sniffspot/./node_modules/des.js/lib/des/utils.js","webpack://sniffspot/./node_modules/diffie-hellman/browser.js","webpack://sniffspot/./node_modules/diffie-hellman/lib/dh.js","webpack://sniffspot/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://sniffspot/./node_modules/dunder-proto/get.js","webpack://sniffspot/./node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","webpack://sniffspot/./node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/curves.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://sniffspot/./node_modules/elliptic/lib/elliptic/utils.js","webpack://sniffspot/./node_modules/es-define-property/index.js","webpack://sniffspot/./node_modules/es-errors/eval.js","webpack://sniffspot/./node_modules/es-errors/index.js","webpack://sniffspot/./node_modules/es-errors/range.js","webpack://sniffspot/./node_modules/es-errors/ref.js","webpack://sniffspot/./node_modules/es-errors/syntax.js","webpack://sniffspot/./node_modules/es-errors/type.js","webpack://sniffspot/./node_modules/es-errors/uri.js","webpack://sniffspot/./node_modules/es-object-atoms/index.js","webpack://sniffspot/./node_modules/events/events.js","webpack://sniffspot/./node_modules/evp_bytestokey/index.js","webpack://sniffspot/./node_modules/for-each/index.js","webpack://sniffspot/./node_modules/function-bind/implementation.js","webpack://sniffspot/./node_modules/function-bind/index.js","webpack://sniffspot/./node_modules/get-intrinsic/index.js","webpack://sniffspot/./node_modules/get-proto/Object.getPrototypeOf.js","webpack://sniffspot/./node_modules/get-proto/Reflect.getPrototypeOf.js","webpack://sniffspot/./node_modules/get-proto/index.js","webpack://sniffspot/./node_modules/gopd/gOPD.js","webpack://sniffspot/./node_modules/gopd/index.js","webpack://sniffspot/./node_modules/has-property-descriptors/index.js","webpack://sniffspot/./node_modules/has-symbols/index.js","webpack://sniffspot/./node_modules/has-symbols/shams.js","webpack://sniffspot/./node_modules/has-tostringtag/shams.js","webpack://sniffspot/./node_modules/hash-base/index.js","webpack://sniffspot/./node_modules/hash.js/lib/hash.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/common.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/hmac.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/ripemd.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha/1.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha/224.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha/256.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha/384.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha/512.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/sha/common.js","webpack://sniffspot/./node_modules/hash.js/lib/hash/utils.js","webpack://sniffspot/./node_modules/hasown/index.js","webpack://sniffspot/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://sniffspot/./node_modules/inherits/inherits_browser.js","webpack://sniffspot/./node_modules/is-arguments/index.js","webpack://sniffspot/./node_modules/is-callable/index.js","webpack://sniffspot/./node_modules/is-generator-function/index.js","webpack://sniffspot/./node_modules/is-regex/index.js","webpack://sniffspot/./node_modules/is-typed-array/index.js","webpack://sniffspot/./node_modules/isarray/index.js","webpack://sniffspot/./node_modules/jsonwebtoken/decode.js","webpack://sniffspot/./node_modules/jsonwebtoken/index.js","webpack://sniffspot/./node_modules/jsonwebtoken/lib/JsonWebTokenError.js","webpack://sniffspot/./node_modules/jsonwebtoken/lib/NotBeforeError.js","webpack://sniffspot/./node_modules/jsonwebtoken/lib/TokenExpiredError.js","webpack://sniffspot/./node_modules/jsonwebtoken/lib/psSupported.js","webpack://sniffspot/./node_modules/jsonwebtoken/lib/timespan.js","webpack://sniffspot/./node_modules/jsonwebtoken/node_modules/semver/semver.js","webpack://sniffspot/./node_modules/jsonwebtoken/sign.js","webpack://sniffspot/./node_modules/jsonwebtoken/verify.js","webpack://sniffspot/./node_modules/jwa/index.js","webpack://sniffspot/./node_modules/jws/index.js","webpack://sniffspot/./node_modules/jws/lib/data-stream.js","webpack://sniffspot/./node_modules/jws/lib/sign-stream.js","webpack://sniffspot/./node_modules/jws/lib/tostring.js","webpack://sniffspot/./node_modules/jws/lib/verify-stream.js","webpack://sniffspot/./node_modules/little-loader/lib/little-loader.js","webpack://sniffspot/./node_modules/lodash.includes/index.js","webpack://sniffspot/./node_modules/lodash.isboolean/index.js","webpack://sniffspot/./node_modules/lodash.isinteger/index.js","webpack://sniffspot/./node_modules/lodash.isnumber/index.js","webpack://sniffspot/./node_modules/lodash.isplainobject/index.js","webpack://sniffspot/./node_modules/lodash.isstring/index.js","webpack://sniffspot/./node_modules/lodash.once/index.js","webpack://sniffspot/./node_modules/math-intrinsics/abs.js","webpack://sniffspot/./node_modules/math-intrinsics/floor.js","webpack://sniffspot/./node_modules/math-intrinsics/isNaN.js","webpack://sniffspot/./node_modules/math-intrinsics/max.js","webpack://sniffspot/./node_modules/math-intrinsics/min.js","webpack://sniffspot/./node_modules/math-intrinsics/pow.js","webpack://sniffspot/./node_modules/math-intrinsics/round.js","webpack://sniffspot/./node_modules/math-intrinsics/sign.js","webpack://sniffspot/./node_modules/md5.js/index.js","webpack://sniffspot/./node_modules/miller-rabin/lib/mr.js","webpack://sniffspot/./node_modules/minimalistic-assert/index.js","webpack://sniffspot/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://sniffspot/./node_modules/ms/index.js","webpack://sniffspot/./node_modules/parse-asn1/asn1.js","webpack://sniffspot/./node_modules/parse-asn1/certificate.js","webpack://sniffspot/./node_modules/parse-asn1/fixProc.js","webpack://sniffspot/./node_modules/parse-asn1/index.js","webpack://sniffspot/./node_modules/pbkdf2/browser.js","webpack://sniffspot/./node_modules/pbkdf2/lib/async.js","webpack://sniffspot/./node_modules/pbkdf2/lib/default-encoding.js","webpack://sniffspot/./node_modules/pbkdf2/lib/precondition.js","webpack://sniffspot/./node_modules/pbkdf2/lib/sync-browser.js","webpack://sniffspot/./node_modules/pbkdf2/lib/to-buffer.js","webpack://sniffspot/./node_modules/possible-typed-array-names/index.js","webpack://sniffspot/./node_modules/process-nextick-args/index.js","webpack://sniffspot/./node_modules/public-encrypt/browser.js","webpack://sniffspot/./node_modules/public-encrypt/mgf.js","webpack://sniffspot/./node_modules/public-encrypt/privateDecrypt.js","webpack://sniffspot/./node_modules/public-encrypt/publicEncrypt.js","webpack://sniffspot/./node_modules/public-encrypt/withPublic.js","webpack://sniffspot/./node_modules/public-encrypt/xor.js","webpack://sniffspot/./node_modules/randombytes/browser.js","webpack://sniffspot/./node_modules/randomfill/browser.js","webpack://sniffspot/./node_modules/react-mapkit/dist/index.js","webpack://sniffspot/./node_modules/react-mapkit/dist/react-mapkit.cjs.production.min.js","webpack://sniffspot/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://sniffspot/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://sniffspot/./node_modules/readable-stream/lib/_stream_readable.js","webpack://sniffspot/./node_modules/readable-stream/lib/_stream_transform.js","webpack://sniffspot/./node_modules/readable-stream/lib/_stream_writable.js","webpack://sniffspot/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://sniffspot/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://sniffspot/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://sniffspot/./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack://sniffspot/./node_modules/readable-stream/readable-browser.js","webpack://sniffspot/./node_modules/ripemd160/index.js","webpack://sniffspot/./node_modules/safe-buffer/index.js","webpack://sniffspot/./node_modules/safe-regex-test/index.js","webpack://sniffspot/./node_modules/set-function-length/index.js","webpack://sniffspot/./node_modules/sha.js/hash.js","webpack://sniffspot/./node_modules/sha.js/index.js","webpack://sniffspot/./node_modules/sha.js/sha.js","webpack://sniffspot/./node_modules/sha.js/sha1.js","webpack://sniffspot/./node_modules/sha.js/sha224.js","webpack://sniffspot/./node_modules/sha.js/sha256.js","webpack://sniffspot/./node_modules/sha.js/sha384.js","webpack://sniffspot/./node_modules/sha.js/sha512.js","webpack://sniffspot/./node_modules/stream-browserify/index.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","webpack://sniffspot/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://sniffspot/./node_modules/string_decoder/lib/string_decoder.js","webpack://sniffspot/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://sniffspot/./node_modules/util-deprecate/browser.js","webpack://sniffspot/./node_modules/util/support/isBufferBrowser.js","webpack://sniffspot/./node_modules/util/support/types.js","webpack://sniffspot/./node_modules/util/util.js","webpack://sniffspot/./node_modules/which-typed-array/index.js","webpack://sniffspot/./node_modules/available-typed-arrays/index.js"],"sourcesContent":["var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext(\n '(function ' + this.name + '(entity) {\\n' +\n ' this._initNamed(entity);\\n' +\n '})'\n );\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n\n return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n var res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n var result = state['default'];\n var present = true;\n\n var prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any)\n var save = input.save();\n var body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any)\n result = result;\n else if (state.choice === null)\n result = this._decodeGeneric(state.tag, input, options);\n else\n result = this._decodeChoice(input, options);\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n\n Object.keys(state.choice).some(function(key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default']\n else\n return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n var state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n\n var node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","var constants = require('../constants');\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n\n var label = options.label.toUpperCase();\n\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar randomBytes = require('randombytes');\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction getr(priv) {\n\tvar len = priv.modulus.byteLength();\n\tvar r;\n\tdo {\n\t\tr = new BN(randomBytes(len));\n\t} while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n\treturn r;\n}\n\nfunction blind(priv) {\n\tvar r = getr(priv);\n\tvar blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n\treturn { blinder: blinder, unblinder: r.invm(priv.modulus) };\n}\n\nfunction crt(msg, priv) {\n\tvar blinds = blind(priv);\n\tvar len = priv.modulus.byteLength();\n\tvar blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n\tvar c1 = blinded.toRed(BN.mont(priv.prime1));\n\tvar c2 = blinded.toRed(BN.mont(priv.prime2));\n\tvar qinv = priv.coefficient;\n\tvar p = priv.prime1;\n\tvar q = priv.prime2;\n\tvar m1 = c1.redPow(priv.exponent1).fromRed();\n\tvar m2 = c2.redPow(priv.exponent2).fromRed();\n\tvar h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n\treturn m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\ncrt.getr = getr;\n\nmodule.exports = crt;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\n\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nvar RSA_PKCS1_PADDING = 1;\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong private key type'); }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) { pad.push(0xff); }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) { pad.push(hash[i]); }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }\n\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) { r = [0].concat(r); }\n if (s[0] & 0x80) { s = [0].concat(s); }\n\n var total = r.length + s.length + 4;\n var res = [\n 0x30, total, 0x02, r.length\n ];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return { k: k, v: v };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) { bits.ishrn(shift); }\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong public key type'); }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) { out = 1; }\n\n i = -1;\n while (++i < len) { out |= sig[i] ^ pad[i]; }\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }\n\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }\n if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {import('.')} */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t// eslint-disable-next-line no-extra-parens\n\tvar intrinsic = /** @type {Parameters[0][0]} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic([intrinsic]);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar StringDecoder = require('string_decoder').StringDecoder;\nvar inherits = require('inherits');\n\nfunction CipherBase(hashMode) {\n\tTransform.call(this);\n\tthis.hashMode = typeof hashMode === 'string';\n\tif (this.hashMode) {\n\t\tthis[hashMode] = this._finalOrDigest;\n\t} else {\n\t\tthis['final'] = this._finalOrDigest;\n\t}\n\tif (this._final) {\n\t\tthis.__final = this._final;\n\t\tthis._final = null;\n\t}\n\tthis._decoder = null;\n\tthis._encoding = null;\n}\ninherits(CipherBase, Transform);\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined'\n\t&& ArrayBuffer.isView\n\t&& (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nfunction toBuffer(data, encoding) {\n\t/*\n\t * No need to do anything for exact instance\n\t * This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n\t */\n\tif (data instanceof Buffer) {\n\t\treturn data;\n\t}\n\n\t// Convert strings to Buffer\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && ArrayBuffer.isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t/*\n\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t * We just go to Uint8Array case if this fails\n\t\t */\n\t\tif (res.byteLength === data.byteLength) {\n\t\t\treturn res;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');\n}\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n\tvar bufferData = toBuffer(data, inputEnc); // asserts correct input type\n\tvar outData = this._update(bufferData);\n\tif (this.hashMode) {\n\t\treturn this;\n\t}\n\n\tif (outputEnc) {\n\t\toutData = this._toString(outData, outputEnc);\n\t}\n\n\treturn outData;\n};\n\nCipherBase.prototype.setAutoPadding = function () {};\nCipherBase.prototype.getAuthTag = function () {\n\tthrow new Error('trying to get auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAuthTag = function () {\n\tthrow new Error('trying to set auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAAD = function () {\n\tthrow new Error('trying to set aad in unsupported state');\n};\n\nCipherBase.prototype._transform = function (data, _, next) {\n\tvar err;\n\ttry {\n\t\tif (this.hashMode) {\n\t\t\tthis._update(data);\n\t\t} else {\n\t\t\tthis.push(this._update(data));\n\t\t}\n\t} catch (e) {\n\t\terr = e;\n\t} finally {\n\t\tnext(err);\n\t}\n};\nCipherBase.prototype._flush = function (done) {\n\tvar err;\n\ttry {\n\t\tthis.push(this.__final());\n\t} catch (e) {\n\t\terr = e;\n\t}\n\n\tdone(err);\n};\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n\tvar outData = this.__final() || Buffer.alloc(0);\n\tif (outputEnc) {\n\t\toutData = this._toString(outData, outputEnc, true);\n\t}\n\treturn outData;\n};\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n\tif (!this._decoder) {\n\t\tthis._decoder = new StringDecoder(enc);\n\t\tthis._encoding = enc;\n\t}\n\n\tif (this._encoding !== enc) {\n\t\tthrow new Error('can’t switch encodings');\n\t}\n\n\tvar out = this._decoder.write(value);\n\tif (fin) {\n\t\tout += this._decoder.end();\n\t}\n\n\treturn out;\n};\n\nmodule.exports = CipherBase;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict';\n\n// eslint-disable-next-line no-multi-assign\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes');\n\n// eslint-disable-next-line no-multi-assign\nexports.createHash = exports.Hash = require('create-hash');\n\n// eslint-disable-next-line no-multi-assign\nexports.createHmac = exports.Hmac = require('create-hmac');\n\nvar algos = require('browserify-sign/algos');\nvar algoKeys = Object.keys(algos);\nvar hashes = [\n\t'sha1',\n\t'sha224',\n\t'sha256',\n\t'sha384',\n\t'sha512',\n\t'md5',\n\t'rmd160'\n].concat(algoKeys);\n\nexports.getHashes = function () {\n\treturn hashes;\n};\n\nvar p = require('pbkdf2');\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\n\nvar aes = require('browserify-cipher');\n\nexports.Cipher = aes.Cipher;\nexports.createCipher = aes.createCipher;\nexports.Cipheriv = aes.Cipheriv;\nexports.createCipheriv = aes.createCipheriv;\nexports.Decipher = aes.Decipher;\nexports.createDecipher = aes.createDecipher;\nexports.Decipheriv = aes.Decipheriv;\nexports.createDecipheriv = aes.createDecipheriv;\nexports.getCiphers = aes.getCiphers;\nexports.listCiphers = aes.listCiphers;\n\nvar dh = require('diffie-hellman');\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\n\nvar sign = require('browserify-sign');\n\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\n\nexports.createECDH = require('create-ecdh');\n\nvar publicEncrypt = require('public-encrypt');\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt;\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// [\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error('sorry, ' + name + ' is not implemented yet\\nwe accept pull requests\\nhttps://github.com/browserify/crypto-browserify');\n// };\n// });\n\nvar rf = require('randomfill');\n\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\n\nexports.createCredentials = function () {\n\tthrow new Error('sorry, createCredentials is not implemented yet\\nwe accept pull requests\\nhttps://github.com/browserify/crypto-browserify');\n};\n\nexports.constants = {\n\tDH_CHECK_P_NOT_SAFE_PRIME: 2,\n\tDH_CHECK_P_NOT_PRIME: 1,\n\tDH_UNABLE_TO_CHECK_GENERATOR: 4,\n\tDH_NOT_SUITABLE_GENERATOR: 8,\n\tNPN_ENABLED: 1,\n\tALPN_ENABLED: 1,\n\tRSA_PKCS1_PADDING: 1,\n\tRSA_SSLV23_PADDING: 2,\n\tRSA_NO_PADDING: 3,\n\tRSA_PKCS1_OAEP_PADDING: 4,\n\tRSA_X931_PADDING: 5,\n\tRSA_PKCS1_PSS_PADDING: 6,\n\tPOINT_CONVERSION_COMPRESSED: 2,\n\tPOINT_CONVERSION_UNCOMPRESSED: 4,\n\tPOINT_CONVERSION_HYBRID: 6\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = (str.length + 1) >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number',\n 'Expected message to be an array-like, a hex string, or a BN instance');\n assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert((new BN(nonce)).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options)\n options = {};\n\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nvar useUint8Array = typeof Uint8Array !== 'undefined'\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n ArrayBuffer.isView &&\n (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT)\n\nfunction toBuffer (data, encoding) {\n // No need to do anything for exact instance\n // This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n if (data instanceof Buffer) return data\n\n // Convert strings to Buffer\n if (typeof data === 'string') return Buffer.from(data, encoding)\n\n /*\n * Wrap any TypedArray instances and DataViews\n * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n */\n if (useArrayBuffer && ArrayBuffer.isView(data)) {\n if (data.byteLength === 0) return Buffer.alloc(0) // Bug in Node.js <6.3.1, which treats this as out-of-bounds\n var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n // Recheck result size, as offset/length doesn't work on Node.js <5.10\n // We just go to Uint8Array case if this fails\n if (res.byteLength === data.byteLength) return res\n }\n\n /*\n * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n * Doesn't make sense with other TypedArray instances\n */\n if (useUint8Array && data instanceof Uint8Array) return Buffer.from(data)\n\n /*\n * Old Buffer polyfill on an engine that doesn't have TypedArray support\n * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n * Convert to our current Buffer implementation\n */\n if (\n Buffer.isBuffer(data) &&\n data.constructor &&\n typeof data.constructor.isBuffer === 'function' &&\n data.constructor.isBuffer(data)\n ) {\n return Buffer.from(data)\n }\n\n throw new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.')\n}\n\nHashBase.prototype.update = function (data, encoding) {\n if (this._finalized) throw new Error('Digest already called')\n\n data = toBuffer(data, encoding) // asserts correct input type\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\n/** @type {undefined | false | null | GeneratorFunctionConstructor} */\nvar GeneratorFunction;\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t? /** @type {GeneratorFunctionConstructor} */ (getProto(generatorFunc))\n\t\t\t: false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) { return null; }\n var payload = decoded.payload;\n\n //try parse the payload\n if(typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if(obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) { }\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};\n","module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n","var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if(Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;","var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n","var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n\n};","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar safeRe = exports.safeRe = []\nvar src = exports.src = []\nvar R = 0\n\nvar LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nvar safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nfunction makeSafeRe (value) {\n for (var i = 0; i < safeRegexReplacements.length; i++) {\n var token = safeRegexReplacements[i][0]\n var max = safeRegexReplacements[i][1]\n value = value\n .split(token + '*').join(token + '{0,' + max + '}')\n .split(token + '+').join(token + '{1,' + max + '}')\n }\n return value\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '\\\\d+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nsafeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nsafeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nsafeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n\n // Replace all greedy whitespace to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n safeRe[i] = new RegExp(makeSafeRe(src[i]))\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? safeRe[LOOSE] : safeRe[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1]\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split based on boolean or ||\n this.set = this.raw.split('||').map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + this.raw)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, safeRe[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(safeRe[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(safeRe[CARETTRIM], caretTrimReplace)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n })\n })\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(safeRe[STAR], '')\n}\n\n// This function is passed to string.replace(safeRe[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n var match = version.match(safeRe[COERCE])\n\n if (match == null) {\n return null\n }\n\n return parse(match[1] +\n '.' + (match[2] || '0') +\n '.' + (match[3] || '0'))\n}\n","var timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\nvar includes = require('lodash.includes');\nvar isBoolean = require('lodash.isboolean');\nvar isInteger = require('lodash.isinteger');\nvar isNumber = require('lodash.isnumber');\nvar isPlainObject = require('lodash.isplainobject');\nvar isString = require('lodash.isstring');\nvar once = require('lodash.once');\n\nvar SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none']\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nvar sign_options_schema = {\n expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n subject: { isValid: isString, message: '\"subject\" must be a string' },\n jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' }\n};\n\nvar registered_claims_schema = {\n iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object)\n .forEach(function(key) {\n var validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nvar options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\n\nvar options_for_objects = [\n 'expiresIn',\n 'notBefore',\n 'noTimestamp',\n 'audience',\n 'issuer',\n 'subject',\n 'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n var isObjectPayload = typeof payload === 'object' &&\n !Buffer.isBuffer(payload);\n\n var header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n }\n catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({},payload);\n }\n } else {\n var invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n }\n catch (error) {\n return failure(error);\n }\n\n var timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n var claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n\n var encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback)\n .once('done', function (signature) {\n callback(null, signature);\n });\n } else {\n return jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n }\n};\n","var JsonWebTokenError = require('./lib/JsonWebTokenError');\nvar NotBeforeError = require('./lib/NotBeforeError');\nvar TokenExpiredError = require('./lib/TokenExpiredError');\nvar decode = require('./decode');\nvar timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\n\nvar PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512'];\nvar RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nvar HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if ((typeof options === 'function') && !callback) {\n callback = options;\n options = {};\n }\n\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n\n var done;\n\n if (callback) {\n done = callback;\n } else {\n done = function(err, data) {\n if (err) throw err;\n return data;\n };\n }\n\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n\n var clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n if (!jwtString){\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n\n var parts = jwtString.split('.');\n\n if (parts.length !== 3){\n return done(new JsonWebTokenError('jwt malformed'));\n }\n\n var decodedToken;\n\n try {\n decodedToken = decode(jwtString, { complete: true });\n } catch(err) {\n return done(err);\n }\n\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n\n var header = decodedToken.header;\n var getSecret;\n\n if(typeof secretOrPublicKey === 'function') {\n if(!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n\n getSecret = secretOrPublicKey;\n }\n else {\n getSecret = function(header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n\n return getSecret(header, function(err, secretOrPublicKey) {\n if(err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n\n var hasSignature = parts[2].trim() !== '';\n\n if (!hasSignature && secretOrPublicKey){\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n\n if (!hasSignature && !options.algorithms) {\n options.algorithms = ['none'];\n }\n\n if (!options.algorithms) {\n options.algorithms = ~secretOrPublicKey.toString().indexOf('BEGIN CERTIFICATE') ||\n ~secretOrPublicKey.toString().indexOf('BEGIN PUBLIC KEY') ? PUB_KEY_ALGS :\n ~secretOrPublicKey.toString().indexOf('BEGIN RSA PUBLIC KEY') ? RSA_KEY_ALGS : HS_ALGS;\n\n }\n\n if (!~options.algorithms.indexOf(decodedToken.header.alg)) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n\n var valid;\n\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n\n var payload = decodedToken.payload;\n\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n\n if (options.audience) {\n var audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n var target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n var match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n\n if (options.issuer) {\n var invalid_issuer =\n (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n\n var maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n\n if (options.complete === true) {\n var signature = decodedToken.signature;\n\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n\n return done(null, payload);\n });\n};\n","var bufferEqual = require('buffer-equal-constant-time');\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret||opts.privateKey||opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret||opts.publicKey||opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","/**\n * Script loading is difficult thanks to IE. We need callbacks to fire\n * immediately following the script's execution, with no other scripts\n * running in between. If other scripts on the page are able to run\n * between our script and its callback, bad things can happen, such as\n * `jQuery.noConflict` not being called in time, resulting in plugins\n * latching onto our version of jQuery, etc.\n *\n * For IE<10 we use a relatively well-documented \"preloading\" strategy,\n * which ensures that the script is ready to execute *before* appending\n * it to the DOM. That way when it is finally appended, it is\n * executed immediately.\n *\n * References:\n * - http://www.html5rocks.com/en/tutorials/speed/script-loading/\n * - http://blog.getify.com/ie11-please-bring-real-script-preloading-back/\n * - https://github.com/jrburke/requirejs/issues/526\n * - https://connect.microsoft.com/IE/feedback/details/729164/\n * ie10-dynamic-script-element-fires-loaded-readystate-prematurely\n */\n(function () {\n\n // Global state.\n var pendingScripts = {};\n var scriptCounter = 0;\n\n /**\n * Insert script into the DOM\n *\n * @param {Object} script Script DOM object\n * @returns {void}\n */\n var _addScript = function (script) {\n // Get the first script element, we're just going to use it\n // as a reference for where to insert ours. Do NOT try to do\n // this just once at the top and then re-use the same script\n // as a reference later. Some weird loaders *remove* script\n // elements after the browser has executed their contents,\n // so the same reference might not have a parentNode later.\n var firstScript = document.getElementsByTagName(\"script\")[0];\n\n // Append the script to the DOM, triggering execution.\n firstScript.parentNode.insertBefore(script, firstScript);\n };\n\n /**\n * Load Script.\n *\n * @param {String} src URI of script\n * @param {Function|Object} callback (Optional) Called on script load completion,\n * or options object\n * @param {Object} context (Optional) Callback context (`this`)\n * @returns {void}\n */\n var _lload = function (src, callback, context) {\n /*eslint max-statements: [2, 32]*/\n var setup;\n\n if (callback && typeof callback !== \"function\") {\n context = callback.context || context;\n setup = callback.setup;\n callback = callback.callback;\n }\n\n var script = document.createElement(\"script\");\n var done = false;\n var err;\n var _cleanup; // _must_ be set below.\n\n /**\n * Final handler for error or completion.\n *\n * **Note**: Will only be called _once_.\n *\n * @returns {void}\n */\n var _finish = function () {\n // Only call once.\n if (done) { return; }\n done = true;\n\n // Internal cleanup.\n _cleanup();\n\n // Callback.\n if (callback) {\n callback.call(context, err);\n }\n };\n\n /**\n * Error handler\n *\n * @returns {void}\n */\n var _error = function () {\n err = new Error(src || \"EMPTY\");\n _finish();\n };\n\n if (script.readyState && !(\"async\" in script)) {\n /*eslint-disable consistent-return*/\n\n // This section is only for IE<10. Some other old browsers may\n // satisfy the above condition and enter this branch, but we don't\n // support those browsers anyway.\n\n var id = scriptCounter++;\n var isReady = { loaded: true, complete: true };\n var inserted = false;\n\n // Clear out listeners, state.\n _cleanup = function () {\n script.onreadystatechange = script.onerror = null;\n pendingScripts[id] = void 0;\n };\n\n // Attach the handler before setting src, otherwise we might\n // miss events (consider that IE could fire them synchronously\n // upon setting src, for example).\n script.onreadystatechange = function () {\n var firstState = script.readyState;\n\n // Protect against any errors from state change randomness.\n if (err) { return; }\n\n if (!inserted && isReady[firstState]) {\n inserted = true;\n\n // Append to DOM.\n _addScript(script);\n }\n\n // --------------------------------------------------------------------\n // GLORIOUS IE8 HACKAGE!!!\n // --------------------------------------------------------------------\n //\n // Oh IE8, how you disappoint. IE8 won't call `script.onerror`, so\n // we have to resort to drastic measures.\n // See, e.g. http://www.quirksmode.org/dom/events/error.html#t02\n //\n // As with all things development, there's a Stack Overflow comment that\n // asserts the following combinations of state changes in IE8 indicate a\n // script load error. And crazily, it seems to work!\n //\n // http://stackoverflow.com/a/18840568/741892\n //\n // The `script.readyState` transitions we're interested are:\n //\n // * If state starts as `loaded`\n // * Call `script.children`, which _should_ change state to `complete`\n // * If state is now `loading`, then **we have a load error**\n //\n // For the reader's amusement, here is HeadJS's catalog of various\n // `readyState` transitions in normal operation for IE:\n // https://github.com/headjs/headjs/blob/master/src/2.0.0/load.js#L379-L419\n if (firstState === \"loaded\") {\n // The act of accessing the property should change the script's\n // `readyState`.\n //\n // And, oh yeah, this hack is so hacky-ish we need the following\n // eslint disable...\n /*eslint-disable no-unused-expressions*/\n script.children;\n /*eslint-enable no-unused-expressions*/\n\n if (script.readyState === \"loading\") {\n // State transitions indicate we've hit the load error.\n //\n // **Note**: We are not intending to _return_ a value, just have\n // a shorter short-circuit code path here.\n return _error();\n }\n }\n\n // It's possible for readyState to be \"complete\" immediately\n // after we insert (and execute) the script in the branch\n // above. So check readyState again here and react without\n // waiting for another onreadystatechange.\n if (script.readyState === \"complete\") {\n _finish();\n }\n };\n\n // Onerror handler _may_ work here.\n script.onerror = _error;\n\n // Since we're not appending the script to the DOM yet, the\n // reference to our script element might get garbage collected\n // when this function ends, without onreadystatechange ever being\n // fired. This has been witnessed to happen. Adding it to\n // `pendingScripts` ensures this can't happen.\n pendingScripts[id] = script;\n\n // call the setup callback to mutate the script tag\n if (setup) {\n setup.call(context, script);\n }\n\n // This triggers a request for the script, but its contents won't\n // be executed until we append it to the DOM.\n script.src = src;\n\n // In some cases, the readyState is already \"loaded\" immediately\n // after setting src. It's a lie! Don't append to the DOM until\n // the onreadystatechange event says so.\n\n } else {\n // This section is for modern browsers, including IE10+.\n\n // Clear out listeners.\n _cleanup = function () {\n script.onload = script.onerror = null;\n };\n\n script.onerror = _error;\n script.onload = _finish;\n script.async = true;\n script.charset = \"utf-8\";\n\n // call the setup callback to mutate the script tag\n if (setup) {\n setup.call(context, script);\n }\n\n script.src = src;\n\n // Append to DOM.\n _addScript(script);\n }\n };\n\n // UMD wrapper.\n /*global define:false*/\n if (typeof exports === \"object\" && typeof module === \"object\") {\n // CommonJS\n module.exports = _lload;\n\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([], function () { return _lload; });\n\n } else {\n // VanillaJS\n window._lload = _lload;\n }\n}());\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n'use strict';\n\nvar asn1 = require('asn1.js');\n\nexports.certificate = require('./certificate');\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('modulus')['int'](),\n\t\tthis.key('publicExponent')['int'](),\n\t\tthis.key('privateExponent')['int'](),\n\t\tthis.key('prime1')['int'](),\n\t\tthis.key('prime2')['int'](),\n\t\tthis.key('exponent1')['int'](),\n\t\tthis.key('exponent2')['int'](),\n\t\tthis.key('coefficient')['int']()\n\t);\n});\nexports.RSAPrivateKey = RSAPrivateKey;\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('modulus')['int'](),\n\t\tthis.key('publicExponent')['int']()\n\t);\n});\nexports.RSAPublicKey = RSAPublicKey;\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').objid(),\n\t\tthis.key('none').null_().optional(),\n\t\tthis.key('curve').objid().optional(),\n\t\tthis.key('params').seq().obj(\n\t\t\tthis.key('p')['int'](),\n\t\t\tthis.key('q')['int'](),\n\t\t\tthis.key('g')['int']()\n\t\t).optional()\n\t);\n});\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPublicKey').bitstr()\n\t);\n});\nexports.PublicKey = PublicKey;\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPrivateKey').octstr()\n\t);\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').seq().obj(\n\t\t\tthis.key('id').objid(),\n\t\t\tthis.key('decrypt').seq().obj(\n\t\t\t\tthis.key('kde').seq().obj(\n\t\t\t\t\tthis.key('id').objid(),\n\t\t\t\t\tthis.key('kdeparams').seq().obj(\n\t\t\t\t\t\tthis.key('salt').octstr(),\n\t\t\t\t\t\tthis.key('iters')['int']()\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tthis.key('cipher').seq().obj(\n\t\t\t\t\tthis.key('algo').objid(),\n\t\t\t\t\tthis.key('iv').octstr()\n\t\t\t\t)\n\t\t\t)\n\t\t),\n\t\tthis.key('subjectPrivateKey').octstr()\n\t);\n});\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('p')['int'](),\n\t\tthis.key('q')['int'](),\n\t\tthis.key('g')['int'](),\n\t\tthis.key('pub_key')['int'](),\n\t\tthis.key('priv_key')['int']()\n\t);\n});\nexports.DSAPrivateKey = DSAPrivateKey;\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n\tthis['int']();\n});\n\nvar ECParameters = asn1.define('ECParameters', function () {\n\tthis.choice({\n\t\tnamedCurve: this.objid()\n\t});\n});\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n\tthis.seq().obj(\n\t\tthis.key('version')['int'](),\n\t\tthis.key('privateKey').octstr(),\n\t\tthis.key('parameters').optional().explicit(0).use(ECParameters),\n\t\tthis.key('publicKey').optional().explicit(1).bitstr()\n\t);\n});\nexports.ECPrivateKey = ECPrivateKey;\n\nexports.signature = asn1.define('signature', function () {\n\tthis.seq().obj(\n\t\tthis.key('r')['int'](),\n\t\tthis.key('s')['int']()\n\t);\n});\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict';\n\nvar asn = require('asn1.js');\n\nvar Time = asn.define('Time', function () {\n\tthis.choice({\n\t\tutcTime: this.utctime(),\n\t\tgeneralTime: this.gentime()\n\t});\n});\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n\tthis.seq().obj(\n\t\tthis.key('type').objid(),\n\t\tthis.key('value').any()\n\t);\n});\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').objid(),\n\t\tthis.key('parameters').optional(),\n\t\tthis.key('curve').objid().optional()\n\t);\n});\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n\tthis.seq().obj(\n\t\tthis.key('algorithm').use(AlgorithmIdentifier),\n\t\tthis.key('subjectPublicKey').bitstr()\n\t);\n});\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n\tthis.setof(AttributeTypeValue);\n});\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n\tthis.seqof(RelativeDistinguishedName);\n});\n\nvar Name = asn.define('Name', function () {\n\tthis.choice({\n\t\trdnSequence: this.use(RDNSequence)\n\t});\n});\n\nvar Validity = asn.define('Validity', function () {\n\tthis.seq().obj(\n\t\tthis.key('notBefore').use(Time),\n\t\tthis.key('notAfter').use(Time)\n\t);\n});\n\nvar Extension = asn.define('Extension', function () {\n\tthis.seq().obj(\n\t\tthis.key('extnID').objid(),\n\t\tthis.key('critical').bool().def(false),\n\t\tthis.key('extnValue').octstr()\n\t);\n});\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n\tthis.seq().obj(\n\t\tthis.key('version').explicit(0)['int']().optional(),\n\t\tthis.key('serialNumber')['int'](),\n\t\tthis.key('signature').use(AlgorithmIdentifier),\n\t\tthis.key('issuer').use(Name),\n\t\tthis.key('validity').use(Validity),\n\t\tthis.key('subject').use(Name),\n\t\tthis.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n\t\tthis.key('issuerUniqueID').implicit(1).bitstr().optional(),\n\t\tthis.key('subjectUniqueID').implicit(2).bitstr().optional(),\n\t\tthis.key('extensions').explicit(3).seqof(Extension).optional()\n\t);\n});\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n\tthis.seq().obj(\n\t\tthis.key('tbsCertificate').use(TBSCertificate),\n\t\tthis.key('signatureAlgorithm').use(AlgorithmIdentifier),\n\t\tthis.key('signatureValue').bitstr()\n\t);\n});\n\nmodule.exports = X509Certificate;\n","'use strict';\n\n// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\nvar evp = require('evp_bytestokey');\nvar ciphers = require('browserify-aes');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (okey, password) {\n\tvar key = okey.toString();\n\tvar match = key.match(findProc);\n\tvar decrypted;\n\tif (!match) {\n\t\tvar match2 = key.match(fullRegex);\n\t\tdecrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n\t} else {\n\t\tvar suite = 'aes' + match[1];\n\t\tvar iv = Buffer.from(match[2], 'hex');\n\t\tvar cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n\t\tvar cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n\t\tvar out = [];\n\t\tvar cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n\t\tout.push(cipher.update(cipherText));\n\t\tout.push(cipher['final']());\n\t\tdecrypted = Buffer.concat(out);\n\t}\n\tvar tag = key.match(startRegex)[1];\n\treturn {\n\t\ttag: tag,\n\t\tdata: decrypted\n\t};\n};\n","'use strict';\n\nvar asn1 = require('./asn1');\nvar aesid = require('./aesid.json');\nvar fixProc = require('./fixProc');\nvar ciphers = require('browserify-aes');\nvar compat = require('pbkdf2');\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction decrypt(data, password) {\n\tvar salt = data.algorithm.decrypt.kde.kdeparams.salt;\n\tvar iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n\tvar algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n\tvar iv = data.algorithm.decrypt.cipher.iv;\n\tvar cipherText = data.subjectPrivateKey;\n\tvar keylen = parseInt(algo.split('-')[1], 10) / 8;\n\tvar key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n\tvar cipher = ciphers.createDecipheriv(algo, key, iv);\n\tvar out = [];\n\tout.push(cipher.update(cipherText));\n\tout.push(cipher['final']());\n\treturn Buffer.concat(out);\n}\n\nfunction parseKeys(buffer) {\n\tvar password;\n\tif (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n\t\tpassword = buffer.passphrase;\n\t\tbuffer = buffer.key;\n\t}\n\tif (typeof buffer === 'string') {\n\t\tbuffer = Buffer.from(buffer);\n\t}\n\n\tvar stripped = fixProc(buffer, password);\n\n\tvar type = stripped.tag;\n\tvar data = stripped.data;\n\tvar subtype, ndata;\n\tswitch (type) {\n\t\tcase 'CERTIFICATE':\n\t\t\tndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n\t\t\t// falls through\n\t\tcase 'PUBLIC KEY':\n\t\t\tif (!ndata) {\n\t\t\t\tndata = asn1.PublicKey.decode(data, 'der');\n\t\t\t}\n\t\t\tsubtype = ndata.algorithm.algorithm.join('.');\n\t\t\tswitch (subtype) {\n\t\t\t\tcase '1.2.840.113549.1.1.1':\n\t\t\t\t\treturn asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\t\t\t\tcase '1.2.840.10045.2.1':\n\t\t\t\t\tndata.subjectPrivateKey = ndata.subjectPublicKey;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'ec',\n\t\t\t\t\t\tdata: ndata\n\t\t\t\t\t};\n\t\t\t\tcase '1.2.840.10040.4.1':\n\t\t\t\t\tndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'dsa',\n\t\t\t\t\t\tdata: ndata.algorithm.params\n\t\t\t\t\t};\n\t\t\t\tdefault: throw new Error('unknown key id ' + subtype);\n\t\t\t}\n\t\t\t// throw new Error('unknown key type ' + type)\n\t\tcase 'ENCRYPTED PRIVATE KEY':\n\t\t\tdata = asn1.EncryptedPrivateKey.decode(data, 'der');\n\t\t\tdata = decrypt(data, password);\n\t\t\t// falls through\n\t\tcase 'PRIVATE KEY':\n\t\t\tndata = asn1.PrivateKey.decode(data, 'der');\n\t\t\tsubtype = ndata.algorithm.algorithm.join('.');\n\t\t\tswitch (subtype) {\n\t\t\t\tcase '1.2.840.113549.1.1.1':\n\t\t\t\t\treturn asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\t\t\t\tcase '1.2.840.10045.2.1':\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcurve: ndata.algorithm.curve,\n\t\t\t\t\t\tprivateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n\t\t\t\t\t};\n\t\t\t\tcase '1.2.840.10040.4.1':\n\t\t\t\t\tndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'dsa',\n\t\t\t\t\t\tparams: ndata.algorithm.params\n\t\t\t\t\t};\n\t\t\t\tdefault: throw new Error('unknown key id ' + subtype);\n\t\t\t}\n\t\t\t// throw new Error('unknown key type ' + type)\n\t\tcase 'RSA PUBLIC KEY':\n\t\t\treturn asn1.RSAPublicKey.decode(data, 'der');\n\t\tcase 'RSA PRIVATE KEY':\n\t\t\treturn asn1.RSAPrivateKey.decode(data, 'der');\n\t\tcase 'DSA PRIVATE KEY':\n\t\t\treturn {\n\t\t\t\ttype: 'dsa',\n\t\t\t\tparams: asn1.DSAPrivateKey.decode(data, 'der')\n\t\t\t};\n\t\tcase 'EC PRIVATE KEY':\n\t\t\tdata = asn1.ECPrivateKey.decode(data, 'der');\n\t\t\treturn {\n\t\t\t\tcurve: data.parameters.value,\n\t\t\t\tprivateKey: data.privateKey\n\t\t\t};\n\t\tdefault: throw new Error('unknown key type ' + type);\n\t}\n}\nparseKeys.signature = asn1.signature;\n\nmodule.exports = parseKeys;\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./react-mapkit.cjs.production.min.js')\n} else {\n module.exports = require('./react-mapkit.cjs.development.js')\n}\n","\"use strict\";function e(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}Object.defineProperty(exports,\"__esModule\",{value:!0});var t=e(require(\"react\")),n=e(require(\"little-loader\")),r=t.createContext({isInProvider:!1,mapkit:void 0}),i=function(e){var i=e.tokenOrCallback,a=e.language,o=e.children,u=t.useContext(r),c=t.useState({mapkit:u.mapkit,isInProvider:!0}),p=c[0],l=c[1];return t.useEffect((function(){u.isInProvider||n(\"https://cdn.apple-mapkit.com/mk/5.x.x/mapkit.js\",(function(){var e=i.includes(\"/\");mapkit.init({authorizationCallback:function(t){e?fetch(i).then((function(e){return e.text()})).then(t):t(i)},language:a}),l({mapkit:mapkit,isInProvider:!0})}))}),[u.isInProvider,i,a]),t.createElement(r.Provider,{value:p,children:o})};function a(){return(a=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}var u=[\"visibleMapRect\",\"region\",\"center\",\"padding\"],c=[\"padding\"],p=function(e){return new mapkit.Padding(\"number\"==typeof e?{top:e,right:e,bottom:e,left:e}:e)},l=function(e,t){return new mapkit.Coordinate(e,t)},d=function(e){return s(l(e.latitude,e.longitude),new mapkit.CoordinateSpan(e.latitudeSpan,e.longitudeSpan))},s=function(e,t){return new mapkit.CoordinateRegion(e,t)},f=function(e,t,n,r){return new mapkit.MapRect(e,t,n,r)},m=function(e){void 0===e&&(e={});var n=t.useState(e)[0],i=t.useContext(r).mapkit,c=t.useRef(null),s=t.useState(),m=s[0],v=s[1];return t.useEffect((function(){if(i&&c.current){var e=new i.Map(c.current,(r=(t=n).visibleMapRect,s=t.region,m=t.center,k=t.padding,g=o(t,u),a({visibleMapRect:r&&f.apply(void 0,r),region:s&&d(s),center:m&&l.apply(void 0,m),padding:p(k||0)},g)));v(e)}var t,r,s,m,k,g}),[c,i]),t.useEffect((function(){return function(){m&&m.destroy()}}),[]),{mapkit:i,map:m,mapProps:{mapkit:i,map:m,mapRef:c},setRotation:t.useCallback((function(e,t){void 0===t&&(t=!1),m&&m.setRotationAnimated(e,t)}),[m]),setCenter:t.useCallback((function(e,t){void 0===t&&(t=!1),m&&m.setCenterAnimated(l.apply(void 0,e),t)}),[m]),setRegion:t.useCallback((function(e,t){void 0===t&&(t=!1),m&&m.setRegionAnimated(d(e),t)}),[m]),setVisibleMapRect:t.useCallback((function(e,t){void 0===t&&(t=!1),m&&m.setVisibleMapRectAnimated(f.apply(void 0,e),t)}),[m])}},v=[\"children\"],k=[\"tokenOrCallback\",\"language\",\"mapkit\",\"map\",\"mapRef\"],g=t.createContext({map:void 0,mapkit:void 0}),h=function(e){return t.createElement(g.Provider,{value:e.context,children:e.children})},b=function(e){return t.createElement(\"div\",{ref:e.mapRef,style:{width:\"100%\",height:\"100%\"},children:e.children})},C=function(e){var n=e.children,r=o(e,v),i=m(r).mapProps;return t.createElement(h,{context:{mapkit:i.mapkit,map:i.map}},t.createElement(b,{mapRef:i.mapRef,children:n}))},x=[\"latitude\",\"longitude\"];exports.Map=function(e){var n=e.tokenOrCallback,a=e.language,u=void 0===a?\"en\":a,c=e.mapkit,p=e.map,l=e.mapRef,d=o(e,k),s=t.useContext(r);if(l)return t.createElement(h,{context:{mapkit:c,map:p}},t.createElement(b,Object.assign({mapRef:l},d)));var f=t.createElement(C,Object.assign({},d));if(s.isInProvider)return f;if(!n)throw new Error(\"`tokenOrCallback` is required. Either add it to this `Map` component or to a `MapkitProvider` parent of this component.\");return t.createElement(i,{tokenOrCallback:n,language:u,children:f})},exports.MapContext=g,exports.MapkitContext=r,exports.MapkitProvider=i,exports.Marker=function(e){var n=e.latitude,r=e.longitude,i=o(e,x),u=t.useContext(g),d=u.mapkit,s=u.map,f=t.useRef();return t.useEffect((function(){return d&&s&&(f.current=new d.MarkerAnnotation(l(n,r),function(e){var t=e.padding,n=o(e,c);return a({padding:p(t||0)},n)}(i)),s.addAnnotation(f.current)),function(){f.current&&s&&s.removeAnnotation(f.current)}}),[d,s]),null},exports.useMap=m;\n//# sourceMappingURL=react-mapkit.cjs.production.min.js.map\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n"],"names":["asn1","exports","bignum","define","base","constants","decoders","encoders","inherits","Entity","name","body","this","prototype","_createNamed","named","e","entity","_initNamed","call","_getDecoder","enc","hasOwnProperty","decode","data","options","_getEncoder","encode","reporter","Reporter","Buffer","DecoderBuffer","isBuffer","offset","length","error","EncoderBuffer","value","Array","isArray","map","item","byteLength","save","restore","res","isEmpty","readUInt8","fail","skip","bytes","_reporterState","raw","slice","join","out","forEach","write","copy","Node","assert","tags","methods","concat","parent","state","_baseState","children","tag","args","reverseArgs","choice","optional","any","obj","use","useDecoder","key","explicit","implicit","contains","_wrap","module","stateProps","clone","cstate","prop","constructor","method","push","apply","arguments","_init","filter","child","equal","_useArgs","arg","Object","keys","Error","def","val","num","newKey","_decode","input","wrapResult","prevObj","result","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","start","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","test","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","match","some","node","type","_createEncoderBuffer","_encode","_encodeValue","undefined","_skipDefault","content","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","JSON","stringify","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","str","_isPrintstr","errors","ReporterError","msg","rethrow","pathLen","index","prev","now","err","inherited","elem","message","stack","partial","captureStackTrace","tagClass","tagClassByName","_reverse","tagByName","der","DERDecoder","tree","DERNode","derDecodeTag","buf","oct","tagStr","derDecodeLen","len","i","j","buffer","decodedTag","_skipUntilEnd","decoder","possibleEnd","unused","String","fromCharCode","readUInt16BE","numstr","toString","printstr","values","relative","identifiers","ident","subident","first","second","tmp","year","mon","day","hour","min","sec","Date","UTC","pem","PEMDecoder","lines","split","label","toUpperCase","re","end","base64","replace","DEREncoder","two","header","encodedTag","encodeTag","lenOctets","writeUInt16BE","charCodeAt","id","splice","size","objid","time","date","getFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","toArray","sign","unshift","dataBuffer","defaultBuffer","PEMEncoder","p","ctor","superCtor","super_","TempCtor","BN","number","endian","isBN","negative","words","red","wordSize","window","parseHex4Bits","string","c","parseHexByte","lowerBound","r","parseBase","mul","Math","max","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","w","off","strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","self","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","q","andln","iushrn","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","output","outLen","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","Rand","rand","generate","_rand","getBytes","Uint8Array","getByte","crypto","getRandomValues","arr","msCrypto","randomBytes","asUInt32Array","from","readUInt32BE","scrubVec","v","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","d","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","allocUnsafe","writeUInt32BE","decryptBlock","m1","scrub","aes","Transform","GHASH","incr32","StreamCipher","iv","decrypt","alloc","_cipher","ck","_ghash","_finID","ghash","toPad","update","ivBits","tail","writeUIntBE","calcIv","_prev","_cache","_secCache","_decrypt","_alen","_len","_mode","_authTag","_called","_update","chunk","rump","encrypt","_final","final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","cache","suite","password","config","toLowerCase","TypeError","thing","get","flush","last","padded","unpad","setAutoPadding","setTo","autoPadding","PADDING","equals","padBuff","writeUInt8","ZEROES","fromArray","block","_multiply","lsbVi","Vi","Zi","abl","bl","pad","encryptStart","encryptByte","byteParam","shiftIn","getBlock","chunkNum","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","DES","aesModes","desModes","keyLen","ivLen","CipherBase","des","instantiate","EDE","opts","modeName","_des","create","des3","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","move","src","_move","Symbol","for","modrn","allocate","_toArrayLikeLE","position","_toArrayLikeBE","isNegNum","createHash","stream","verify","algorithms","Sign","algorithm","Writable","_hashType","hash","_hash","_tag","_signType","Verify","createSign","createVerify","_write","done","digest","sig","sigBuffer","createHmac","EC","parseKeys","curves","getKey","algo","hlen","hbits","bits2int","bits2octets","fill","obits","makeKey","kv","makeR","hashType","signType","curve","curveId","keyFromPrivate","privateKey","toDER","ecSign","params","priv_key","H","dsaSign","checkValue","pub","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","signature","montp","dsaVerify","padNum","SlowBuffer","bufferEq","install","that","origBufEqual","origSlowBufEqual","bind","$apply","$call","$reflectApply","actualApply","Function","$TypeError","$actualApply","Reflect","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","func","adjustedLength","GetIntrinsic","$indexOf","allowMissing","intrinsic","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","_encoding","useUint8Array","useArrayBuffer","ArrayBuffer","isView","TYPED_ARRAY_SUPPORT","inputEnc","outputEnc","bufferData","encoding","byteOffset","outData","_toString","_transform","_flush","fin","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isFunction","isPrimitive","elliptic","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","ec","formatReturnValue","bn","p256","secp256r1","secp192r1","p384","p521","generateKeys","format","genKeyPair","getPublicKey","computeSecret","other","inenc","keyFromPublic","getPublic","getPrivate","getX","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_priv","_importPrivate","MD5","RIPEMD160","sha","Base","Hash","alg","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","dh","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","DH_CHECK_P_NOT_SAFE_PRIME","DH_CHECK_P_NOT_PRIME","DH_UNABLE_TO_CHECK_GENERATOR","DH_NOT_SUITABLE_GENERATOR","NPN_ENABLED","ALPN_ENABLED","RSA_PKCS1_PADDING","RSA_SSLV23_PADDING","RSA_NO_PADDING","RSA_PKCS1_OAEP_PADDING","RSA_X931_PADDING","RSA_PKCS1_PSS_PADDING","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","$SyntaxError","gopd","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","utils","proto","CBCState","_cbcInit","_cbcState","inp","inOff","outOff","superProto","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","count","_finalEncrypt","_finalDecrypt","_pad","_unpad","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","ip","_encrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","EDEState","k1","k2","k3","_edeState","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","group","generatePrime","DH","ENCODINGS","gen","generator","genc","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","defineProperty","hex","rem","simpleSieve","fermatTest","checkPrime","__gen","_gen","secret","getPrime","front","getGenerator","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","n2","hasProtoAccessor","callBind","gOPD","__proto__","code","$Object","$getPrototypeOf","getPrototypeOf","getParamBytesForAlg","MAX_OCTET","signatureAsBuffer","countPadding","stop","derToJose","paramBytes","maxEncodedParamLength","inputLength","seqLength","rLength","rOffset","sLength","sOffset","rPadding","sPadding","dst","joseToDer","signatureBytes","rsBytes","shortLength","getParamSize","paramBytesForAlg","ES256","ES384","ES512","version","eddsa","getNAF","getJSF","BaseCurve","conf","zero","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","I","step","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","pointFromX","encodeCompressed","compact","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","EdwardsCurve","twisted","mOneA","dd","oneC","Point","zOne","_mulA","_mulC","rhs","lhs","y2","pointFromY","isInfinity","normalize","fromJSON","_extDbl","f","nx","ny","nt","nz","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","zi","eqXToP","xc","short","edwards","MontCurve","i4","a24","aa","bb","diffAdd","da","cb","jumlAdd","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","floor","y1","len1","_endoSplit","v1","v2","p1","p2","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","pre","endoMul","parse","obj2point","ys1","dyinv","_precompute","negate","zinv","zinv2","ay","pz2","z2","u1","u2","h2","h3","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","zs","PresetCurve","defineCurve","sha256","sha384","sha512","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","fromPublic","drbg","pers","persEnc","entropy","hmacStrength","entropyEnc","nonce","ns2","_truncateToN","truncOnly","msgBitLength","bkey","ns1","iter","kp","kpX","recoveryParam","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","privEnc","pubEnc","reason","derive","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","log","LN2","slen","backHalf","parseBytes","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","R","Rencoded","encodePoint","s_","pubBytes","S","makeSignature","SG","intFromLE","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","cachedProperty","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","minAssert","minUtils","zero2","m8","d1","d2","m14","m24","computer","EvalError","RangeError","ReferenceError","SyntaxError","URIError","ReflectOwnKeys","ReflectApply","target","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","Number","isNaN","EventEmitter","init","once","emitter","Promise","resolve","reject","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","emit","warned","console","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","addEventListener","wrapListener","removeEventListener","set","setMaxListeners","getMaxListeners","doError","er","context","listeners","addListener","prependListener","prependOnceListener","list","originalListener","pop","spliceOne","removeAllListeners","rawListeners","eventNames","salt","keyBits","used","keyStart","ivStart","isCallable","toStr","iterator","thisArg","array","forEachArray","charAt","forEachString","object","forEachObject","concatty","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","Map","parseFloat","parseInt","Proxy","RegExp","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","fn","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","parts","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","reflectGetProto","originalGetProto","getDunderProto","O","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","sym","symObj","syms","propertyIsEnumerable","descriptor","toStringTag","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","callback","_digest","common","ripemd","hmac","sha1","sha224","ripemd160","BlockHash","pending","pendingTotal","outSize","padLength","_delta8","_delta32","join32","inner","outer","rotl32","sum32","sum32_3","sum32_4","K","Kh","E","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","SHA1","W","SHA256","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","SHA512","SHA384","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","ch","cl","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","pos","$hasOwn","predResist","minEntropy","_reseed","reseedInterval","V","nonceEnc","seed","_hmac","kmac","reseed","addEnc","temp","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","document","all","strClass","GeneratorFunction","isFnRegex","safeRegexTest","generatorFunc","getGeneratorFunc","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","whichTypedArray","jws","jwt","decoded","payload","complete","JsonWebTokenError","NotBeforeError","TokenExpiredError","expiredAt","semver","satisfies","process","ms","iat","timestamp","milliseconds","debug","SemVer","env","NODE_DEBUG","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_BUILD_LENGTH","safeRe","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRe","token","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","includePrerelease","trim","major","minor","patch","prerelease","build","valid","clean","compare","compareMain","comparePre","compareIdentifiers","inc","release","identifier","version1","version2","prefix","defaultResult","numeric","anum","bnum","neq","op","Comparator","comp","ANY","operator","rcompareIdentifiers","compareLoose","rcompare","sort","rsort","Range","range","parseRange","isX","hyphenReplace","$0","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","testSet","allowed","outside","hilo","gtfn","ltefn","ltfn","ecomp","comparators","high","low","comparator","intersects","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","hr","compRe","pr","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","every","thisComparator","rangeComparators","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","parsed","r1","coerce","timespan","PS_SUPPORTED","includes","isInteger","isPlainObject","SUPPORTED_ALGS","sign_options_schema","expiresIn","isValid","notBefore","audience","issuer","subject","jwtid","noTimestamp","keyid","mutatePayload","registered_claims_schema","exp","nbf","schema","allowUnknown","parameterName","validator","options_to_payload","options_for_objects","secretOrPrivateKey","isObjectPayload","assign","typ","kid","failure","validatePayload","invalid_options","opt","validateOptions","claim","PUB_KEY_ALGS","RSA_KEY_ALGS","HS_ALGS","jwtString","secretOrPublicKey","clockTimestamp","decodedToken","secretCallback","hasSignature","indexOf","ignoreNotBefore","clockTolerance","ignoreExpiration","audiences","aud","targetAudience","iss","jti","maxAge","maxAgeTimestamp","bufferEqual","formatEcdsa","util","MSG_INVALID_SECRET","MSG_INVALID_VERIFIER_KEY","supportsKeyObjects","createPublicKey","checkIsPublicKey","typeError","asymmetricKeyType","export","checkIsPrivateKey","fromBase64","toBase64","base64url","template","errMsg","normalizeInput","createHmacSigner","checkIsSecretKey","createHmacVerifier","computedSig","createKeySigner","signer","createKeyVerifier","publicKey","verifier","createPSSKeySigner","saltLength","RSA_PSS_SALTLEN_DIGEST","createPSSKeyVerifier","createECDSASigner","createECDSAVerifer","createNoneSigner","createNoneVerifier","signerFactories","hs","rs","ps","es","none","verifierFactories","SignStream","VerifyStream","ALGORITHMS","Stream","DataStream","readable","pipe","nextTick","jwa","jwsSign","secretOrKey","securedInput","encodedHeader","encodedPayload","jwsSecuredInput","secretStream","JWS_REGEX","safeJsonParse","headerFromJWS","jwsSig","signatureFromJWS","isValidJws","jwsVerify","securedInputFromJWS","jwsDecode","payloadFromJWS","json","pendingScripts","scriptCounter","_addScript","script","firstScript","getElementsByTagName","parentNode","insertBefore","setup","_cleanup","createElement","_finish","_error","readyState","isReady","loaded","inserted","onreadystatechange","onerror","firstState","onload","async","charset","INFINITY","MAX_INTEGER","NAN","argsTag","funcTag","genTag","stringTag","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","reIsUint","freeParseInt","baseIsNaN","baseValues","props","iteratee","arrayMap","objectProto","nativeKeys","nativeMax","arrayLikeKeys","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","baseKeys","Ctor","isLength","collection","fromIndex","guard","isBinary","toFinite","remainder","toInteger","predicate","fromRight","baseFindIndex","baseIndexOf","funcProto","funcToString","objectCtorString","getPrototype","isHostObject","before","$isNaN","ARRAY16","_a","_b","_c","_d","rotl","fnF","fnG","fnH","fnI","readInt32LE","writeUInt32LE","writeInt32LE","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","n1","rn1","getDivisor","plural","msAbs","isPlural","long","fmtLong","fmtShort","certificate","RSAPrivateKey","seq","RSAPublicKey","AlgorithmIdentifier","null_","PublicKey","bitstr","PrivateKeyInfo","octstr","PrivateKey","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECParameters","namedCurve","ECPrivateKey","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","cipher","match2","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","keylen","parameters","ZERO_BUF","checkParameters","defaultEncoding","sync","subtle","toBrowser","checks","getNextTick","queueMicrotask","setImmediate","setTimeout","browserPbkdf2","iterations","importKey","then","deriveBits","promise","resolvePromise","browser","prom","catch","checkNative","resp","MAX_ALLOC","sizes","rmd160","saltLen","shaFunc","rmd160Func","getDigest","ipad1","ipad2","run","DK","block1","destPos","hLen","U","arg1","arg2","arg3","i2ops","mgf","withPublic","reverse","zBuffer","iHash","maskedSeed","maskedDb","db","dif","oaep","status","pkcs1","paddedMsg","mLen","hLen2","dblen","cur","nonZero","MAX_BYTES","MAX_UINT32","generated","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxLength","kMaxUint32","assertOffset","assertSize","actualFill","ourBuf","uint","default","createContext","isInProvider","mapkit","tokenOrCallback","language","useContext","useState","useEffect","authorizationCallback","fetch","text","Provider","Padding","top","bottom","Coordinate","latitude","longitude","CoordinateSpan","latitudeSpan","longitudeSpan","CoordinateRegion","MapRect","useRef","visibleMapRect","region","center","destroy","mapProps","mapRef","setRotation","useCallback","setRotationAnimated","setCenter","setCenterAnimated","setRegion","setRegionAnimated","setVisibleMapRect","setVisibleMapRectAnimated","ref","style","height","MapkitProvider","useMap","pna","objectKeys","Duplex","Readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","PassThrough","ReadableState","EElistenerCount","OurUint8Array","debugUtil","debuglog","BufferList","destroyImpl","kProxyEvents","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","read","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","isPaused","setEncoding","MAX_HWM","howMuchToRead","head","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","clear","hasStrings","nb","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","increasedAwaitDrain","pause","event","resume","dests","ev","wrap","_this","paused","_fromList","afterTransform","ts","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","prefinish","_this2","err2","CorkedRequest","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","getBuffer","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","instance","Constructor","_classCallCheck","custom","emitErrorNT","readableDestroyed","writableDestroyed","copyProps","SafeBuffer","encodingOrOffset","allocUnsafeSlow","zr","sl","sr","_e","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","isRegex","regex","hasDescriptors","$floor","functionLengthIsConfigurable","functionLengthIsWritable","finalSize","_finalSize","accum","assigned","lowBits","highBits","Algorithm","Sha","_w","rotl30","ft","readInt32BE","writeInt32BE","Sha1","rotl5","Sha256","Sha224","_f","_g","_h","maj","sigma0","sigma1","gamma0","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","EE","pipeline","source","_isStdio","didOnEnd","cleanup","codes","createErrorType","NodeError","_Base","subClass","superClass","getMessage","oneOf","expected","actual","determiner","search","substr","this_len","substring","endsWith","createReadableStreamAsyncIterator","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","emitClose","autoDestroy","updateReadableListening","consume","wState","asyncIterator","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","rState","_Object$setPrototypeO","_defineProperty","prim","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","lastPromise","wrapForNext","_Object$create","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","protoProps","staticProps","_getString","_getBuffer","depth","customInspect","emitErrorAndCloseNT","emitCloseNT","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","onlegacyfinish","writableEnded","readableEnded","onrequest","req","setHeader","abort","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","reduce","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","isEncoding","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","localStorage","trace","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMap","isSet","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","debugEnv","seen","stylize","stylizeNoColor","colors","showHidden","_extend","stylizeWithColor","formatValue","styleType","styles","recurseTimes","simple","formatPrimitive","visibleKeys","idx","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","line","pid","types","isNativeError","months","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","globalThis","typedArrays","$slice","typedArray","found","getter","trySlices","tryTypedArrays","possibleNames"],"sourceRoot":""}